Merge pull request #1753 from opentx/bsongis/New_trainer_modes
Bsongis/new trainer modes
This commit is contained in:
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>717</width>
|
||||
<height>431</height>
|
||||
<width>780</width>
|
||||
<height>450</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -839,6 +839,16 @@
|
||||
<string>S-Port Mirror</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Telemetry</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>SBUS Trainer</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Debug</string>
|
||||
|
||||
@@ -67,12 +67,12 @@
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_69" rowstretch="0,0,0,0,0,0,0,0,0" columnstretch="0,0,0,0,0,0,0">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="2" column="3" alignment="Qt::AlignLeft">
|
||||
<widget class="QSpinBox" name="channelsStart">
|
||||
<property name="maximumSize">
|
||||
@@ -245,20 +245,29 @@
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>125</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Master</string>
|
||||
<string>Master/Jack</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Slave</string>
|
||||
<string>Slave/Jack</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Master/SBUS Module</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Master/CPPM Module</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Master/SBUS in battery compartment</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
|
||||
@@ -1403,7 +1403,7 @@ void menuGeneralHardware(uint8_t event)
|
||||
}
|
||||
case ITEM_SETUP_HW_UART3_MODE:
|
||||
g_eeGeneral.uart3Mode = selectMenuItem(HW_SETTINGS_COLUMN, y, STR_UART3MODE, STR_UART3MODES, g_eeGeneral.uart3Mode, 0, UART_MODE_MAX, attr, event);
|
||||
if (checkIncDec_Ret) {
|
||||
if (attr && checkIncDec_Ret) {
|
||||
uart3Init(g_eeGeneral.uart3Mode, MODEL_TELEMETRY_PROTOCOL());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -994,7 +994,7 @@ void menuModelSetup(uint8_t event)
|
||||
#if defined(PCBTARANIS)
|
||||
#define IF_INTERNAL_MODULE_ON(x) (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF ? HIDDEN_ROW : (uint8_t)(x))
|
||||
#define IF_EXTERNAL_MODULE_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x))
|
||||
#define IF_TRAINER_ON(x) (g_model.trainerMode ? (uint8_t)(x) : HIDDEN_ROW)
|
||||
#define IF_TRAINER_ON(x) (g_model.trainerMode == TRAINER_MODE_SLAVE ? (uint8_t)(x) : HIDDEN_ROW)
|
||||
#define IF_EXTERNAL_MODULE_XJT(x) (IS_MODULE_XJT(EXTERNAL_MODULE) ? (uint8_t)x : HIDDEN_ROW)
|
||||
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
|
||||
#define INTERNAL_MODULE_CHANNELS_ROWS() IF_INTERNAL_MODULE_ON(1)
|
||||
@@ -1467,7 +1467,7 @@ void menuModelSetup(uint8_t event)
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_TRAINER_MODE:
|
||||
g_model.trainerMode = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_MODE, STR_VTRAINERMODES, g_model.trainerMode, 0, 1, attr, event);
|
||||
g_model.trainerMode = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_MODE, STR_VTRAINERMODES, g_model.trainerMode, 0, HAS_WIRELESS_TRAINER_HARDWARE() ? TRAINER_MODE_MASTER_BATTERY_COMPARTMENT : TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE, attr, event);
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -136,11 +136,11 @@ void lcdPutPattern(coord_t x, coord_t y, const uint8_t * pattern, uint8_t width,
|
||||
void lcd_putcAtt(coord_t x, coord_t y, const unsigned char c, LcdFlags flags)
|
||||
{
|
||||
const pm_uchar * q;
|
||||
uint32_t fontsize = FONTSIZE(flags);
|
||||
|
||||
lcdNextPos = x-1;
|
||||
|
||||
#if !defined(BOOT)
|
||||
uint32_t fontsize = FONTSIZE(flags);
|
||||
unsigned char c_remapped = 0;
|
||||
|
||||
if (fontsize == DBLSIZE || (flags&BOLD)) {
|
||||
|
||||
@@ -309,6 +309,7 @@ enum uartModes {
|
||||
UART_MODE_TELEMETRY_MIRROR,
|
||||
UART_MODE_TELEMETRY,
|
||||
UART_MODE_SBUS_TRAINER,
|
||||
// UART_MODE_CPPM_TRAINER,
|
||||
#if defined(DEBUG)
|
||||
UART_MODE_DEBUG,
|
||||
#endif
|
||||
@@ -316,6 +317,7 @@ enum uartModes {
|
||||
UART_MODE_MAX = UART_MODE_COUNT-1
|
||||
};
|
||||
|
||||
#define HAS_WIRELESS_TRAINER_HARDWARE() (g_eeGeneral.uart3Mode==UART_MODE_SBUS_TRAINER/* || g_eeGeneral.uart3Mode==UART_MODE_CPPM_TRAINER*/)
|
||||
#define EXTRA_GENERAL_FIELDS \
|
||||
EXTRA_GENERAL_FIELDS_ARM \
|
||||
uint8_t uart3Mode; \
|
||||
@@ -357,6 +359,14 @@ PACK(typedef struct {
|
||||
EXTERNAL_MODULE,
|
||||
TRAINER_MODULE
|
||||
};
|
||||
enum TrainerMode {
|
||||
TRAINER_MODE_MASTER,
|
||||
TRAINER_MODE_SLAVE,
|
||||
TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE,
|
||||
TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE,
|
||||
TRAINER_MODE_MASTER_BATTERY_COMPARTMENT,
|
||||
};
|
||||
#define IS_TRAINER_EXTERNAL_MODULE() (g_model.trainerMode == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE || g_model.trainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE)
|
||||
#define MODELDATA_BITMAP char bitmap[LEN_BITMAP_NAME];
|
||||
#define MODELDATA_EXTRA uint8_t externalModule; uint8_t trainerMode; ModuleData moduleData[NUM_MODULES+1]; char curveNames[MAX_CURVES][6]; ScriptData scriptsData[MAX_SCRIPTS]; char inputNames[MAX_INPUTS][LEN_INPUT_NAME]; uint8_t nPotsToWarn; int8_t potPosition[NUM_POTS]; uint8_t spare[2];
|
||||
#define swstate_t uint16_t
|
||||
@@ -1759,6 +1769,8 @@ enum ModuleTypes {
|
||||
MODULE_TYPE_COUNT
|
||||
};
|
||||
|
||||
#define IS_PULSES_EXTERNAL_MODULE() (g_model.externalModule != MODULE_TYPE_NONE)
|
||||
|
||||
enum FailsafeModes {
|
||||
FAILSAFE_HOLD,
|
||||
FAILSAFE_CUSTOM,
|
||||
|
||||
+52
-15
@@ -87,6 +87,56 @@ uint8_t g_tmr1Latency_min;
|
||||
uint16_t lastMixerDuration;
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
uint8_t currentTrainerMode = 0xff;
|
||||
|
||||
void checkTrainerSettings()
|
||||
{
|
||||
uint8_t requiredTrainerMode = g_model.trainerMode;
|
||||
if (requiredTrainerMode != currentTrainerMode) {
|
||||
switch (currentTrainerMode) {
|
||||
case TRAINER_MODE_MASTER:
|
||||
stop_trainer_capture();
|
||||
break;
|
||||
case TRAINER_MODE_SLAVE:
|
||||
stop_trainer_ppm();
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE:
|
||||
stop_cppm_on_heartbeat_capture() ;
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE:
|
||||
stop_sbus_on_heartbeat_capture() ;
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
||||
uart3Stop();
|
||||
}
|
||||
|
||||
currentTrainerMode = requiredTrainerMode;
|
||||
switch (requiredTrainerMode) {
|
||||
case TRAINER_MODE_SLAVE:
|
||||
init_trainer_ppm();
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE:
|
||||
init_cppm_on_heartbeat_capture() ;
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE:
|
||||
init_sbus_on_heartbeat_capture() ;
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
||||
if (g_eeGeneral.uart3Mode == UART_MODE_SBUS_TRAINER) {
|
||||
uart3SbusInit();
|
||||
break;
|
||||
}
|
||||
// no break
|
||||
default:
|
||||
// master is default
|
||||
init_trainer_capture();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
uint8_t unexpectedShutdown = 0;
|
||||
|
||||
/* AVR: mixer duration in 1/16ms */
|
||||
@@ -2239,20 +2289,7 @@ void perMain()
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
uint8_t requiredTrainerMode = g_model.trainerMode;
|
||||
if (requiredTrainerMode != currentTrainerMode) {
|
||||
currentTrainerMode = requiredTrainerMode;
|
||||
if (requiredTrainerMode) {
|
||||
// slave
|
||||
stop_trainer_capture();
|
||||
init_trainer_ppm();
|
||||
}
|
||||
else {
|
||||
// master
|
||||
stop_trainer_ppm();
|
||||
init_trainer_capture();
|
||||
}
|
||||
}
|
||||
checkTrainerSettings();
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS) && !defined(SIMU)
|
||||
@@ -2559,7 +2596,7 @@ ISR(TIMER3_CAPT_vect) // G: High frequency noise can cause stack overflo with IS
|
||||
else {
|
||||
if (ppmInState>0 && ppmInState<=8) {
|
||||
if (val>800 && val<2200) { // if valid pulse-width range
|
||||
ppmInValid = 100;
|
||||
ppmInValid = PPM_IN_VALID_TIMEOUT;
|
||||
g_ppmIns[ppmInState++ - 1] = (int16_t)(val - 1500) * (uint8_t)(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough.
|
||||
}
|
||||
else {
|
||||
|
||||
+2
-1
@@ -923,7 +923,7 @@ extern uint16_t maxLuaDuration;
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
static inline uint16_t getTmr2MHz() { return TIM3->CNT; }
|
||||
static inline uint16_t getTmr2MHz() { return TIM7->CNT; }
|
||||
#elif defined(PCBSKY9X)
|
||||
static inline uint16_t getTmr2MHz() { return TC1->TC_CHANNEL[0].TC_CV; }
|
||||
#else
|
||||
@@ -1123,6 +1123,7 @@ extern uint8_t g_beepVal[5];
|
||||
|
||||
extern uint8_t ppmInState; //0=unsync 1..8= wait for value i-1
|
||||
extern uint8_t ppmInValid;
|
||||
#define PPM_IN_VALID_TIMEOUT 100
|
||||
extern int16_t g_ppmIns[NUM_TRAINER];
|
||||
extern int32_t chans[NUM_CHNOUT];
|
||||
extern int16_t ex_chans[NUM_CHNOUT]; // Outputs (before LIMITS) of the last perMain
|
||||
|
||||
+3
-1
@@ -36,7 +36,7 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
Fifo<28> sbusFifo;
|
||||
Fifo<32> sbusFifo;
|
||||
uint8_t SbusFrame[28] ;
|
||||
uint16_t SbusTimer ;
|
||||
uint8_t SbusIndex = 0 ;
|
||||
@@ -59,6 +59,8 @@ void processSbusFrame(uint8_t *sbus, int16_t *pulses)
|
||||
inputbitsavailable -= 11;
|
||||
inputbits >>= 11;
|
||||
}
|
||||
|
||||
ppmInValid = PPM_IN_VALID_TIMEOUT;
|
||||
}
|
||||
|
||||
#define SBUS_DELAY 1000 // 500uS
|
||||
|
||||
@@ -406,6 +406,7 @@ inline void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) {
|
||||
#define GPIO_ResetBits(GPIOx, pin) GPIOx->BSRRL &= ~pin
|
||||
#define GPIO_ReadInputDataBit(GPIOx, pin) (GPIOx->BSRRL & pin)
|
||||
#define RCC_AHB1PeriphClockCmd(...)
|
||||
#define RCC_APB2PeriphClockCmd(...)
|
||||
#endif
|
||||
|
||||
#define configure_pins(...)
|
||||
|
||||
@@ -257,7 +257,7 @@ extern "C" void TC3_IRQHandler() //capture ppm in at 2MHz
|
||||
else {
|
||||
if (ppmInState>0 && ppmInState<=16) {
|
||||
if (val>800 && val<2200) { // if valid pulse-width range
|
||||
ppmInValid = 100;
|
||||
ppmInValid = PPM_IN_VALID_TIMEOUT;
|
||||
g_ppmIns[ppmInState++ - 1] = (int16_t)(val - 1500)*(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough.
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -54,6 +54,19 @@ void watchdogInit(unsigned int duration)
|
||||
IWDG->KR = 0xCCCC ; // start
|
||||
}
|
||||
|
||||
// Start TIMER7 at 2000000Hz
|
||||
void init2MhzTimer()
|
||||
{
|
||||
// Now for timer 7
|
||||
RCC->APB1ENR |= RCC_APB1ENR_TIM7EN ; // Enable clock
|
||||
|
||||
TIM7->PSC = 0 ; // Max speed
|
||||
TIM7->ARR = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5 uS, 2 MHz
|
||||
TIM7->CR2 = 0 ;
|
||||
TIM7->CR2 = 0x20 ;
|
||||
TIM7->CR1 = TIM_CR1_CEN ;
|
||||
}
|
||||
|
||||
// Starts TIMER at 200Hz, 5mS period
|
||||
void init5msTimer()
|
||||
{
|
||||
@@ -108,6 +121,7 @@ void boardInit()
|
||||
adcInit();
|
||||
delaysInit();
|
||||
audioInit();
|
||||
init2MhzTimer();
|
||||
init5msTimer();
|
||||
__enable_irq();
|
||||
eepromInit();
|
||||
|
||||
@@ -108,7 +108,7 @@ void configure_pins( uint32_t pins, uint16_t config );
|
||||
|
||||
extern uint16_t sessionTimer;
|
||||
|
||||
#define SLAVE_MODE() (g_model.trainerMode == 1)
|
||||
#define SLAVE_MODE() (g_model.trainerMode == TRAINER_MODE_SLAVE)
|
||||
#define TRAINER_CONNECTED() (GPIO_ReadInputDataBit(GPIOTRNDET, PIN_TRNDET) == Bit_RESET)
|
||||
|
||||
void delaysInit(void);
|
||||
@@ -156,6 +156,10 @@ void init_trainer_ppm(void);
|
||||
void stop_trainer_ppm(void);
|
||||
void init_trainer_capture(void);
|
||||
void stop_trainer_capture(void);
|
||||
void init_cppm_on_heartbeat_capture(void);
|
||||
void stop_cppm_on_heartbeat_capture(void);
|
||||
void init_sbus_on_heartbeat_capture(void);
|
||||
void stop_sbus_on_heartbeat_capture(void);
|
||||
|
||||
// Keys driver
|
||||
void keysInit(void);
|
||||
@@ -197,8 +201,8 @@ void pwrOff(void);
|
||||
#define UNEXPECTED_SHUTDOWN() (g_eeGeneral.unexpectedShutdown)
|
||||
#define INTERNAL_RF_ON() GPIO_SetBits(GPIO_INT_RF_PWR, PIN_INT_RF_PWR)
|
||||
#define INTERNAL_RF_OFF() GPIO_ResetBits(GPIO_INT_RF_PWR, PIN_INT_RF_PWR)
|
||||
#define EXTERNAL_RF_ON() GPIO_SetBits(GPIO_EXT_RF_PWR, PIN_EXT_RF_PWR)
|
||||
#define EXTERNAL_RF_OFF() GPIO_ResetBits(GPIO_EXT_RF_PWR, PIN_EXT_RF_PWR)
|
||||
#define EXTERNAL_MODULE_ON() GPIO_SetBits(GPIO_EXT_RF_PWR, PIN_EXT_RF_PWR)
|
||||
#define EXTERNAL_MODULE_OFF() GPIO_ResetBits(GPIO_EXT_RF_PWR, PIN_EXT_RF_PWR)
|
||||
|
||||
// Backlight driver
|
||||
#if defined(REVPLUS)
|
||||
@@ -259,7 +263,10 @@ void hapticOff(void);
|
||||
void uart3Init(unsigned int mode, unsigned int protocol);
|
||||
void uart3Putc(const char c);
|
||||
#define telemetrySecondPortInit(protocol) uart3Init(UART_MODE_TELEMETRY, protocol)
|
||||
void uart3SbusInit(void);
|
||||
void uart3Stop(void);
|
||||
|
||||
#define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE)
|
||||
|
||||
extern uint8_t currentTrainerMode;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -193,6 +193,7 @@
|
||||
#define PIN_PER_3 0x0030
|
||||
#define PIN_PER_5 0x0050
|
||||
#define PIN_PER_6 0x0060
|
||||
#define PIN_PER_8 0x0080
|
||||
// #define PIN_OS2 0x0000
|
||||
#define PIN_OS25 0x2000
|
||||
#define PIN_OS50 0x4000
|
||||
|
||||
@@ -172,10 +172,11 @@ static void disable_pa10_none()
|
||||
|
||||
static void init_pa7_none()
|
||||
{
|
||||
EXTERNAL_RF_OFF();
|
||||
if (!IS_TRAINER_EXTERNAL_MODULE()) {
|
||||
EXTERNAL_MODULE_OFF();
|
||||
}
|
||||
|
||||
// Timer8
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO_EXTPPM, ENABLE);
|
||||
|
||||
@@ -374,7 +375,7 @@ extern "C" void TIM1_UP_TIM10_IRQHandler()
|
||||
|
||||
static void init_pa7_pxx()
|
||||
{
|
||||
EXTERNAL_RF_ON();
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
// Timer8
|
||||
setupPulsesPXX(EXTERNAL_MODULE);
|
||||
@@ -442,13 +443,15 @@ static void disable_pa7_pxx()
|
||||
NVIC_DisableIRQ(TIM8_CC_IRQn) ;
|
||||
TIM8->DIER &= ~TIM_DIER_CC2IE ;
|
||||
TIM8->CR1 &= ~TIM_CR1_CEN ;
|
||||
EXTERNAL_RF_OFF();
|
||||
if (!IS_TRAINER_EXTERNAL_MODULE()) {
|
||||
EXTERNAL_MODULE_OFF();
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(DSM2)
|
||||
static void init_pa7_dsm2()
|
||||
{
|
||||
EXTERNAL_RF_ON();
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
// Timer8
|
||||
setupPulsesDSM2(EXTERNAL_MODULE);
|
||||
@@ -516,7 +519,9 @@ static void disable_pa7_dsm2()
|
||||
NVIC_DisableIRQ(TIM8_CC_IRQn) ;
|
||||
TIM8->DIER &= ~TIM_DIER_CC2IE ;
|
||||
TIM8->CR1 &= ~TIM_CR1_CEN ;
|
||||
EXTERNAL_RF_OFF();
|
||||
if (!IS_TRAINER_EXTERNAL_MODULE()) {
|
||||
EXTERNAL_MODULE_OFF();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -525,7 +530,8 @@ static void disable_pa7_dsm2()
|
||||
// Pin is AF1 function for timer 1
|
||||
static void init_pa7_ppm()
|
||||
{
|
||||
EXTERNAL_RF_ON();
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
// Timer1
|
||||
setupPulsesPPM(EXTERNAL_MODULE) ;
|
||||
ppmStreamPtr[EXTERNAL_MODULE] = ppmStream[EXTERNAL_MODULE];
|
||||
@@ -573,7 +579,9 @@ static void disable_pa7_ppm()
|
||||
NVIC_DisableIRQ(TIM8_UP_TIM13_IRQn) ;
|
||||
TIM8->DIER &= ~TIM_DIER_CC2IE & ~TIM_DIER_UIE ;
|
||||
TIM8->CR1 &= ~TIM_CR1_CEN ;
|
||||
EXTERNAL_RF_OFF();
|
||||
if (!IS_TRAINER_EXTERNAL_MODULE()) {
|
||||
EXTERNAL_MODULE_OFF();
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void TIM8_CC_IRQHandler()
|
||||
|
||||
@@ -36,9 +36,9 @@
|
||||
|
||||
#include "../../opentx.h"
|
||||
|
||||
uint8_t currentTrainerMode;
|
||||
uint16_t * TrainerPulsePtr;
|
||||
extern uint16_t ppmStream[NUM_MODULES+1][20];
|
||||
extern Fifo<32> sbusFifo;
|
||||
|
||||
#define setupTrainerPulses() setupPulsesPPM(TRAINER_MODULE)
|
||||
|
||||
@@ -79,8 +79,7 @@ void stop_trainer_ppm()
|
||||
{
|
||||
configure_pins( PIN_TR_PPM_OUT, PIN_INPUT | PIN_PORTC ) ; // Pin as input
|
||||
TIM3->CR1 &= ~TIM_CR1_CEN ; // Stop counter
|
||||
TIM3->DIER &= ~TIM_DIER_CC2IE ; // Stop Interrupt
|
||||
TIM3->DIER &= ~TIM_DIER_UIE ; // Stop Interrupt
|
||||
TIM3->DIER = 0 ; // Stop Interrupt
|
||||
NVIC_DisableIRQ(TIM3_IRQn) ; // Stop Interrupt
|
||||
}
|
||||
|
||||
@@ -99,28 +98,38 @@ void init_trainer_capture()
|
||||
TIM3->SR &= ~TIM_SR_CC3IF & ~TIM_SR_CC2IF & ~TIM_SR_UIF ; // Clear flags
|
||||
TIM3->DIER |= TIM_DIER_CC3IE ;
|
||||
TIM3->CR1 = TIM_CR1_CEN ;
|
||||
NVIC_EnableIRQ(TIM3_IRQn) ;
|
||||
NVIC_SetPriority(TIM3_IRQn, 7);
|
||||
NVIC_EnableIRQ(TIM3_IRQn) ;
|
||||
}
|
||||
|
||||
void stop_trainer_capture()
|
||||
{
|
||||
TIM3->CR1 &= ~TIM_CR1_CEN ; // Stop counter
|
||||
TIM3->DIER &= ~TIM_DIER_CC3IE ; // Stop Interrupt
|
||||
TIM3->DIER = 0; // Stop Interrupt
|
||||
NVIC_DisableIRQ(TIM3_IRQn) ; // Stop Interrupt
|
||||
}
|
||||
|
||||
extern "C" void TIM3_IRQHandler()
|
||||
{
|
||||
uint16_t capture ;
|
||||
uint16_t capture = 0;
|
||||
static uint16_t lastCapt ;
|
||||
uint16_t val ;
|
||||
bool doCapture = false ;
|
||||
|
||||
// What mode? in or out?
|
||||
if ( (TIM3->DIER & TIM_DIER_CC3IE ) && ( TIM3->SR & TIM_SR_CC3IF ) ) {
|
||||
// capture mode
|
||||
// capture mode on trainer jack
|
||||
capture = TIM3->CCR3 ;
|
||||
doCapture = true;
|
||||
}
|
||||
|
||||
if ( (TIM3->DIER & TIM_DIER_CC2IE ) && ( TIM3->SR & TIM_SR_CC2IF ) ) {
|
||||
// capture mode on heartbeat pin (external module)
|
||||
capture = TIM3->CCR2 ;
|
||||
doCapture = true ;
|
||||
}
|
||||
|
||||
if (doCapture) {
|
||||
val = (uint16_t)(capture - lastCapt) / 2 ;
|
||||
lastCapt = capture;
|
||||
|
||||
@@ -132,7 +141,7 @@ extern "C" void TIM3_IRQHandler()
|
||||
else {
|
||||
if (ppmInState>0 && ppmInState<=16) {
|
||||
if (val>800 && val<2200) {
|
||||
ppmInValid = 100;
|
||||
ppmInValid = PPM_IN_VALID_TIMEOUT;
|
||||
g_ppmIns[ppmInState++ - 1] = (int16_t)(val - 1500)*(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough.
|
||||
}
|
||||
else {
|
||||
@@ -168,3 +177,86 @@ extern "C" void TIM3_IRQHandler()
|
||||
}
|
||||
}
|
||||
|
||||
void init_cppm_on_heartbeat_capture(void)
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock
|
||||
configure_pins( 0x0080, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 ) ;
|
||||
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; // Enable clock
|
||||
|
||||
TIM3->ARR = 0xFFFF ;
|
||||
TIM3->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS
|
||||
TIM3->CR2 = 0 ;
|
||||
TIM3->CCMR1 = TIM_CCMR1_IC2F_0 | TIM_CCMR1_IC2F_1 | TIM_CCMR1_CC2S_0 ;
|
||||
TIM3->CCER = TIM_CCER_CC2E ;
|
||||
TIM3->SR &= ~TIM_SR_CC2IF ; // Clear flag
|
||||
TIM3->DIER |= TIM_DIER_CC2IE ;
|
||||
TIM3->CR1 = TIM_CR1_CEN ;
|
||||
NVIC_SetPriority(TIM3_IRQn, 7);
|
||||
NVIC_EnableIRQ(TIM3_IRQn) ;
|
||||
}
|
||||
|
||||
void stop_cppm_on_heartbeat_capture(void)
|
||||
{
|
||||
TIM3->DIER = 0 ;
|
||||
TIM3->CR1 &= ~TIM_CR1_CEN ; // Stop counter
|
||||
NVIC_DisableIRQ(TIM3_IRQn) ; // Stop Interrupt
|
||||
|
||||
if (!IS_PULSES_EXTERNAL_MODULE()) {
|
||||
EXTERNAL_MODULE_OFF();
|
||||
}
|
||||
}
|
||||
|
||||
void init_sbus_on_heartbeat_capture()
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
|
||||
|
||||
GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_USART6);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOC, &GPIO_InitStructure);
|
||||
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);
|
||||
|
||||
USART_InitStructure.USART_BaudRate = 100000;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||
USART_InitStructure.USART_Parity = USART_Parity_Even;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Rx;
|
||||
|
||||
USART_Init(USART6, &USART_InitStructure);
|
||||
|
||||
USART_Cmd(USART6, ENABLE);
|
||||
|
||||
USART_ITConfig(USART6, USART_IT_RXNE, ENABLE);
|
||||
|
||||
NVIC_SetPriority(USART6_IRQn, 7);
|
||||
NVIC_EnableIRQ(USART6_IRQn);
|
||||
}
|
||||
|
||||
void stop_sbus_on_heartbeat_capture(void)
|
||||
{
|
||||
configure_pins( 0x0080, PIN_INPUT | PIN_PORTC ) ;
|
||||
NVIC_DisableIRQ(USART6_IRQn) ;
|
||||
|
||||
if (!IS_PULSES_EXTERNAL_MODULE()) {
|
||||
EXTERNAL_MODULE_OFF();
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void USART6_IRQHandler()
|
||||
{
|
||||
uint8_t data = USART6->DR;
|
||||
sbusFifo.push(data);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
uint8_t uart3Mode = UART_MODE_NONE;
|
||||
Fifo<512> uart3TxFifo;
|
||||
extern Fifo<512> telemetryFifo;
|
||||
extern Fifo<28> sbusFifo;
|
||||
extern Fifo<32> sbusFifo;
|
||||
|
||||
void uart3Setup(unsigned int baudrate)
|
||||
{
|
||||
@@ -70,11 +70,11 @@ void uart3Setup(unsigned int baudrate)
|
||||
USART_Init(UART3, &USART_InitStructure);
|
||||
USART_Cmd(UART3, ENABLE);
|
||||
|
||||
USART_ITConfig(UART3, USART_IT_RXNE, DISABLE);
|
||||
USART_ITConfig(UART3, USART_IT_RXNE, ENABLE);
|
||||
USART_ITConfig(UART3, USART_IT_TXE, DISABLE);
|
||||
|
||||
NVIC_EnableIRQ(USART3_IRQn);
|
||||
NVIC_SetPriority(USART3_IRQn, 7);
|
||||
NVIC_EnableIRQ(USART3_IRQn);
|
||||
}
|
||||
|
||||
void uart3Init(unsigned int mode, unsigned int protocol)
|
||||
@@ -97,10 +97,6 @@ void uart3Init(unsigned int mode, unsigned int protocol)
|
||||
uart3Setup(FRSKY_D_BAUDRATE);
|
||||
}
|
||||
break;
|
||||
case UART_MODE_SBUS_TRAINER:
|
||||
uart3Setup(100000);
|
||||
USART3->CR1 |= USART_CR1_M | USART_CR1_PCE ;
|
||||
break;
|
||||
}
|
||||
|
||||
uart3Mode = mode;
|
||||
@@ -121,7 +117,16 @@ void debugPutc(const char c)
|
||||
}
|
||||
#endif
|
||||
|
||||
#define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE)
|
||||
void uart3SbusInit()
|
||||
{
|
||||
uart3Setup(100000);
|
||||
USART3->CR1 |= USART_CR1_M | USART_CR1_PCE ;
|
||||
}
|
||||
|
||||
void uart3Stop()
|
||||
{
|
||||
USART_DeInit(USART3);
|
||||
}
|
||||
|
||||
extern "C" void USART3_IRQHandler(void)
|
||||
{
|
||||
|
||||
@@ -79,12 +79,8 @@
|
||||
#define LEN_TRNCHN "\003"
|
||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
<<<<<<< HEAD
|
||||
#define TR_UART3MODES "VYP\0 ""S-Port Mirror\0 ""Telemetrie\0 ""Trainer\0 ""Debug\0 "
|
||||
=======
|
||||
#define TR_UART3MODES "VYP\0 ""S-Port Mirror\0 ""Telemetrie\0 ""Debug\0 "
|
||||
>>>>>>> 2073a1f... CZ translations - Radio
|
||||
#define LEN_UART3MODES "\015"
|
||||
#define TR_UART3MODES "VYP\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Trainer\0""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "Není\0 ""Pot s aretací\0 ""Vícepol. přep.\0""Potenciometr\0"
|
||||
@@ -478,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\004"
|
||||
#define TR_VTMRMODES "VYP\0""ABS\0""Pln>""Pln%""Pln*"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Učitel""Žák\0 "
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Učitel/Jack\0 ""Žák/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Držet\0 ""Vlastní\0 ""Bez pulzů""Přijímač"
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
#define LEN_TRNCHN "\003"
|
||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "AUS\0 ""S-Port DataOut\0""Telemetrie\0 ""Trainer\0 ""Debug\0 "
|
||||
#define LEN_UART3MODES "\015"
|
||||
#define TR_UART3MODES "AUS\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Trainer\0""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "Kein\0 ""Poti mit Raste ""Stufen-Schalter""Poti ohne Raste\0"
|
||||
@@ -481,8 +481,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "AUS""ABS""GSs""GS%""GSt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\007"
|
||||
#define TR_VTRAINERMODES "Lehrer\0""Schüler\0" // "Master""Slave\0"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Lehrer/Jack\0 ""Schüler/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\013"
|
||||
#define TR_VFAILSAFE "Halte Pos.\0""Angepasst\0 ""Kein Signal""Empfänger\0"
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
#define LEN_TRNCHN "\003"
|
||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0 "
|
||||
#define LEN_UART3MODES "\015"
|
||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0"
|
||||
@@ -481,8 +481,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ON\0""THs""TH%""THt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Master""Slave\0"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Master/Jack\0 ""Slave/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses""Receiver\0"
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
#define LEN_TRNCHN "\003"
|
||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""Trainer\0 ""Debug\0 "
|
||||
#define LEN_UART3MODES "\015"
|
||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0"
|
||||
@@ -474,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Master""Esclav"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Master/Jack\0 ""Esclav/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Guardar\0 ""Adaptar\0 ""Sin pulso""Receiver\0"
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
#define LEN_TRNCHN "\003"
|
||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "POIS\0 ""S-Port Pelik\0 ""Telemetry\0 ""Trainer\0 ""Debug\0 "
|
||||
#define LEN_UART3MODES "\015"
|
||||
#define TR_UART3MODES "POIS\0 ""S-Port Pelik\0""Telemetry\0 ""SBUS Trainer\0""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "None\0 ""Pot with detent""Monias. Kytkin\0""Potikka\0"
|
||||
@@ -474,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Master""Slave\0"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Master/Jack\0 ""Slave/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses""Receiver\0"
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
#define LEN_TRNCHN "\003"
|
||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "OFF\0 ""Recopie S-Port\0""Telemetrie\0 ""Ecolage SBUS\0 ""Debug\0 "
|
||||
#define LEN_UART3MODES "\016"
|
||||
#define TR_UART3MODES "OFF\0 ""Recopie S-Port""Telemetrie\0 ""Ecolage SBUS\0 ""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "Rien\0 ""Pot avec centre""Inter multi-pos""Potentiomètre\0"
|
||||
@@ -474,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""GZs""GZ%""GZt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Maître""Elève\0"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Maître/Jack\0 ""Elève/Jack\0 ""Maître/SBUS Module""Maître/CPPM Module""Maître/Batterie\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Maintien\0""Prédéfini""Pas d'imp""Récepteur"
|
||||
|
||||
@@ -78,10 +78,10 @@
|
||||
|
||||
#define LEN_TRNCHN "\003"
|
||||
#define TR_TRNCHN "ch1ch2ch3ch4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "OFF\0 ""Replica Porta-S""Telemetria\0 ""Trainer\0 ""Debug\0 "
|
||||
|
||||
|
||||
#define LEN_UART3MODES "\016"
|
||||
#define TR_UART3MODES "OFF\0 ""Replica S-Port""Telemetria\0 ""SBUS Trainer\0 ""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "None\0 ""Pot. con centro""Inter. Multipos""Potenziometro\0 "
|
||||
|
||||
@@ -474,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""MOs""MO%""MOt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\007"
|
||||
#define TR_VTRAINERMODES "Maestro""Allievo"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Maestro/Jack\0 ""Allievo/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\013"
|
||||
#define TR_VFAILSAFE "Mantieni\0 ""Personali\0 ""No impulsi\0""Ricevente\0 "
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
#define TR_TRNCHN "KN1KN2KN3KN4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "Wyłącz\0 ""S-Port Mirror\0 ""Telemetry\0 ""Trainer\0 ""Debug\0 "
|
||||
#define TR_UART3MODES "Wyłącz\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "Brak\0 ""Poten z zapadką""Przeł.Wielopoz.""Potencjometr\0"
|
||||
@@ -474,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "WYŁ""ABS""THs""TH%""THt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Trener""Uczeń\0"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Trener/Jack\0 ""Uczeń/Jack\0 ""Trener/SBUS Module""Trener/CPPM Module""Trener/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Utrzymuj\0""Własne\0 ""0 sygnału""Odbiorn.\0"
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||
|
||||
#define LEN_UART3MODES "\017"
|
||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""Trainer\0 ""Debug\0 "
|
||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\017"
|
||||
#define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0"
|
||||
@@ -474,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""MTs""MT%""MTt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Master""Slave\0"
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Master/Jack\0 ""Slave/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses""Receiver\0"
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
#define TR_TRNCHN "KN1KN2KN3KN4"
|
||||
|
||||
#define LEN_UART3MODES "\022"
|
||||
#define TR_UART3MODES "Av\0 ""Spegling av S-Port""Telemetri\0 ""Trainer\0 ""Debug\0 "
|
||||
#define TR_UART3MODES "Av\0 ""Spegling av S-Port""Telemetri\0 ""SBUS Trainer\0 ""Debug\0"
|
||||
|
||||
#define LEN_POTTYPES "\020"
|
||||
#define TR_POTTYPES "Ingen\0 ""Mittläges-pot\0 ""Flerlägesväljare""Potentiometer\0"
|
||||
@@ -474,8 +474,8 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "Av\0""ABS""GAs""GA%""GAt"
|
||||
|
||||
#define LEN_VTRAINERMODES "\006"
|
||||
#define TR_VTRAINERMODES "Lärare""Elev\0."
|
||||
#define LEN_VTRAINERMODES "\022"
|
||||
#define TR_VTRAINERMODES "Lärare/Jack\0 ""Elev./Jack\0 ""Lärare/SBUS Module""Lärare/CPPM Module""Lärare/Battery\0"
|
||||
|
||||
#define LEN_VFAILSAFE "\011"
|
||||
#define TR_VFAILSAFE "Lås Servo""Anpassat\0""Pulsfritt""Mottagare"
|
||||
|
||||
Reference in New Issue
Block a user