mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 01:05:10 +03:00
parent
1cad34eb73
commit
f0d8d340fd
32 changed files with 323 additions and 17 deletions
|
@ -666,7 +666,8 @@ PACK(struct TrainerData {
|
|||
|
||||
#if defined(PCBHORUS)
|
||||
#define EXTRA_GENERAL_FIELDS \
|
||||
NOBACKUP(uint8_t auxSerialMode); \
|
||||
NOBACKUP(uint8_t auxSerialMode:4); \
|
||||
NOBACKUP(uint8_t aux2SerialMode:4); \
|
||||
swconfig_t switchConfig; \
|
||||
uint16_t potsConfig; /* two bits per pot */ \
|
||||
uint8_t slidersConfig; /* 1 bit per slider */ \
|
||||
|
|
|
@ -38,6 +38,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
uint8_t auxSerialTracesEnabled();
|
||||
uint8_t aux2SerialTracesEnabled();
|
||||
|
||||
#if defined(SIMU)
|
||||
typedef void (*traceCallbackFunc)(const char * text);
|
||||
|
|
|
@ -70,7 +70,9 @@ enum MenuRadioHardwareItems {
|
|||
#if defined(AUX_SERIAL)
|
||||
ITEM_RADIO_HARDWARE_AUX_SERIAL_MODE,
|
||||
#endif
|
||||
|
||||
#if defined(AUX2_SERIAL)
|
||||
ITEM_RADIO_HARDWARE_AUX2_SERIAL_MODE,
|
||||
#endif
|
||||
ITEM_RADIO_HARDWARE_JITTER_FILTER,
|
||||
ITEM_RADIO_HARDWARE_RAS,
|
||||
|
||||
|
@ -89,6 +91,11 @@ enum MenuRadioHardwareItems {
|
|||
#else
|
||||
#define AUX_SERIAL_ROW
|
||||
#endif
|
||||
#if defined(AUX2_SERIAL)
|
||||
#define AUX2_SERIAL_ROW 0,
|
||||
#else
|
||||
#define AUX2_SERIAL_ROW
|
||||
#endif
|
||||
|
||||
#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1
|
||||
#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1
|
||||
|
@ -159,6 +166,7 @@ bool menuRadioHardware(event_t event)
|
|||
EXTERNAL_ANTENNA_ROW
|
||||
|
||||
AUX_SERIAL_ROW /* aux serial mode */
|
||||
AUX2_SERIAL_ROW /* aux2 serial mode */
|
||||
0, /* ADC filter */
|
||||
READONLY_ROW /* RAS */,
|
||||
SPORT_POWER_ROWS
|
||||
|
@ -371,6 +379,19 @@ bool menuRadioHardware(event_t event)
|
|||
break;
|
||||
#endif
|
||||
|
||||
#if defined(AUX2_SERIAL)
|
||||
case ITEM_RADIO_HARDWARE_AUX2_SERIAL_MODE:
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_AUX2_SERIAL_MODE);
|
||||
#if defined(RADIO_TX16S)
|
||||
lcdDrawText(lcdNextPos, y, " (TTL)");
|
||||
#endif
|
||||
g_eeGeneral.aux2SerialMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_AUX_SERIAL_MODES, g_eeGeneral.aux2SerialMode, 0, UART_MODE_MAX, attr, event);
|
||||
if (attr && checkIncDec_Ret) {
|
||||
aux2SerialInit(g_eeGeneral.aux2SerialMode, modelTelemetryProtocol());
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ITEM_RADIO_HARDWARE_JITTER_FILTER:
|
||||
{
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_JITTER_FILTER);
|
||||
|
|
|
@ -1601,6 +1601,13 @@ static int luaSerialWrite(lua_State * L)
|
|||
while(wr_len--) auxSerialPutc(*p++);
|
||||
}
|
||||
#endif
|
||||
#if defined(AUX2_SERIAL)
|
||||
if (aux2SerialMode == UART_MODE_LUA) {
|
||||
size_t wr_len = len;
|
||||
const char* p = str;
|
||||
while(wr_len--) aux2SerialPutc(*p++);
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
debugPrintf("luaSerialWrite: %.*s",len,str);
|
||||
#endif
|
||||
|
|
|
@ -1939,6 +1939,10 @@ void opentxInit()
|
|||
auxSerialInit(g_eeGeneral.auxSerialMode, modelTelemetryProtocol());
|
||||
#endif
|
||||
|
||||
#if defined(AUX2_SERIAL)
|
||||
aux2SerialInit(g_eeGeneral.aux2SerialMode, modelTelemetryProtocol());
|
||||
#endif
|
||||
|
||||
#if MENUS_LOCK == 1
|
||||
getMovedSwitch();
|
||||
if (TRIMS_PRESSED() && g_eeGeneral.switchUnlockStates==switches_states) {
|
||||
|
|
|
@ -34,6 +34,10 @@ void serialPutc(char c) {
|
|||
if (auxSerialTracesEnabled())
|
||||
auxSerialPutc(c);
|
||||
#endif
|
||||
#if defined(AUX2_SERIAL)
|
||||
if (aux2SerialTracesEnabled())
|
||||
aux2SerialPutc(c);
|
||||
#endif
|
||||
}
|
||||
|
||||
void serialPrintf(const char * format, ...)
|
||||
|
|
|
@ -400,7 +400,7 @@ void convertRadioData_218_to_219(RadioData & settings)
|
|||
#if defined(PCBHORUS)
|
||||
// 2 new pots from X10:
|
||||
// - copy btw. 'chkSum' and 'auxSerialMode' (excl.)
|
||||
memcpy(&settings.chkSum, &oldSettings.chkSum, offsetof(RadioData, auxSerialMode) - offsetof(RadioData, chkSum));
|
||||
memcpy(&settings.chkSum, &oldSettings.chkSum, offsetof(RadioData, switchConfig) - sizeof(uint8_t) - offsetof(RadioData, chkSum));
|
||||
// - move calibration data
|
||||
memcpy(&settings.calib[NUM_STICKS + 5], &oldSettings.calib[NUM_STICKS + 3], sizeof(CalibData) * (STORAGE_NUM_SLIDERS + STORAGE_NUM_MOUSE_ANALOGS));
|
||||
memclear(&settings.calib[NUM_STICKS + 3], sizeof(CalibData) * 2);
|
||||
|
|
|
@ -193,5 +193,181 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void)
|
|||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(AUX2_SERIAL)
|
||||
uint8_t aux2SerialMode = 0;
|
||||
Fifo<uint8_t, 512> aux2SerialTxFifo;
|
||||
AuxSerialRxFifo aux2SerialRxFifo __DMA (AUX2_SERIAL_DMA_Stream_RX);
|
||||
|
||||
void aux2SerialSetup(unsigned int baudrate, bool dma)
|
||||
{
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
GPIO_PinAFConfig(AUX2_SERIAL_GPIO, AUX2_SERIAL_GPIO_PinSource_RX, AUX2_SERIAL_GPIO_AF);
|
||||
GPIO_PinAFConfig(AUX2_SERIAL_GPIO, AUX2_SERIAL_GPIO_PinSource_TX, AUX2_SERIAL_GPIO_AF);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = AUX2_SERIAL_GPIO_PIN_TX | AUX2_SERIAL_GPIO_PIN_RX;
|
||||
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_2MHz;
|
||||
GPIO_Init(AUX2_SERIAL_GPIO, &GPIO_InitStructure);
|
||||
|
||||
#if defined(AUX2_SERIAL_PWR_GPIO)
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_InitStructure.GPIO_Pin = AUX2_SERIAL_PWR_GPIO_PIN;
|
||||
GPIO_Init(AUX2_SERIAL_PWR_GPIO, &GPIO_InitStructure);
|
||||
#endif
|
||||
|
||||
USART_InitStructure.USART_BaudRate = baudrate;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
|
||||
USART_Init(AUX2_SERIAL_USART, &USART_InitStructure);
|
||||
|
||||
if (dma) {
|
||||
DMA_InitTypeDef DMA_InitStructure;
|
||||
aux2SerialRxFifo.clear();
|
||||
USART_ITConfig(AUX2_SERIAL_USART, USART_IT_RXNE, DISABLE);
|
||||
USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, DISABLE);
|
||||
DMA_InitStructure.DMA_Channel = AUX2_SERIAL_DMA_Channel_RX;
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = CONVERT_PTR_UINT(&AUX2_SERIAL_USART->DR);
|
||||
DMA_InitStructure.DMA_Memory0BaseAddr = CONVERT_PTR_UINT(aux2SerialRxFifo.buffer());
|
||||
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
|
||||
DMA_InitStructure.DMA_BufferSize = aux2SerialRxFifo.size();
|
||||
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
||||
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
|
||||
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
|
||||
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
|
||||
DMA_InitStructure.DMA_Priority = DMA_Priority_Low;
|
||||
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
|
||||
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
|
||||
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
|
||||
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
|
||||
DMA_Init(AUX2_SERIAL_DMA_Stream_RX, &DMA_InitStructure);
|
||||
USART_DMACmd(AUX2_SERIAL_USART, USART_DMAReq_Rx, ENABLE);
|
||||
USART_Cmd(AUX2_SERIAL_USART, ENABLE);
|
||||
DMA_Cmd(AUX2_SERIAL_DMA_Stream_RX, ENABLE);
|
||||
}
|
||||
else {
|
||||
USART_Cmd(AUX2_SERIAL_USART, ENABLE);
|
||||
USART_ITConfig(AUX2_SERIAL_USART, USART_IT_RXNE, ENABLE);
|
||||
USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, DISABLE);
|
||||
NVIC_SetPriority(AUX2_SERIAL_USART_IRQn, 7);
|
||||
NVIC_EnableIRQ(AUX2_SERIAL_USART_IRQn);
|
||||
}
|
||||
}
|
||||
|
||||
void aux2SerialInit(unsigned int mode, unsigned int protocol)
|
||||
{
|
||||
aux2SerialStop();
|
||||
|
||||
aux2SerialMode = mode;
|
||||
|
||||
switch (mode) {
|
||||
case UART_MODE_TELEMETRY_MIRROR:
|
||||
#if defined(CROSSFIRE)
|
||||
if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) {
|
||||
aux2SerialSetup(CROSSFIRE_TELEM_MIRROR_BAUDRATE, false);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
aux2SerialSetup(FRSKY_TELEM_MIRROR_BAUDRATE, false);
|
||||
break;
|
||||
|
||||
#if defined(DEBUG) || defined(CLI)
|
||||
case UART_MODE_DEBUG:
|
||||
aux2SerialSetup(DEBUG_BAUDRATE, false);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case UART_MODE_TELEMETRY:
|
||||
if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) {
|
||||
aux2SerialSetup(FRSKY_D_BAUDRATE, true);
|
||||
}
|
||||
break;
|
||||
|
||||
case UART_MODE_LUA:
|
||||
aux2SerialSetup(DEBUG_BAUDRATE, false);
|
||||
}
|
||||
}
|
||||
|
||||
void aux2SerialPutc(char c)
|
||||
{
|
||||
#if !defined(SIMU)
|
||||
int n = 0;
|
||||
while (aux2SerialTxFifo.isFull()) {
|
||||
delay_ms(1);
|
||||
if (++n > 100) return;
|
||||
}
|
||||
aux2SerialTxFifo.push(c);
|
||||
USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, ENABLE);
|
||||
#endif
|
||||
}
|
||||
|
||||
void aux2SerialSbusInit()
|
||||
{
|
||||
aux2SerialSetup(SBUS_BAUDRATE, true);
|
||||
AUX2_SERIAL_USART->CR1 |= USART_CR1_M | USART_CR1_PCE ;
|
||||
AUX2_SERIAL_POWER_ON();
|
||||
}
|
||||
|
||||
void aux2SerialStop()
|
||||
{
|
||||
DMA_DeInit(AUX2_SERIAL_DMA_Stream_RX);
|
||||
USART_DeInit(AUX2_SERIAL_USART);
|
||||
}
|
||||
|
||||
uint8_t aux2SerialTracesEnabled()
|
||||
{
|
||||
#if defined(DEBUG)
|
||||
return (aux2SerialMode == UART_MODE_DEBUG);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined(SIMU)
|
||||
extern "C" void AUX2_SERIAL_USART_IRQHandler(void)
|
||||
{
|
||||
DEBUG_INTERRUPT(INT_SER2);
|
||||
// Send
|
||||
if (USART_GetITStatus(AUX2_SERIAL_USART, USART_IT_TXE) != RESET) {
|
||||
uint8_t txchar;
|
||||
if (aux2SerialTxFifo.pop(txchar)) {
|
||||
/* Write one byte to the transmit data register */
|
||||
USART_SendData(AUX2_SERIAL_USART, txchar);
|
||||
}
|
||||
else {
|
||||
USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, DISABLE);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CLI)
|
||||
if (getSelectedUsbMode() != USB_SERIAL_MODE) {
|
||||
// Receive
|
||||
uint32_t status = AUX2_SERIAL_USART->SR;
|
||||
while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) {
|
||||
uint8_t data = AUX2_SERIAL_USART->DR;
|
||||
if (!(status & USART_FLAG_ERRORS)) {
|
||||
switch (aux2SerialMode) {
|
||||
case UART_MODE_DEBUG:
|
||||
cliRxFifo.push(data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
status = AUX2_SERIAL_USART->SR;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // AUX_SERIAL
|
||||
|
|
|
@ -197,15 +197,15 @@ int main()
|
|||
|
||||
RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | KEYS_RCC_AHB1Periph |
|
||||
LCD_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph |
|
||||
AUX_SERIAL_RCC_AHB1Periph | I2C_RCC_AHB1Periph |
|
||||
AUX_SERIAL_RCC_AHB1Periph | AUX2_SERIAL_RCC_AHB1Periph | I2C_RCC_AHB1Periph |
|
||||
SD_RCC_AHB1Periph, ENABLE);
|
||||
|
||||
RCC_APB1PeriphClockCmd(ROTARY_ENCODER_RCC_APB1Periph | LCD_RCC_APB1Periph | BACKLIGHT_RCC_APB1Periph |
|
||||
INTERRUPT_xMS_RCC_APB1Periph | I2C_RCC_APB1Periph |
|
||||
AUX_SERIAL_RCC_APB1Periph |
|
||||
AUX_SERIAL_RCC_APB1Periph | AUX2_SERIAL_RCC_APB1Periph |
|
||||
SD_RCC_APB1Periph, ENABLE);
|
||||
|
||||
RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph | RCC_APB2Periph_SYSCFG | AUX_SERIAL_RCC_APB2Periph, ENABLE);
|
||||
RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph | RCC_APB2Periph_SYSCFG | AUX_SERIAL_RCC_APB2Periph | AUX2_SERIAL_RCC_APB2Periph, ENABLE);
|
||||
|
||||
pwrInit();
|
||||
keysInit();
|
||||
|
@ -249,6 +249,9 @@ int main()
|
|||
#if defined(DEBUG) && defined(AUX_SERIAL)
|
||||
auxSerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined)
|
||||
#endif
|
||||
#if defined(DEBUG) && defined(AUX2_SERIAL)
|
||||
aux2SerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined)
|
||||
#endif
|
||||
|
||||
__enable_irq();
|
||||
|
||||
|
|
|
@ -64,8 +64,9 @@ if (PCB STREQUAL X10)
|
|||
set(HARDWARE_TOUCH YES)
|
||||
set(USB_CHARGER YES)
|
||||
set(DEFAULT_THEME "DARKBLUE")
|
||||
if (NOT BLUETOOTH)
|
||||
set(AUX_SERIAL ON)
|
||||
if (NOT BLUETOOTH)
|
||||
set(AUX2_SERIAL ON)
|
||||
endif()
|
||||
else()
|
||||
set(FLAVOUR x10)
|
||||
|
@ -238,6 +239,11 @@ if (AUX_SERIAL)
|
|||
set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp)
|
||||
endif()
|
||||
|
||||
if (AUX2_SERIAL)
|
||||
add_definitions(-DAUX2_SERIAL)
|
||||
set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp)
|
||||
endif()
|
||||
|
||||
set(FIRMWARE_TARGET_SRC
|
||||
${FIRMWARE_TARGET_SRC}
|
||||
${LCD_DRIVER}
|
||||
|
|
|
@ -96,6 +96,7 @@ void boardInit()
|
|||
KEYS_RCC_AHB1Periph |
|
||||
ADC_RCC_AHB1Periph |
|
||||
AUX_SERIAL_RCC_AHB1Periph |
|
||||
AUX2_SERIAL_RCC_AHB1Periph |
|
||||
TELEMETRY_RCC_AHB1Periph |
|
||||
TRAINER_RCC_AHB1Periph |
|
||||
BT_RCC_AHB1Periph |
|
||||
|
@ -116,6 +117,7 @@ void boardInit()
|
|||
TIMER_2MHz_RCC_APB1Periph |
|
||||
AUDIO_RCC_APB1Periph |
|
||||
AUX_SERIAL_RCC_APB1Periph |
|
||||
AUX2_SERIAL_RCC_APB1Periph |
|
||||
TELEMETRY_RCC_APB1Periph |
|
||||
TRAINER_RCC_APB1Periph |
|
||||
AUDIO_RCC_APB1Periph |
|
||||
|
@ -135,6 +137,7 @@ void boardInit()
|
|||
TELEMETRY_RCC_APB2Periph |
|
||||
BT_RCC_APB2Periph |
|
||||
AUX_SERIAL_RCC_APB2Periph |
|
||||
AUX2_SERIAL_RCC_APB2Periph |
|
||||
BACKLIGHT_RCC_APB2Periph,
|
||||
ENABLE);
|
||||
|
||||
|
@ -147,6 +150,9 @@ void boardInit()
|
|||
#if defined(DEBUG) && defined(AUX_SERIAL)
|
||||
auxSerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined)
|
||||
#endif
|
||||
#if defined(DEBUG) && defined(AUX2_SERIAL)
|
||||
aux2SerialInit(UART_MODE_DEBUG, 0); // default serial mode (None if DEBUG not defined)
|
||||
#endif
|
||||
|
||||
TRACE("\nHorus board started :)");
|
||||
TRACE("RCC->CSR = %08x", RCC->CSR);
|
||||
|
|
|
@ -615,7 +615,7 @@ void sportUpdatePowerInit();
|
|||
#define IS_SPORT_UPDATE_POWER_ON() (false)
|
||||
#endif
|
||||
|
||||
// Second serial port driver
|
||||
// Aux serial port driver
|
||||
#if defined(AUX_SERIAL_GPIO)
|
||||
#define DEBUG_BAUDRATE 115200
|
||||
extern uint8_t auxSerialMode;
|
||||
|
@ -635,6 +635,25 @@ void auxSerialPowerOff();
|
|||
#endif
|
||||
#endif
|
||||
|
||||
// Aux2 serial port driver
|
||||
#if defined(AUX2_SERIAL)
|
||||
extern uint8_t aux2SerialMode;
|
||||
void aux2SerialInit(unsigned int mode, unsigned int protocol);
|
||||
void aux2SerialPutc(char c);
|
||||
#define aux2SerialTelemetryInit(protocol) aux2SerialInit(UART_MODE_TELEMETRY, protocol)
|
||||
void aux2SerialSbusInit();
|
||||
void aux2SerialStop();
|
||||
void aux2SerialPowerOn();
|
||||
void aux2SerialPowerOff();
|
||||
#if defined(AUX2_SERIAL_PWR_GPIO)
|
||||
#define AUX2_SERIAL_POWER_ON() aux2SerialPowerOn()
|
||||
#define AUX2_SERIAL__POWER_OFF() aux2SerialPowerOff()
|
||||
#else
|
||||
#define AUX2_SERIAL_POWER_ON()
|
||||
#define AUX2_SERIAL__POWER_OFF()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Haptic driver
|
||||
void hapticInit();
|
||||
void hapticDone();
|
||||
|
|
|
@ -433,6 +433,10 @@
|
|||
#define AUX2_SERIAL_DMA_Channel_RX DMA_Channel_5
|
||||
#define AUX2_SERIAL_PWR_GPIO GPIOB
|
||||
#define AUX2_SERIAL_PWR_GPIO_PIN GPIO_Pin_0 // PB.00
|
||||
#else
|
||||
#define AUX2_SERIAL_RCC_AHB1Periph 0
|
||||
#define AUX2_SERIAL_RCC_APB1Periph 0
|
||||
#define AUX2_SERIAL_RCC_APB2Periph 0
|
||||
#endif
|
||||
|
||||
// Telemetry
|
||||
|
|
|
@ -787,3 +787,23 @@ void auxSerialStop()
|
|||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(AUX2_SERIAL)
|
||||
AuxSerialRxFifo aux2SerialRxFifo(nullptr);
|
||||
uint8_t aux2SerialMode;
|
||||
void aux2SerialInit(unsigned int mode, unsigned int protocol)
|
||||
{
|
||||
}
|
||||
|
||||
void aux2SerialPutc(char c)
|
||||
{
|
||||
}
|
||||
|
||||
void aux2SerialSbusInit()
|
||||
{
|
||||
}
|
||||
|
||||
void aux2SerialStop()
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -785,7 +785,7 @@ void hapticOff();
|
|||
void hapticOn();
|
||||
#endif
|
||||
|
||||
// Second serial port driver
|
||||
// Aux serial port driver
|
||||
#if defined(AUX_SERIAL_GPIO)
|
||||
#define DEBUG_BAUDRATE 115200
|
||||
#define AUX_SERIAL
|
||||
|
@ -796,7 +796,7 @@ void auxSerialPutc(char c);
|
|||
void auxSerialSbusInit();
|
||||
void auxSerialStop();
|
||||
#define AUX_SERIAL_POWER_ON()
|
||||
#define AUX_SERIAL__POWER_OFF()
|
||||
#define AUX_SERIAL_POWER_OFF()
|
||||
#endif
|
||||
|
||||
// BT driver
|
||||
|
|
|
@ -1323,6 +1323,11 @@
|
|||
#define AUX_SERIAL_DMA_Channel_RX DMA_Channel_4
|
||||
#endif
|
||||
|
||||
// No aux2 on taranis
|
||||
#define AUX2_SERIAL_RCC_AHB1Periph 0
|
||||
#define AUX2_SERIAL_RCC_APB1Periph 0
|
||||
#define AUX2_SERIAL_RCC_APB2Periph 0
|
||||
|
||||
// Telemetry
|
||||
#define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1)
|
||||
#define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2
|
||||
|
|
|
@ -201,6 +201,11 @@ void processCrossfireTelemetryData(uint8_t data)
|
|||
auxSerialPutc(data);
|
||||
}
|
||||
#endif
|
||||
#if defined(AUX2_SERIAL)
|
||||
if (g_eeGeneral.aux2SerialMode == UART_MODE_TELEMETRY_MIRROR) {
|
||||
aux2SerialPutc(data);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (telemetryRxBufferCount == 0 && data != RADIO_ADDRESS) {
|
||||
TRACE("[XF] address 0x%02X error", data);
|
||||
|
|
|
@ -32,6 +32,11 @@ void processFrskyTelemetryData(uint8_t data)
|
|||
auxSerialPutc(data);
|
||||
}
|
||||
#endif
|
||||
#if defined(AUX2_SERIAL)
|
||||
if (g_eeGeneral.aux2SerialMode == UART_MODE_TELEMETRY_MIRROR) {
|
||||
aux2SerialPutc(data);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pushFrskyTelemetryData(data)) {
|
||||
if (IS_FRSKY_SPORT_PROTOCOL()) {
|
||||
|
|
|
@ -322,6 +322,12 @@ static void processMultiTelemetryPaket(const uint8_t * packet, uint8_t module)
|
|||
auxSerialPutc(packet[c]);
|
||||
}
|
||||
#endif
|
||||
#if defined(AUX2_SERIAL)
|
||||
if (g_eeGeneral.aux2SerialMode == UART_MODE_TELEMETRY_MIRROR) {
|
||||
for (uint8_t c=0; c < len; c++)
|
||||
aux2SerialPutc(packet[c]);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Switch type
|
||||
switch (type) {
|
||||
|
|
|
@ -564,6 +564,7 @@ const char STR_ALTITUDE[] = TR_ALTITUDE;
|
|||
const char STR_SCALE[] = TR_SCALE;
|
||||
const char STR_VIEW_CHANNELS[] = TR_VIEW_CHANNELS;
|
||||
const char STR_AUX_SERIAL_MODE[] = TR_AUX_SERIAL_MODE;
|
||||
const char STR_AUX2_SERIAL_MODE[] = TR_AUX2_SERIAL_MODE;
|
||||
const char STR_THROTTLE_LABEL[] = TR_THROTTLE_LABEL;
|
||||
const char STR_SCRIPT[] = TR_SCRIPT;
|
||||
const char STR_INPUTS[] = TR_INPUTS;
|
||||
|
|
|
@ -864,6 +864,7 @@ extern const char STR_SCALE[];
|
|||
extern const char STR_VIEW_CHANNELS[];
|
||||
extern const char STR_POTWARNING[];
|
||||
extern const char STR_AUX_SERIAL_MODE[];
|
||||
extern const char STR_AUX2_SERIAL_MODE[];
|
||||
extern const char STR_THROTTLE_LABEL[];
|
||||
extern const char STR_SCRIPT[];
|
||||
extern const char STR_INPUTS[];
|
||||
|
|
|
@ -981,6 +981,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Poznámky", INDENT "Zobrazit poznámky")
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Ofset")
|
||||
#define TR_AUX_SERIAL_MODE "Seriový port"
|
||||
#define TR_AUX2_SERIAL_MODE "Seriový port 2"
|
||||
#define TR_SCRIPT "Skript"
|
||||
#define TR_INPUTS "Vstupy"
|
||||
#define TR_OUTPUTS "Výstupy"
|
||||
|
|
|
@ -987,6 +987,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Checkliste", INDENT "Checkliste anzeigen") //9XR-Pro
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS-Ofs", INDENT "FAS-Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Serieller Port"
|
||||
#define TR_AUX2_SERIAL_MODE "Serieller Port 2"
|
||||
#define TR_SCRIPT "Lua-Skript"
|
||||
#define TR_INPUTS "Eingaben"
|
||||
#define TR_OUTPUTS "Ausgaben"
|
||||
|
|
|
@ -986,6 +986,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Display checklist")
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS offset")
|
||||
#define TR_AUX_SERIAL_MODE "Serial port"
|
||||
#define TR_AUX2_SERIAL_MODE "Serial port 2"
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Inputs"
|
||||
#define TR_OUTPUTS "Outputs"
|
||||
|
|
|
@ -985,6 +985,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Lista verif", INDENT "Lista verificación")
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Puerto serie"
|
||||
#define TR_AUX2_SERIAL_MODE "Puerto serie 2"
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Entradas"
|
||||
#define TR_OUTPUTS "Salidas"
|
||||
|
|
|
@ -1000,6 +1000,7 @@
|
|||
#define TR_CHECKLIST INDENT "Display Checklist"
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Serial port"
|
||||
#define TR_AUX2_SERIAL_MODE "Serial port 2"
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Inputs"
|
||||
#define TR_OUTPUTS "Outputs"
|
||||
|
|
|
@ -1002,6 +1002,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Notes", INDENT "Afficher notes")
|
||||
#define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS")
|
||||
#define TR_AUX_SERIAL_MODE "Port série"
|
||||
#define TR_AUX2_SERIAL_MODE "Port série 2"
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Entrées"
|
||||
#define TR_OUTPUTS "Sorties"
|
||||
|
|
|
@ -1002,6 +1002,7 @@
|
|||
#define TR_CHECKLIST INDENT "Mostra Checklist"
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Porta Seriale"
|
||||
#define TR_AUX2_SERIAL_MODE "Porta Seriale 2"
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Ingresso"
|
||||
#define TR_OUTPUTS "Uscita"
|
||||
|
|
|
@ -988,6 +988,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Toon Checklist")
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Seriele poort"
|
||||
#define TR_AUX2_SERIAL_MODE "Seriele poort 2"
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Inputs"
|
||||
#define TR_OUTPUTS "Outputs"
|
||||
|
|
|
@ -1001,6 +1001,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Czeklista",INDENT "Pokaż Listę Ostrzeżeń")
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Port szreg."
|
||||
#define TR_AUX2_SERIAL_MODE "Port szreg. 2"
|
||||
#define TR_SCRIPT "Skrypt"
|
||||
#define TR_INPUTS "Wejścia"
|
||||
#define TR_OUTPUTS "Wyjścia"
|
||||
|
|
|
@ -991,6 +991,7 @@
|
|||
#define TR_CHECKLIST INDENT "Display Checklist"
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Serial port"
|
||||
#define TR_AUX2_SERIAL_MODE "Serial port 2"
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Inputs"
|
||||
#define TR_OUTPUTS "Outputs"
|
||||
|
|
|
@ -1001,6 +1001,7 @@
|
|||
#define TR_CHECKLIST TR(INDENT "Checklista", INDENT "Visa Checklista")
|
||||
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
|
||||
#define TR_AUX_SERIAL_MODE "Serieporten"
|
||||
#define TR_AUX2_SERIAL_MODE "Serieporten 2"
|
||||
#define TR_SCRIPT "Programkod"
|
||||
#define TR_INPUTS "Input"
|
||||
#define TR_OUTPUTS "Outputs"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue