From 7c62ec975534326b2b8cec4be76fc2d671eb27fd Mon Sep 17 00:00:00 2001 From: Petr Ledvina Date: Thu, 29 Jan 2015 15:05:28 +0100 Subject: [PATCH] Move internal serial interface into separate header file Declaring function from other file is quite dangerous - there is no warning if interfaces get out of sync --- src/main/drivers/serial_uart.c | 5 +---- src/main/drivers/serial_uart.h | 2 -- src/main/drivers/serial_uart_impl.h | 29 +++++++++++++++++++++++++++++ src/main/drivers/serial_uart_stm32f10x.c | 3 +-- src/main/drivers/serial_uart_stm32f30x.c | 3 +-- 5 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 src/main/drivers/serial_uart_impl.h diff --git a/src/main/drivers/serial_uart.c b/src/main/drivers/serial_uart.c index 0057b7ba9..90b7648f3 100644 --- a/src/main/drivers/serial_uart.c +++ b/src/main/drivers/serial_uart.c @@ -34,10 +34,7 @@ #include "serial.h" #include "serial_uart.h" - -uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode); -uartPort_t *serialUSART2(uint32_t baudRate, portMode_t mode); -uartPort_t *serialUSART3(uint32_t baudRate, portMode_t mode); +#include "serial_uart_impl.h" static void usartConfigurePinInversion(uartPort_t *uartPort) { #if !defined(INVERTER) && !defined(STM32F303xC) diff --git a/src/main/drivers/serial_uart.h b/src/main/drivers/serial_uart.h index 817929f28..6a7357d26 100644 --- a/src/main/drivers/serial_uart.h +++ b/src/main/drivers/serial_uart.h @@ -44,8 +44,6 @@ typedef struct { USART_TypeDef *USARTx; } uartPort_t; -extern const struct serialPortVTable uartVTable[]; - serialPort_t *uartOpen(USART_TypeDef *USARTx, serialReceiveCallbackPtr callback, uint32_t baudRate, portMode_t mode, serialInversion_e inversion); // serialPort API diff --git a/src/main/drivers/serial_uart_impl.h b/src/main/drivers/serial_uart_impl.h new file mode 100644 index 000000000..713405bc0 --- /dev/null +++ b/src/main/drivers/serial_uart_impl.h @@ -0,0 +1,29 @@ +/* + * This file is part of Cleanflight. + * + * Cleanflight is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Cleanflight is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Cleanflight. If not, see . + */ + +#pragma once + +// device specific uart implementation is defined here + +extern const struct serialPortVTable uartVTable[]; + +void uartStartTxDMA(uartPort_t *s); + +uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode); +uartPort_t *serialUSART2(uint32_t baudRate, portMode_t mode); +uartPort_t *serialUSART3(uint32_t baudRate, portMode_t mode); + diff --git a/src/main/drivers/serial_uart_stm32f10x.c b/src/main/drivers/serial_uart_stm32f10x.c index 5369206dc..02a99b3f6 100644 --- a/src/main/drivers/serial_uart_stm32f10x.c +++ b/src/main/drivers/serial_uart_stm32f10x.c @@ -34,6 +34,7 @@ #include "serial.h" #include "serial_uart.h" +#include "serial_uart_impl.h" #ifdef USE_USART1 static uartPort_t uartPort1; @@ -54,8 +55,6 @@ static uartPort_t uartPort3; #undef USE_USART1_RX_DMA #endif -void uartStartTxDMA(uartPort_t *s); - void usartIrqCallback(uartPort_t *s) { uint16_t SR = s->USARTx->SR; diff --git a/src/main/drivers/serial_uart_stm32f30x.c b/src/main/drivers/serial_uart_stm32f30x.c index f7bc087e0..4436fc291 100644 --- a/src/main/drivers/serial_uart_stm32f30x.c +++ b/src/main/drivers/serial_uart_stm32f30x.c @@ -35,6 +35,7 @@ #include "serial.h" #include "serial_uart.h" +#include "serial_uart_impl.h" // Using RX DMA disables the use of receive callbacks #define USE_USART1_RX_DMA @@ -74,8 +75,6 @@ static uartPort_t uartPort1; static uartPort_t uartPort2; static uartPort_t uartPort3; -void uartStartTxDMA(uartPort_t *s); - uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode) { uartPort_t *s; -- 2.11.4.GIT