[tuxdroid-svn] r1201 - firmware/fuxusb/trunk/src
Status: Beta
Brought to you by:
ks156
From: Paul_R <c2m...@c2...> - 2008-05-23 14:20:54
|
Author: Paul_R Date: 2008-05-23 16:20:56 +0200 (Fri, 23 May 2008) New Revision: 1201 Modified: firmware/fuxusb/trunk/src/usb_desc.c firmware/fuxusb/trunk/src/usb_desc.h firmware/fuxusb/trunk/src/usb_enum.c Log: * Reorganized the strings descriptors Modified: firmware/fuxusb/trunk/src/usb_desc.c =================================================================== --- firmware/fuxusb/trunk/src/usb_desc.c 2008-05-23 13:07:11 UTC (rev 1200) +++ firmware/fuxusb/trunk/src/usb_desc.c 2008-05-23 14:20:56 UTC (rev 1201) @@ -32,89 +32,98 @@ */ code struct usb_st_device_descriptor usb_device_descriptor = { - sizeof(usb_device_descriptor), DEVICE, USB_SPECIFICATION, DEVICE_CLASS, - DEVICE_SUB_CLASS, DEVICE_PROTOCOL, EP_CONTROL_LENGTH, VENDOR_ID, PRODUCT_ID, - ((uint16_t)RELEASE_NUMBER), MAN_STRING_INDEX, PROD_STRING_INDEX, - SN_STRING_INDEX, NB_CONFIGURATION + sizeof(usb_device_descriptor), // bLength + DEVICE, // bDescriptorType + USB_SPECIFICATION, // bcdUSB + DEVICE_CLASS, // bDeviceClass + DEVICE_SUB_CLASS, // bDeviceSubClass + DEVICE_PROTOCOL, // bDeviceProtocol + EP_CONTROL_LENGTH, // bMaxPacketSize0 + VENDOR_ID, // idVendor + PRODUCT_ID, // idProduct + ((uint16_t)RELEASE_NUMBER), // bcdDevice + MAN_STRING_INDEX, // iManufacturer + PROD_STRING_INDEX, // iProduct + SN_STRING_INDEX, // iSerial + NB_CONFIGURATION // bNumConfiguration }; -/** \brief Manufactrer string. - * Contain the manufacturer string - * string : KYSOH - * size : 5 +/** \brief String structure. + * This structure contain all the strings descriptors. */ -code struct usb_st_manufacturer usb_manufacturer = -{ sizeof(usb_manufacturer), STRING, USB_MANUFACTURER_NAME }; +code struct string_s string = +{ + { // Language ID string descriptor + sizeof(string.st_language), // bLength + STRING, // bDescriptorType + LANGUAGE_ID // + }, -/** \brief Product string. - * Contain the product string - * string : TuxDroid - * size : 8 - */ -code struct usb_st_product usb_product = -{ sizeof(usb_product), STRING, USB_PRODUCT_NAME }; + { // Manufacturer string descriptor + sizeof(string.st_manufacturer), // bLength + STRING, // bDescriptorType + USB_MANUFACTURER_NAME // + }, -/** \brief Serial number. - * string : 10001 - * size : 5 - */ -code struct usb_st_serial_number usb_serial_number = -{ sizeof(usb_serial_number), STRING, USB_SERIAL_NUMBER }; + { // Product string descriptor + sizeof(string.st_product), // bLength + STRING, // bDescriptorType + USB_PRODUCT_NAME // + }, + { // Serial number string descriptor + sizeof(string.st_serial_number),// bLength + STRING, // bDescriptorType + USB_SERIAL_NUMBER // + }, -/** \brief Language code. - * Define the language - * string : 0x0904 - */ -code struct usb_st_language_descriptor usb_language = -{ sizeof(usb_language), STRING, LANGUAGE_ID }; + { // Configuration string descriptor + sizeof(string.st_config), // bLength + STRING, // bDescriptorType + USB_CONFIG_NAME // + }, + + { // Speaker interface string descriptor + sizeof(string.st_speaker), // bLength + STRING, // bDescriptorType + AUDIO_SPEAKER_NAME // + }, + { // Micro interface string descriptor + sizeof(string.st_micro), // bLength + STRING, // bDescriptorType + AUDIO_MICRO_NAME // + }, + + { // TTS string descriptor + sizeof(string.st_tts), // bLength + STRING, // bDescriptorType + AUDIO_TTS_NAME // + }, -/** \brief Configuration string. - * Contain the configuration name - * string : TuxDroid - * size : 8 - */ -code struct usb_st_config usb_config = -{ sizeof(usb_config), STRING, USB_CONFIG_NAME }; + { // Audio interface string descriptor + sizeof(string.st_audio), // bLength + STRING, // bDescriptorType + AUDIO_NORMAL_NAME // + } +}; -/** \brief Microphone interface. - * Contain microphone interface string - * string : TuxDroid - Micro - */ -code struct usb_st_micro_descriptor usb_audio_micro = -{ sizeof(usb_audio_micro), STRING, AUDIO_MICRO_NAME }; - -/** \brief Speaker interface. - * Contain speaker interface string - * string : TuxDroid - Speaker - */ -code struct usb_st_speaker_descriptor usb_audio_speaker = -{ sizeof(usb_audio_speaker), STRING, AUDIO_SPEAKER_NAME }; - -/** \brief TTS interface. - * Contain tts interface string - * string : TuxDroid - TTS - */ -code struct usb_st_tts_descriptor usb_audio_tts = -{ sizeof(usb_audio_tts), STRING, AUDIO_TTS_NAME }; - -/** \brief Audio interface 1. - * Contain the first audio interface name (micro and speaker) - * string : TuxDroid - Audio - */ -code struct usb_st_audio_descriptor usb_audio_normal = -{ sizeof(usb_audio_normal), STRING, AUDIO_NORMAL_NAME }; - - /** \brief General structure. * This structure contain all the descriptors. */ code struct usb_configuration_s usb_configuration = { - { 9, CONFIGURATION, CONF_LENGTH, NB_INTERFACE, CONF_NB, - CONFIG_STRING_INDEX, CONF_ATTRIBUTES, MAX_POWER}, + { + 9, // bLength + CONFIGURATION, // bDescriptorType + CONF_LENGTH, // wTotalLength + NB_INTERFACE, // bNumInterfaces + CONF_NB, // bConfigurationValue + CONFIG_STRING_INDEX,// iConfiguration + CONF_ATTRIBUTES, // bmAttributes + MAX_POWER // MaxPower + }, //------------------------------------------------------------------------- // Audio Modified: firmware/fuxusb/trunk/src/usb_desc.h =================================================================== --- firmware/fuxusb/trunk/src/usb_desc.h 2008-05-23 13:07:11 UTC (rev 1200) +++ firmware/fuxusb/trunk/src/usb_desc.h 2008-05-23 14:20:56 UTC (rev 1201) @@ -270,70 +270,6 @@ uint8_t bInterval; /**< Interval for polling EP in ms */ }; -struct usb_st_manufacturer -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[USB_MN_LENGTH];/**< unicode characters */ -}; - -struct usb_st_product -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[USB_PN_LENGTH];/**< unicode characters */ -}; - -struct usb_st_serial_number -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[USB_SN_LENGTH];/**< unicode characters */ -}; - -struct usb_st_config -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[USB_CONFIG_LENGTH];/**< unicode characters */ -}; - -struct usb_st_language_descriptor -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[USB_CONFIG_LENGTH]; /**< language id */ -}; - -struct usb_st_speaker_descriptor -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[AUDIO_SPEAKER_LENGTH]; /**< language id */ -}; - -struct usb_st_micro_descriptor -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[AUDIO_MICRO_LENGTH]; /**< language id */ -}; - -struct usb_st_tts_descriptor -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[AUDIO_TTS_LENGTH]; /**< language id */ -}; - - -struct usb_st_audio_descriptor -{ - uint8_t bLength; /**< size of this descriptor in bytes */ - uint8_t bDescriptorType; /**< STRING descriptor type */ - uint16_t wstring[AUDIO_NORMAL_LENGTH]; /**< language id */ -}; - /* HID specific */ struct usb_hid_descriptor { @@ -594,18 +530,100 @@ }; /* @} */ +/** \name String descriptors + * @{ */ +struct usb_st_language_descriptor +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[USB_CONFIG_LENGTH]; /**< language id */ +}; +struct usb_st_manufacturer +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[USB_MN_LENGTH];/**< unicode characters */ +}; + +struct usb_st_product +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[USB_PN_LENGTH];/**< unicode characters */ +}; + +struct usb_st_serial_number +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[USB_SN_LENGTH];/**< unicode characters */ +}; + +struct usb_st_config +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[USB_CONFIG_LENGTH];/**< unicode characters */ +}; + +struct usb_st_speaker_descriptor +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[AUDIO_SPEAKER_LENGTH]; /**< language id */ +}; + +struct usb_st_micro_descriptor +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[AUDIO_MICRO_LENGTH]; /**< language id */ +}; + +struct usb_st_tts_descriptor +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[AUDIO_TTS_LENGTH]; /**< language id */ +}; + + +struct usb_st_audio_descriptor +{ + uint8_t bLength; /**< size of this descriptor in bytes */ + uint8_t bDescriptorType; /**< STRING descriptor type */ + uint16_t wstring[AUDIO_NORMAL_LENGTH]; /**< language id */ +}; +/* @} */ + +/** \name String structure + * This structure contain all the descriptors. + * @{ */ +struct string_s +{ + /*! Language string descriptor */ + struct usb_st_language_descriptor st_language; + /*! Manufacturer string descriptor */ + struct usb_st_manufacturer st_manufacturer; + /*! Product string descriptor */ + struct usb_st_product st_product; + /*! Serial number string descriptor */ + struct usb_st_serial_number st_serial_number; + /*! Configuration string descriptor */ + struct usb_st_config st_config; + /*! Speaker interface string descriptor */ + struct usb_st_speaker_descriptor st_speaker; + /*! Micro interface string descriptor */ + struct usb_st_micro_descriptor st_micro; + /*! TTS Interface string descriptor */ + struct usb_st_tts_descriptor st_tts; + /*! Audio control interface string descriptor */ + struct usb_st_audio_descriptor st_audio; +}; +/* @} */ extern code struct usb_st_device_descriptor usb_device_descriptor; extern code struct usb_configuration_s usb_configuration; +extern code struct string_s string; -extern code struct usb_st_manufacturer usb_manufacturer; -extern code struct usb_st_product usb_product; -extern code struct usb_st_serial_number usb_serial_number; -extern code struct usb_st_language_descriptor usb_language; -extern code struct usb_st_config usb_config; -extern code struct usb_st_micro_descriptor usb_audio_micro; -extern code struct usb_st_speaker_descriptor usb_audio_speaker; -extern code struct usb_st_tts_descriptor usb_audio_tts; -extern code struct usb_st_audio_descriptor usb_audio_normal; - #endif // _USB_DESC_H_ Modified: firmware/fuxusb/trunk/src/usb_enum.c =================================================================== --- firmware/fuxusb/trunk/src/usb_enum.c 2008-05-23 13:07:11 UTC (rev 1200) +++ firmware/fuxusb/trunk/src/usb_enum.c 2008-05-23 14:20:56 UTC (rev 1201) @@ -436,73 +436,56 @@ #endif case STRING: #ifdef USB_ENUM_DEBUG - printf("STRING "); + printf("STRING %BX", string_type); #endif switch (string_type) - { + { case LANG_ID: - data_to_transfer = sizeof (usb_language); - pbuffer = &(usb_language.bLength); -#ifdef USB_ENUM_DEBUG - printf("LANG_ID "); -#endif + data_to_transfer = sizeof (string.st_language); + pbuffer = &(string.st_language.bLength); break; + case MAN_STRING_INDEX: - data_to_transfer = sizeof (usb_manufacturer); - pbuffer = &(usb_manufacturer.bLength); -#ifdef USB_ENUM_DEBUG - printf("MAN_STRING_INDEX "); -#endif + data_to_transfer = sizeof (string.st_manufacturer); + pbuffer = &(string.st_manufacturer.bLength); break; case PROD_STRING_INDEX: - data_to_transfer = sizeof (usb_product); - pbuffer = &(usb_product.bLength); -#ifdef USB_ENUM_DEBUG - printf("PROD_STRING_INDEX "); -#endif + data_to_transfer = sizeof (string.st_product); + pbuffer = &(string.st_product.bLength); break; case SN_STRING_INDEX: - data_to_transfer = sizeof (usb_serial_number); - pbuffer = &(usb_serial_number.bLength); -#ifdef USB_ENUM_DEBUG - printf("SN_STRING_INDEX "); -#endif + data_to_transfer = sizeof (string.st_serial_number); + pbuffer = &(string.st_serial_number.bLength); break; case CONFIG_STRING_INDEX: - data_to_transfer = sizeof (usb_config); - pbuffer = &(usb_config.bLength); -#ifdef USB_ENUM_DEBUG - printf("CONFIG_STRING_INDEX "); -#endif + data_to_transfer = sizeof (string.st_config); + pbuffer = &(string.st_config.bLength); break; case AUDIO_MICRO_INDEX: - data_to_transfer = sizeof (usb_audio_micro); - pbuffer = &(usb_audio_micro.bLength); + data_to_transfer = sizeof (string.st_micro); + pbuffer = &(string.st_micro.bLength); break; case AUDIO_SPEAKER_INDEX: - data_to_transfer = sizeof (usb_audio_speaker); - pbuffer = &(usb_audio_speaker.bLength); + data_to_transfer = sizeof (string.st_speaker); + pbuffer = &(string.st_speaker.bLength); break; case AUDIO_TTS_INDEX: - data_to_transfer = sizeof (usb_audio_tts); - pbuffer = &(usb_audio_tts.bLength); + data_to_transfer = sizeof (string.st_tts); + pbuffer = &(string.st_tts.bLength); break; case AUDIO_NORMAL_INDEX: - data_to_transfer = sizeof (usb_audio_normal); - pbuffer = &(usb_audio_normal.bLength); + data_to_transfer = sizeof (string.st_audio); + pbuffer = &(string.st_audio.bLength); break; default: -#ifdef USB_ENUM_DEBUG - printf("UNKNOWN_STRING_INDEX "); -#endif Usb_clear_rx_setup(); stall_request(); Usb_clear_DIR(); |