feat(mpm): support RadioLink / DumboRC special commands (#7441)
This commit is contained in:
@@ -54,7 +54,8 @@ enum MultiPacketTypes : uint8_t
|
||||
HottTelemetry,
|
||||
MLinkTelemetry,
|
||||
ConfigTelemetry,
|
||||
MultiProtoDef
|
||||
MultiProtoDef,
|
||||
RLinkTelemetry = 18,
|
||||
};
|
||||
|
||||
enum MultiBufferState : uint8_t
|
||||
@@ -308,6 +309,17 @@ static void processConfigPacket(const uint8_t * packet, uint8_t len)
|
||||
memcpy(&Multi_Buffer[13 + (packet[0] & 0x0F) * 20], &packet[1], 20); // Store the received page in the buffer
|
||||
}
|
||||
}
|
||||
|
||||
static void processRLinkPacket(const uint8_t * packet, uint8_t len)
|
||||
{
|
||||
// Multi_Buffer[0..3] == "RLnk" / Lua script is running
|
||||
// Multi_Buffer[14] == 0 RX buffer can be written / >0 Lua has not consumed it
|
||||
// Multi_Buffer[15..] == payload from receiver
|
||||
if (Multi_Buffer && memcmp(Multi_Buffer, "RLnk", 4) == 0 && Multi_Buffer[14] == 0 && len < 32) {
|
||||
memcpy(&Multi_Buffer[15], packet, len);
|
||||
Multi_Buffer[14] = len;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(MULTI_PROTOLIST)
|
||||
@@ -453,6 +465,10 @@ static void processMultiTelemetryPaket(const uint8_t * packet, uint8_t module)
|
||||
else
|
||||
TRACE("[MP] Received Config telemetry len %d < 20", len);
|
||||
break;
|
||||
|
||||
case RLinkTelemetry:
|
||||
processRLinkPacket(data, len);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case FrSkyHubTelemetry:
|
||||
|
||||
Reference in New Issue
Block a user