# Changelog The latest version may not be released! See also the commit log at github: https://github.com/Arduino-IRremote/Arduino-IRremote/commits/master # 4.3.1 - Fixed overflow bug for rawlen > 254. - Removed deprecated sendPulseDistance... functions with parameter aSendStopBit. # 4.3.0 - Removed default value USE_DEFAULT_FEEDBACK_LED_PIN for last parameter of IRsend::begin(bool aEnableLEDFeedback, uint_fast8_t aFeedbackLEDPin). Therefore IrSender.begin(DISABLE_LED_FEEDBACK) will not longer work! - Added convenience function isIRReceiverAttachedForTinyReceiver(). - Added Extended NEC Protocol macro to TinyIR by Buzzerb. - Fixed sendSamsung() / sendSamsungLG() bug. - Added functions stopTimer(), restartTimer() and restartTimerWithTicksToAdd(). - Added rawlen and initialGap to IRData. - Added ReceiveAndSendHobToHood example. - Changed RECORD_GAP_MICROS default value from 5000 to 8000. # 4.2.1 - Fix wrong type of tEnableLEDFeedback in IRSend.hpp and IRReceive.hpp. - TinyReceiver 2.0 - New TinyIRReceiverData which is filled with address, command and flags. - Removed parameters address, command and flags from callback handleReceivedTinyIRData() and printTinyReceiverResultMinimal(). - Callback function now only enabled if USE_CALLBACK_FOR_TINY_RECEIVER is activated. - Fix changing IR_SEND_PIN dynamically for ESP32. - Fix wrong type of tEnableLEDFeedback. - Support for ESP32-C3. # 4.2.0 - The old decode function is renamed to decode_old(decode_results *aResults). decode (decode_results *aResults) is only available in IRremote.h and prints a message. - Added DECODE_ONKYO, to force 16 bit command and data decoding. - Enable Bang&Olufsen 455 kHz if SEND_PWM_BY_TIMER is defined. - Fixed bug: TinyReceiver throwing ISR not in IRAM on ESP8266. - Usage of ATTinyCore pin numbering scheme e.g. PIN_PB2. - Added ARDUINO_ARCH_NRF52 to support Seeed XIAO nRF52840 Sense. - First untested support of Uno R4. - Extraced version macros to IRVersion.h. ## 4.1.2 - Workaround for ESP32 RTOS delay() timing bug influencing the mark() function. ## 4.1.1 - SAMD51 use timer3 if timer5 not available. - Disabled #define LOCAL_DEBUG in IRReceive.hpp, which was accidently enabled at 4.1.0. ## 4.1.0 - Fixed bug in printing durations > 64535 in printIRResultRawFormatted(). - Narrowed constraints for RC5 RC6 number of bits. - Changed the first parameter of printTinyReceiverResultMinimal() to &Serial. - Removed 3 Serial prints for deprecation warnings to fix #1094. - Version 1.2.0 of TinyIR. Now FAST protocol with 40 ms period and shorter header space. - Removed field "bool hasStopBit" and parameter "bool aSendStopBit" from PulseDistanceWidthProtocolConstants structure and related functions. - Changed a lot of "unsigned int" types to "uint16_t" types. - Improved overflow handling. - Improved software PWM generation. - Added FAST protocol. - Improved handling of PULSE_DISTANCE + PULSE_WIDTH protocols. - New example ReceiveAndSendDistanceWidth. - Removed the automatic restarting of the receiver timer after sending with SEND_PWM_BY_TIMER enabled. - Split ISR into ISR and function IRPinChangeInterruptHandler(). - Added functions addTicksToInternalTickCounter() and addMicrosToInternalTickCounter(). ## 4.0.0 - Added decoding of PulseDistanceWidth protocols and therefore changed function decodeDistance() to decodeDistanceWidth() and filename ir_DistanceProtocol.hpp to ir_DistanceWidthProtocol.hpp. - Removed static function printIRSendUsage(), but kept class function printIRSendUsage(). - Changed type of decodedRawData and decodedRawDataArray which is now 64 bit for 32 bit platforms. - Added receiver callback functionality and registerReceiveCompleteCallback() function. - Introduced common structure PulseDistanceWidthProtocolConstants. - Where possible, changed all send and decode functions to use PulseDistanceWidthProtocolConstants. - Improved MSB/LSB handling - New convenience fuctions bitreverse32Bit() and bitreverseOneByte(). - Improved Magiquest protocol. - Fix for #1028 - Prevent long delay caused by overflow when frame duration < repeat period - Thanks to Stephen Humphries! - Support for ATtiny816 - Thanks to elockman. - Added Bang&Olufsen protocol. #1030. - Third parameter of function "void begin(uint_fast8_t aSendPin, bool aEnableLEDFeedback, uint_fast8_t aFeedbackLEDPin)" is not optional anymore and this function is now only available if IR_SEND_PIN is not defined. #1033. - Fixed bug in sendSony() for command parameter > 0x7F; - Fixed bug with swapped LG2 header mark and space. - Disabled strict checks while decoding. They can be enabled by defining DECODE_STRICT_CHECKS. - Merged the 2 decode pulse width and distance functions. - Changed macro names _REPEAT_SPACE to _REPEAT_DISTANCE. - Improved TinyIRReceiver,added FAST protocol for it and added TinyIRSender.hpp and TinySender example, renamed TinyReceiver.h to TinyIR.h. - Added DISABLE_CODE_FOR_RECEIVER to save program memory and RAM if receiving functionality is not required. - Extracted protocol functions used by receive and send to IRProtocol.hpp. - Analyzed Denon code table and therefore changed Denon from MSB to LSB first. - Renamed sendRC6(aRawData...) to sendRC6Raw( aRawData...). - Support for seeduino which lacks the print(unsigned long long...) method. Thanks to sklott https://stackoverflow.com/users/11680056/sklott - Added support for attiny1614 by Joe Ostrander. - Fixed SEND_PWM_BY_TIMER for ATtiny167 thanks to freskpe. - Improved SHARP repeat decoding. - Replaced macros TIMER_EN/DISABLE_RECEIVE_INTR and EN/DISABLE_SEND_PWM_BY_TIMER by functions. - Added SAMSUNG48 protocol and sendSamsung48() function. ## 3.9.0 - Improved documentation with the help of [ElectronicsArchiver}(https://github.com/ElectronicsArchiver). - Added NEC2 protocol. - Improved Magiquest protocol. - Renamed sendSamsungRepeat() to sendSamsungLGRepeat(). - Added function sendPulseDistanceWidth(). - Improved repeat detection for some protocols. ## 3.8.0 - Changed Samsung repeat handling. Old handling is available as SamsungLG. - Added function printIRSendUsage(). - Reduced output size and improved format of printIRResultRawFormatted() to fasten up output (and getting repeats properly decoded). - Fixed Bug in sendDenonRaw() and improved decodeDenon(). - Fixed potential bug in SendBiphase data for 1 bit. - Fixed bug in send for RP4020. - Fixed pin mapping problems especially for Teensy 2.0. - Added support for decoding of "special" NEC repeats. - Added SAMD51 support. - Improved pin mapping for TinyReceiver. ## 3.7.1 - SendRaw now supports bufferlenght > 255. - Improved DistanceProtocol decoder output. - Fixed ESP32 send bug for 2.x ESP32 cores. ## 3.7.0 - Changed TOLERANCE to TOLERANCE_FOR_DECODERS_MARK_OR_SPACE_MATCHING and documented it. - Changed last uint8_t to uint_fast8_t and uint16_t to unsigned integer. - Improved MagiQuest protocol. - Improved prints and documentation. - Added IrReceiver.restartAfterSend() and inserted it in every send(). Closes #989 - Use IRAM_ATTR instead of deprecated ICACHE_RAM_ATTR for ESP8266. - Removed pulse width decoding from ir_DistanceProtocol. ## 3.6.1 - Switched Bose internal protocol timing for 0 and 1 -> old 1 timing is now 0 and vice versa. ## 3.6.0 - Separated enable flag of send and receive feedback LED. Inspired by PR#970 from luvaihassanali. - RP2040 support added. - Refactored IRTimer.hpp. - Refactored IR_SEND_PIN and IrSender.sendPin handling. - Renamed IR_SEND_DUTY_CYCLE to IR_SEND_DUTY_CYCLE_PERCENT. - Fixed bugs for SEND_PWM_BY_TIMER active. ## 3.5.2 - Improved support for Teensy boards by Paul Stoffregen. ## 3.5.1 - Renamed INFO_PRINT to IR_INFO_PRINT as well as for DEBUG and TRACE. - Fixed error with DEBUG in TinyIRReceiver.hpp. - Support for ATmega88 see issue #923. Thanks to Dolmant. - NO_LED_FEEDBACK_CODE replaces and extends DISABLE_LED_FEEDBACK_FOR_RECEIVE. - Removed NO_LEGACY_COMPATIBILITY macro, it was useless now. - Fix ESP32 send bug see issue #927. ## 3.5.0 - Improved ir_DistanceProtocol. - Tone for ESP32. - last phase renamed *.cpp.h to .hpp. - No deprecation print for ATtinies. - Renamed ac_LG.cpp to ac_LG.hpp. - Maintained MagiQuest by E. Stuart Hicks. - Improved print Pronto by Asuki Kono. - Added printActiveIRProtocols() function. - Used IR_SEND_PIN to reduce code size and improved send timing for AVR. ## 3.4.0 - Added LG2 protocol. - Added ATtiny167 (Digispark Pro) support. - Renamed *.cpp.h to .hpp. - organized carrier frequencies. - Compiler switch USE_OPEN_DRAIN_OUTPUT_FOR_SEND_PIN added. - Moved blink13() back to IRrecv class. - Added Kaseikyo convenience functions like sendKaseikyo_Denon(). - Improved / adjusted LG protocol and added class Aircondition_LG based on real hardware supplied by makerspace 201 (https://wiki.hackerspaces.org/ZwoNullEins) from Cologne. - Improved universal decoder for pulse distance protocols to support more than 32 bits. - Added mbed support. ## 3.3.0 - Fix errors if LED_BUILTIN is not defined. - Fixed error for AVR timer1. Thanks to alexbarcelo. - New example IRremoteExtensionTest. - Enabled megaAVR 0-series devices. - Added universal decoder for pulse distance protocols. ## 3.2.0 - Fix for ESP32 send Error, removed `USE_SOFT_SEND_PWM` macro. - Added Onkyo protocol. - Support for old 2.x code by backwards compatible `decode(decode_results *aResults)` function. - Removed USE_OLD_DECODE macro and added NO_LEGACY_COMPATIBILITY macro. - Added ATtiny1604 support. - New SendAndReceive example. - Added ESP8266 support. - Extended DEBUG output. ## 3.1.0 - Generation of PWM by software is active by default. - Removed decode_results results. - Renamed most irparams_struct values. - Fixed LG send bug and added unit test. - Replaced `#define DECODE_NEC 1/0` by defining/not defining. - Use LED_BUILTIN instead of FEEDBACK_LED if FeedbackLEDPin is 0. - Use F_CPU instead of SYSCLOCK. - Removed SENDPIN_ON and SENDPIN_OFF macros. - Refactored board specific code for timer and feedback LED. - Extracted common LED feedback functions and implemented feedback for send. - MATCH_MARK() etc. now available as matchMark(). - Added STM32F1 by (by Roger Clark) support. - Added stm32 (by ST) support. Thanks to Paolo Malaspina. - Added ATtiny88 support. ## 3.0.2 - Bug fix for USE_OLD_DECODE. - Increase RECORD_GAP_MICROS to 11000. - Fix overflow message. (#793). - Improved handling for HASH decoder. - Tested for ATtiny85. - Added `printIRResultMinimal()`. - Added missing IRAM_ATTR for ESP32. - Adapted to TinyCore 0.0.7. - Fixed decodeSony 20 bit bug #811. - Replaced delayMicroseconds with customDelayMicroseconds and removed NoInterrupt() for send functions, removed SPIN_WAIT macro, sleepMicros() and sleepUntilMicros(). - Fixed LG checksum error. - Fixed JVC repeat error. ## 3.0.0 + 3.0.1 2021/02 - New LSB first decoders are default. - Added SendRaw with byte data. - Fixed resume bug if irparams.rawlen >= RAW_BUFFER_LENGTH. Thanks to Iosif Peterfi - Added `dumpPronto(String *aString, unsigned int frequency)` with String object as argument. Thanks to Iosif Peterfi - Removed Test2 example. - Fixed swapped cases in `getProtocolString()`. Thanks to Jim-2249 - Added compile option `IR_INPUT_IS_ACTIVE_HIGH`. Thanks to Jim-2249 - Corrected template. Thanks to Jim-2249 - Introduced standard decode and send functions. - Added compatibility with tone for AVR's. - New TinyIRreceiver does not require a timer. - New MinimalReceiver and IRDispatcherDemo examples. - Added TinyCore 32 / ATtiny3217 support. - Added Apple protocol. ## 2.8.1 2020/10 - Fixed bug in Sony decode introduced in 2.8.0. ## 2.8.0 2020/10 - Changed License to MIT see https://github.com/Arduino-IRremote/Arduino-IRremote/issues/397. - Added ATtiny timer 1 support. - Changed wrong return code signature of decodePulseDistanceData() and its handling. - Removed Mitsubishi protocol, since the implementation is in contradiction with all documentation I found and therefore supposed to be wrong. - Removed AIWA implementation, since it is only for 1 device and at least the sending was implemented wrong. - Added Lego_PF decode. - Changed internal usage of custom_delay_usec. - Moved dump/print functions from example to irReceiver. - irPronto.cpp: Using Print instead of Stream saves 1020 bytes program memory. Changed from & to * parameter type to be more transparent and consistent with other code of IRremote. ## 2.7.0 2020/09 - Added ATmega328PB support. - Renamed hardware specific macro and function names. - Renamed `USE_SOFT_CARRIER`, `USE_NO_CARRIER`, `DUTY_CYCLE` macros to `USE_SOFT_SEND_PWM`, `USE_NO_SEND_PWM`, `IR_SEND_DUTY_CYCLE`. - Removed blocking wait for ATmega32U4 Serial in examples. - Deactivated default debug output. - Optimized types in sendRC5ext and sendSharpAlt. - Added `DECODE_NEC_STANDARD` and `SEND_NEC_STANDARD`. - Renamed all IRrecv* examples to IRreceive*. - Added functions `printIRResultShort(&Serial)` and `getProtocolString(decode_type_t aDecodeType)`. - Added flag `decodedIRData.isRepeat`. - Updated examples. ## 2.6.1 2020/08 - Adjusted JVC and LG timing. - Fixed 4809 bug. ## 2.6.0 2020/08 - Added support for MagiQuest IR wands. - Corrected Samsung timing. - NEC repeat implementation. - Formatting and changing `TIMER_CONFIG_KHZ` and `TIMER_CONFIG_NORMAL` macros to static functions. - Added `IRAM_ATTR` for ESP32 ISR. - Removed `#define HAS_AVR_INTERRUPT_H`. - Changed Receiver States. Now starting with 0. - Changed switch to if / else if in IRRemote.cpp because of ESP32 compiler bug. - Changed `DEBUG` handling since compiler warns about empty "IF" or "ELSE" statements in IRRemote.cpp. ## 2.5.0 2020/06 - Corrected keywords.txt. - BoseWave protocol added PR #690. - Formatting comply to the new stylesheet. - Renamed "boarddefs.h" [ISSUE #375](https://github.com/Arduino-IRremote/Arduino-IRremote/issues/375). - Renamed `SEND_PIN` to `IR_SEND_PIN`. - Renamed state macros. - Enabled `DUTY_CYCLE` for send signal. - Added sending for ESP32. - Changed rawlen from uint8_t to unsigned int allowing bigger receive buffer and renamed `RAWBUF` to `RAW_BUFFER_LENGTH`. - Introduced `USE_NO_CARRIER` for simulating an IR receiver. Changes from #283 by bengtmartensson - Added function sendRaw_P() for sending data from flash. Changes from #268 by adamlhumphreys - Optimized by reducing floating point operations as suggested by madmalkav (#193). - Optimized with macros when using default `MICROS_PER_TICK` and `TOLERANCE`. - Made decodeHash as a settable protocol defined by `DECODE_HASH`. - Added Philips Extended RC-5 protocol support [PR #522] (https://github.com/Arduino-IRremote/Arduino-IRremote/pull/522) ## 2.4.0 - 2017/08/10 - Cleanup of hardware dependencies. Merge in SAM support [PR #437](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/437) ## 2.3.3 - 2017/03/31 - Added ESP32 IR receive support [PR #427](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/425) ## 2.2.3 - 2017/03/27 - Fix calculation of pause length in LEGO PF protocol [PR #427](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/427) ## 2.2.2 - 2017/01/20 - Fixed naming bug [PR #398](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/398) ## 2.2.1 - 2016/07/27 - Added tests for Lego Power Functions Protocol [PR #336](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/336) ## 2.2.0 - 2016/06/28 - Added support for ATmega8535 - Added support for ATmega16 - Added support for ATmega32 - Added support for ATmega164 - Added support for ATmega324 - Added support for ATmega644 - Added support for ATmega1284 - Added support for ATmega64 - Added support for ATmega128 [PR](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/324) ## 2.1.1 - 2016/05/04 - Added Lego Power Functions Protocol [PR #309](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/309) ## 2.1.0 - 2016/02/20 - Improved Debugging [PR #258](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/258) - Display TIME instead of TICKS [PR #258](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/258) ## 2.0.4 - 2016/02/20 - Add Panasonic and JVC to IRrecord example [PR](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/54) ## 2.0.3 - 2016/02/20 - Change IRSend Raw parameter to const [PR](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/227) ## 2.0.2 - 2015/12/02 - Added IRremoteInfo Sketch - [PR](https://github.com/Arduino-IRremote/Arduino-IRremote/pull/241) - Enforcing changelog.md ## 2.0.1 - 2015/07/26 - [Release](https://github.com/shirriff/Arduino-IRremote/releases/tag/BETA) ### Changes - Updated README - Updated Contributors - Fixed #110 Mess - Created Gitter Room - Added Gitter Badge - Standardised Code Base - Clean Debug Output - Optimized Send Loops - Modularized Design - Optimized and Updated Examples - Improved Documentation - Fixed and Improved many coding errors - Fixed Aiwa RC-T501 Decoding - Fixed Interrupt on ATmega8 - Switched to Stable Release of PlatformIO ### Additions - Added Aiwa RC-T501 Protocol - Added Denon Protocol - Added Pronto Support - Added compile options - Added Template For New Protocols - Added this changelog - Added Teensy LC Support - Added ATtiny84 Support - Added ATtiny85 Support - Added isIdle method ### Deletions - Removed (Fixed) #110 - Broke Teensy 3 / 3.1 Support ### Not Working - Teensy 3 / 3.1 Support is in Development