[FL-1696, FL-1685] IRDA: Add RC5, decoder refactoring (#663)
* [FL-1696] IRDA: Split decoders and protocols * IRDA: Restruct directories. * IRDA: fix long timings * [FL-1685] IRDA: Add RC5 Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "furi/check.h"
|
||||
#include "irda_common_i.h"
|
||||
#include "irda.h"
|
||||
#include "common/irda_common_i.h"
|
||||
#include <stdint.h>
|
||||
#include "../irda_i.h"
|
||||
#include "irda_protocol_defs_i.h"
|
||||
@@ -14,6 +15,7 @@ static const uint32_t repeat_timings[] = {
|
||||
|
||||
void irda_encoder_nec_reset(void* encoder_ptr, const IrdaMessage* message) {
|
||||
furi_assert(encoder_ptr);
|
||||
furi_assert(message);
|
||||
|
||||
IrdaCommonEncoder* encoder = encoder_ptr;
|
||||
irda_common_encoder_reset(encoder);
|
||||
@@ -24,24 +26,11 @@ void irda_encoder_nec_reset(void* encoder_ptr, const IrdaMessage* message) {
|
||||
uint8_t command_inverse = ~command;
|
||||
|
||||
uint32_t* data = (void*) encoder->data;
|
||||
*data |= address;
|
||||
*data |= address_inverse << 8;
|
||||
*data |= command << 16;
|
||||
*data |= command_inverse << 24;
|
||||
}
|
||||
|
||||
void irda_encoder_necext_reset(void* encoder_ptr, const IrdaMessage* message) {
|
||||
furi_assert(encoder_ptr);
|
||||
|
||||
IrdaCommonEncoder* encoder = encoder_ptr;
|
||||
irda_common_encoder_reset(encoder);
|
||||
|
||||
uint16_t address = message->address;
|
||||
uint8_t command = message->command;
|
||||
uint8_t command_inverse = ~command;
|
||||
|
||||
uint32_t* data = (void*) encoder->data;
|
||||
*data |= address;
|
||||
if (message->protocol == IrdaProtocolNEC) {
|
||||
*data = (address | (address_inverse << 8));
|
||||
} else if (message->protocol == IrdaProtocolNECext) {
|
||||
*data = (uint16_t) message->address;
|
||||
}
|
||||
*data |= command << 16;
|
||||
*data |= command_inverse << 24;
|
||||
}
|
||||
@@ -67,10 +56,6 @@ IrdaStatus irda_encoder_nec_encode_repeat(IrdaCommonEncoder* encoder, uint32_t*
|
||||
return done ? IrdaStatusDone : IrdaStatusOk;
|
||||
}
|
||||
|
||||
void* irda_encoder_necext_alloc(void) {
|
||||
return irda_common_encoder_alloc(&protocol_necext);
|
||||
}
|
||||
|
||||
void* irda_encoder_nec_alloc(void) {
|
||||
return irda_common_encoder_alloc(&protocol_nec);
|
||||
}
|
||||
|
Reference in New Issue
Block a user