From 72e67a882ca40836b88c53e6ff0684156749431a Mon Sep 17 00:00:00 2001 From: Hydra Date: Sat, 1 Apr 2017 18:33:18 +0100 Subject: [PATCH] Cherry-pick 0e6e19c (without fc_msp.c) --- src/main/drivers/transponder_ir.c | 7 ++++--- src/main/drivers/transponder_ir.h | 7 ++++--- src/main/io/transponder_ir.c | 5 +++-- src/main/io/transponder_ir.h | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/drivers/transponder_ir.c b/src/main/drivers/transponder_ir.c index 3ca6788776..6eca03232a 100644 --- a/src/main/drivers/transponder_ir.c +++ b/src/main/drivers/transponder_ir.c @@ -151,7 +151,7 @@ void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder) DMA_ITConfig(dmaRef, DMA_IT_TC, ENABLE); } -bool transponderIrInit(const TransponderProvider* transponderProvider) +bool transponderIrInit(const transponderProvider_e provider) { ioTag_t ioTag = IO_TAG_NONE; for (int i = 0; i < USABLE_TIMER_CHANNEL_COUNT; i++) { @@ -165,14 +165,15 @@ bool transponderIrInit(const TransponderProvider* transponderProvider) return false; } - uint8_t transponderProviderLocal = *transponderProvider; - switch(transponderProviderLocal){ + switch (provider) { case ARCITIMER: transponderIrInitArcitimer(&transponder); break; case ILAP: transponderIrInitIlap(&transponder); break; + default: + return false; } transponderIrHardwareInit(ioTag, &transponder); diff --git a/src/main/drivers/transponder_ir.h b/src/main/drivers/transponder_ir.h index ede59fc2b4..0bfcdc0bf8 100644 --- a/src/main/drivers/transponder_ir.h +++ b/src/main/drivers/transponder_ir.h @@ -79,16 +79,17 @@ typedef struct transponder_s { const struct transponderVTable *vTable; } transponder_t; -typedef enum TransponderProvider{ +typedef enum { + NONE, ARCITIMER, ILAP -} TransponderProvider; +} transponderProvider_e; struct transponderVTable { void (*updateTransponderDMABuffer)(transponder_t *transponder, const uint8_t* transponderData); }; -bool transponderIrInit(const TransponderProvider* transponderProvider); +bool transponderIrInit(const transponderProvider_e provider); void transponderIrDisable(void); void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder); diff --git a/src/main/io/transponder_ir.c b/src/main/io/transponder_ir.c index d7ddb672b6..038419b170 100644 --- a/src/main/io/transponder_ir.c +++ b/src/main/io/transponder_ir.c @@ -39,8 +39,9 @@ PG_REGISTER_WITH_RESET_TEMPLATE(transponderConfig_t, transponderConfig, PG_TRANSPONDER_CONFIG, 0); PG_RESET_TEMPLATE(transponderConfig_t, transponderConfig, + .provider = ILAP, + .reserved = 0, .data = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0x0, 0x0, 0x0 }, // Note, this is NOT a valid transponder code, it's just for testing production hardware - .provider = ILAP ); static bool transponderInitialised = false; @@ -85,7 +86,7 @@ void transponderUpdate(timeUs_t currentTimeUs) void transponderInit(void) { - transponderInitialised = transponderIrInit(&(transponderConfig()->provider)); + transponderInitialised = transponderIrInit(transponderConfig()->provider); if (!transponderInitialised) { return; } diff --git a/src/main/io/transponder_ir.h b/src/main/io/transponder_ir.h index afb603b4ab..4463648c78 100644 --- a/src/main/io/transponder_ir.h +++ b/src/main/io/transponder_ir.h @@ -21,7 +21,8 @@ #include "config/parameter_group.h" typedef struct transponderConfig_s { - TransponderProvider provider; + transponderProvider_e provider; + uint8_t reserved; uint8_t data[9]; } transponderConfig_t;