From 4ee01dab6105e346b731a13321a3e6a5d111d3e4 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 4 Jun 2017 22:14:04 +0200 Subject: o Trying for a more generic decoder structure, should be able to be dynamically programmed later on. o Adding decoder for NEC. --- include/decoder.h | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'include/decoder.h') diff --git a/include/decoder.h b/include/decoder.h index 9aee34d..4ae723c 100644 --- a/include/decoder.h +++ b/include/decoder.h @@ -2,6 +2,7 @@ #include #include +#include namespace radio_controller { @@ -10,6 +11,26 @@ struct sample { uint16_t pulse_us; }; +namespace decoder_ns { + +inline static +bool between(uint16_t smallest, uint16_t biggest, uint16_t value) +{ + return smallest <= value && value <= biggest; +} + +inline static +bool check_pulse(sample s, uint16_t period_time, uint16_t pulse_time) +{ + printf("check_pulse: between(%d, %d, %d) && between(%d, %d, %d)\n", + uint16_t(period_time * 0.8), uint16_t(period_time * 1.2), s.period_us, + uint16_t(pulse_time * 0.8), uint16_t(pulse_time * 1.2), s.pulse_us); + + return between(uint16_t(period_time * 0.8), uint16_t(period_time * 1.2), s.period_us) && + between(uint16_t(pulse_time * 0.8), uint16_t(pulse_time * 1.2), s.pulse_us); +} +} // namespace decoder_ns + class sample_iterator { public: virtual int size() = 0; @@ -77,9 +98,11 @@ public: enum class decoding_state { OK, - TOO_SHORT, - BAD_START, - SHORT_BODY + FAIL, +// TOO_SHORT, +// BAD_START, +// SHORT_BODY, +// UNKNOWN_TOKEN, }; class decoding_result { -- cgit v1.2.3