From a897f5e23b0bb970dfc8ec23c5b8e917adf04274 Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Fri, 24 Feb 2017 22:42:00 +0000 Subject: [PATCH] Added transponder config --- src/main/config/config_master.h | 5 ++++- src/main/fc/config.c | 2 +- src/main/fc/fc_init.c | 2 +- src/main/fc/fc_msp.c | 12 ++++++------ src/main/io/transponder_ir.c | 13 ++++++++----- src/main/io/transponder_ir.h | 11 +++++++++-- 6 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index 3d4156a43..4f24b177b 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -56,6 +56,7 @@ #include "io/osd.h" #include "io/serial.h" #include "io/servos.h" +#include "io/transponder_ir.h" #include "io/vtx.h" #include "rx/rx.h" @@ -122,6 +123,7 @@ #define displayPortProfileOled(x) (&masterConfig.displayPortProfileOled) #define vtxConfig(x) (&masterConfig.vtxConfig) #define beeperConfig(x) (&masterConfig.beeperConfig) +#define transponderConfig(x) (&masterConfig.transponderConfig) #define featureConfigMutable(x) (&masterConfig.featureConfig) @@ -173,6 +175,7 @@ #define displayPortProfileOledMutable(x) (&masterConfig.displayPortProfileOled) #define vtxConfigMutable(x) (&masterConfig.vtxConfig) #define beeperConfigMutable(x) (&masterConfig.beeperConfig) +#define transponderConfigMutable(x) (&masterConfig.transponderConfig) #define servoParams(x) (&servoProfile()->servoConf[x]) #define adjustmentRanges(x) (&adjustmentProfile()->adjustmentRanges[x]) @@ -278,7 +281,7 @@ typedef struct master_s { #endif #ifdef TRANSPONDER - uint8_t transponderData[6]; + transponderConfig_t transponderConfig; #endif #ifdef OSD diff --git a/src/main/fc/config.c b/src/main/fc/config.c index ed6eda18e..5b31dd5db 100755 --- a/src/main/fc/config.c +++ b/src/main/fc/config.c @@ -1019,7 +1019,7 @@ void createDefaultConfig(master_t *config) #ifdef TRANSPONDER static const uint8_t defaultTransponderData[6] = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC }; // Note, this is NOT a valid transponder code, it's just for testing production hardware - memcpy(config->transponderData, &defaultTransponderData, sizeof(defaultTransponderData)); + memcpy(config->transponderConfig.data, &defaultTransponderData, sizeof(defaultTransponderData)); #endif #ifdef BLACKBOX diff --git a/src/main/fc/fc_init.c b/src/main/fc/fc_init.c index 292bb8997..9846d9bbd 100644 --- a/src/main/fc/fc_init.c +++ b/src/main/fc/fc_init.c @@ -481,7 +481,7 @@ void init(void) #ifdef TRANSPONDER if (feature(FEATURE_TRANSPONDER)) { - transponderInit(masterConfig.transponderData); + transponderInit(); transponderStartRepeating(); systemState |= SYSTEM_STATE_TRANSPONDER_ENABLED; } diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index 21cd1673a..eb83c9679 100755 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -1062,8 +1062,8 @@ static bool mspFcProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProcessFn case MSP_TRANSPONDER_CONFIG: #ifdef TRANSPONDER sbufWriteU8(dst, 1); //Transponder supported - for (unsigned int i = 0; i < sizeof(masterConfig.transponderData); i++) { - sbufWriteU8(dst, masterConfig.transponderData[i]); + for (unsigned int i = 0; i < sizeof(transponderConfig()->data); i++) { + sbufWriteU8(dst, transponderConfig()->data[i]); } #else sbufWriteU8(dst, 0); // Transponder not supported @@ -1601,13 +1601,13 @@ static mspResult_e mspFcProcessInCommand(uint8_t cmdMSP, sbuf_t *src) #ifdef TRANSPONDER case MSP_SET_TRANSPONDER_CONFIG: - if (dataSize != sizeof(masterConfig.transponderData)) { + if (dataSize != sizeof(transponderConfig()->data)) { return MSP_RESULT_ERROR; } - for (unsigned int i = 0; i < sizeof(masterConfig.transponderData); i++) { - masterConfig.transponderData[i] = sbufReadU8(src); + for (unsigned int i = 0; i < sizeof(transponderConfig()->data); i++) { + transponderConfigMutable()->data[i] = sbufReadU8(src); } - transponderUpdateData(masterConfig.transponderData); + transponderUpdateData(); break; #endif diff --git a/src/main/io/transponder_ir.c b/src/main/io/transponder_ir.c index a00204971..a5c81ab02 100644 --- a/src/main/io/transponder_ir.c +++ b/src/main/io/transponder_ir.c @@ -23,7 +23,10 @@ #include -#include +#include "build/build_config.h" + +#include "config/parameter_group.h" +#include "config/parameter_group_ids.h" #include "drivers/transponder_ir.h" #include "drivers/system.h" @@ -73,14 +76,14 @@ void transponderUpdate(timeUs_t currentTimeUs) transponderIrTransmit(); } -void transponderInit(uint8_t* transponderData) +void transponderInit(void) { transponderInitialised = transponderIrInit(); if (!transponderInitialised) { return; } - transponderIrUpdateData(transponderData); + transponderIrUpdateData(transponderConfig()->data); } void transponderStopRepeating(void) @@ -97,13 +100,13 @@ void transponderStartRepeating(void) transponderRepeat = true; } -void transponderUpdateData(uint8_t* transponderData) +void transponderUpdateData(void) { if (!transponderInitialised) { return; } - transponderIrUpdateData(transponderData); + transponderIrUpdateData(transponderConfig()->data); } void transponderTransmitOnce(void) { diff --git a/src/main/io/transponder_ir.h b/src/main/io/transponder_ir.h index 166b09b64..dd6e9c0ad 100644 --- a/src/main/io/transponder_ir.h +++ b/src/main/io/transponder_ir.h @@ -18,11 +18,18 @@ #pragma once #include "common/time.h" +#include "config/parameter_group.h" -void transponderInit(uint8_t* transponderCode); +typedef struct transponderConfig_s { + uint8_t data[6]; +} transponderConfig_t; + +PG_DECLARE(transponderConfig_t, transponderConfig); + +void transponderInit(void); void transponderUpdate(timeUs_t currentTimeUs); -void transponderUpdateData(uint8_t* transponderData); +void transponderUpdateData(void); void transponderTransmitOnce(void); void transponderStartRepeating(void); void transponderStopRepeating(void);