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;