Skip to content

Commit

Permalink
Prevent hard-fault when no IO available for transponder.
Browse files Browse the repository at this point in the history
This cleans up the transponder api too.
  • Loading branch information
hydra committed Jan 16, 2017
1 parent b7caf6f commit 3c29725
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 21 deletions.
8 changes: 7 additions & 1 deletion src/main/drivers/transponder_ir.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ uint8_t transponderIrDMABuffer[TRANSPONDER_DMA_BUFFER_SIZE];

volatile uint8_t transponderIrDataTransferInProgress = 0;

void transponderIrInit(void)
bool transponderIrInit(void)
{
memset(&transponderIrDMABuffer, 0, TRANSPONDER_DMA_BUFFER_SIZE);

Expand All @@ -51,7 +51,13 @@ void transponderIrInit(void)
}
}

if (!ioTag) {
return false;
}


transponderIrHardwareInit(ioTag);
return true;
}

bool isTransponderIrReady(void)
Expand Down
2 changes: 1 addition & 1 deletion src/main/drivers/transponder_ir.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
#define BIT_TOGGLE_1 78 // (156 / 2)
#define BIT_TOGGLE_0 0

void transponderIrInit();
bool transponderIrInit();
void transponderIrDisable(void);

void transponderIrHardwareInit(ioTag_t ioTag);
Expand Down
4 changes: 0 additions & 4 deletions src/main/drivers/transponder_ir_stm32f30x.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,6 @@ static void TRANSPONDER_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)

void transponderIrHardwareInit(ioTag_t ioTag)
{
if (!ioTag) {
return;
}

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
DMA_InitTypeDef DMA_InitStructure;
Expand Down
1 change: 0 additions & 1 deletion src/main/fc/fc_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,6 @@ void init(void)
#ifdef TRANSPONDER
if (feature(FEATURE_TRANSPONDER)) {
transponderInit(masterConfig.transponderData);
transponderEnable();
transponderStartRepeating();
systemState |= SYSTEM_STATE_TRANSPONDER_ENABLED;
}
Expand Down
25 changes: 13 additions & 12 deletions src/main/io/transponder_ir.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,19 +75,12 @@ void transponderUpdate(timeUs_t currentTimeUs)

void transponderInit(uint8_t* transponderData)
{
transponderInitialised = false;
transponderIrInit();
transponderIrUpdateData(transponderData);
}

void transponderEnable(void)
{
transponderInitialised = true;
}
transponderInitialised = transponderIrInit();
if (!transponderInitialised) {
return;
}

void transponderDisable(void)
{
transponderInitialised = false;
transponderIrUpdateData(transponderData);
}

void transponderStopRepeating(void)
Expand All @@ -97,11 +90,19 @@ void transponderStopRepeating(void)

void transponderStartRepeating(void)
{
if (!transponderInitialised) {
return;
}

transponderRepeat = true;
}

void transponderUpdateData(uint8_t* transponderData)
{
if (!transponderInitialised) {
return;
}

transponderIrUpdateData(transponderData);
}

Expand Down
2 changes: 0 additions & 2 deletions src/main/io/transponder_ir.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@

void transponderInit(uint8_t* transponderCode);

void transponderEnable(void);
void transponderDisable(void);
void transponderUpdate(timeUs_t currentTimeUs);
void transponderUpdateData(uint8_t* transponderData);
void transponderTransmitOnce(void);
Expand Down

0 comments on commit 3c29725

Please sign in to comment.