1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 22:35:23 +03:00

Cherry-pick 0e6e19c (without fc_msp.c)

This commit is contained in:
Hydra 2017-04-01 18:33:18 +01:00 committed by jflyper
parent d8ff795327
commit 72e67a882c
4 changed files with 13 additions and 9 deletions

View file

@ -151,7 +151,7 @@ void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder)
DMA_ITConfig(dmaRef, DMA_IT_TC, ENABLE); DMA_ITConfig(dmaRef, DMA_IT_TC, ENABLE);
} }
bool transponderIrInit(const TransponderProvider* transponderProvider) bool transponderIrInit(const transponderProvider_e provider)
{ {
ioTag_t ioTag = IO_TAG_NONE; ioTag_t ioTag = IO_TAG_NONE;
for (int i = 0; i < USABLE_TIMER_CHANNEL_COUNT; i++) { for (int i = 0; i < USABLE_TIMER_CHANNEL_COUNT; i++) {
@ -165,14 +165,15 @@ bool transponderIrInit(const TransponderProvider* transponderProvider)
return false; return false;
} }
uint8_t transponderProviderLocal = *transponderProvider; switch (provider) {
switch(transponderProviderLocal){
case ARCITIMER: case ARCITIMER:
transponderIrInitArcitimer(&transponder); transponderIrInitArcitimer(&transponder);
break; break;
case ILAP: case ILAP:
transponderIrInitIlap(&transponder); transponderIrInitIlap(&transponder);
break; break;
default:
return false;
} }
transponderIrHardwareInit(ioTag, &transponder); transponderIrHardwareInit(ioTag, &transponder);

View file

@ -79,16 +79,17 @@ typedef struct transponder_s {
const struct transponderVTable *vTable; const struct transponderVTable *vTable;
} transponder_t; } transponder_t;
typedef enum TransponderProvider{ typedef enum {
NONE,
ARCITIMER, ARCITIMER,
ILAP ILAP
} TransponderProvider; } transponderProvider_e;
struct transponderVTable { struct transponderVTable {
void (*updateTransponderDMABuffer)(transponder_t *transponder, const uint8_t* transponderData); void (*updateTransponderDMABuffer)(transponder_t *transponder, const uint8_t* transponderData);
}; };
bool transponderIrInit(const TransponderProvider* transponderProvider); bool transponderIrInit(const transponderProvider_e provider);
void transponderIrDisable(void); void transponderIrDisable(void);
void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder); void transponderIrHardwareInit(ioTag_t ioTag, transponder_t *transponder);

View file

@ -39,8 +39,9 @@
PG_REGISTER_WITH_RESET_TEMPLATE(transponderConfig_t, transponderConfig, PG_TRANSPONDER_CONFIG, 0); PG_REGISTER_WITH_RESET_TEMPLATE(transponderConfig_t, transponderConfig, PG_TRANSPONDER_CONFIG, 0);
PG_RESET_TEMPLATE(transponderConfig_t, transponderConfig, 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 .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; static bool transponderInitialised = false;
@ -85,7 +86,7 @@ void transponderUpdate(timeUs_t currentTimeUs)
void transponderInit(void) void transponderInit(void)
{ {
transponderInitialised = transponderIrInit(&(transponderConfig()->provider)); transponderInitialised = transponderIrInit(transponderConfig()->provider);
if (!transponderInitialised) { if (!transponderInitialised) {
return; return;
} }

View file

@ -21,7 +21,8 @@
#include "config/parameter_group.h" #include "config/parameter_group.h"
typedef struct transponderConfig_s { typedef struct transponderConfig_s {
TransponderProvider provider; transponderProvider_e provider;
uint8_t reserved;
uint8_t data[9]; uint8_t data[9];
} transponderConfig_t; } transponderConfig_t;