feat: ELRS bind command support (#4907)

This commit is contained in:
3djc
2024-06-02 12:03:15 +10:00
committed by GitHub
parent c81c8b5354
commit d45450921d
30 changed files with 174 additions and 29 deletions
+14 -1
View File
@@ -20,7 +20,6 @@
*/
#include "crossfire.h"
#include "opentx.h"
// clang-format off
@@ -62,6 +61,8 @@ const CrossfireSensor crossfireSensors[] = {
};
// clang-format on
CrossfireModuleStatus crossfireModuleStatus[2] = {0};
const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId)
{
if (id == LINK_ID)
@@ -260,6 +261,18 @@ void processCrossfireTelemetryFrame(uint8_t module, uint8_t* rxBuffer,
#if defined(LUA)
default:
if (id == DEVICE_INFO_ID && rxBuffer[4]== MODULE_ADDRESS) {
uint8_t nameSize = rxBuffer[1] - 18;
strncpy((char *)&crossfireModuleStatus[module].name, (const char *)&rxBuffer[5], CRSF_NAME_MAXSIZE);
crossfireModuleStatus[module].name[CRSF_NAME_MAXSIZE -1] = 0; // For some reason, GH din't like strlcpy
if (strncmp((const char *) &rxBuffer[5 + nameSize], "ELRS", 4) == 0)
crossfireModuleStatus[module].isELRS = true;
crossfireModuleStatus[module].major = rxBuffer[14 + nameSize];
crossfireModuleStatus[module].minor = rxBuffer[15 + nameSize];
crossfireModuleStatus[module].revision = rxBuffer[16 + nameSize];
crossfireModuleStatus[module].queryCompleted = true;
}
if (luaInputTelemetryFifo && luaInputTelemetryFifo->hasSpace(rxBufferCount - 2)) {
for (uint8_t i = 1; i < rxBufferCount - 1; i++) {
// destination address and CRC are skipped