Skip to content

Commit 9b7f569

Browse files
committed
pbio/drv/uart: Convert exit to stop.
We can use this to stop UART operations per port, to support multimodal ports.
1 parent ccb6f2d commit 9b7f569

File tree

4 files changed

+29
-39
lines changed

4 files changed

+29
-39
lines changed

lib/pbio/drv/uart/uart_stm32f0.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,9 @@ void pbdrv_uart_stm32f0_handle_irq(uint8_t id) {
205205
}
206206
}
207207

208-
// Currently not used
209-
void handle_exit(void) {
210-
for (int i = 0; i < PBDRV_CONFIG_UART_STM32F0_NUM_UART; i++) {
211-
pbdrv_uart_t *uart = &pbdrv_uart[i];
212-
NVIC_DisableIRQ(uart->irq);
213-
}
208+
void pbdrv_uart_stop(pbdrv_uart_dev_t *uart_dev) {
209+
pbdrv_uart_t *uart = PBIO_CONTAINER_OF(uart_dev, pbdrv_uart_t, uart_dev);
210+
NVIC_DisableIRQ(uart->irq);
214211
}
215212

216213
void pbdrv_uart_init(void) {

lib/pbio/drv/uart/uart_stm32f4_ll_irq.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,10 @@ void pbdrv_uart_stm32f4_ll_irq_handle_irq(uint8_t id) {
243243
}
244244
}
245245

246-
// Currently not used
247-
void handle_exit(void) {
248-
for (int i = 0; i < PBDRV_CONFIG_UART_STM32F4_LL_IRQ_NUM_UART; i++) {
249-
const pbdrv_uart_stm32f4_ll_irq_platform_data_t *pdata = &pbdrv_uart_stm32f4_ll_irq_platform_data[i];
250-
LL_USART_Disable(pdata->uart);
251-
NVIC_DisableIRQ(pdata->irq);
252-
}
246+
void pbdrv_uart_stop(pbdrv_uart_dev_t *uart_dev) {
247+
pbdrv_uart_t *uart = PBIO_CONTAINER_OF(uart_dev, pbdrv_uart_t, uart_dev);
248+
LL_USART_Disable(uart->pdata->uart);
249+
NVIC_DisableIRQ(uart->pdata->irq);
253250
}
254251

255252
void pbdrv_uart_init(void) {

lib/pbio/drv/uart/uart_stm32l4_ll_dma.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -369,16 +369,15 @@ void pbdrv_uart_stm32l4_ll_dma_handle_uart_irq(uint8_t id) {
369369
}
370370

371371
// Currently not used
372-
void handle_exit(void) {
373-
for (int i = 0; i < PBDRV_CONFIG_UART_STM32L4_LL_DMA_NUM_UART; i++) {
374-
const pbdrv_uart_stm32l4_ll_dma_platform_data_t *pdata = &pbdrv_uart_stm32l4_ll_dma_platform_data[i];
375-
LL_USART_Disable(pdata->uart);
376-
LL_DMA_DisableChannel(pdata->rx_dma, pdata->rx_dma_ch);
377-
LL_DMA_DisableChannel(pdata->tx_dma, pdata->tx_dma_ch);
378-
NVIC_DisableIRQ(pdata->uart_irq);
379-
NVIC_DisableIRQ(pdata->rx_dma_irq);
380-
NVIC_DisableIRQ(pdata->tx_dma_irq);
381-
}
372+
void pbdrv_uart_stop(pbdrv_uart_dev_t *uart_dev) {
373+
pbdrv_uart_t *uart = PBIO_CONTAINER_OF(uart_dev, pbdrv_uart_t, uart_dev);
374+
const pbdrv_uart_stm32l4_ll_dma_platform_data_t *pdata = uart->pdata;
375+
LL_USART_Disable(pdata->uart);
376+
LL_DMA_DisableChannel(pdata->rx_dma, pdata->rx_dma_ch);
377+
LL_DMA_DisableChannel(pdata->tx_dma, pdata->tx_dma_ch);
378+
NVIC_DisableIRQ(pdata->uart_irq);
379+
NVIC_DisableIRQ(pdata->rx_dma_irq);
380+
NVIC_DisableIRQ(pdata->tx_dma_irq);
382381
}
383382

384383
void pbdrv_uart_init(void) {

lib/pbio/include/pbdrv/uart.h

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,15 @@ typedef struct {
2020

2121
} pbdrv_uart_dev_t;
2222

23-
typedef void (*pbdrv_uart_poll_callback_t)(pbdrv_uart_dev_t *uart);
23+
typedef void (*pbdrv_uart_poll_callback_t)(pbdrv_uart_dev_t *uart_dev);
2424

2525
#if PBDRV_CONFIG_UART
2626

2727
pbio_error_t pbdrv_uart_get(uint8_t id, pbdrv_uart_dev_t **uart_dev);
2828

29-
/**
30-
* Sets the baud rate.
31-
* @param [in] uart The UART device
32-
* @param [in] baud The baud rate
33-
* @return ::PBIO_SUCCESS if the baud rate was set or
34-
*/
35-
void pbdrv_uart_set_baud_rate(pbdrv_uart_dev_t *uart, uint32_t baud);
36-
void pbdrv_uart_flush(pbdrv_uart_dev_t *uart);
29+
void pbdrv_uart_set_baud_rate(pbdrv_uart_dev_t *uart_dev, uint32_t baud);
30+
void pbdrv_uart_stop(pbdrv_uart_dev_t *uart_dev);
31+
void pbdrv_uart_flush(pbdrv_uart_dev_t *uart_dev);
3732
void pbdrv_uart_set_poll_callback(pbdrv_uart_dev_t *uart_dev, pbdrv_uart_poll_callback_t callback);
3833

3934
PT_THREAD(pbdrv_uart_read(struct pt *pt, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout, pbio_error_t *err));
@@ -45,23 +40,25 @@ static inline pbio_error_t pbdrv_uart_get(uint8_t id, pbdrv_uart_dev_t **uart_de
4540
*uart_dev = NULL;
4641
return PBIO_ERROR_NOT_SUPPORTED;
4742
}
48-
static inline void pbdrv_uart_set_baud_rate(pbdrv_uart_dev_t *uart, uint32_t baud) {
43+
static inline void pbdrv_uart_set_baud_rate(pbdrv_uart_dev_t *uart_dev, uint32_t baud) {
44+
}
45+
static inline void pbdrv_uart_stop(pbdrv_uart_dev_t *uart_dev) {
4946
}
50-
static inline pbio_error_t pbdrv_uart_read_begin(pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
47+
static inline pbio_error_t pbdrv_uart_read_begin(pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
5148
return PBIO_ERROR_NOT_SUPPORTED;
5249
}
53-
static inline pbio_error_t pbdrv_uart_read_end(pbdrv_uart_dev_t *uart) {
50+
static inline pbio_error_t pbdrv_uart_read_end(pbdrv_uart_dev_t *uart_dev) {
5451
return PBIO_ERROR_NOT_SUPPORTED;
5552
}
56-
static inline pbio_error_t pbdrv_uart_write_begin(pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
53+
static inline pbio_error_t pbdrv_uart_write_begin(pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
5754
return PBIO_ERROR_NOT_SUPPORTED;
5855
}
59-
static inline pbio_error_t pbdrv_uart_write_end(pbdrv_uart_dev_t *uart) {
56+
static inline pbio_error_t pbdrv_uart_write_end(pbdrv_uart_dev_t *uart_dev) {
6057
return PBIO_ERROR_NOT_SUPPORTED;
6158
}
62-
static inline void pbdrv_uart_write_cancel(pbdrv_uart_dev_t *uart) {
59+
static inline void pbdrv_uart_write_cancel(pbdrv_uart_dev_t *uart_dev) {
6360
}
64-
static inline void pbdrv_uart_flush(pbdrv_uart_dev_t *uart) {
61+
static inline void pbdrv_uart_flush(pbdrv_uart_dev_t *uart_dev) {
6562
}
6663
static inline void pbdrv_uart_set_poll_callback(pbdrv_uart_poll_callback_t callback) {
6764
}

0 commit comments

Comments
 (0)