Skip to content

Commit dabbbaa

Browse files
committed
Revert "fix: DMA callback"
This reverts commit 706bc70.
1 parent d280f4e commit dabbbaa

1 file changed

Lines changed: 12 additions & 41 deletions

File tree

src/fw/drivers/sf32lb/uart.c

Lines changed: 12 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
#include "system/passert.h"
2525
#include "uart_definitions.h"
2626

27-
static UARTDevice *s_uart_dev_ptr[6] = {0};
27+
#define container_of(ptr, type, member) \
28+
((type *)((char *)(ptr) - offsetof(type, member)))
2829

2930
typedef enum {
3031
UART_FullDuplex = 0,
@@ -139,34 +140,6 @@ static UARTPinFunction_t get_uart_pin_fun(UART_HandleTypeDef *uart) {
139140
return pin_fun;
140141
}
141142

142-
static uint32_t get_uart_index(UART_HandleTypeDef *uart) {
143-
if (uart->Instance == USART1) {
144-
return 0;
145-
} else if (uart->Instance == USART2) {
146-
return 0;
147-
} else if (uart->Instance == USART3) {
148-
return 0;
149-
}
150-
#ifdef USART4
151-
else if (uart->Instance == USART4) {
152-
return 0;
153-
}
154-
#endif
155-
#ifdef USART5
156-
else if (uart->Instance == USART5) {
157-
return 0;
158-
}
159-
#endif
160-
#ifdef USART6
161-
else if (uart->Instance == USART6) {
162-
return 0;
163-
}
164-
#endif
165-
else {
166-
WTF;
167-
}
168-
}
169-
170143
static void prv_init(UARTDevice *dev, UARTInitMode_t mode) {
171144
if (mode == UART_FullDuplex) {
172145
dev->periph->Init.Mode = UART_MODE_TX_RX;
@@ -178,8 +151,6 @@ static void prv_init(UARTDevice *dev, UARTInitMode_t mode) {
178151
WTF;
179152
}
180153

181-
s_uart_dev_ptr[get_uart_index(dev->periph)] = dev;
182-
183154
UARTPinFunction_t pin_fun = get_uart_pin_fun(dev->periph);
184155
switch (mode) {
185156
case UART_FullDuplex:
@@ -214,10 +185,7 @@ void uart_init_tx_only(UARTDevice *dev) { prv_init(dev, UART_TxOnly); }
214185

215186
void uart_init_rx_only(UARTDevice *dev) { prv_init(dev, UART_RxOnly); }
216187

217-
void uart_deinit(UARTDevice *dev) {
218-
HAL_UART_DeInit(dev->periph);
219-
s_uart_dev_ptr[get_uart_index(dev->periph)] = NULL;
220-
}
188+
void uart_deinit(UARTDevice *dev) { HAL_UART_DeInit(dev->periph); }
221189

222190
void uart_set_baud_rate(UARTDevice *dev, uint32_t baud_rate) {
223191
PBL_ASSERTN(dev->state->initialized);
@@ -331,7 +299,8 @@ void uart_irq_handler(UARTDevice *dev) {
331299
.framing_error = uart_has_rx_framing_error(dev),
332300
};
333301
// DMA
334-
if (dev->state->rx_dma_buffer && (__HAL_UART_GET_FLAG(dev->periph, UART_FLAG_IDLE) != RESET) &&
302+
if (dev->state->rx_dma_buffer &&
303+
(__HAL_UART_GET_FLAG(dev->periph, UART_FLAG_IDLE) != RESET) &&
335304
(__HAL_UART_GET_IT_SOURCE(dev->periph, UART_IT_IDLE) != RESET)) {
336305
// process bytes from the DMA buffer
337306
const uint32_t dma_length = dev->state->rx_dma_length;
@@ -408,10 +377,11 @@ void uart_clear_all_interrupt_flags(UARTDevice *dev) {
408377
}
409378

410379
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart) {
411-
// TODO: need to find a way to convert huart to dev as dev is not container of huart
380+
//TODO: need to find a way to convert huart to dev as dev is not container of huart
381+
#if 0
412382
size_t recv_len;
413383
size_t recv_total_index;
414-
UARTDevice *dev = s_uart_dev_ptr[get_uart_index(huart)];
384+
UARTDevice *dev = container_of(huart, UARTDevice, periph);
415385

416386
recv_total_index = dev->state->rx_dma_length - __HAL_DMA_GET_COUNTER(dev->rx_dma);
417387
if (recv_total_index < dev->state->rx_dma_index)
@@ -428,11 +398,12 @@ void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart) {
428398
}
429399
}
430400
}
401+
#endif
431402
}
432403

433-
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
434-
// TODO:
435-
// HAL_UART_RxHalfCpltCallback(huart);
404+
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
405+
//TODO:
406+
//HAL_UART_RxHalfCpltCallback(huart);
436407
}
437408

438409
// DMA

0 commit comments

Comments
 (0)