From dd672dc0ea7ef356726ea790f57392719db63090 Mon Sep 17 00:00:00 2001 From: Bryan Mayland Date: Mon, 31 Jan 2022 20:36:34 -0500 Subject: [PATCH] fix: Send correct internal CRSF modelid on change for BW screens (#1508) --- radio/src/gui/128x64/model_setup.cpp | 2 +- radio/src/gui/212x64/model_setup.cpp | 2 +- radio/src/pulses/crossfire.cpp | 6 +++--- radio/src/telemetry/telemetry.cpp | 3 +++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 69dfb338b..c63d1521e 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1422,7 +1422,7 @@ void menuModelSetup(event_t event) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], getMaxRxNum(moduleIdx)); if (checkIncDec_Ret) { if (isModuleCrossfire(moduleIdx)) - moduleState[EXTERNAL_MODULE].counter = CRSF_FRAME_MODELID; + moduleState[moduleIdx].counter = CRSF_FRAME_MODELID; modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx]; } else if (event == EVT_KEY_LONG(KEY_ENTER)) { diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 9d6261af8..2a71c6824 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -1271,7 +1271,7 @@ void menuModelSetup(event_t event) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], getMaxRxNum(moduleIdx)); if (checkIncDec_Ret) { if (isModuleCrossfire(moduleIdx)) - moduleState[EXTERNAL_MODULE].counter = CRSF_FRAME_MODELID; + moduleState[moduleIdx].counter = CRSF_FRAME_MODELID; modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx]; } else if (event == EVT_KEY_LONG(KEY_ENTER)) { diff --git a/radio/src/pulses/crossfire.cpp b/radio/src/pulses/crossfire.cpp index 8e7ddb4eb..3ab038005 100644 --- a/radio/src/pulses/crossfire.cpp +++ b/radio/src/pulses/crossfire.cpp @@ -30,7 +30,7 @@ #endif -uint8_t createCrossfireModelIDFrame(uint8_t * frame) +uint8_t createCrossfireModelIDFrame(uint8_t moduleIdx, uint8_t * frame) { uint8_t * buf = frame; *buf++ = UART_SYNC; /* device address */ @@ -40,7 +40,7 @@ uint8_t createCrossfireModelIDFrame(uint8_t * frame) *buf++ = RADIO_ADDRESS; /* Origin Address */ *buf++ = SUBCOMMAND_CRSF; /* sub command */ *buf++ = COMMAND_MODEL_SELECT_ID; /* command of set model/receiver id */ - *buf++ = g_model.header.modelId[EXTERNAL_MODULE]; /* model ID */ + *buf++ = g_model.header.modelId[moduleIdx]; /* model ID */ *buf++ = crc8_BA(frame + 2, 6); *buf++ = crc8(frame + 2, 7); return buf - frame; @@ -83,7 +83,7 @@ static void setupPulsesCrossfire(uint8_t idx, CrossfirePulsesData* p_data, #endif { if (moduleState[idx].counter == CRSF_FRAME_MODELID) { - p_data->length = createCrossfireModelIDFrame(p_data->pulses); + p_data->length = createCrossfireModelIDFrame(idx, p_data->pulses); moduleState[idx].counter = CRSF_FRAME_MODELID_SENT; } else { p_data->length = createCrossfireChannelsFrame( diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 6adad1acc..76781a037 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -322,6 +322,9 @@ void telemetryWakeup() if (isModuleCrossfire(EXTERNAL_MODULE)) { moduleState[EXTERNAL_MODULE].counter = CRSF_FRAME_MODELID; } + if (isModuleCrossfire(INTERNAL_MODULE)) { + moduleState[INTERNAL_MODULE].counter = CRSF_FRAME_MODELID; + } #endif } telemetryState = TELEMETRY_OK;