Remove dependencies on application-specific USB descriptors.

This commit is contained in:
Jared Boone
2013-09-17 15:13:12 -07:00
parent fe2a700f8f
commit e02d2f0325
3 changed files with 8 additions and 5 deletions

View File

@ -26,7 +26,6 @@
#include "usb.h" #include "usb.h"
#include "usb_type.h" #include "usb_type.h"
#include "usb_descriptor.h"
#include "usb_queue.h" #include "usb_queue.h"
const uint8_t* usb_endpoint_descriptor( const uint8_t* usb_endpoint_descriptor(
@ -132,9 +131,9 @@ static usb_request_status_t usb_send_descriptor_string(
usb_endpoint_t* const endpoint usb_endpoint_t* const endpoint
) { ) {
uint_fast8_t index = endpoint->setup.value_l; 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 ) { 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 ) { switch( endpoint->setup.value_h ) {
case USB_DESCRIPTOR_TYPE_DEVICE: 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: case USB_DESCRIPTOR_TYPE_CONFIGURATION:
// TODO: Duplicated code. Refactor. // 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: 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: case USB_DESCRIPTOR_TYPE_OTHER_SPEED_CONFIGURATION:
// TODO: Duplicated code. Refactor. // TODO: Duplicated code. Refactor.

View File

@ -123,6 +123,8 @@ typedef struct {
typedef struct { typedef struct {
const uint8_t* const descriptor; const uint8_t* const descriptor;
uint8_t** descriptor_strings;
const uint8_t* const qualifier_descriptor;
usb_configuration_t* (*configurations)[]; usb_configuration_t* (*configurations)[];
const usb_configuration_t* configuration; const usb_configuration_t* configuration;
} usb_device_t; } usb_device_t;

View File

@ -108,6 +108,8 @@ usb_configuration_t* usb_configurations[] = {
usb_device_t usb_device = { usb_device_t usb_device = {
.descriptor = usb_descriptor_device, .descriptor = usb_descriptor_device,
.descriptor_strings = usb_descriptor_strings,
.qualifier_descriptor = usb_descriptor_device_qualifier,
.configurations = &usb_configurations, .configurations = &usb_configurations,
.configuration = 0, .configuration = 0,
}; };