diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2017-06-04 17:39:52 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2017-06-04 17:39:52 +0200 |
commit | 094c977b8877d652f629260cc753aacc7000e328 (patch) | |
tree | 96443f22bf31e93fd76b3dcef8c6ce57bddc5139 /include/daewoo_decoder.h | |
parent | d30e3fa68d7192da22c1569f56f564b92896170d (diff) | |
download | radio-controller-094c977b8877d652f629260cc753aacc7000e328.tar.gz radio-controller-094c977b8877d652f629260cc753aacc7000e328.tar.bz2 radio-controller-094c977b8877d652f629260cc753aacc7000e328.tar.xz radio-controller-094c977b8877d652f629260cc753aacc7000e328.zip |
o Daewoo -> Samsung.
Diffstat (limited to 'include/daewoo_decoder.h')
-rw-r--r-- | include/daewoo_decoder.h | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/include/daewoo_decoder.h b/include/daewoo_decoder.h deleted file mode 100644 index b790a1a..0000000 --- a/include/daewoo_decoder.h +++ /dev/null @@ -1,91 +0,0 @@ -#pragma - -#include "decoder.h" - -namespace radio_controller { - -class daewoo_decoder : public decoder { - - inline - bool between(uint16_t smallest, uint16_t biggest, uint16_t value) - { - return smallest <= value && value <= biggest; - } - - template<uint16_t PeriodTime, uint16_t PulseTime> - bool check_pulse(sample s) - { -// printf("between(%d, %d, %d) && between(%d, %d, %d)\n", -// int(PeriodTime * 0.8), int(PeriodTime * 1.2), s.period_us, -// int(PulseTime * 0.8), int(PulseTime * 1.2), s.pulse_us); - - return between(uint16_t(PeriodTime * 0.8), uint16_t(PeriodTime * 1.2), s.period_us) && - between(uint16_t(PulseTime * 0.8), uint16_t(PulseTime * 1.2), s.pulse_us); - } - - inline - bool start_bit(sample s) - { - return check_pulse<9000, 4500>(s); - } - - inline - bool one_bit(sample s) - { - return check_pulse<2250, 560>(s); - } - - inline - bool zero_bit(sample s) - { - return check_pulse<1125, 560>(s); - } - - __noinline - void dump_values(sample_iterator *it) { - while (it->next()) { - auto s = it->value(); - auto pct = int(s.pulse_us / double(s.period_us) * 100); - auto type = start_bit(s) ? "start" : one_bit(s) ? "1" : zero_bit(s) ? "0" : "?"; - printf("% 5d us % 5d us, %s\n", s.period_us, s.pulse_us, type); - } - } - -public: - - __noinline - decoding_result decode(sample_iterator *it) override - { - printf("Daewoo, size=%d\n", it->size()); - - dump_values(it); - it->reset(); - - sample s{}; - bit_string data; - - if (!it->next()) { - return {decoding_state::TOO_SHORT}; - } - s = it->value(); - if (!start_bit(s)) { - return {decoding_state::BAD_START}; - } - - for (int i = 0; i < 32 && it->next(); i++) { - s = it->value(); - - if (one_bit(s)) { - data.append(true); - } else if (zero_bit(s)) { - data.append(false); - } else { - return {decoding_state::SHORT_BODY}; - } - } - - return {decoding_state::OK, data}; - } -}; - -} // namespace radio_controller |