diff --git a/firmware/common/usb_standard_request.c b/firmware/common/usb_standard_request.c index fafc5c55..43b11151 100644 --- a/firmware/common/usb_standard_request.c +++ b/firmware/common/usb_standard_request.c @@ -26,7 +26,6 @@ #include "usb.h" #include "usb_type.h" -#include "usb_descriptor.h" #include "usb_queue.h" const uint8_t* usb_endpoint_descriptor( @@ -132,9 +131,9 @@ static usb_request_status_t usb_send_descriptor_string( usb_endpoint_t* const endpoint ) { uint_fast8_t index = endpoint->setup.value_l; - for( uint_fast8_t i=0; usb_descriptor_strings[i] != 0; i++ ) { + for( uint_fast8_t i=0; endpoint->device->descriptor_strings[i] != 0; i++ ) { if( i == index ) { - return usb_send_descriptor(endpoint, usb_descriptor_strings[i]); + return usb_send_descriptor(endpoint, endpoint->device->descriptor_strings[i]); } } @@ -165,7 +164,7 @@ static usb_request_status_t usb_standard_request_get_descriptor_setup( ) { switch( endpoint->setup.value_h ) { case USB_DESCRIPTOR_TYPE_DEVICE: - return usb_send_descriptor(endpoint, usb_descriptor_device); + return usb_send_descriptor(endpoint, endpoint->device->descriptor); case USB_DESCRIPTOR_TYPE_CONFIGURATION: // TODO: Duplicated code. Refactor. @@ -176,7 +175,7 @@ static usb_request_status_t usb_standard_request_get_descriptor_setup( } case USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER: - return usb_send_descriptor(endpoint, usb_descriptor_device_qualifier); + return usb_send_descriptor(endpoint, endpoint->device->qualifier_descriptor); case USB_DESCRIPTOR_TYPE_OTHER_SPEED_CONFIGURATION: // TODO: Duplicated code. Refactor. diff --git a/firmware/common/usb_type.h b/firmware/common/usb_type.h index fed3172b..8f683fc6 100644 --- a/firmware/common/usb_type.h +++ b/firmware/common/usb_type.h @@ -123,6 +123,8 @@ typedef struct { typedef struct { const uint8_t* const descriptor; + uint8_t** descriptor_strings; + const uint8_t* const qualifier_descriptor; usb_configuration_t* (*configurations)[]; const usb_configuration_t* configuration; } usb_device_t; diff --git a/firmware/hackrf_usb/hackrf_usb.c b/firmware/hackrf_usb/hackrf_usb.c index 4fbae2c6..61c70430 100644 --- a/firmware/hackrf_usb/hackrf_usb.c +++ b/firmware/hackrf_usb/hackrf_usb.c @@ -108,6 +108,8 @@ usb_configuration_t* usb_configurations[] = { usb_device_t usb_device = { .descriptor = usb_descriptor_device, + .descriptor_strings = usb_descriptor_strings, + .qualifier_descriptor = usb_descriptor_device_qualifier, .configurations = &usb_configurations, .configuration = 0, };