hilink: retry MSP VTX table after FC handshake

This commit is contained in:
2026-09-28 11:00:58 +02:00
parent 45c0c6b795
commit c59e8aefda
@@ -1,12 +1,28 @@
diff --git a/osd.c b/osd.c
index a8b756e..eefb4d6 100644
index a8b756e..701e989 100644
--- a/osd.c
+++ b/osd.c
@@ -960,48 +960,16 @@ static void rx_msp_callback(msp_msg_t *msp_message) {
@@ -190,6 +190,7 @@ extern bool vtxMenuActive;
extern bool vtxMenuEnabled;
extern bool armed;
extern bool vtxInitDone;
+static bool mspVtxTableResentAfterFcTraffic;
extern bool DrawOSD;
// SRT/OSD
@@ -960,48 +961,24 @@ static void rx_msp_callback(msp_msg_t *msp_message) {
}
case MSP_GET_VTX_CONFIG: {
- if (vtxInitDone) {
+ // The FC starts publishing its VTX state only after its MSP descriptor is
+ // active. Re-send our table once at that boundary: the boot-time burst can
+ // otherwise precede FC UART/MSP initialization.
+ if (vtxInitDone && !mspVtxTableResentAfterFcTraffic) {
+ msp_set_vtx_config(serial_fd);
+ mspVtxTableResentAfterFcTraffic = true;
+ }
+
+ if (vtxInitDone && verbose) {
mspVtxConfigStruct *in_mspVtxConfigStruct = (mspVtxConfigStruct *)msp_message->payload;
- uint16_t frequency =