1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-14 20:10:08 +03:00

tx16s aux fixes

This commit is contained in:
3djc 2020-05-15 21:11:05 +02:00
parent 0609cdb2d3
commit 318e4dd516
6 changed files with 45 additions and 9 deletions

View file

@ -1634,9 +1634,9 @@ Reads characters from the serial port. The string is allowed to contain any char
*/
static int luaSerialRead(lua_State * L)
{
#if defined(LUA) && !defined(CLI)
int num = luaL_optunsigned(L, 1, 0);
#if defined(LUA) && !defined(CLI)
if (!luaRxFifo) {
luaRxFifo = new Fifo<uint8_t, LUA_FIFO_SIZE>();
if (!luaRxFifo) {

View file

@ -41,7 +41,7 @@ extern "C" {
#endif
#endif
#if !defined(CLI)
#if !defined(CLI) || defined(AUX2_SERIAL)
#define LUA_FIFO_SIZE 256
extern Fifo<uint8_t, LUA_FIFO_SIZE> * luaRxFifo;
#endif

View file

@ -101,6 +101,7 @@ void auxSerialInit(unsigned int mode, unsigned int protocol)
#if defined(CROSSFIRE)
if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) {
auxSerialSetup(CROSSFIRE_TELEM_MIRROR_BAUDRATE, false);
AUX_SERIAL_POWER_OFF();
break;
}
#endif
@ -110,17 +111,20 @@ void auxSerialInit(unsigned int mode, unsigned int protocol)
#if defined(DEBUG) || defined(CLI)
case UART_MODE_DEBUG:
auxSerialSetup(DEBUG_BAUDRATE, false);
AUX_SERIAL_POWER_OFF();
break;
#endif
case UART_MODE_TELEMETRY:
if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) {
auxSerialSetup(FRSKY_D_BAUDRATE, true);
AUX_SERIAL_POWER_OFF();
}
break;
case UART_MODE_LUA:
auxSerialSetup(DEBUG_BAUDRATE, false);
AUX_SERIAL_POWER_ON();
}
}
@ -192,7 +196,7 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void)
}
}
#endif
#if defined(LUA) && !defined(CLI)
#if defined(LUA) & !defined(CLI)
if (luaRxFifo && auxSerialMode == UART_MODE_LUA) {
// Receive
uint32_t status = AUX_SERIAL_USART->SR;
@ -204,6 +208,19 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void)
status = AUX_SERIAL_USART->SR;
}
}
#if defined(AUX2_SERIAL)
if (luaRxFifo && aux2SerialMode == UART_MODE_LUA) {
// 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)) {
luaRxFifo->push(data);
}
status = AUX2_SERIAL_USART->SR;
}
}
#endif
#endif
}
#endif
@ -288,26 +305,31 @@ void aux2SerialInit(unsigned int mode, unsigned int protocol)
#if defined(CROSSFIRE)
if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) {
aux2SerialSetup(CROSSFIRE_TELEM_MIRROR_BAUDRATE, false);
AUX2_SERIAL_POWER_OFF();
break;
}
#endif
aux2SerialSetup(FRSKY_TELEM_MIRROR_BAUDRATE, false);
AUX2_SERIAL_POWER_OFF();
break;
#if defined(DEBUG) || defined(CLI)
case UART_MODE_DEBUG:
aux2SerialSetup(DEBUG_BAUDRATE, false);
AUX2_SERIAL_POWER_OFF();
break;
#endif
case UART_MODE_TELEMETRY:
if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) {
aux2SerialSetup(FRSKY_D_BAUDRATE, true);
AUX2_SERIAL_POWER_OFF();
}
break;
case UART_MODE_LUA:
aux2SerialSetup(DEBUG_BAUDRATE, false);
AUX2_SERIAL_POWER_ON();
}
}

View file

@ -52,6 +52,18 @@ void auxSerialPowerOff()
GPIO_ResetBits(AUX_SERIAL_PWR_GPIO, AUX_SERIAL_PWR_GPIO_PIN);
}
#endif
#if defined(AUX2_SERIAL_PWR_GPIO)
void aux2SerialPowerOn()
{
GPIO_SetBits(AUX2_SERIAL_PWR_GPIO, AUX2_SERIAL_PWR_GPIO_PIN);
}
void aux2SerialPowerOff()
{
GPIO_ResetBits(AUX2_SERIAL_PWR_GPIO, AUX2_SERIAL_PWR_GPIO_PIN);
}
#endif
#if HAS_SPORT_UPDATE_CONNECTOR()
void sportUpdateInit()

View file

@ -628,10 +628,10 @@ void auxSerialPowerOn();
void auxSerialPowerOff();
#if defined(AUX_SERIAL_PWR_GPIO)
#define AUX_SERIAL_POWER_ON() auxSerialPowerOn()
#define AUX_SERIAL__POWER_OFF() auxSerialPowerOff()
#define AUX_SERIAL_POWER_OFF() auxSerialPowerOff()
#else
#define AUX_SERIAL_POWER_ON()
#define AUX_SERIAL__POWER_OFF()
#define AUX_SERIAL_POWER_OFF()
#endif
#endif
@ -647,10 +647,10 @@ void aux2SerialPowerOn();
void aux2SerialPowerOff();
#if defined(AUX2_SERIAL_PWR_GPIO)
#define AUX2_SERIAL_POWER_ON() aux2SerialPowerOn()
#define AUX2_SERIAL__POWER_OFF() aux2SerialPowerOff()
#define AUX2_SERIAL_POWER_OFF() aux2SerialPowerOff()
#else
#define AUX2_SERIAL_POWER_ON()
#define AUX2_SERIAL__POWER_OFF()
#define AUX2_SERIAL_POWER_OFF()
#endif
#endif

View file

@ -393,7 +393,7 @@
// Serial Port (DEBUG)
#if defined(PCBX12S) || defined(RADIO_TX16S)
#define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
#define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
#define AUX_SERIAL_RCC_APB1Periph RCC_APB1Periph_USART3
#define AUX_SERIAL_RCC_APB2Periph 0
#define AUX_SERIAL_GPIO GPIOB
@ -407,6 +407,8 @@
#define AUX_SERIAL_USART_IRQn USART3_IRQn
#define AUX_SERIAL_DMA_Stream_RX DMA1_Stream1
#define AUX_SERIAL_DMA_Channel_RX DMA_Channel_4
#define AUX_SERIAL_PWR_GPIO GPIOA
#define AUX_SERIAL_PWR_GPIO_PIN GPIO_Pin_15 // PB.00
#if defined(RADIO_TX16S)
#define TRAINER_BATTERY_COMPARTMENT // allows serial port TTL trainer
#endif