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_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.

View File

@ -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;

View File

@ -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,
};