NEC_UNIT
geq_margin(ev.duration, NEC_TRAILER_SPACE, NEC_UNIT / 2)) {
if (eq_margin(ev.duration, NEC_BIT_1_SPACE, NEC_UNIT / 2))
else if (!eq_margin(ev.duration, NEC_BIT_0_SPACE, NEC_UNIT / 2))
#define NEC_HEADER_PULSE (16 * NEC_UNIT)
if (!eq_margin(ev.duration, NEC_TRAILER_PULSE, NEC_UNIT / 2))
#define NECX_HEADER_PULSE (8 * NEC_UNIT) /* Less common NEC variant */
if (!geq_margin(ev.duration, NEC_TRAILER_SPACE, NEC_UNIT / 2))
#define NEC_HEADER_SPACE (8 * NEC_UNIT)
#define NEC_REPEAT_SPACE (4 * NEC_UNIT)
#define NEC_BIT_PULSE (1 * NEC_UNIT)
#define NEC_BIT_0_SPACE (1 * NEC_UNIT)
#define NEC_BIT_1_SPACE (3 * NEC_UNIT)
#define NEC_TRAILER_PULSE (1 * NEC_UNIT)
#define NEC_TRAILER_SPACE (10 * NEC_UNIT) /* even longer in reality */
if (eq_margin(ev.duration, NEC_HEADER_PULSE, NEC_UNIT * 2)) {
} else if (eq_margin(ev.duration, NECX_HEADER_PULSE, NEC_UNIT / 2))
if (eq_margin(ev.duration, NEC_HEADER_SPACE, NEC_UNIT)) {
} else if (eq_margin(ev.duration, NEC_REPEAT_SPACE, NEC_UNIT / 2)) {
if (!eq_margin(ev.duration, NEC_BIT_PULSE, NEC_UNIT / 2))