feat: Support for ext. Multiplex MLink JR type module (#3352)
* introducing external MLink module telemetry as module PPM subtype * implemented fix for sensor discovery display not showing all detected sensors (is in separate PR too) implemented PPM subtypes in Companion * add PPM subtype to model printer finalize subtypes for PPM in Companion * added logic to try to use HW UART with inverters turned off first (e.g. NV14), then, if not successfull use soft serial inverted (== uninverted data due to HW inverters on PCB) changed start bit detection IRQ priority from 5 to the previous 0 (also in separate PR) * extended telemetry timeout to 2s due to slow Mlink RSSI update rate * changed the "NOTLM" sub-type texts to: - "No Telem" for 128x64 (this is the max numbers of characters it can take) - "No Telemetry" everything else including Companion * Companion: - lower case 1st charachter on PpmSubTypeStrings to ppmSubTypeStrings - added telemetry hooks for ppmSubTypeStrings stringx * simplified serial port initialization for MLink telemetry * editorial change: corrected obsolete comment
This commit is contained in:
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
#include "telemetry/mlink.h"
|
||||
|
||||
// Minimum space after the last PPM pulse in us
|
||||
#define PPM_SAFE_MARGIN 3000 // 3ms
|
||||
|
||||
@@ -158,3 +160,37 @@ const etx_proto_driver_t PpmDriver = {
|
||||
.sendPulses = ppmSendPulses,
|
||||
.processData = nullptr,
|
||||
};
|
||||
|
||||
//
|
||||
// additions for PPM with external MLink Module telemetry
|
||||
//
|
||||
|
||||
static void* ppmMLinkInit(uint8_t module);
|
||||
|
||||
const etx_proto_driver_t PpmDriverMLink = {
|
||||
.protocol = PROTOCOL_CHANNELS_PPM_MLINK,
|
||||
.init = ppmMLinkInit,
|
||||
.deinit = ppmDeInit,
|
||||
.sendPulses = ppmSendPulses,
|
||||
.processData = processExternalMLinkSerialData,
|
||||
};
|
||||
|
||||
static etx_serial_init ppmMLinkSerialParams = {
|
||||
.baudrate = PPM_MSB_BAUDRATE,
|
||||
.encoding = ETX_Encoding_8N1,
|
||||
.direction = ETX_Dir_RX,
|
||||
.polarity = ETX_Pol_Inverted,
|
||||
};
|
||||
|
||||
static void* ppmMLinkInit(uint8_t module) {
|
||||
etx_module_state_t *mod_st = (etx_module_state_t *)ppmInit(module);
|
||||
|
||||
if (!mod_st)
|
||||
return nullptr;
|
||||
|
||||
if (!modulePortInitSerial(module, ETX_MOD_PORT_UART, &ppmMLinkSerialParams)) {
|
||||
modulePortInitSerial(module, ETX_MOD_PORT_SPORT_INV, &ppmMLinkSerialParams);
|
||||
}
|
||||
|
||||
return (void*)mod_st;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user