fix(usbh_serial): fix serial iobuffer size, remove length limit of write
Signed-off-by: sakumisu <1203593632@qq.com>
This commit is contained in:
@@ -21,7 +21,7 @@ static struct usbh_serial g_serial_class[CONFIG_USBHOST_MAX_SERIAL_CLASS];
|
||||
static uint32_t g_devinuse = 0;
|
||||
static uint32_t g_cdcacm_devinuse = 0;
|
||||
|
||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_serial_iobuffer[CONFIG_USBHOST_MAX_SERIAL_CLASS][USB_ALIGN_UP((USBH_SERIAL_INT_NOCACHE_OFFSET + USBH_SERIAL_INT_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)];
|
||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_serial_iobuffer[CONFIG_USBHOST_MAX_SERIAL_CLASS][USB_ALIGN_UP((USBH_SERIAL_RX2_NOCACHE_OFFSET + USBH_SERIAL_RX2_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)];
|
||||
|
||||
/* refer to cherryrb */
|
||||
static int usbh_serial_ringbuffer_init(usbh_serial_ringbuf_t *rb, void *pool, uint32_t size)
|
||||
@@ -540,7 +540,7 @@ int usbh_serial_write(struct usbh_serial *serial, const void *buffer, uint32_t b
|
||||
|
||||
urb = &serial->bulkout_urb;
|
||||
|
||||
usbh_bulk_urb_fill(urb, serial->hport, serial->bulkout, (uint8_t *)buffer, serial->line_coding.dwDTERate ? MIN(buflen, serial->bulkout->wMaxPacketSize) : buflen, 0xffffffff, NULL, NULL);
|
||||
usbh_bulk_urb_fill(urb, serial->hport, serial->bulkout, (uint8_t *)buffer, buflen, 0xffffffff, NULL, NULL);
|
||||
ret = usbh_submit_urb(urb);
|
||||
if (ret == 0) {
|
||||
ret = urb->actual_length;
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
|
||||
#include "usb_cdc.h"
|
||||
|
||||
#define USBH_SERIAL_CTRL_NOCACHE_SIZE 32
|
||||
#define USBH_SERIAL_CTRL_NOCACHE_OFFSET 0
|
||||
#define USBH_SERIAL_INT_NOCACHE_SIZE 32
|
||||
#define USBH_SERIAL_CTRL_NOCACHE_SIZE 32
|
||||
#define USBH_SERIAL_INT_NOCACHE_OFFSET USB_ALIGN_UP(USBH_SERIAL_CTRL_NOCACHE_SIZE, CONFIG_USB_ALIGN_SIZE)
|
||||
#define USBH_SERIAL_INT_NOCACHE_SIZE 32
|
||||
#define USBH_SERIAL_RX_NOCACHE_OFFSET USB_ALIGN_UP((USBH_SERIAL_INT_NOCACHE_OFFSET + USBH_SERIAL_INT_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)
|
||||
#define USBH_SERIAL_RX_NOCACHE_SIZE 512
|
||||
#define USBH_SERIAL_RX2_NOCACHE_OFFSET USB_ALIGN_UP((USBH_SERIAL_RX_NOCACHE_OFFSET + USBH_SERIAL_RX_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)
|
||||
|
||||
@@ -21,7 +21,7 @@ volatile uint32_t serial_tx_bytes = 0;
|
||||
volatile uint32_t serial_rx_bytes = 0;
|
||||
volatile bool serial_is_opened = false;
|
||||
|
||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t serial_tx_buffer[64];
|
||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t serial_tx_buffer[SERIAL_TEST_LEN];
|
||||
uint8_t serial_rx_data[SERIAL_TEST_LEN];
|
||||
|
||||
#ifdef CONFIG_TEST_USBH_CDC_SPEED
|
||||
|
||||
@@ -206,10 +206,10 @@ usbh_serial_write
|
||||
|
||||
- **serial** serial 结构体句柄
|
||||
- **buffer** 数据缓冲区指针
|
||||
- **buflen** 要写入的数据长度,如果是 USB2TTL 设备,一次最高 wMaxPacketSize
|
||||
- **buflen** 要写入的数据长度
|
||||
- **return** 实际写入的数据长度或者错误码
|
||||
|
||||
.. note:: 有无设置波特率都可以使用该 API,当未设置波特率时,长度无限制,如果设置了波特率则为 wMaxPacketSize。
|
||||
.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。
|
||||
|
||||
usbh_serial_read
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
@@ -225,6 +225,8 @@ usbh_serial_read
|
||||
- **buflen** 要读取的最大数据长度
|
||||
- **return** 实际读取的数据长度或者错误码
|
||||
|
||||
.. note:: 由于内部使用了 ringbuffer,对于用户的 buffer 属性没有限制。
|
||||
|
||||
usbh_serial_cdc_write_async
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
|
||||
@@ -241,6 +243,8 @@ usbh_serial_cdc_write_async
|
||||
- **arg** 回调函数参数
|
||||
- **return** 0 表示正常其他表示错误
|
||||
|
||||
.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。
|
||||
|
||||
usbh_serial_cdc_read_async
|
||||
""""""""""""""""""""""""""""""""""""
|
||||
|
||||
@@ -257,6 +261,7 @@ usbh_serial_cdc_read_async
|
||||
- **arg** 回调函数参数
|
||||
- **return** 0 表示正常其他表示错误
|
||||
|
||||
.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。
|
||||
|
||||
HID
|
||||
-----------------
|
||||
|
||||
Reference in New Issue
Block a user