feat: S.Port telemetry for PPM/SBUS external module (#5689)

Co-authored-by: Michael <mha1@users.noreply.github.com>
This commit is contained in:
Raphael Coeffic
2024-12-12 11:19:34 +10:00
committed by GitHub
co-authored by Michael
parent 3d1e7a914f
commit 6d17448be5
18 changed files with 171 additions and 28 deletions
+23
View File
@@ -118,6 +118,23 @@ static bool ppmInitMLinkTelemetry(uint8_t module)
return false;
}
static const etx_serial_init ppmSportSerialParams = {
.baudrate = FRSKY_SPORT_BAUDRATE,
.encoding = ETX_Encoding_8N1,
.direction = ETX_Dir_RX,
.polarity = ETX_Pol_Normal,
};
static bool ppmInitSPortTelemetry(uint8_t module)
{
// Try S.PORT hardware USART (requires HW inverters)
if (modulePortInitSerial(module, ETX_MOD_PORT_SPORT, &ppmSportSerialParams, false) != nullptr) {
return true;
}
return false;
}
static void _init_telemetry(uint8_t module, uint8_t telemetry_type)
{
switch (telemetry_type) {
@@ -127,6 +144,12 @@ static void _init_telemetry(uint8_t module, uint8_t telemetry_type)
}
break;
case PPM_PROTO_TLM_SPORT:
if (ppmInitSPortTelemetry(module)) {
_processTelemetryData = processFrskySportTelemetryData;
}
break;
default:
_processTelemetryData = nullptr;
break;