summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/device/dcd.h1
-rw-r--r--tinyusb/device/dcd_lpc175x_6x.c6
-rw-r--r--tinyusb/device/usbd.c8
3 files changed, 15 insertions, 0 deletions
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: