hilink: wait for FC MSP VTX readiness before table sync
This commit is contained in:
@@ -1,24 +1,26 @@
|
||||
diff --git a/osd.c b/osd.c
|
||||
index a8b756e..701e989 100644
|
||||
index a8b756e..49673da 100644
|
||||
--- a/osd.c
|
||||
+++ b/osd.c
|
||||
@@ -190,6 +190,7 @@ extern bool vtxMenuActive;
|
||||
@@ -190,6 +190,8 @@ extern bool vtxMenuActive;
|
||||
extern bool vtxMenuEnabled;
|
||||
extern bool armed;
|
||||
extern bool vtxInitDone;
|
||||
+static uint8_t mspVtxConfigFramesReceived;
|
||||
+static bool mspVtxTableResentAfterFcTraffic;
|
||||
extern bool DrawOSD;
|
||||
|
||||
// SRT/OSD
|
||||
@@ -960,48 +961,24 @@ static void rx_msp_callback(msp_msg_t *msp_message) {
|
||||
@@ -960,48 +962,25 @@ 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) {
|
||||
+ // The FC publishes its VTX state only after its MSP descriptor is active.
|
||||
+ // Wait for several frames, then send the table once. This avoids losing
|
||||
+ // the boot-time burst while the FC is still bringing UART/MSP online.
|
||||
+ if (vtxInitDone && !mspVtxTableResentAfterFcTraffic &&
|
||||
+ ++mspVtxConfigFramesReceived >= 5) {
|
||||
+ msp_set_vtx_config(serial_fd);
|
||||
+ mspVtxTableResentAfterFcTraffic = true;
|
||||
+ }
|
||||
|
||||
Reference in New Issue
Block a user