| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #include "irda-decoder.h"
- IrDADecoder* alloc_decoder(void) {
- IrDADecoder* decoder = malloc(sizeof(IrDADecoder));
- // init decoders
- reset_decoder_nec(&decoder->nec);
- return decoder;
- }
- void free_decoder(IrDADecoder* decoder) {
- free(decoder);
- }
- bool process_decoder(
- IrDADecoder* decoder,
- bool start_polarity,
- uint32_t* timings,
- uint32_t timings_length,
- IrDADecoderOutputData* out) {
- bool result = false;
- // zero result
- memset(out->data, 0, out->data_length);
- out->protocol = IRDA_UNKNOWN;
- out->flags = 0;
- // process data
- for(uint32_t timings_index = 0; timings_index < timings_length; timings_index++) {
- if(process_decoder_nec(&decoder->nec, start_polarity, timings[timings_index], out)) {
- out->protocol = IRDA_NEC;
- result = true;
- break;
- }
- start_polarity = !start_polarity;
- }
- return result;
- }
|