Add support for multi-protocol trainer (#6896)
* Add support for multi-protocol trainer * Fix telemetry condition * Trainer mode not supported on Sky9X * fixed radio trainer screen - convert values properly. - apply the weights as setup. * Fix T16 with BT * String fixes * Cosmetics
This commit is contained in:
@@ -197,6 +197,7 @@ enum TrainerMode {
|
||||
TRAINER_MODE_MASTER_BLUETOOTH,
|
||||
TRAINER_MODE_SLAVE_BLUETOOTH,
|
||||
#endif
|
||||
TRAINER_MODE_MULTI,
|
||||
};
|
||||
#elif defined(PCBSKY9X)
|
||||
enum ModuleIndex {
|
||||
@@ -206,7 +207,9 @@ enum TrainerMode {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(BLUETOOTH)
|
||||
#if defined(MULTIMODULE)
|
||||
#define TRAINER_MODE_MAX() TRAINER_MODE_MULTI
|
||||
#elif defined(BLUETOOTH)
|
||||
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
|
||||
#elif defined(RADIO_T16)
|
||||
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE
|
||||
|
||||
@@ -86,10 +86,13 @@ bool menuRadioTrainer(event_t event)
|
||||
if (attr) s_editMode = 0;
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 6*FH, STR_CAL, attr);
|
||||
for (int i=0; i<4; i++) {
|
||||
int32_t chVal = ppmInput[i] - g_eeGeneral.trainer.calib[i];
|
||||
chVal *= g_eeGeneral.trainer.mix[i].studWeight * 10;
|
||||
chVal /= 512;
|
||||
#if defined (PPM_UNIT_PERCENT_PREC1)
|
||||
lcdDrawNumber(TRAINER_COLUMN_1+i*TRAINER_COLUMN_WIDTH, MENU_CONTENT_TOP + 6*FH, (ppmInput[i]-g_eeGeneral.trainer.calib[i])*2, LEFT|PREC1);
|
||||
lcdDrawNumber(TRAINER_COLUMN_1+i*TRAINER_COLUMN_WIDTH, MENU_CONTENT_TOP + 6*FH, chVal, LEFT|PREC1);
|
||||
#else
|
||||
lcdDrawNumber(TRAINER_COLUMN_1+i*TRAINER_COLUMN_WIDTH, MENU_CONTENT_TOP + 6*FH, (ppmInput[i]-g_eeGeneral.trainer.calib[i])/5, LEFT);
|
||||
lcdDrawNumber(TRAINER_COLUMN_1+i*TRAINER_COLUMN_WIDTH, MENU_CONTENT_TOP + 6*FH, chVal / 10, LEFT);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -88,10 +88,13 @@ void menuRadioTrainer(event_t event)
|
||||
lcdDrawText(0*FW, MENU_HEADER_HEIGHT+1+6*FH, STR_CAL, attr);
|
||||
for (uint8_t i=0; i<4; i++) {
|
||||
uint8_t x = (i*TRAINER_CALIB_COLUMN_WIDTH + 16) * FW/2;
|
||||
int32_t chVal = ppmInput[i] - g_eeGeneral.trainer.calib[i];
|
||||
chVal *= g_eeGeneral.trainer.mix[i].studWeight * 10;
|
||||
chVal /= 512;
|
||||
#if defined (PPM_UNIT_PERCENT_PREC1)
|
||||
lcdDrawNumber(x, MENU_HEADER_HEIGHT+1+6*FH, (ppmInput[i]-g_eeGeneral.trainer.calib[i])*2, PREC1|RIGHT);
|
||||
lcdDrawNumber(x, MENU_HEADER_HEIGHT+1+6*FH, chVal, PREC1|RIGHT);
|
||||
#else
|
||||
lcdDrawNumber(x, MENU_HEADER_HEIGHT+1+6*FH, (ppmInput[i]-g_eeGeneral.trainer.calib[i])/5, RIGHT);
|
||||
lcdDrawNumber(x, MENU_HEADER_HEIGHT+1+6*FH, chVal / 10, RIGHT);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "telemetry.h"
|
||||
#include "multi.h"
|
||||
|
||||
#define MULTI_CHAN_BITS 11
|
||||
|
||||
extern uint8_t g_moduleIdx;
|
||||
|
||||
enum MultiPacketTypes : uint8_t
|
||||
@@ -36,7 +38,8 @@ enum MultiPacketTypes : uint8_t
|
||||
FrskySportPolling,
|
||||
HitecTelemetry,
|
||||
SpectrumScannerPacket,
|
||||
FlyskyIBusTelemetryAC
|
||||
FlyskyIBusTelemetryAC,
|
||||
MultiRxChannels
|
||||
};
|
||||
|
||||
enum MultiBufferState : uint8_t
|
||||
@@ -239,6 +242,43 @@ static void processMultiSyncPacket(const uint8_t * data, uint8_t module)
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
static void processMultiRxChannels(const uint8_t * data, uint8_t len)
|
||||
{
|
||||
if (g_model.trainerData.mode != TRAINER_MODE_MULTI)
|
||||
return;
|
||||
|
||||
//uint8_t pps = data[0];
|
||||
//uint8_t rssi = data[1];
|
||||
int ch = max(data[2], (uint8_t)0);
|
||||
int maxCh = min(ch + data[3], MAX_TRAINER_CHANNELS);
|
||||
|
||||
uint32_t bits = 0;
|
||||
uint8_t bitsavailable = 0;
|
||||
uint8_t byteIdx = 4;
|
||||
|
||||
while(ch < maxCh) {
|
||||
|
||||
while((bitsavailable < MULTI_CHAN_BITS) && byteIdx < len) {
|
||||
bits |= (uint32_t)(data[byteIdx++]) << (uint32_t)bitsavailable;
|
||||
bitsavailable += 8;
|
||||
}
|
||||
|
||||
int value = bits & ((1 << MULTI_CHAN_BITS) - 1);
|
||||
bitsavailable -= MULTI_CHAN_BITS;
|
||||
bits >>= MULTI_CHAN_BITS;
|
||||
|
||||
ppmInput[ch] = (value - 1024) * 500 / 800;
|
||||
ch++;
|
||||
|
||||
if (byteIdx >= len)
|
||||
break;
|
||||
}
|
||||
|
||||
if (ch == maxCh)
|
||||
ppmInputValidityTimer = PPM_IN_VALID_TIMEOUT;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void processMultiTelemetryPaket(const uint8_t * packet, uint8_t module)
|
||||
{
|
||||
@@ -328,6 +368,15 @@ static void processMultiTelemetryPaket(const uint8_t * packet, uint8_t module)
|
||||
TRACE("[MP] Received spectrum scanner len %d != 6", len);
|
||||
break;
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
case MultiRxChannels:
|
||||
if (len >= 4)
|
||||
processMultiRxChannels(data, len);
|
||||
else
|
||||
TRACE("[MP] Received RX channels len %d < 4", len);
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
TRACE("[MP] Unkown multi packet type 0x%02X, len %d", type, len);
|
||||
break;
|
||||
@@ -458,7 +507,7 @@ void MultiModuleStatus::getStatusString(char * statusText)
|
||||
if (!isValid()) {
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
#if !defined(INTERNAL_MODULE_MULTI)
|
||||
if (IS_INTERNAL_MODULE_ENABLED())
|
||||
if (isSportLineUsedByInternalModule())
|
||||
strcpy(statusText, STR_DISABLE_INTERNAL);
|
||||
else
|
||||
#endif
|
||||
@@ -552,7 +601,7 @@ void processMultiTelemetryData(uint8_t data, uint8_t module)
|
||||
uint8_t * rxBuffer = getRxBuffer(module);
|
||||
uint8_t &rxBufferCount = getRxBufferCount(module);
|
||||
|
||||
debugPrintf("State: %d, byte received %02X, buflen: %d\r\n", multiTelemetryBufferState, data, rxBufferCount);
|
||||
//debugPrintf("State: %d, byte received %02X, buflen: %d\r\n", multiTelemetryBufferState, data, rxBufferCount);
|
||||
switch (getMultiTelemetryBufferState(module)) {
|
||||
case NoProtocolDetected:
|
||||
if (data == 'M') {
|
||||
|
||||
@@ -111,13 +111,21 @@ extern uint8_t telemetryProtocol;
|
||||
#endif
|
||||
#define IS_SPEKTRUM_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_SPEKTRUM)
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
inline bool isSportLineUsedByInternalModule()
|
||||
{
|
||||
return g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_XJT_PXX1;
|
||||
}
|
||||
#else
|
||||
inline bool isSportLineUsedByInternalModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
inline uint8_t modelTelemetryProtocol()
|
||||
{
|
||||
bool internalModuleInUse = IS_INTERNAL_MODULE_ENABLED();
|
||||
#if defined(INTERNAL_MODULE_MULTI)
|
||||
//internal muli module is not conflicting with external one
|
||||
internalModuleInUse = false;
|
||||
#endif
|
||||
bool sportUsed = isSportLineUsedByInternalModule();
|
||||
|
||||
#if defined(CROSSFIRE)
|
||||
if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_CROSSFIRE) {
|
||||
@@ -125,12 +133,12 @@ inline uint8_t modelTelemetryProtocol()
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!internalModuleInUse && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) {
|
||||
if (!sportUsed && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) {
|
||||
return g_model.telemetryProtocol;
|
||||
}
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
if (!internalModuleInUse && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE) {
|
||||
if (!sportUsed && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE) {
|
||||
return PROTOCOL_TELEMETRY_MULTIMODULE;
|
||||
}
|
||||
#endif
|
||||
@@ -236,18 +244,6 @@ extern OutputTelemetryBuffer outputTelemetryBuffer __DMA;
|
||||
extern Fifo<uint8_t, LUA_TELEMETRY_INPUT_FIFO_SIZE> * luaInputTelemetryFifo;
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
inline bool isSportLineUsedByInternalModule()
|
||||
{
|
||||
return g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_XJT_PXX1;
|
||||
}
|
||||
#else
|
||||
inline bool isSportLineUsedByInternalModule()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
void processPXX2Frame(uint8_t module, uint8_t *frame);
|
||||
|
||||
#endif // _TELEMETRY_H_
|
||||
|
||||
@@ -353,7 +353,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Učitel/SBUS Modul\0"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Učitel/CPPM Modul\0"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Učitel/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\012"
|
||||
#define TR_VFAILSAFE "Nenastaven""Držet\0 ""Vlastní\0 ""Bez pulzů\0""Přijímač\0"
|
||||
|
||||
@@ -356,7 +356,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Lehrer/SBUS Modul\0"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Lehrer/CPPM Modul\0"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Lehrer/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\015" // "\013" original
|
||||
#define TR_VFAILSAFE "Kein Failsafe""Halte Pos.\0 ""Kanäle\0 ""Kein Signal\0 ""Empfänger\0 "
|
||||
|
||||
@@ -356,7 +356,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/SBUS Module"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/CPPM Module"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Master/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Not set\0 ""Hold\0 ""Custom\0 ""No pulses""Receiver\0"
|
||||
|
||||
@@ -371,7 +371,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/SBUS Module"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/CPPM Module"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Master/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Not set\0 ""Guardar\0 ""Adaptar\0 ""Sin pulso""Receiver\0"
|
||||
|
||||
@@ -371,7 +371,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/SBUS Module"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/CPPM Module"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Master/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Not set\0 ""Hold\0 ""Custom\0 ""No pulses""Receiver\0"
|
||||
|
||||
@@ -373,7 +373,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Maître/SBUS Module"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Maître/CPPM Module"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Maître/Série\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Maître/BT\0 ""Elève/BT\0", "Maître/Bluetooth\0 ""Elève/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Maître/BT\0 ""Elève/BT\0 ", "Maître/Bluetooth\0 ""Elève/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE TR("Pas déf.\0""Maintien\0""Prédéf.\0 ""Pas d'imp""Récepteur", "Pas déf.\0""Maintien\0""Prédéfini""Pas d'imp""Récepteur")
|
||||
|
||||
@@ -374,7 +374,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/Modulo SBUS"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/Modulo CPPM"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Master/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\013"
|
||||
#define TR_VFAILSAFE "Non settato""Mantieni\0 ""Personali\0 ""No impulsi\0""Ricevente\0 "
|
||||
|
||||
@@ -353,7 +353,8 @@
|
||||
#define TR_VTRAINER_MASTER_SBUS_MODULE "Master/SBUS Module"
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/CPPM Module"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Master/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE TR("\013","\011")
|
||||
#define TR_VFAILSAFE TR("Niet Gezet\0""Vasthouden\0""Custom\0 ""Geen Pulsen""Ontvanger\0 ","Not Set\0 ""Hold\0 ""Custom\0 ""No Pulses""Receiver\0")
|
||||
|
||||
@@ -375,6 +375,7 @@
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Trener/CPPM Moduł "
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Trener/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\011" /*9 decimal*/
|
||||
#define TR_VFAILSAFE "Brak \0 ""Utrzymuj\0""Własne \0""0 sygnału""Odbiornik"
|
||||
|
||||
@@ -357,6 +357,7 @@
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Master/CPPM Module"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Master/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Not set\0 ""Hold\0 ""Custom\0 ""No pulses""Receiver\0"
|
||||
|
||||
@@ -370,6 +370,7 @@
|
||||
#define TR_VTRAINER_MASTER_CPPM_MODULE "Lärare/CPPM-Modul\0"
|
||||
#define TR_VTRAINER_MASTER_BATTERY "Lärare/Serial\0 "
|
||||
#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0", "Master/Bluetooth\0 ""Slave/Bluetooth\0 ")
|
||||
#define TR_VTRAINER_MULTI "Master/Multi"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Ej givet\0""Lås Servo""Anpassat\0""Pulsfritt""Mottagare"
|
||||
|
||||
@@ -68,14 +68,16 @@
|
||||
#define TR_VSWITCHES "---" "ID0""ID1""ID2" "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_ON_ONE_SWITCHES
|
||||
#endif
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_BLUETOOTH
|
||||
#if defined(PCBHORUS) && !defined(BLUETOOTH)
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MULTI
|
||||
#elif defined(PCBHORUS)
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_BLUETOOTH TR_VTRAINER_MULTI
|
||||
#elif defined(PCBX9E)
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH TR_VTRAINER_MULTI
|
||||
#elif defined(PCBTARANIS) && defined(BLUETOOTH)
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH TR_VTRAINER_MULTI
|
||||
#elif defined(PCBTARANIS)
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_MULTI
|
||||
#else
|
||||
#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user