decoder-indala.h 523 B

12345678910111213141516171819202122232425262728
  1. #pragma once
  2. #include <stdint.h>
  3. #include <limits.h>
  4. #include <atomic>
  5. class DecoderIndala {
  6. public:
  7. bool read(uint8_t* data, uint8_t data_size);
  8. void process_front(bool polarity, uint32_t time);
  9. DecoderIndala();
  10. private:
  11. void reset_state();
  12. void verify();
  13. void verify_inner();
  14. uint32_t last_pulse_time = 0;
  15. uint32_t pulse_count = 0;
  16. uint32_t overall_pulse_count = 0;
  17. uint64_t readed_data = 0;
  18. std::atomic<bool> ready;
  19. uint8_t facility = 0;
  20. uint16_t number = 0;
  21. };