Arduino-IRremote/changelog.md

17 KiB

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.
  • 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

2.3.3 - 2017/03/31

  • Added ESP32 IR receive support PR #427

2.2.3 - 2017/03/27

  • Fix calculation of pause length in LEGO PF protocol PR #427

2.2.2 - 2017/01/20

2.2.1 - 2016/07/27

  • Added tests for Lego Power Functions Protocol PR #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

2.1.1 - 2016/05/04

  • Added Lego Power Functions Protocol PR #309

2.1.0 - 2016/02/20

2.0.4 - 2016/02/20

  • Add Panasonic and JVC to IRrecord example PR

2.0.3 - 2016/02/20

  • Change IRSend Raw parameter to const PR

2.0.2 - 2015/12/02

  • Added IRremoteInfo Sketch - PR
  • Enforcing changelog.md

2.0.1 - 2015/07/26 - Release

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