IRremote
IRProtocol.h File Reference

Common declarations for receiving and sending. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  DistanceWidthTimingInfoStruct
 
struct  PulseDistanceWidthProtocolConstants
 

Macros

#define DECODE_DENON
 
#define DECODE_JVC
 
#define DECODE_KASEIKYO
 
#define DECODE_PANASONIC
 
#define DECODE_LG
 
#define DECODE_NEC
 
#define DECODE_SAMSUNG
 
#define DECODE_SONY
 
#define DECODE_RC5
 
#define DECODE_RC6
 
#define DECODE_BOSEWAVE
 
#define DECODE_LEGO_PF
 
#define DECODE_MAGIQUEST
 
#define DECODE_WHYNTER
 
#define DECODE_FAST
 
#define DECODE_DISTANCE_WIDTH
 
#define DECODE_HASH
 
#define SIRCS_12_PROTOCOL   12
 
#define SIRCS_15_PROTOCOL   15
 
#define SIRCS_20_PROTOCOL   20
 
#define IRDATA_FLAGS_EMPTY   0x00
 
#define IRDATA_FLAGS_IS_REPEAT   0x01
 The gap between the preceding frame is as smaller than the maximum gap expected for a repeat. !!!We do not check for changed command or address, because it is almost not possible to press 2 different buttons on the remote within around 100 ms!!! More...
 
#define IRDATA_FLAGS_IS_AUTO_REPEAT   0x02
 The current repeat frame is a repeat, that is always sent after a regular frame and cannot be avoided. Only specified for protocols DENON, and LEGO. More...
 
#define IRDATA_FLAGS_PARITY_FAILED   0x04
 The current (autorepeat) frame violated parity check. More...
 
#define IRDATA_FLAGS_TOGGLE_BIT   0x08
 Is set if RC5 or RC6 toggle bit is set. More...
 
#define IRDATA_TOGGLE_BIT_MASK   0x08
 deprecated -is set if RC5 or RC6 toggle bit is set. More...
 
#define IRDATA_FLAGS_EXTRA_INFO   0x10
 There is extra info not contained in address and data (e.g. Kaseikyo unknown vendor ID, or in decodedRawDataArray). More...
 
#define IRDATA_FLAGS_IS_PROTOCOL_WITH_DIFFERENT_REPEAT   0x20
 Here we have a repeat of type NEC2 or SamsungLG. More...
 
#define IRDATA_FLAGS_WAS_OVERFLOW   0x40
 irparams.rawlen is set to 0 in this case to avoid endless OverflowFlag. More...
 
#define IRDATA_FLAGS_IS_MSB_FIRST   0x80
 Value is mainly determined by the (known) protocol. More...
 
#define IRDATA_FLAGS_IS_LSB_FIRST   0x00
 
#define IRDATA_FLAGS_LSB_MSB_FIRST_MASK   IRDATA_FLAGS_IS_MSB_FIRST
 
#define PROTOCOL_IS_PULSE_DISTANCE   0x00
 
#define PROTOCOL_IS_PULSE_DISTANCE_WIDTH   0x00
 
#define PROTOCOL_IS_PULSE_WIDTH   0x10
 
#define PROTOCOL_IS_PULSE_WIDTH_MASK   PROTOCOL_IS_PULSE_WIDTH
 
#define SUPPRESS_STOP_BIT   0x20
 
#define PROTOCOL_IS_MSB_FIRST   IRDATA_FLAGS_IS_MSB_FIRST
 
#define PROTOCOL_IS_LSB_FIRST   IRDATA_FLAGS_IS_LSB_FIRST
 
#define PROTOCOL_IS_MSB_MASK   IRDATA_FLAGS_IS_MSB_FIRST
 
#define BEO_KHZ   455
 
#define SONY_KHZ   40
 
#define BOSEWAVE_KHZ   38
 
#define DENON_KHZ   38
 
#define JVC_KHZ   38
 
#define LG_KHZ   38
 
#define NEC_KHZ   38
 
#define SAMSUNG_KHZ   38
 
#define KASEIKYO_KHZ   37
 
#define RC5_RC6_KHZ   36
 

Enumerations

enum  decode_type_t {
  UNKNOWN = 0, PULSE_WIDTH, PULSE_DISTANCE, APPLE,
  DENON, JVC, LG, LG2,
  NEC, NEC2, ONKYO, PANASONIC,
  KASEIKYO, KASEIKYO_DENON, KASEIKYO_SHARP, KASEIKYO_JVC,
  KASEIKYO_MITSUBISHI, RC5, RC6, RC6A,
  SAMSUNG, SAMSUNGLG, SAMSUNG48, SHARP,
  SONY, BANG_OLUFSEN, BOSEWAVE, LEGO_PF,
  MAGIQUEST, WHYNTER, FAST, OTHER
}
 An enum consisting of all supported formats. More...
 

Functions

const char * getProtocolString (decode_type_t aProtocol)
 
uint8_t bitreverseOneByte (uint8_t aValue)
 
uint32_t bitreverse32Bit (uint32_t aInput)
 

Variables

const char *const ProtocolNames []
 
uint8_t sLastSendToggleValue
 

Detailed Description

Common declarations for receiving and sending.

This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.

MIT License

Copyright (c) 2020-2025 Armin Joachimsmeyer

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Definition in file IRProtocol.h.

Macro Definition Documentation

◆ BEO_KHZ

#define BEO_KHZ   455

Definition at line 187 of file IRProtocol.h.

◆ BOSEWAVE_KHZ

#define BOSEWAVE_KHZ   38

Definition at line 190 of file IRProtocol.h.

◆ DECODE_BOSEWAVE

#define DECODE_BOSEWAVE

Definition at line 69 of file IRProtocol.h.

◆ DECODE_DENON

#define DECODE_DENON

Definition at line 57 of file IRProtocol.h.

◆ DECODE_DISTANCE_WIDTH

#define DECODE_DISTANCE_WIDTH

Definition at line 77 of file IRProtocol.h.

◆ DECODE_FAST

#define DECODE_FAST

Definition at line 73 of file IRProtocol.h.

◆ DECODE_HASH

#define DECODE_HASH

Definition at line 78 of file IRProtocol.h.

◆ DECODE_JVC

#define DECODE_JVC

Definition at line 58 of file IRProtocol.h.

◆ DECODE_KASEIKYO

#define DECODE_KASEIKYO

Definition at line 59 of file IRProtocol.h.

◆ DECODE_LEGO_PF

#define DECODE_LEGO_PF

Definition at line 70 of file IRProtocol.h.

◆ DECODE_LG

#define DECODE_LG

Definition at line 61 of file IRProtocol.h.

◆ DECODE_MAGIQUEST

#define DECODE_MAGIQUEST

Definition at line 71 of file IRProtocol.h.

◆ DECODE_NEC

#define DECODE_NEC

Definition at line 62 of file IRProtocol.h.

◆ DECODE_PANASONIC

#define DECODE_PANASONIC

Definition at line 60 of file IRProtocol.h.

◆ DECODE_RC5

#define DECODE_RC5

Definition at line 65 of file IRProtocol.h.

◆ DECODE_RC6

#define DECODE_RC6

Definition at line 66 of file IRProtocol.h.

◆ DECODE_SAMSUNG

#define DECODE_SAMSUNG

Definition at line 63 of file IRProtocol.h.

◆ DECODE_SONY

#define DECODE_SONY

Definition at line 64 of file IRProtocol.h.

◆ DECODE_WHYNTER

#define DECODE_WHYNTER

Definition at line 72 of file IRProtocol.h.

◆ DENON_KHZ

#define DENON_KHZ   38

Definition at line 191 of file IRProtocol.h.

◆ IRDATA_FLAGS_EMPTY

#define IRDATA_FLAGS_EMPTY   0x00

Definition at line 147 of file IRProtocol.h.

◆ IRDATA_FLAGS_EXTRA_INFO

#define IRDATA_FLAGS_EXTRA_INFO   0x10

There is extra info not contained in address and data (e.g. Kaseikyo unknown vendor ID, or in decodedRawDataArray).

Definition at line 153 of file IRProtocol.h.

◆ IRDATA_FLAGS_IS_AUTO_REPEAT

#define IRDATA_FLAGS_IS_AUTO_REPEAT   0x02

The current repeat frame is a repeat, that is always sent after a regular frame and cannot be avoided. Only specified for protocols DENON, and LEGO.

Definition at line 149 of file IRProtocol.h.

◆ IRDATA_FLAGS_IS_LSB_FIRST

#define IRDATA_FLAGS_IS_LSB_FIRST   0x00

Definition at line 157 of file IRProtocol.h.

◆ IRDATA_FLAGS_IS_MSB_FIRST

#define IRDATA_FLAGS_IS_MSB_FIRST   0x80

Value is mainly determined by the (known) protocol.

Definition at line 156 of file IRProtocol.h.

◆ IRDATA_FLAGS_IS_PROTOCOL_WITH_DIFFERENT_REPEAT

#define IRDATA_FLAGS_IS_PROTOCOL_WITH_DIFFERENT_REPEAT   0x20

Here we have a repeat of type NEC2 or SamsungLG.

Definition at line 154 of file IRProtocol.h.

◆ IRDATA_FLAGS_IS_REPEAT

#define IRDATA_FLAGS_IS_REPEAT   0x01

The gap between the preceding frame is as smaller than the maximum gap expected for a repeat. !!!We do not check for changed command or address, because it is almost not possible to press 2 different buttons on the remote within around 100 ms!!!

Definition at line 148 of file IRProtocol.h.

◆ IRDATA_FLAGS_LSB_MSB_FIRST_MASK

#define IRDATA_FLAGS_LSB_MSB_FIRST_MASK   IRDATA_FLAGS_IS_MSB_FIRST

Definition at line 158 of file IRProtocol.h.

◆ IRDATA_FLAGS_PARITY_FAILED

#define IRDATA_FLAGS_PARITY_FAILED   0x04

The current (autorepeat) frame violated parity check.

Definition at line 150 of file IRProtocol.h.

◆ IRDATA_FLAGS_TOGGLE_BIT

#define IRDATA_FLAGS_TOGGLE_BIT   0x08

Is set if RC5 or RC6 toggle bit is set.

Definition at line 151 of file IRProtocol.h.

◆ IRDATA_FLAGS_WAS_OVERFLOW

#define IRDATA_FLAGS_WAS_OVERFLOW   0x40

irparams.rawlen is set to 0 in this case to avoid endless OverflowFlag.

Definition at line 155 of file IRProtocol.h.

◆ IRDATA_TOGGLE_BIT_MASK

#define IRDATA_TOGGLE_BIT_MASK   0x08

deprecated -is set if RC5 or RC6 toggle bit is set.

Definition at line 152 of file IRProtocol.h.

◆ JVC_KHZ

#define JVC_KHZ   38

Definition at line 192 of file IRProtocol.h.

◆ KASEIKYO_KHZ

#define KASEIKYO_KHZ   37

Definition at line 196 of file IRProtocol.h.

◆ LG_KHZ

#define LG_KHZ   38

Definition at line 193 of file IRProtocol.h.

◆ NEC_KHZ

#define NEC_KHZ   38

Definition at line 194 of file IRProtocol.h.

◆ PROTOCOL_IS_LSB_FIRST

#define PROTOCOL_IS_LSB_FIRST   IRDATA_FLAGS_IS_LSB_FIRST

Definition at line 180 of file IRProtocol.h.

◆ PROTOCOL_IS_MSB_FIRST

#define PROTOCOL_IS_MSB_FIRST   IRDATA_FLAGS_IS_MSB_FIRST

Definition at line 179 of file IRProtocol.h.

◆ PROTOCOL_IS_MSB_MASK

#define PROTOCOL_IS_MSB_MASK   IRDATA_FLAGS_IS_MSB_FIRST

Definition at line 181 of file IRProtocol.h.

◆ PROTOCOL_IS_PULSE_DISTANCE

#define PROTOCOL_IS_PULSE_DISTANCE   0x00

Definition at line 174 of file IRProtocol.h.

◆ PROTOCOL_IS_PULSE_DISTANCE_WIDTH

#define PROTOCOL_IS_PULSE_DISTANCE_WIDTH   0x00

Definition at line 175 of file IRProtocol.h.

◆ PROTOCOL_IS_PULSE_WIDTH

#define PROTOCOL_IS_PULSE_WIDTH   0x10

Definition at line 176 of file IRProtocol.h.

◆ PROTOCOL_IS_PULSE_WIDTH_MASK

#define PROTOCOL_IS_PULSE_WIDTH_MASK   PROTOCOL_IS_PULSE_WIDTH

Definition at line 177 of file IRProtocol.h.

◆ RC5_RC6_KHZ

#define RC5_RC6_KHZ   36

Definition at line 197 of file IRProtocol.h.

◆ SAMSUNG_KHZ

#define SAMSUNG_KHZ   38

Definition at line 195 of file IRProtocol.h.

◆ SIRCS_12_PROTOCOL

#define SIRCS_12_PROTOCOL   12

Definition at line 131 of file IRProtocol.h.

◆ SIRCS_15_PROTOCOL

#define SIRCS_15_PROTOCOL   15

Definition at line 132 of file IRProtocol.h.

◆ SIRCS_20_PROTOCOL

#define SIRCS_20_PROTOCOL   20

Definition at line 133 of file IRProtocol.h.

◆ SONY_KHZ

#define SONY_KHZ   40

Definition at line 189 of file IRProtocol.h.

◆ SUPPRESS_STOP_BIT

#define SUPPRESS_STOP_BIT   0x20

Definition at line 178 of file IRProtocol.h.

Enumeration Type Documentation

◆ decode_type_t

An enum consisting of all supported formats.

You do NOT need to remove entries from this list when disabling protocols! !!!Must be the same order as ProtocolNames in IRReceive.hpp!!!

Enumerator
UNKNOWN 
PULSE_WIDTH 
PULSE_DISTANCE 
APPLE 
DENON 
JVC 
LG 
LG2 
NEC 
NEC2 
ONKYO 
PANASONIC 
KASEIKYO 
KASEIKYO_DENON 
KASEIKYO_SHARP 
KASEIKYO_JVC 
KASEIKYO_MITSUBISHI 
RC5 
RC6 
RC6A 
SAMSUNG 
SAMSUNGLG 
SAMSUNG48 
SHARP 
SONY 
BANG_OLUFSEN 
BOSEWAVE 
LEGO_PF 
MAGIQUEST 
WHYNTER 
FAST 
OTHER 

Definition at line 93 of file IRProtocol.h.