aboutsummaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorSimon Wilks <sjwilks@gmail.com>2012-12-06 17:24:27 +0100
committerSimon Wilks <sjwilks@gmail.com>2012-12-06 17:24:27 +0100
commit097aeddcadc6c0b5decf8374c05586bfff5e403d (patch)
treed92ab85b977258d94056a78673dfb9ceebd2f580 /nuttx
parent451ecc1bf4c310652ed8450ce0341bb148c66567 (diff)
downloadpx4-firmware-097aeddcadc6c0b5decf8374c05586bfff5e403d.tar.gz
px4-firmware-097aeddcadc6c0b5decf8374c05586bfff5e403d.tar.bz2
px4-firmware-097aeddcadc6c0b5decf8374c05586bfff5e403d.zip
Push single wire operations into stm32_serial.c and added a test to verify HoTT telemetry setup.
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/arch/arm/src/stm32/stm32_serial.c21
-rw-r--r--nuttx/drivers/serial/serial.c1
2 files changed, 22 insertions, 0 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_serial.c b/nuttx/arch/arm/src/stm32/stm32_serial.c
index 0868c3cd3..80c4ce357 100644
--- a/nuttx/arch/arm/src/stm32/stm32_serial.c
+++ b/nuttx/arch/arm/src/stm32/stm32_serial.c
@@ -1307,6 +1307,27 @@ static int up_ioctl(struct file *filep, int cmd, unsigned long arg)
}
break;
+ /* Set RS485 mode */
+ case TIOCSRS485:
+ {
+ /* Change the TX port to be open-drain/push-pull */
+ if (arg == SER_RS485_ENABLED) {
+ stm32_configgpio(priv->tx_gpio | GPIO_OPENDRAIN);
+ } else {
+ stm32_configgpio(priv->tx_gpio | GPIO_PUSHPULL);
+ }
+
+ /* Enable/disable half-duplex mode */
+ uint32_t cr = up_serialin(priv, STM32_USART_CR3_OFFSET);
+ if (arg == SER_RS485_ENABLED) {
+ cr |= (USART_CR3_HDSEL);
+ } else {
+ cr &= ~(USART_CR3_HDSEL);
+ }
+ up_serialout(priv, STM32_USART_CR3_OFFSET, cr);
+ }
+ break;
+
#ifdef CONFIG_SERIAL_TERMIOS
case TCGETS:
{
diff --git a/nuttx/drivers/serial/serial.c b/nuttx/drivers/serial/serial.c
index c650da5db..c31d12eee 100644
--- a/nuttx/drivers/serial/serial.c
+++ b/nuttx/drivers/serial/serial.c
@@ -687,6 +687,7 @@ static int uart_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
*(int *)arg = count;
}
+ break;
#ifdef CONFIG_SERIAL_TERMIOS
case TCGETS: