Skip to content

Commit

Permalink
Merge pull request #2739 from hathach/enhance-fsdev
Browse files Browse the repository at this point in the history
Enhance fsdev
  • Loading branch information
hathach authored Jul 31, 2024
2 parents cfbdc44 + 332f75c commit c60934e
Show file tree
Hide file tree
Showing 12 changed files with 718 additions and 912 deletions.
11 changes: 11 additions & 0 deletions hw/bsp/ch32v20x/family.c
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,17 @@ uint32_t board_button_read(void) {
return false;
}

size_t board_get_unique_id(uint8_t id[], size_t max_len) {
(void) max_len;
volatile uint32_t* ch32_uuid = ((volatile uint32_t*) 0x1FFFF7E8UL);
uint32_t* serial_32 = (uint32_t*) (uintptr_t) id;
serial_32[0] = ch32_uuid[0];
serial_32[1] = ch32_uuid[1];
serial_32[2] = ch32_uuid[2];

return 12;
}

int board_uart_read(uint8_t *buf, int len) {
(void) buf;
(void) len;
Expand Down
13 changes: 13 additions & 0 deletions hw/bsp/stm32f3/family.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,19 @@ uint32_t board_button_read(void) {
return BUTTON_STATE_ACTIVE == HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN);
}

size_t board_get_unique_id(uint8_t id[], size_t max_len) {
(void) max_len;
volatile uint32_t * stm32_uuid = (volatile uint32_t *) UID_BASE;
uint32_t* id32 = (uint32_t*) (uintptr_t) id;
uint8_t const len = 12;

id32[0] = stm32_uuid[0];
id32[1] = stm32_uuid[1];
id32[2] = stm32_uuid[2];

return len;
}

int board_uart_read(uint8_t* buf, int len) {
(void) buf;
(void) len;
Expand Down
2 changes: 1 addition & 1 deletion hw/bsp/stm32g4/FreeRTOSConfig/FreeRTOSConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
#define configCPU_CLOCK_HZ SystemCoreClock
#define configTICK_RATE_HZ ( 1000 )
#define configMAX_PRIORITIES ( 5 )
#define configMINIMAL_STACK_SIZE ( 128 )
#define configMINIMAL_STACK_SIZE ( 200 )
#define configTOTAL_HEAP_SIZE ( configSUPPORT_DYNAMIC_ALLOCATION*4*1024 )
#define configMAX_TASK_NAME_LEN 16
#define configUSE_16_BIT_TICKS 0
Expand Down
13 changes: 13 additions & 0 deletions hw/bsp/stm32l0/family.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,19 @@ uint32_t board_button_read(void) {
return BUTTON_STATE_ACTIVE == HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN);
}

size_t board_get_unique_id(uint8_t id[], size_t max_len) {
(void) max_len;
volatile uint32_t * stm32_uuid = (volatile uint32_t *) UID_BASE;
uint32_t* id32 = (uint32_t*) (uintptr_t) id;
uint8_t const len = 12;

id32[0] = stm32_uuid[0];
id32[1] = stm32_uuid[1];
id32[2] = stm32_uuid[2];

return len;
}

int board_uart_read(uint8_t* buf, int len) {
(void) buf;
(void) len;
Expand Down
24 changes: 10 additions & 14 deletions src/device/dcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,15 @@
//--------------------------------------------------------------------+

typedef enum {
DCD_EVENT_INVALID = 0,
DCD_EVENT_BUS_RESET,
DCD_EVENT_UNPLUGGED,
DCD_EVENT_SOF,
DCD_EVENT_SUSPEND, // TODO LPM Sleep L1 support
DCD_EVENT_RESUME,

DCD_EVENT_SETUP_RECEIVED,
DCD_EVENT_XFER_COMPLETE,

// Not an DCD event, just a convenient way to defer ISR function
USBD_EVENT_FUNC_CALL,

DCD_EVENT_INVALID = 0, // 0
DCD_EVENT_BUS_RESET, // 1
DCD_EVENT_UNPLUGGED, // 2
DCD_EVENT_SOF, // 3
DCD_EVENT_SUSPEND, // 4 TODO LPM Sleep L1 support
DCD_EVENT_RESUME, // 5
DCD_EVENT_SETUP_RECEIVED, // 6
DCD_EVENT_XFER_COMPLETE, // 7
USBD_EVENT_FUNC_CALL, // 8 Not an DCD event, just a convenient way to defer ISR function
DCD_EVENT_COUNT
} dcd_eventid_t;

Expand Down Expand Up @@ -184,7 +180,7 @@ void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr);
TU_ATTR_WEAK bool dcd_edpt_iso_alloc(uint8_t rhport, uint8_t ep_addr, uint16_t largest_packet_size);

// Configure and enable an ISO endpoint according to descriptor
TU_ATTR_WEAK bool dcd_edpt_iso_activate(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc);
TU_ATTR_WEAK bool dcd_edpt_iso_activate(uint8_t rhport, tusb_desc_endpoint_t const * desc_ep);

//--------------------------------------------------------------------+
// Event API (implemented by stack)
Expand Down
11 changes: 7 additions & 4 deletions src/device/usbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,6 @@ typedef struct {
};
volatile uint8_t cfg_num; // current active configuration (0x00 is not configured)
uint8_t speed;
volatile uint8_t setup_count;
volatile uint8_t sof_consumer;

uint8_t itf2drv[CFG_TUD_INTERFACE_MAX]; // map interface number to driver (0xff is invalid)
Expand All @@ -131,6 +130,7 @@ typedef struct {
}usbd_device_t;

tu_static usbd_device_t _usbd_dev;
static volatile uint8_t _usbd_queued_setup;

//--------------------------------------------------------------------+
// Class Driver
Expand Down Expand Up @@ -459,6 +459,7 @@ bool tud_init(uint8_t rhport) {
TU_LOG_INT(CFG_TUD_LOG_LEVEL, sizeof(tu_edpt_stream_t));

tu_varclr(&_usbd_dev);
_usbd_queued_setup = 0;

#if OSAL_MUTEX_REQUIRED
// Init device mutex
Expand Down Expand Up @@ -594,9 +595,10 @@ void tud_task_ext(uint32_t timeout_ms, bool in_isr) {
break;

case DCD_EVENT_SETUP_RECEIVED:
_usbd_dev.setup_count--;
TU_ASSERT(_usbd_queued_setup > 0,);
_usbd_queued_setup--;
TU_LOG_BUF(CFG_TUD_LOG_LEVEL, &event.setup_received, 8);
if (_usbd_dev.setup_count) {
if (_usbd_queued_setup) {
TU_LOG_USBD(" Skipped since there is other SETUP in queue\r\n");
break;
}
Expand Down Expand Up @@ -1199,7 +1201,8 @@ TU_ATTR_FAST_FUNC void dcd_event_handler(dcd_event_t const* event, bool in_isr)
break;

case DCD_EVENT_SETUP_RECEIVED:
_usbd_dev.setup_count++;
// TU_ASSERT(event->setup_received.bRequest != 0,);
_usbd_queued_setup++;
send = true;
break;

Expand Down
Loading

0 comments on commit c60934e

Please sign in to comment.