27 lines
		
	
	
		
			582 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			582 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| #include <stdint.h>
 | |
| #include <atomic>
 | |
| #include "protocols/protocol_ioprox.h"
 | |
| 
 | |
| class DecoderIoProx {
 | |
| public:
 | |
|     bool read(uint8_t* data, uint8_t data_size);
 | |
|     void process_front(bool polarity, uint32_t time);
 | |
|     DecoderIoProx();
 | |
| 
 | |
| private:
 | |
|     uint32_t current_period_duration = 0;
 | |
|     uint32_t demodulation_sample_duration = 0;
 | |
| 
 | |
|     bool current_demodulated_value = false;
 | |
|     bool demodulated_value_invalid = false;
 | |
| 
 | |
|     uint8_t raw_data[8] = {0};
 | |
|     void store_data(bool data);
 | |
| 
 | |
|     std::atomic<bool> ready;
 | |
| 
 | |
|     void reset_state();
 | |
|     ProtocolIoProx ioprox;
 | |
| };
 | 
