From 17a27f7398c2807796432bbca5e90d97f09ae051 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 11 Jun 2013 17:53:33 +0700 Subject: [PATCH] [lpc176x][device] pass set configure control request --- tinyusb/device/dcd.h | 1 + tinyusb/device/dcd_lpc175x_6x.c | 6 ++++++ tinyusb/device/usbd.c | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/tinyusb/device/dcd.h b/tinyusb/device/dcd.h index 939a5107c..79f2e1fc8 100644 --- a/tinyusb/device/dcd.h +++ b/tinyusb/device/dcd.h @@ -66,6 +66,7 @@ tusb_error_t dcd_pipe_control_write(uint8_t coreid, void const * buffer, uint16_ void dcd_pipe_control_write_zero_length(uint8_t coreid); tusb_error_t dcd_endpoint_configure(uint8_t coreid, tusb_descriptor_endpoint_t const * p_endpoint_desc) ATTR_WARN_UNUSED_RESULT; void dcd_device_set_address(uint8_t coreid, uint8_t dev_addr); +void dcd_device_set_configuration(uint8_t coreid, uint8_t config_num); #ifdef __cplusplus } diff --git a/tinyusb/device/dcd_lpc175x_6x.c b/tinyusb/device/dcd_lpc175x_6x.c index 604a5d9fb..cd1d5c684 100644 --- a/tinyusb/device/dcd_lpc175x_6x.c +++ b/tinyusb/device/dcd_lpc175x_6x.c @@ -242,6 +242,12 @@ void dcd_device_set_address(uint8_t coreid, uint8_t dev_addr) sie_command_write(SIE_CMDCODE_SET_ADDRESS, 1, 0x80 | dev_addr); // 7th bit is : device_enable } +void dcd_device_set_configuration(uint8_t coreid, uint8_t config_num) +{ + (void) config_num; // supress compiler's warnings + sie_command_write(SIE_CMDCODE_CONFIGURE_DEVICE, 1, 1); +} + tusb_error_t dcd_pipe_control_write(uint8_t coreid, void const * buffer, uint16_t length) { (void) coreid; // suppress compiler warning diff --git a/tinyusb/device/usbd.c b/tinyusb/device/usbd.c index 58b79f7a5..426ae19aa 100644 --- a/tinyusb/device/usbd.c +++ b/tinyusb/device/usbd.c @@ -114,6 +114,7 @@ void std_get_descriptor(uint8_t coreid) break; default: +// ASSERT(false, (void) 0); // descriptors that is not supported yet return; } } @@ -131,6 +132,13 @@ void usbd_setup_received(uint8_t coreid) p_device->address = (uint8_t) p_device->setup_packet.wValue; dcd_device_set_address(coreid, p_device->address); dcd_pipe_control_write_zero_length(coreid); + usbd_devices[coreid].state = TUSB_DEVICE_STATE_ADDRESSED; + break; + + case TUSB_REQUEST_SET_CONFIGURATION: + dcd_device_set_configuration(coreid, (uint8_t) p_device->setup_packet.wValue); + dcd_pipe_control_write_zero_length(coreid); + usbd_devices[coreid].state = TUSB_DEVICE_STATE_CONFIGURED; break; default: