From ecc9b70710cf72225ab5aaf22424426529bb3857 Mon Sep 17 00:00:00 2001 From: Epagris Date: Thu, 11 Apr 2024 13:32:48 +0200 Subject: [PATCH] - CDC line buffer size fixed --- CMakeLists.txt | 4 ++-- class/cdc.c | 2 +- class/cdc.h | 2 +- usb.c | 2 +- usb_driver.c | 39 ++++++++++++++++++++------------------- usb_driver.h | 4 ++-- 6 files changed, 27 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f201ff..7e14ec5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,6 @@ target_sources( usb_driver.h usb.h - utils/gen_queue.c - utils/gen_queue.h + # utils/gen_queue.c + # utils/gen_queue.h ) diff --git a/class/cdc.c b/class/cdc.c index 1893680..44bae3e 100644 --- a/class/cdc.c +++ b/class/cdc.c @@ -72,7 +72,7 @@ int usb_cdc_process_and_return(USB_CallbackEvent *cbevt) { //MSG("%c\n", cbevt->data[0]); ret = 0; - usbcore_write(cdcs.ep_assignments.data_ep, cbevt->data, cbevt->size); // echo + //usbcore_write(cdcs.ep_assignments.data_ep, cbevt->data, cbevt->size); // echo } break; } diff --git a/class/cdc.h b/class/cdc.h index b919ed0..3b6aadd 100644 --- a/class/cdc.h +++ b/class/cdc.h @@ -62,7 +62,7 @@ typedef struct { // ---------------- -#define USB_CDC_PCKT_BUFSIZE (128) +#define USB_CDC_PCKT_BUFSIZE (64) // ---------------- diff --git a/usb.c b/usb.c index b844ed1..c0e090c 100644 --- a/usb.c +++ b/usb.c @@ -5,7 +5,7 @@ #include "usb_common.h" #include "usb_core_types.h" -#include "utils/gen_queue.h" +// #include "utils/gen_queue.h" #include "desc/usb_desc.h" diff --git a/usb_driver.c b/usb_driver.c index cd910be..772536d 100644 --- a/usb_driver.c +++ b/usb_driver.c @@ -28,7 +28,7 @@ static uint8_t rx_buf[USB_MAX_FS_PCKT_SIZE_NON_ISOCHRONOUS] DWORD_ALIGN; // rece #define USB_EVENT_QUEUE_LENGTH (16) -static uint8_t event_queue_mem[Q_REQ_MEM_SIZE_T(USB_EVENT_QUEUE_LENGTH, USBDRV_EventCompound)] DWORD_ALIGN; // backing memory for the event queue +// static uint8_t event_queue_mem[Q_REQ_MEM_SIZE_T(USB_EVENT_QUEUE_LENGTH, USBDRV_EventCompound)] DWORD_ALIGN; // backing memory for the event queue static const char *FIFO_STATUS_STR[6] = { "GLOBAL OUT NAK", @@ -102,7 +102,7 @@ void usbdrv_init_global_state() { gs.rx_buf_level = 0; // initialize event queue - gs.event_queue = Q_CREATE_T(USB_EVENT_QUEUE_LENGTH, USBDRV_EventCompound, event_queue_mem); + // gs.event_queue = Q_CREATE_T(USB_EVENT_QUEUE_LENGTH, USBDRV_EventCompound, event_queue_mem); } // --------------- @@ -265,6 +265,7 @@ void usbdrv_build_fifo() { if (cfg->is_configured) { cfg->fifo_size = CEIL4(MAX(USB_MIN_GROSS_TX_FIFO_SIZE, cfg->max_packet_size)); // correct FIFO size if necessary cfg->fifo_address = next_fifo_addr; // store FIFO address + cfg->zlp_next = false; // clear ZLP next next_fifo_addr += cfg->fifo_size; // advance next address } } @@ -538,24 +539,24 @@ void usbdrv_set_address(uint8_t addr) { // ---------------- // push event onto the event queue -void usbdrv_push_event(uint32_t evt_code, USBDRV_EventData *evt_data) { - USBDRV_EventCompound evt_cpd; - if (evt_data != NULL) { - evt_cpd.data = *evt_data; - } - evt_cpd.code = evt_code; - q_push(gs.event_queue, &evt_cpd); -} +// void usbdrv_push_event(uint32_t evt_code, USBDRV_EventData *evt_data) { +// USBDRV_EventCompound evt_cpd; +// if (evt_data != NULL) { +// evt_cpd.data = *evt_data; +// } +// evt_cpd.code = evt_code; +// q_push(gs.event_queue, &evt_cpd); +// } -// call this to process incoming events -void usbdrv_periodic_processing() { - if ((gs.event_queue != NULL) && (q_avail(gs.event_queue))) { - USBDRV_EventCompound evt_cpd; - q_top(gs.event_queue, &evt_cpd); - q_pop(gs.event_queue); - usbdrv_process_event(evt_cpd.code, NULL); - } -} +// // call this to process incoming events +// void usbdrv_periodic_processing() { +// if ((gs.event_queue != NULL) && (q_avail(gs.event_queue))) { +// USBDRV_EventCompound evt_cpd; +// q_top(gs.event_queue, &evt_cpd); +// q_pop(gs.event_queue); +// usbdrv_process_event(evt_cpd.code, NULL); +// } +// } // ---------------- diff --git a/usb_driver.h b/usb_driver.h index c9f2a30..93c9a41 100644 --- a/usb_driver.h +++ b/usb_driver.h @@ -1,7 +1,7 @@ #ifndef CORE_USB_USB_DRIVER #define CORE_USB_USB_DRIVER -#include "utils/gen_queue.h" +//#include "utils/gen_queue.h" #include "usb_common_types.h" @@ -58,7 +58,7 @@ typedef struct { uint16_t state; // FSM state uint8_t *rx_buf; // pointer to the receive buffer (this way declaration can be separated) uint16_t rx_buf_level; // fill level of the rx buffer - Queue *event_queue; // event queue + // Queue *event_queue; // event queue uint8_t address; // device address } USBDRV_GlobalState;