summaryrefslogtreecommitdiff
path: root/include/daewoo_decoder.h
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2017-06-04 17:39:52 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2017-06-04 17:39:52 +0200
commit094c977b8877d652f629260cc753aacc7000e328 (patch)
tree96443f22bf31e93fd76b3dcef8c6ce57bddc5139 /include/daewoo_decoder.h
parentd30e3fa68d7192da22c1569f56f564b92896170d (diff)
downloadradio-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.h91
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