Skip to content

Commit 996da6b

Browse files
committed
pbdrv/uart: Use uint32_t for read/write length.
btstack may send us buffers longer than 256 bytes to pass to the uart. It should be relatively low-cost to increase the length of the read and write buffers to accomodate this.
1 parent 2488153 commit 996da6b

File tree

7 files changed

+35
-35
lines changed

7 files changed

+35
-35
lines changed

lib/pbio/drv/uart/uart_ev3.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ struct _pbdrv_uart_dev_t {
5858
/** The buffer passed to the read function. */
5959
uint8_t *read_buf;
6060
/** The length of read_buf in bytes. */
61-
uint8_t read_length;
61+
uint32_t read_length;
6262
/** The current position in read_buf. */
63-
uint8_t read_pos;
63+
uint32_t read_pos;
6464
/** The buffer passed to the write function. */
6565
uint8_t *write_buf;
6666
/** The length of write_buf in bytes. */
67-
uint8_t write_length;
67+
uint32_t write_length;
6868
/** The current position in write_buf. */
69-
volatile uint8_t write_pos;
69+
volatile uint32_t write_pos;
7070
};
7171

7272
static pbdrv_uart_dev_t uart_devs[PBDRV_CONFIG_UART_EV3_NUM_UART];
@@ -89,7 +89,7 @@ int32_t pbdrv_uart_get_char(pbdrv_uart_dev_t *uart) {
8989
return ringbuf_get(&uart->rx_buf);
9090
}
9191

92-
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
92+
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
9393

9494
PBIO_OS_ASYNC_BEGIN(state);
9595

@@ -131,7 +131,7 @@ pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uin
131131
PBIO_OS_ASYNC_END(PBIO_SUCCESS);
132132
}
133133

134-
static pbio_error_t pbdrv_uart_write_pru(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
134+
static pbio_error_t pbdrv_uart_write_pru(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
135135

136136
const pbdrv_uart_ev3_platform_data_t *pdata = uart->pdata;
137137

@@ -178,7 +178,7 @@ static pbio_error_t pbdrv_uart_write_pru(pbio_os_state_t *state, pbdrv_uart_dev_
178178
PBIO_OS_ASYNC_END(PBIO_SUCCESS);
179179
}
180180

181-
pbio_error_t pbdrv_uart_write_hw(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
181+
pbio_error_t pbdrv_uart_write_hw(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
182182

183183
const pbdrv_uart_ev3_platform_data_t *pdata = uart->pdata;
184184

@@ -240,7 +240,7 @@ pbio_error_t pbdrv_uart_write_hw(pbio_os_state_t *state, pbdrv_uart_dev_t *uart,
240240
PBIO_OS_ASYNC_END(PBIO_SUCCESS);
241241
}
242242

243-
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
243+
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
244244
const pbdrv_uart_ev3_platform_data_t *pdata = uart->pdata;
245245

246246
if (pdata->uart_kind == EV3_UART_HW) {

lib/pbio/drv/uart/uart_stm32f0.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ struct _pbdrv_uart_dev_t {
3333
volatile uint8_t rx_ring_buf_head;
3434
uint8_t rx_ring_buf_tail;
3535
uint8_t *rx_buf;
36-
uint8_t rx_buf_size;
37-
uint8_t rx_buf_index;
36+
uint32_t rx_buf_size;
37+
uint32_t rx_buf_index;
3838
uint8_t *tx_buf;
39-
uint8_t tx_buf_size;
40-
uint8_t tx_buf_index;
39+
uint32_t tx_buf_size;
40+
uint32_t tx_buf_index;
4141
pbio_os_timer_t rx_timer;
4242
pbio_os_timer_t tx_timer;
4343
uint8_t irq;
@@ -59,7 +59,7 @@ pbio_error_t pbdrv_uart_get_instance(uint8_t id, pbdrv_uart_dev_t **uart_dev) {
5959
return PBIO_SUCCESS;
6060
}
6161

62-
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
62+
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
6363

6464
PBIO_OS_ASYNC_BEGIN(state);
6565

@@ -102,7 +102,7 @@ pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uin
102102
PBIO_OS_ASYNC_END(PBIO_SUCCESS);
103103
}
104104

105-
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
105+
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
106106

107107
PBIO_OS_ASYNC_BEGIN(state);
108108

lib/pbio/drv/uart/uart_stm32f4_ll_irq.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ struct _pbdrv_uart_dev_t {
3939
/** The buffer of the ongoing async read function. */
4040
uint8_t *read_buf;
4141
/** The length of read_buf in bytes. */
42-
uint8_t read_length;
42+
uint32_t read_length;
4343
/** The current position in read_buf. */
44-
uint8_t read_pos;
44+
uint32_t read_pos;
4545
/** The buffer of the ongoing write function. */
4646
uint8_t *write_buf;
4747
/** The length of write_buf in bytes. */
48-
uint8_t write_length;
48+
uint32_t write_length;
4949
/** The current position in write_buf. */
50-
volatile uint8_t write_pos;
50+
volatile uint32_t write_pos;
5151
};
5252

5353
static pbdrv_uart_dev_t uart_devs[PBDRV_CONFIG_UART_STM32F4_LL_IRQ_NUM_UART];
@@ -66,7 +66,7 @@ pbio_error_t pbdrv_uart_get_instance(uint8_t id, pbdrv_uart_dev_t **uart_dev) {
6666
return PBIO_SUCCESS;
6767
}
6868

69-
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
69+
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
7070

7171
PBIO_OS_ASYNC_BEGIN(state);
7272

@@ -108,7 +108,7 @@ pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uin
108108
PBIO_OS_ASYNC_END(PBIO_SUCCESS);
109109
}
110110

111-
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
111+
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
112112

113113
PBIO_OS_ASYNC_BEGIN(state);
114114

lib/pbio/drv/uart/uart_stm32l4_ll_dma.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ struct _pbdrv_uart_dev_t {
3434
pbio_os_timer_t rx_timer;
3535
pbio_os_timer_t tx_timer;
3636
volatile uint8_t *rx_data;
37-
uint8_t rx_tail;
37+
uint32_t rx_tail;
3838
uint8_t *read_buf;
39-
uint8_t read_length;
39+
uint32_t read_length;
4040
};
4141

4242
static pbdrv_uart_dev_t uart_devs[PBDRV_CONFIG_UART_STM32L4_LL_DMA_NUM_UART];
@@ -55,7 +55,7 @@ pbio_error_t pbdrv_uart_get_instance(uint8_t id, pbdrv_uart_dev_t **uart_dev) {
5555
return PBIO_SUCCESS;
5656
}
5757

58-
static void volatile_copy(volatile uint8_t *src, uint8_t *dst, uint8_t size) {
58+
static void volatile_copy(volatile uint8_t *src, uint8_t *dst, uint32_t size) {
5959
for (int i = 0; i < size; i++) {
6060
dst[i] = src[i];
6161
}
@@ -187,7 +187,7 @@ static uint32_t pbdrv_uart_get_num_available(pbdrv_uart_dev_t *uart) {
187187
return (rx_head - uart->rx_tail) & (RX_DATA_SIZE - 1);
188188
}
189189

190-
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
190+
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
191191

192192
PBIO_OS_ASYNC_BEGIN(state);
193193

@@ -227,7 +227,7 @@ pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uin
227227
PBIO_OS_ASYNC_END(PBIO_SUCCESS);
228228
}
229229

230-
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout) {
230+
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout) {
231231

232232
const pbdrv_uart_stm32l4_ll_dma_platform_data_t *pdata = uart->pdata;
233233

lib/pbio/include/pbdrv/uart.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ int32_t pbdrv_uart_get_char(pbdrv_uart_dev_t *uart_dev);
4545
* @param [in] timeout The timeout in milliseconds or 0 for no timeout.
4646
* @return The error code.
4747
*/
48-
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout);
48+
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint32_t length, uint32_t timeout);
4949

5050
/**
5151
* Asynchronously write to the UART.
@@ -58,7 +58,7 @@ pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev,
5858
*
5959
* @return The error code.
6060
*/
61-
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint8_t length, uint32_t timeout);
61+
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart, uint8_t *msg, uint32_t length, uint32_t timeout);
6262

6363
#else // PBDRV_CONFIG_UART
6464

@@ -70,13 +70,13 @@ static inline void pbdrv_uart_set_baud_rate(pbdrv_uart_dev_t *uart_dev, uint32_t
7070
}
7171
static inline void pbdrv_uart_stop(pbdrv_uart_dev_t *uart_dev) {
7272
}
73-
static inline pbio_error_t pbdrv_uart_read_begin(pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
73+
static inline pbio_error_t pbdrv_uart_read_begin(pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint32_t length, uint32_t timeout) {
7474
return PBIO_ERROR_NOT_SUPPORTED;
7575
}
7676
static inline pbio_error_t pbdrv_uart_read_end(pbdrv_uart_dev_t *uart_dev) {
7777
return PBIO_ERROR_NOT_SUPPORTED;
7878
}
79-
static inline pbio_error_t pbdrv_uart_write_begin(pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
79+
static inline pbio_error_t pbdrv_uart_write_begin(pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint32_t length, uint32_t timeout) {
8080
return PBIO_ERROR_NOT_SUPPORTED;
8181
}
8282
static inline pbio_error_t pbdrv_uart_write_end(pbdrv_uart_dev_t *uart_dev) {
@@ -97,11 +97,11 @@ static inline int32_t pbdrv_uart_get_char(pbdrv_uart_dev_t *uart_dev) {
9797
return -1;
9898
}
9999

100-
static inline pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
100+
static inline pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint32_t length, uint32_t timeout) {
101101
return PBIO_ERROR_NOT_SUPPORTED;
102102
}
103103

104-
static inline pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
104+
static inline pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint32_t length, uint32_t timeout) {
105105
return PBIO_ERROR_NOT_SUPPORTED;
106106
}
107107

lib/pbio/src/port_lump.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,9 @@ struct _pbio_port_lump_dev_t {
169169
/** New baud rate that will be set with ev3_uart_change_bitrate. */
170170
uint32_t new_baud_rate;
171171
/** Size of the current message being transmitted. */
172-
uint8_t tx_msg_size;
172+
uint32_t tx_msg_size;
173173
/** Size of the current message being received. */
174-
uint8_t rx_msg_size;
174+
uint32_t rx_msg_size;
175175
/** Total number of errors that have occurred. */
176176
uint32_t err_count;
177177
/** Flag that indicates that good DATA lump_dev->msg has been received since last watchdog timeout. */

lib/pbio/test/src/test_lump.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,7 +1110,7 @@ void pbdrv_uart_init(void) {
11101110
void pbdrv_uart_stop(pbdrv_uart_dev_t *uart_dev) {
11111111
}
11121112

1113-
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
1113+
pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint32_t length, uint32_t timeout) {
11141114

11151115
PBIO_OS_ASYNC_BEGIN(state);
11161116

@@ -1134,7 +1134,7 @@ pbio_error_t pbdrv_uart_read(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev,
11341134
PBIO_OS_ASYNC_END(uart_dev->rx_msg_result);
11351135
}
11361136

1137-
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint8_t length, uint32_t timeout) {
1137+
pbio_error_t pbdrv_uart_write(pbio_os_state_t *state, pbdrv_uart_dev_t *uart_dev, uint8_t *msg, uint32_t length, uint32_t timeout) {
11381138

11391139
PBIO_OS_ASYNC_BEGIN(state);
11401140

0 commit comments

Comments
 (0)