|
IRremote
|
Macros | |
| #define | FNV_PRIME_32 16777619 |
| used for decodeHash() More... | |
| #define | FNV_BASIS_32 2166136261 |
| used for decodeHash() More... | |
Functions | |
| const char * | getProtocolString (decode_type_t aProtocol) |
| void | IRReceiveTimerInterruptHandler () |
| bool | matchTicks (uint16_t aMeasuredTicks, uint16_t aMatchValueMicros) |
| Match function WITHOUT compensating for marks exceeded or spaces shortened by demodulator hardware Match is true, if signal value is bigger/equal 75% and less/equal 125% of aMatchValueMicros. More... | |
| bool | matchTicks (uint16_t aMeasuredTicks, uint16_t aMatchValueMicros, int16_t aCompensationMicrosForTicks) |
| Match function WITH compensating for marks exceeded or spaces shortened by demodulator hardware. More... | |
| bool | MATCH (uint16_t measured_ticks, uint16_t desired_us) |
| bool | matchMark (uint16_t aMeasuredTicks, uint16_t aMatchValueMicros) |
| Compensate for marks exceeded by demodulator hardware. More... | |
| bool | MATCH_MARK (uint16_t measured_ticks, uint16_t desired_us) |
| bool | matchSpace (uint16_t aMeasuredTicks, uint16_t aMatchValueMicros) |
| Compensate for spaces shortened by demodulator hardware. More... | |
| bool | MATCH_SPACE (uint16_t measured_ticks, uint16_t desired_us) |
| int | getMarkExcessMicros () |
| Getter function for MARK_EXCESS_MICROS. More... | |
| void | printActiveIRProtocols (Print *aSerial) |
| IRrecv::IRrecv () | |
| Instantiate the IRrecv class. More... | |
| IRrecv::IRrecv (uint_fast8_t aReceivePin) __attribute__((deprecated("Please use the default IRrecv instance \"IrReceiver\" and IrReceiver.begin() | |
| IRrecv::IRrecv (uint_fast8_t aReceivePin, uint_fast8_t aFeedbackLEDPin) __attribute__((deprecated("Please use the default IRrecv instance \"IrReceiver\" and IrReceiver.begin() | |
| Instantiate the IRrecv class. More... | |
| void | IRrecv::ReceiveInterruptHandler () |
| void | IRrecv::begin (uint_fast8_t aReceivePin, bool aEnableLEDFeedback=false, uint_fast8_t aFeedbackLEDPin=USE_DEFAULT_FEEDBACK_LED_PIN) |
| Initializes the receive and feedback pin. More... | |
| void | IRrecv::setReceivePin (uint_fast8_t aReceivePinNumber) |
| Sets / changes the receiver pin number. More... | |
| void | IRrecv::registerReceiveCompleteCallback (void(*aReceiveCompleteCallbackFunction)(void)) |
| Sets the function to call if a complete protocol frame has arrived. More... | |
| void | IRrecv::start () |
| Start the receiving process. More... | |
| void | IRrecv::restartTimer () |
| void | IRrecv::enableIRIn () |
| Alias for start(). More... | |
| void | IRrecv::restartTimer (uint32_t aMicrosecondsToAddToGapCounter) |
| Configures the timer and the state machine for IR reception. More... | |
| void | IRrecv::restartTimerWithTicksToAdd (uint16_t aTicksToAddToGapCounter) |
| Configures the timer and the state machine for IR reception. More... | |
| void | IRrecv::restartAfterSend () |
| Restarts receiver after send. More... | |
| void | IRrecv::stop () |
| Disables the timer for IR reception. More... | |
| void | IRrecv::stopTimer () |
| void | IRrecv::disableIRIn () |
| Alias for stop(). More... | |
| void | IRrecv::end () |
| Alias for stop(). More... | |
| void | IRrecv::resume () |
| Restart the ISR (Interrupt Service Routine) state machine, to enable receiving of the next IR frame. More... | |
| void | IRrecv::initDecodedIRData () |
| Is internally called by decode before calling decoders. More... | |
| bool | IRrecv::isIdle () |
| bool | IRrecv::available () |
| Returns true if IR receiver has received a complete IR frame (detected by timeout after last mark). More... | |
| IRData * | IRrecv::read () |
| Returns pointer to IrReceiver.decodedIRData if IR receiver data is available, else nullptr. More... | |
| bool | IRrecv::decode () |
| The main decode function, attempts to decode the recently receive IR signal. More... | |
| void | IRrecv::decodePulseDistanceWidthData (uint_fast8_t aNumberOfBits, IRRawlenType aStartOffset, uint16_t aOneMicros, bool aIsPulseWidthProtocol, bool aMSBfirst) |
| Decode pulse distance width protocols. More... | |
| void | IRrecv::decodeWithThresholdPulseDistanceWidthData (uint_fast8_t aNumberOfBits, IRRawlenType aStartOffset, uint16_t aOneThresholdMicros, bool aIsPulseWidthProtocol, bool aMSBfirst) |
| New threshold decoder to be activated by USE_THRESHOLD_DECODER Assumes a 0 for shorter and a 1 for longer timing. More... | |
| void | IRrecv::decodePulseDistanceWidthData (uint_fast8_t aNumberOfBits, IRRawlenType aStartOffset, uint16_t aOneMarkMicros, uint16_t aOneSpaceMicros, uint16_t aZeroMarkMicros, bool aMSBfirst) |
| Old deprecated version with 3 timing parameters instead of one and a aIsPulseWidthProtocol flag. More... | |
| void | IRrecv::decodePulseDistanceWidthData (uint_fast8_t aNumberOfBits, IRRawlenType aStartOffset, uint16_t aOneMarkMicros, uint16_t aZeroMarkMicros, uint16_t aOneSpaceMicros, uint16_t aZeroSpaceMicros, bool aMSBfirst) __attribute__((deprecated("Please use decodePulseDistanceWidthData() with 6 parameters."))) |
| bool | IRrecv::decodeStrictPulseDistanceWidthData (uint_fast8_t aNumberOfBits, IRRawlenType aStartOffset, uint16_t aOneMarkMicros, uint16_t aOneSpaceMicros, uint16_t aZeroMarkMicros, uint16_t aZeroSpaceMicros, bool aMSBfirst) |
| void | IRrecv::decodePulseDistanceWidthData (PulseDistanceWidthProtocolConstants *aProtocolConstants, uint_fast8_t aNumberOfBits, IRRawlenType aStartOffset=3) |
| Decode pulse distance protocols for PulseDistanceWidthProtocolConstants. More... | |
| void | IRrecv::decodePulseDistanceWidthData_P (PulseDistanceWidthProtocolConstants const *aProtocolConstantsPGM, uint_fast8_t aNumberOfBits, IRRawlenType aStartOffset=3) |
| uint_fast8_t | IRrecv::compare (uint16_t oldval, uint16_t newval) |
| Compare two (tick) values for Hash decoder Use a tolerance of 20% to enable e.g. More... | |
| bool | IRrecv::decodeHash () |
| Decodes an arbitrary IR code to a 32-bit value. More... | |
| bool | IRrecv::decodeHashOld (decode_results *aResults) |
| bool | IRrecv::checkHeader (PulseDistanceWidthProtocolConstants *aProtocolConstants) |
| bool | IRrecv::checkHeader_P (PulseDistanceWidthProtocolConstants const *aProtocolConstantsPGM) |
| void | IRrecv::checkForRepeatSpaceTicksAndSetFlag (uint16_t aMaximumRepeatSpaceTicks) |
| bool | IRrecv::checkForRecordGapsMicros (Print *aSerial) |
| Checks if protocol is not detected and detected space between two transmissions is smaller than known value for protocols (Sony with around 24 ms) More... | |
| static void | IRrecv::printActiveIRProtocols (Print *aSerial) |
Variables | |
| const char string_Unknown[] | PROGMEM = "UNKNOWN" |
| IRrecv | IrReceiver |
| The receiver instance. More... | |
| const char *const | ProtocolNames [] |
| #define FNV_BASIS_32 2166136261 |
used for decodeHash()
Definition at line 1127 of file IRReceive.hpp.
| #define FNV_PRIME_32 16777619 |
used for decodeHash()
Definition at line 1126 of file IRReceive.hpp.
| IRrecv::IRrecv | ( | ) |
Instantiate the IRrecv class.
Multiple instantiation is not supported.
| IRReceivePin | Arduino pin to use. No sanity check is made. |
Definition at line 63 of file IRReceive.hpp.

| IRrecv::IRrecv | ( | uint_fast8_t | aReceivePin | ) |
| IRrecv::IRrecv | ( | uint_fast8_t | aReceivePin, |
| uint_fast8_t | aFeedbackLEDPin | ||
| ) |
Instantiate the IRrecv class.
Multiple instantiation is not supported.
| aReceivePin | Arduino pin to use, where a demodulating IR receiver is connected. |
| aFeedbackLEDPin | if 0xFF, then take board specific LED_BUILTIN pin if it is defined as macro |
Definition at line 76 of file IRReceive.hpp.

| bool IRrecv::available | ( | ) |
Returns true if IR receiver has received a complete IR frame (detected by timeout after last mark).
Definition at line 536 of file IRReceive.hpp.

| void IRrecv::begin | ( | uint_fast8_t | aReceivePin, |
| bool | aEnableLEDFeedback = false, |
||
| uint_fast8_t | aFeedbackLEDPin = USE_DEFAULT_FEEDBACK_LED_PIN |
||
| ) |
Initializes the receive and feedback pin.
| aReceivePin | The Arduino pin number, where a demodulating IR receiver is connected. |
| aEnableLEDFeedback | if true / ENABLE_LED_FEEDBACK, then let the feedback led blink on receiving IR signal |
| aFeedbackLEDPin | if 0xFF, then take board specific LED_BUILTIN pin if it is defined as macro |
Definition at line 311 of file IRReceive.hpp.

| bool IRrecv::checkForRecordGapsMicros | ( | Print * | aSerial | ) |
Checks if protocol is not detected and detected space between two transmissions is smaller than known value for protocols (Sony with around 24 ms)
Definition at line 1429 of file IRReceive.hpp.

| void IRrecv::checkForRepeatSpaceTicksAndSetFlag | ( | uint16_t | aMaximumRepeatSpaceTicks | ) |
| bool IRrecv::checkHeader | ( | PulseDistanceWidthProtocolConstants * | aProtocolConstants | ) |
| bool IRrecv::checkHeader_P | ( | PulseDistanceWidthProtocolConstants const * | aProtocolConstantsPGM | ) |
Definition at line 1228 of file IRReceive.hpp.


| uint_fast8_t IRrecv::compare | ( | uint16_t | oldval, |
| uint16_t | newval | ||
| ) |
Compare two (tick) values for Hash decoder Use a tolerance of 20% to enable e.g.
500 and 600 (NEC timing) and at least 200 and 250 to be equal
Definition at line 1133 of file IRReceive.hpp.

| bool IRrecv::decode | ( | ) |
The main decode function, attempts to decode the recently receive IR signal.
The set of decoders used is determined by active definitions of the DECODE_<PROTOCOL> macros. Results of decoding are stored in IrReceiver.decodedIRData.* like e.g. IrReceiver.decodedIRData.command.
Definition at line 560 of file IRReceive.hpp.


| bool IRrecv::decodeHash | ( | ) |
Decodes an arbitrary IR code to a 32-bit value.
Instead of decoding using a standard encoding scheme (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value.
The algorithm looks at the sequence of MARK and SPACE signals, and see if each one is more than 20% shorter (0), the same (+/- 20%) length (1), or more than 20% longer (2) than the previous MARK or SPACE. It hash the resulting sequence of 0's, 1's, and 2's to a 32-bit value. This will give a unique value for each different code (probably), for most code systems.
Uses FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param Converts the raw code values into a 32-bit hash code. Hopefully this code is unique for each button. This isn't a "real" decoding, just an arbitrary value.
see: http://www.righto.com/2010/01/using-arbitrary-remotes-with-arduino.html
Definition at line 1160 of file IRReceive.hpp.


| bool IRrecv::decodeHashOld | ( | decode_results * | aResults | ) |
Definition at line 1184 of file IRReceive.hpp.


| void IRrecv::decodePulseDistanceWidthData | ( | PulseDistanceWidthProtocolConstants * | aProtocolConstants, |
| uint_fast8_t | aNumberOfBits, | ||
| IRRawlenType | aStartOffset = 3 |
||
| ) |
Decode pulse distance protocols for PulseDistanceWidthProtocolConstants.
Definition at line 1076 of file IRReceive.hpp.


| void IRrecv::decodePulseDistanceWidthData | ( | uint_fast8_t | aNumberOfBits, |
| IRRawlenType | aStartOffset, | ||
| uint16_t | aOneMarkMicros, | ||
| uint16_t | aOneSpaceMicros, | ||
| uint16_t | aZeroMarkMicros, | ||
| bool | aMSBfirst | ||
| ) |
Old deprecated version with 3 timing parameters instead of one and a aIsPulseWidthProtocol flag.
Definition at line 885 of file IRReceive.hpp.

| void IRrecv::decodePulseDistanceWidthData | ( | uint_fast8_t | aNumberOfBits, |
| IRRawlenType | aStartOffset, | ||
| uint16_t | aOneMarkMicros, | ||
| uint16_t | aZeroMarkMicros, | ||
| uint16_t | aOneSpaceMicros, | ||
| uint16_t | aZeroSpaceMicros, | ||
| bool | aMSBfirst | ||
| ) |
| void IRrecv::decodePulseDistanceWidthData | ( | uint_fast8_t | aNumberOfBits, |
| IRRawlenType | aStartOffset, | ||
| uint16_t | aOneMicros, | ||
| bool | aIsPulseWidthProtocol, | ||
| bool | aMSBfirst | ||
| ) |
Decode pulse distance width protocols.
We only check the mark or space length of a 1 against a threshold value, otherwise we always assume a 0! We do not check the length of the constant pulse for the widely used PulseDistance width and the constant pause for PulseWidth (currently only sony protocol). using matchMark() and matchSpace(), which includes MARK_EXCESS_MICROS in comparison.
We can have the following protocol timings PULSE_DISTANCE: Pause/spaces have different length and determine the bit value, longer space is 1. Pulses/marks can be constant, like NEC. PULSE_WIDTH: Pulses/marks have different length and determine the bit value, longer mark is 1. Pause/spaces can be constant, like Sony. PULSE_DISTANCE_WIDTH: Pulses/marks and pause/spaces have different length, often the bit length is constant, like MagiQuest. Can be decoded using the PULSE_DISTANCE decoding.
Input is IrReceiver.irparams.rawbuf[] Output is IrReceiver.decodedIRData.decodedRawData
| aNumberOfBits | Number of bits to decode from irparams.rawbuf[] array. |
| aStartOffset | Offset in irparams.rawbuf[] to start decoding. Must point to a mark. |
| aOneMicros | Timing value for 1 |
| aIsPulseWidthProtocol | If true the aOneThresholdMicros id the mark threshold for 1, otherwise the space threshold |
| aMSBfirst | If true send Most Significant Bit first, else send Least Significant Bit (lowest bit) first. |
Definition at line 755 of file IRReceive.hpp.

| void IRrecv::decodePulseDistanceWidthData_P | ( | PulseDistanceWidthProtocolConstants const * | aProtocolConstantsPGM, |
| uint_fast8_t | aNumberOfBits, | ||
| IRRawlenType | aStartOffset = 3 |
||
| ) |
Definition at line 1112 of file IRReceive.hpp.


| bool IRrecv::decodeStrictPulseDistanceWidthData | ( | uint_fast8_t | aNumberOfBits, |
| IRRawlenType | aStartOffset, | ||
| uint16_t | aOneMarkMicros, | ||
| uint16_t | aOneSpaceMicros, | ||
| uint16_t | aZeroMarkMicros, | ||
| uint16_t | aZeroSpaceMicros, | ||
| bool | aMSBfirst | ||
| ) |
Definition at line 961 of file IRReceive.hpp.


| void IRrecv::decodeWithThresholdPulseDistanceWidthData | ( | uint_fast8_t | aNumberOfBits, |
| IRRawlenType | aStartOffset, | ||
| uint16_t | aOneThresholdMicros, | ||
| bool | aIsPulseWidthProtocol, | ||
| bool | aMSBfirst | ||
| ) |
New threshold decoder to be activated by USE_THRESHOLD_DECODER Assumes a 0 for shorter and a 1 for longer timing.
Thus the value must be eventually inverted by the calling protocol decoder (MagiQuest). In normal decoder, we check whether there is a timing for a 1 (usually the longer timing) within a range of 75 % to 125 % of the nominal timing. See TICKS_LOW. Many protocols have a ratio of 1 to 3 between short and long timing. In this case this decoder extends the range to 66% and the upper bound does not matter anyway. I hope that this will give slightly better results especially for
| aNumberOfBits | Number of bits to decode from irparams.rawbuf[] array. |
| aStartOffset | Offset in irparams.rawbuf[] to start decoding. Must point to a mark. |
| aOneThresholdMicros | Threshold value for 1 |
| aIsPulseWidthProtocol | If true the aOneThresholdMicros id the mark threshold for 1, otherwise the space threshold |
| aMSBfirst | If true send Most Significant Bit first, else send Least Significant Bit (lowest bit) first. |
Definition at line 833 of file IRReceive.hpp.

| void IRrecv::disableIRIn | ( | ) |
Alias for stop().
Definition at line 477 of file IRReceive.hpp.

| void IRrecv::enableIRIn | ( | ) |
Alias for start().
Definition at line 413 of file IRReceive.hpp.

| void IRrecv::end | ( | ) |
Alias for stop().
Definition at line 483 of file IRReceive.hpp.

| int getMarkExcessMicros | ( | ) |
Getter function for MARK_EXCESS_MICROS.
Definition at line 1420 of file IRReceive.hpp.

| const char* getProtocolString | ( | decode_type_t | aProtocol | ) |
| void IRrecv::initDecodedIRData | ( | ) |
Is internally called by decode before calling decoders.
Must be used to setup data, if you call decoders manually.
Definition at line 502 of file IRReceive.hpp.

| void IRReceiveTimerInterruptHandler | ( | ) |
| bool IRrecv::isIdle | ( | ) |
Definition at line 529 of file IRReceive.hpp.

| bool MATCH | ( | uint16_t | measured_ticks, |
| uint16_t | desired_us | ||
| ) |
| bool MATCH_MARK | ( | uint16_t | measured_ticks, |
| uint16_t | desired_us | ||
| ) |
| bool MATCH_SPACE | ( | uint16_t | measured_ticks, |
| uint16_t | desired_us | ||
| ) |
| bool matchMark | ( | uint16_t | aMeasuredTicks, |
| uint16_t | aMatchValueMicros | ||
| ) |
Compensate for marks exceeded by demodulator hardware.
Definition at line 1327 of file IRReceive.hpp.


| bool matchSpace | ( | uint16_t | aMeasuredTicks, |
| uint16_t | aMatchValueMicros | ||
| ) |
Compensate for spaces shortened by demodulator hardware.
Definition at line 1375 of file IRReceive.hpp.


| bool matchTicks | ( | uint16_t | aMeasuredTicks, |
| uint16_t | aMatchValueMicros | ||
| ) |
Match function WITHOUT compensating for marks exceeded or spaces shortened by demodulator hardware Match is true, if signal value is bigger/equal 75% and less/equal 125% of aMatchValueMicros.
Definition at line 1264 of file IRReceive.hpp.

| bool matchTicks | ( | uint16_t | aMeasuredTicks, |
| uint16_t | aMatchValueMicros, | ||
| int16_t | aCompensationMicrosForTicks | ||
| ) |
Match function WITH compensating for marks exceeded or spaces shortened by demodulator hardware.
Definition at line 1294 of file IRReceive.hpp.
|
static |
Definition at line 1454 of file IRReceive.hpp.
| void printActiveIRProtocols | ( | Print * | aSerial | ) |
Definition at line 1462 of file IRReceive.hpp.
| IRData * IRrecv::read | ( | ) |
Returns pointer to IrReceiver.decodedIRData if IR receiver data is available, else nullptr.
Definition at line 543 of file IRReceive.hpp.

| void IRrecv::ReceiveInterruptHandler | ( | ) |
Definition at line 109 of file IRReceive.hpp.


| void IRrecv::registerReceiveCompleteCallback | ( | void(*)(void) | aReceiveCompleteCallbackFunction | ) |
Sets the function to call if a complete protocol frame has arrived.
Definition at line 369 of file IRReceive.hpp.
| void IRrecv::restartAfterSend | ( | ) |
Restarts receiver after send.
Is a NOP if sending does not require a timer.
Definition at line 454 of file IRReceive.hpp.

| void IRrecv::restartTimer | ( | ) |
| void IRrecv::restartTimer | ( | uint32_t | aMicrosecondsToAddToGapCounter | ) |
Configures the timer and the state machine for IR reception.
Does not call resume()! We assume, that timer interrupts are disabled here, otherwise it makes no sense to use this functions. Therefore we do not need to guard the change of the volatile TickCounterForISR here :-). The tick counter value is already at 100 when decode() gets true, because of the 5000 us minimal gap defined in RECORD_GAP_MICROS. If TickCounterForISR is not adjusted with the value of the microseconds, the timer was stopped, it can happen, that a new IR frame is recognized as a repeat, because the value of RECORD_GAP_MICROS was not reached by TickCounterForISR counter before receiving the new IR frame.
| aMicrosecondsToAddToGapCounter | To compensate for the amount of microseconds the timer was stopped / disabled. |
Definition at line 427 of file IRReceive.hpp.

| void IRrecv::restartTimerWithTicksToAdd | ( | uint16_t | aTicksToAddToGapCounter | ) |
Configures the timer and the state machine for IR reception.
Does not call resume()!
| aTicksToAddToGapCounter | To compensate for the amount of ticks the timer was stopped / disabled. |
Definition at line 439 of file IRReceive.hpp.

| void IRrecv::resume | ( | ) |
Restart the ISR (Interrupt Service Routine) state machine, to enable receiving of the next IR frame.
Internal counting of gap timing is independent of StateForISR and therefore independent of call time of resume().
Definition at line 491 of file IRReceive.hpp.

| void IRrecv::setReceivePin | ( | uint_fast8_t | aReceivePinNumber | ) |
Sets / changes the receiver pin number.
Definition at line 331 of file IRReceive.hpp.

| void IRrecv::start | ( | ) |
Start the receiving process.
This configures the timer and the state machine for IR reception and enables the receive sample timer interrupt which consumes a small amount of CPU every 50 us.
Definition at line 379 of file IRReceive.hpp.


| void IRrecv::stop | ( | ) |
Disables the timer for IR reception.
Definition at line 463 of file IRReceive.hpp.


| void IRrecv::stopTimer | ( | ) |
| IRrecv IrReceiver |
The receiver instance.
Definition at line 57 of file IRReceive.hpp.
| const char* const ProtocolNames [] PROGMEM = "UNKNOWN" |
Definition at line 40 of file IRProtocol.hpp.
| const char *const ProtocolNames |
Definition at line 79 of file IRProtocol.hpp.