diff --git a/src/main/blackbox/blackbox.c b/src/main/blackbox/blackbox.c index bf1e6dc20a..b81e509f88 100644 --- a/src/main/blackbox/blackbox.c +++ b/src/main/blackbox/blackbox.c @@ -820,7 +820,7 @@ void startBlackbox(void) */ blackboxBuildConditionCache(); - blackboxModeActivationConditionPresent = isModeActivationConditionPresent(masterConfig.modeActivationConditions, BOXBLACKBOX); + blackboxModeActivationConditionPresent = isModeActivationConditionPresent(modeActivationProfile()->modeActivationConditions, BOXBLACKBOX); blackboxIteration = 0; blackboxPFrameIndex = 0; diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index 497f405e8f..bedfe58a33 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -100,6 +100,7 @@ #define flashConfig(x) (&masterConfig.flashConfig) #define pidConfig(x) (&masterConfig.pidConfig) #define adjustmentProfile(x) (&masterConfig.adjustmentProfile) +#define modeActivationProfile(x) (&masterConfig.modeActivationProfile) // System-wide @@ -216,7 +217,7 @@ typedef struct master_s { profile_t profile[MAX_PROFILE_COUNT]; uint8_t current_profile_index; - modeActivationCondition_t modeActivationConditions[MAX_MODE_ACTIVATION_CONDITION_COUNT]; + modeActivationProfile_t modeActivationProfile; adjustmentProfile_t adjustmentProfile; #ifdef VTX uint8_t vtx_band; //1=A, 2=B, 3=E, 4=F(Airwaves/Fatshark), 5=Raceband diff --git a/src/main/fc/config.c b/src/main/fc/config.c index d597fc128a..54bdc3bd14 100755 --- a/src/main/fc/config.c +++ b/src/main/fc/config.c @@ -882,7 +882,7 @@ void activateConfig(void) resetAdjustmentStates(); useRcControlsConfig( - masterConfig.modeActivationConditions, + modeActivationProfile()->modeActivationConditions, &masterConfig.motorConfig, ¤tProfile->pidProfile ); diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index dd1a5f5992..50c4015644 100755 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -797,7 +797,7 @@ static bool mspFcProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProcessFn case MSP_MODE_RANGES: for (int i = 0; i < MAX_MODE_ACTIVATION_CONDITION_COUNT; i++) { - modeActivationCondition_t *mac = &masterConfig.modeActivationConditions[i]; + modeActivationCondition_t *mac = &modeActivationProfile()->modeActivationConditions[i]; const box_t *box = &boxes[mac->modeId]; sbufWriteU8(dst, box->permanentId); sbufWriteU8(dst, mac->auxChannelIndex); @@ -1316,7 +1316,7 @@ static mspResult_e mspFcProcessInCommand(uint8_t cmdMSP, sbuf_t *src) case MSP_SET_MODE_RANGE: i = sbufReadU8(src); if (i < MAX_MODE_ACTIVATION_CONDITION_COUNT) { - modeActivationCondition_t *mac = &masterConfig.modeActivationConditions[i]; + modeActivationCondition_t *mac = &modeActivationProfile()->modeActivationConditions[i]; i = sbufReadU8(src); const box_t *box = findBoxByPermenantId(i); if (box) { @@ -1325,7 +1325,7 @@ static mspResult_e mspFcProcessInCommand(uint8_t cmdMSP, sbuf_t *src) mac->range.startStep = sbufReadU8(src); mac->range.endStep = sbufReadU8(src); - useRcControlsConfig(masterConfig.modeActivationConditions, &masterConfig.motorConfig, ¤tProfile->pidProfile); + useRcControlsConfig(modeActivationProfile()->modeActivationConditions, &masterConfig.motorConfig, ¤tProfile->pidProfile); } else { return MSP_RESULT_ERROR; } diff --git a/src/main/fc/mw.c b/src/main/fc/mw.c index 32b3181de2..5d6c834983 100644 --- a/src/main/fc/mw.c +++ b/src/main/fc/mw.c @@ -576,7 +576,7 @@ void processRx(timeUs_t currentTimeUs) updateInflightCalibrationState(); } - updateActivatedModes(masterConfig.modeActivationConditions); + updateActivatedModes(modeActivationProfile()->modeActivationConditions); if (!cliMode) { updateAdjustmentStates(adjustmentProfile()->adjustmentRanges); diff --git a/src/main/fc/rc_controls.h b/src/main/fc/rc_controls.h index 7470011391..e416b682b1 100644 --- a/src/main/fc/rc_controls.h +++ b/src/main/fc/rc_controls.h @@ -140,6 +140,10 @@ typedef struct modeActivationCondition_s { channelRange_t range; } modeActivationCondition_t; +typedef struct modeActivationProfile_s { + modeActivationCondition_t modeActivationConditions[MAX_MODE_ACTIVATION_CONDITION_COUNT]; +} modeActivationProfile_t; + #define IS_RANGE_USABLE(range) ((range)->startStep < (range)->endStep) typedef struct controlRateConfig_s { diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 1450401be8..a19d21e560 100755 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -1216,8 +1216,8 @@ static void printAux(uint8_t dumpMask, master_t *defaultConfig) modeActivationCondition_t *macDefault; bool equalsDefault; for (uint32_t i = 0; i < MAX_MODE_ACTIVATION_CONDITION_COUNT; i++) { - mac = &masterConfig.modeActivationConditions[i]; - macDefault = &defaultConfig->modeActivationConditions[i]; + mac = &modeActivationProfile()->modeActivationConditions[i]; + macDefault = &defaultConfig->modeActivationProfile.modeActivationConditions[i]; equalsDefault = mac->modeId == macDefault->modeId && mac->auxChannelIndex == macDefault->auxChannelIndex && mac->range.startStep == macDefault->range.startStep @@ -1251,7 +1251,7 @@ static void cliAux(char *cmdline) ptr = cmdline; i = atoi(ptr++); if (i < MAX_MODE_ACTIVATION_CONDITION_COUNT) { - modeActivationCondition_t *mac = &masterConfig.modeActivationConditions[i]; + modeActivationCondition_t *mac = &modeActivationProfile()->modeActivationConditions[i]; uint8_t validArgumentCount = 0; ptr = nextArg(ptr); if (ptr) { diff --git a/src/main/main.c b/src/main/main.c index 6412f8d6d5..eb67fe857f 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -441,7 +441,7 @@ void init(void) failsafeInit(rxConfig(), flight3DConfig()->deadband3d_throttle); - rxInit(rxConfig(), masterConfig.modeActivationConditions); + rxInit(rxConfig(), modeActivationProfile()->modeActivationConditions); #ifdef GPS if (feature(FEATURE_GPS)) { diff --git a/src/main/target/COLIBRI_RACE/i2c_bst.c b/src/main/target/COLIBRI_RACE/i2c_bst.c index cf0a5a08bb..4e5913136b 100644 --- a/src/main/target/COLIBRI_RACE/i2c_bst.c +++ b/src/main/target/COLIBRI_RACE/i2c_bst.c @@ -720,7 +720,7 @@ static bool bstSlaveProcessFeedbackCommand(uint8_t bstRequest) break; case BST_MODE_RANGES: for (i = 0; i < MAX_MODE_ACTIVATION_CONDITION_COUNT; i++) { - modeActivationCondition_t *mac = &masterConfig.modeActivationConditions[i]; + modeActivationCondition_t *mac = &modeActivationProfile()->modeActivationConditions[i]; const box_t *box = &boxes[mac->modeId]; bstWrite8(box->permanentId); bstWrite8(mac->auxChannelIndex); @@ -1056,7 +1056,7 @@ static bool bstSlaveProcessWriteCommand(uint8_t bstWriteCommand) case BST_SET_MODE_RANGE: i = bstRead8(); if (i < MAX_MODE_ACTIVATION_CONDITION_COUNT) { - modeActivationCondition_t *mac = &masterConfig.modeActivationConditions[i]; + modeActivationCondition_t *mac = &modeActivationProfile()->modeActivationConditions[i]; i = bstRead8(); const box_t *box = findBoxByPermenantId(i); if (box) { @@ -1065,7 +1065,7 @@ static bool bstSlaveProcessWriteCommand(uint8_t bstWriteCommand) mac->range.startStep = bstRead8(); mac->range.endStep = bstRead8(); - useRcControlsConfig(masterConfig.modeActivationConditions, &masterConfig.motorConfig, ¤tProfile->pidProfile); + useRcControlsConfig(modeActivationProfile()->modeActivationConditions, &masterConfig.motorConfig, ¤tProfile->pidProfile); } else { ret = BST_FAILED; }