File tree Expand file tree Collapse file tree 3 files changed +76
-1
lines changed
Expand file tree Collapse file tree 3 files changed +76
-1
lines changed Original file line number Diff line number Diff line change @@ -119,6 +119,58 @@ IPAddress gcsIP;
119119bool gcsIPSet = false ;
120120#endif
121121
122+ #if defined(TARGET_TX_BACKPACK)
123+ bool SendTxBackpackTelemetryViaUDP (const uint8_t *data, uint16_t size)
124+ {
125+ if (!data || size == 0 )
126+ {
127+ return false ;
128+ }
129+
130+ #if !defined(MAVLINK_ENABLED)
131+ return false ;
132+ #else
133+ if (!servicesStarted || !wifiStarted)
134+ {
135+ return false ;
136+ }
137+ if (wifiService != WIFI_SERVICE_MAVLINK_TX)
138+ {
139+ return false ;
140+ }
141+
142+ IPAddress remote;
143+ WiFiMode_t mode = WiFi.getMode ();
144+ if (mode == WIFI_AP || mode == WIFI_AP_STA)
145+ {
146+ remote = apBroadcast;
147+ }
148+ else if (mode == WIFI_STA)
149+ {
150+ remote = WiFi.broadcastIP ();
151+ }
152+ else
153+ {
154+ return false ;
155+ }
156+
157+ if (!mavlinkUDP.beginPacket (remote, config.GetMavlinkSendPort ()))
158+ {
159+ return false ;
160+ }
161+
162+ size_t sent = mavlinkUDP.write (data, size);
163+ if (sent != size)
164+ {
165+ mavlinkUDP.endPacket ();
166+ return false ;
167+ }
168+
169+ return mavlinkUDP.endPacket () == 1 ;
170+ #endif
171+ }
172+ #endif
173+
122174/* * Is this an IP? */
123175static boolean isIp (String str)
124176{
Original file line number Diff line number Diff line change @@ -7,4 +7,8 @@ extern device_t WIFI_device;
77#define HAS_WIFI
88
99extern const char * VERSION ;
10- #endif
10+
11+ #if defined(TARGET_TX_BACKPACK )
12+ bool SendTxBackpackTelemetryViaUDP (const uint8_t * data , uint16_t size );
13+ #endif
14+ #endif
Original file line number Diff line number Diff line change @@ -64,6 +64,7 @@ MAVLink mavlink;
6464// ///////// FUNCTION DEFS ///////////
6565
6666void sendMSPViaEspnow (mspPacket_t *packet);
67+ void sendMSPViaWiFiUDP (mspPacket_t *packet);
6768
6869// ///////////////////////////////////
6970
@@ -224,6 +225,10 @@ void ProcessMSPPacketFromTX(mspPacket_t *packet)
224225
225226 case MSP_ELRS_BACKPACK_CRSF_TLM:
226227 DBGLN (" Processing MSP_ELRS_BACKPACK_CRSF_TLM..." );
228+ if (config.GetTelemMode () == BACKPACK_TELEM_MODE_WIFI)
229+ {
230+ sendMSPViaWiFiUDP (packet);
231+ }
227232 if (config.GetTelemMode () != BACKPACK_TELEM_MODE_OFF)
228233 {
229234 sendMSPViaEspnow (packet);
@@ -288,6 +293,20 @@ void sendMSPViaEspnow(mspPacket_t *packet)
288293 blinkLED ();
289294}
290295
296+ void sendMSPViaWiFiUDP (mspPacket_t *packet)
297+ {
298+ uint8_t packetSize = msp.getTotalPacketSize (packet);
299+ uint8_t dataOutput[packetSize];
300+
301+ uint8_t result = msp.convertToByteArray (packet, dataOutput);
302+ if (!result)
303+ {
304+ return ;
305+ }
306+
307+ SendTxBackpackTelemetryViaUDP (dataOutput, packetSize);
308+ }
309+
291310void SendCachedMSP ()
292311{
293312 if (!cacheFull)
You can’t perform that action at this time.
0 commit comments