#include <usb.h>
const char USB_CLASS_SPECIFIC_DESC[] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x01, // USAGE_PAGE (generic)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x0C, // USAGE_MAXIMUM (Button 12)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1) //1 bit por botón
0x95, 0x0C, // REPORT_COUNT (12) //12 botones x 1 bits = 12 bits
0x55, 0x00, // UNIT_EXPONENT (0)
0x65, 0x00, // UNIT (None)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1) //En el primer byte no caben los 12 bits, pero se envía otro byte para los demás
0x95, 0x04, // REPORT_COUNT (4) //4 bits a enviar
0x81, 0x01, // INPUT (Constant) - 4 bits padding
0xc0 // END_COLLECTION == 37
};
const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP[USB_NUM_CONFIGURATIONS][1] =
{
0
};
const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[USB_NUM_CONFIGURATIONS][1] =
{
sizeof(USB_CLASS_SPECIFIC_DESC)
};
#DEFINE USB_TOTAL_CONFIG_LEN 57
char const USB_CONFIG_DESC[] = {
//config_descriptor for config index 1
USB_DESC_CONFIG_LEN, //length of descriptor size == 0
USB_DESC_CONFIG_TYPE, //constant CONFIGURATION (0x02) == 1
USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config == 2,3
2, //number of interfaces this device supports == 4
0x01, //identifier for this configuration. (IF we had more than one configurations) == 5
0x00, //index of string descriptor for this configuration == 6
0xC0, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 reserved and bit7=1 == 7
0x32, //maximum bus power required (maximum milliamperes/2) (0x32 = 100mA) == 8
//**************//
//interface descriptor 0 alt 0
USB_DESC_INTERFACE_LEN, //length of descriptor == 9
USB_DESC_INTERFACE_TYPE, //constant INTERFACE (0x04) == 10
0x00, //number defining this interface (IF we had more than one interface) == 11
0x00, //alternate setting = 12
2, //number of endpoints, not counting endpoint 0. == 13
0xFF, //class code, FF = vendor defined == 14
0xFF, //subclass code, FF = vendor == 15
0xFF, //protocol code, FF = vendor == 16
0x00, //index of string descriptor for interface == 17
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor == 18
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05) == 19
0x81, //endpoint number and direction (0x81 = EP1 IN) == 20
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt) == 21
USB_EP1_TX_SIZE,0x00, //maximum packet size supported == 22,23
0x01, //polling interval in ms. (for interrupt transfers ONLY) == 24
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor == 25
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05) == 26
0x01, //endpoint number and direction (0x01 = EP1 OUT) == 27
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt) == 28
USB_EP1_RX_SIZE,0x00, //maximum packet size supported == 29, 30
0x01, //polling interval in ms. (for interrupt transfers ONLY) == 31 (empiezar desde 0, total 32)
//***************//
//interface descriptor 2 (Joystick)
USB_DESC_INTERFACE_LEN, //length of descriptor == 32
USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04) ==33
0x01, //number defining this interface (IF we had more than one interface) ==34
0x00, //alternate setting ==35
1, //number of endpoints for this interface == 36
0x03, //class code, 03 = HID == 37
0x00,//0x01, //subclass code //boot == 38
0x02, //protocol code == 39
0x00, //index of string descriptor for interface == 40
//class descriptor 2 (HID)
USB_DESC_CLASS_LEN, //length of descriptor ==41
USB_DESC_CLASS_TYPE, //dscriptor type (0x21 == HID) == 42
0x00,0x01, //hid class release number (1.0) (try 1.10) == 43,44
0x00, //localized country code (0 = none) == 45
0x01, //number of hid class descrptors that follow (1) == 46
0x22, //report descriptor type (0x22 == HID) == 47
USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[0][0], 0x00, //length of report descriptor == 48,49
//endpoint descriptor 2 IN
USB_DESC_ENDPOINT_LEN, //length of descriptor == 50
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) == 51
0x82, //endpoint number and direction (0x81 = EP1 IN) == 52
USB_ENDPOINT_TYPE_INTERRUPT, //transfer type supported (0x03 is interrupt) == 53
USB_EP2_TX_SIZE,0x00, //maximum packet size supported == 54,55
10, //polling interval, in ms. (cant be smaller than 10 for slow speed devices) == 56
};
#define USB_NUM_HID_INTERFACES 1
#define USB_MAX_NUM_INTERFACES 2
const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={2};
const int16 USB_CLASS_DESCRIPTORS[USB_NUM_CONFIGURATIONS][USB_NUM_HID_INTERFACES][1]=
{
//config 1
//interface 0
//class 1
41
};
#if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
#error USB_TOTAL_CONFIG_LEN not defined correctly
#endif
char const USB_DEVICE_DESC[] ={
USB_DESC_DEVICE_LEN, //the length of this report
0x01, //constant DEVICE (0x01)
0x10,0x01, //usb version in bcd
0x00, //class code (if 0, interface defines class. FF is vendor defined)
0x00, //subclass code
0x00, //protocol code
USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8)
0xD8,0x04, //vendor id (0x04D8 is Microchip)
0x10,0x01, //product id, 0x0110 Lo que te salga de los cojones
0x00, 0x01,//0x01,0x00, //device release number
0x01, //index of string description of manufacturer. therefore we point to string_1 array (see below)
0x02, //index of string descriptor of the product
0x00, //index of string descriptor of serial number
USB_NUM_CONFIGURATIONS //number of possible configurations
};
const char USB_STRING_DESC_OFFSET[]={0,4,12}; //el 12 sería 4 + 8 del string 1, si cambias el dato del 8, volver a cambiar a aquí la suma
#define USB_STRING_DESC_COUNT sizeof(USB_STRING_DESC_OFFSET)
char const USB_STRING_DESC[]={
//string 0
4, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
0x09,0x04, //Microsoft Defined for US-English
//string 1 --> Lo que sea?
8, //length of string index (número de letras + 1)*2->(3 + 1)*2=4*2=8
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'U',0,
'S',0,
'B',0,
//string 2 --> nombre del dispositivo
22, //length of string index (número de letras + 1)*2->(10 + 1)*2=11*2=22
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'P',0,
'r',0,
'o',0,
'b',0,
'a',0,
'n',0,
'd ',0,
'o',0,
'.',0,
'.',0
};
Esto en el main:
//Para el LCD
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK
#define USB_EP1_TX_SIZE 8
#define USB_EP1_RX_SIZE 8
//Para los botones
#DEFINE USB_HID_DEVICE TRUE
#define USB_EP2_TX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP2_TX_SIZE 8
#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__
#include <usb.h>
const char USB_CLASS_SPECIFIC_DESC[] =
{
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x01, // USAGE_PAGE (generic)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x0C, // USAGE_MAXIMUM (Button 12)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1) //1 bit por botón
0x95, 0x0C, // REPORT_COUNT (12) //12 botones x 1 bits = 12 bits
0x55, 0x00, // UNIT_EXPONENT (0)
0x65, 0x00, // UNIT (None)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1) //En el primer byte no caben los 12 bits, pero se envía otro byte para los demás
0x95, 0x04, // REPORT_COUNT (4) //4 bits a enviar
0x81, 0x01, // INPUT (Constant) - 4 bit padding
0xc0 // END_COLLECTION
};
const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP[USB_NUM_CONFIGURATIONS][1] =
{
0
};
const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[USB_NUM_CONFIGURATIONS][1] =
{
sizeof(USB_CLASS_SPECIFIC_DESC)
};
#DEFINE USB_TOTAL_CONFIG_LEN 34
const char USB_CONFIG_DESC[] = {
//config_descriptor for config index 1
USB_DESC_CONFIG_LEN, //length of descriptor size ==1
USB_DESC_CONFIG_TYPE, //constant CONFIGURATION (CONFIGURATION 0x02) ==2
USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config ==3,4
1, //number of interfaces this device supports ==5
0x01, //identifier for this configuration. (IF we had more than one configurations) ==6
0x00, //index of string descriptor for this configuration ==7
0xC0, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 unused and bit7=1 ==8
0x32, //maximum bus power required (maximum milliamperes/2) (0x32 = 100mA)
//interface descriptor 1
USB_DESC_INTERFACE_LEN, //length of descriptor =10
USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04) =11
0x00, //number defining this interface (IF we had more than one interface) ==12
0x00, //alternate setting ==13
1, //number of endpoins, except 0 (pic167xx has 3, but we dont have to use all). ==14
0x03, //class code, 03 = HID ==15
0x00, //subclass code //boot ==16
0x00, //protocol code ==17
0x00, //index of string descriptor for interface ==18
//class descriptor 1 (HID)
USB_DESC_CLASS_LEN, //length of descriptor ==19
USB_DESC_CLASS_TYPE, //dscriptor type (0x21 == HID) ==20
0x00,0x01, //hid class release number (1.0) (try 1.10) ==21,22
0x00, //localized country code (0 = none) ==23
0x01, //number of hid class descrptors that follow (1) ==24
0x22, //report descriptor type (0x22 == HID) ==25
USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[0][0], 0x00, //length of report descriptor ==26,27
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor ==28
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) ==29
0x81, //endpoint number and direction (0x81 = EP1 IN) ==30
USB_ENDPOINT_TYPE_INTERRUPT, //transfer type supported (0x03 is interrupt) ==31
USB_EP1_TX_SIZE,0x00, //maximum packet size supported ==32,33
10 //polling interval, in ms. (cant be smaller than 10 for slow speed devices) ==34
};
#define USB_NUM_HID_INTERFACES 1
#define USB_MAX_NUM_INTERFACES 1
const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={1};
const int16 USB_CLASS_DESCRIPTORS[USB_NUM_CONFIGURATIONS][USB_NUM_HID_INTERFACES][1]=
{
18
};
#if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
#error USB_TOTAL_CONFIG_LEN not defined correctly
#endif
const char USB_DEVICE_DESC[] = {
//starts of with device configuration. only one possible
USB_DESC_DEVICE_LEN, //the length of this report ==1
0x01, //the constant DEVICE (DEVICE 0x01) ==2
0x10,0x01, //usb version in bcd (pic167xx is 1.1) ==3,4
0x00, //class code ==5
0x00, //subclass code ==6
0x00, //protocol code ==7
USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8) ==8
0xD8,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??)
0x10, 0x21,//product id (0x18D1 //don't use ffff says usb-by-example guy. oops
0x10,0x21, //device release number ==13,14
0x01, //index of string description of manufacturer. therefore we point to string_1 array (see below) ==15
0x02, //index of string descriptor of the product ==16
0x00, //index of string descriptor of serial number ==17
USB_NUM_CONFIGURATIONS //number of possible configurations ==18
};
#if (sizeof(USB_DEVICE_DESC) != USB_DESC_DEVICE_LEN)
#error USB_DESC_DEVICE_LEN not defined correctly
#endif
const char USB_STRING_DESC_OFFSET[]={0,4,12}; //el 12 sería 4 + 8 del string 1, si cambias el dato del 8, volver a cambiar a aquí la suma
#define USB_STRING_DESC_COUNT sizeof(USB_STRING_DESC_OFFSET)
char const USB_STRING_DESC[]={
//string 0
4, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
0x09,0x04, //Microsoft Defined for US-English
//string 1 --> Lo que sea?
8, //length of string index (número de letras + 1)*2->(3 + 1)*2=4*2=8
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'U',0,
'S',0,
'B',0,
//string 2 --> nombre del dispositivo
22, //length of string index (número de letras + 1)*2->(10 + 1)*2=11*2=22
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'P',0,
'r',0,
'o',0,
'b',0,
'a',0,
'n',0,
'd',0,
'o',0,
'.',0,
'.',0
};
#endif
//interface descriptor 1
USB_DESC_INTERFACE_LEN, //length of descriptor ==1
USB_DESC_INTERFACE_TYPE, //constant INTERFACE (0x04)
0x01, //number defining this interface (IF we had more than one interface)
0x00, //alternate setting
2, //number of endpoints, not counting endpoint 0.
0xFF, //class code, FF = vendor defined
0xFF, //subclass code, FF = vendor
0xFF, //protocol code, FF = vendor
0x00, //index of string descriptor for interface
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor == 10
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05)
0x82, //endpoint number and direction (0x82 = EP2 IN)
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt)
USB_EP2_TX_SIZE,0x00, //maximum packet size supported
0x01, //polling interval in ms. (for interrupt transfers ONLY)
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor ==17
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05)
0x02, //endpoint number and direction (0x02 = EP2 OUT)
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt)
USB_EP2_RX_SIZE,0x00, //maximum packet size supported
0x01 //polling interval in ms. (for interrupt transfers ONLY) == 23
#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__
#include <usb.h>
const char USB_CLASS_SPECIFIC_DESC[] =
{
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x01, // USAGE_PAGE (generic)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x0C, // USAGE_MAXIMUM (Button 12)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1) //1 bit por botón
0x95, 0x0C, // REPORT_COUNT (12) //12 botones x 1 bits = 12 bits
0x55, 0x00, // UNIT_EXPONENT (0)
0x65, 0x00, // UNIT (None)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1) //En el primer byte no caben los 12 bits, pero se envía otro byte para los demás
0x95, 0x04, // REPORT_COUNT (4) //4 bits a enviar
0x81, 0x01, // INPUT (Constant) - 4 bit padding
0xc0 // END_COLLECTION
};
const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP[USB_NUM_CONFIGURATIONS][1] =
{
0
};
const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[USB_NUM_CONFIGURATIONS][1] =
{
sizeof(USB_CLASS_SPECIFIC_DESC)
};
#DEFINE USB_TOTAL_CONFIG_LEN 57//34+23//34
const char USB_CONFIG_DESC[] = {
//config_descriptor for config index 1
USB_DESC_CONFIG_LEN, //length of descriptor size ==1
USB_DESC_CONFIG_TYPE, //constant CONFIGURATION (CONFIGURATION 0x02) ==2
USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config ==3,4
2, //number of interfaces this device supports ==5
0x01, //identifier for this configuration. (IF we had more than one configurations) ==6
0x00, //index of string descriptor for this configuration ==7
0xC0, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 unused and bit7=1 ==8
0x32, //maximum bus power required (maximum milliamperes/2) (0x32 = 100mA)
//interface descriptor 1
USB_DESC_INTERFACE_LEN, //length of descriptor =10
USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04) =11
0x00, //number defining this interface (IF we had more than one interface) ==12
0x00, //alternate setting ==13
1, //number of endpoins, except 0 (pic167xx has 3, but we dont have to use all). ==14
0x03, //class code, 03 = HID ==15
0x01, //subclass code //boot ==16
0x02, //protocol code ==17
0x00, //index of string descriptor for interface ==18
//class descriptor 1 (HID)
USB_DESC_CLASS_LEN, //length of descriptor ==19
USB_DESC_CLASS_TYPE, //dscriptor type (0x21 == HID) ==20
0x00,0x01, //hid class release number (1.0) (try 1.10) ==21,22
0x00, //localized country code (0 = none) ==23
0x01, //number of hid class descriptors that follow (1) ==24
0x22, //report descriptor type (0x22 == HID) ==25
USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[0][0], 0x00, //length of report descriptor ==26,27
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor ==28
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) ==29
0x81, //endpoint number and direction (0x81 = EP1 IN) ==30
USB_ENDPOINT_TYPE_INTERRUPT, //transfer type supported (0x03 is interrupt) ==31
USB_EP1_TX_SIZE,0x00, //maximum packet size supported ==32,33
10, //polling interval, in ms. (cant be smaller than 10 for slow speed devices) ==34
//************//
//PARTE NUEVA
//interface descriptor 1
USB_DESC_INTERFACE_LEN, //length of descriptor ==1
USB_DESC_INTERFACE_TYPE, //constant INTERFACE (0x04)
0x01, //number defining this interface (IF we had more than one interface)
0x00, //alternate setting
2, //number of endpoints, not counting endpoint 0.
0xFF, //class code, FF = vendor defined
0xFF, //subclass code, FF = vendor
0xFF, //protocol code, FF = vendor
0x00, //index of string descriptor for interface
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor == 10
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05)
0x82, //endpoint number and direction (0x82 = EP2 IN)
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt)
USB_EP2_TX_SIZE,0x00, //maximum packet size supported
0x01, //polling interval in ms. (for interrupt transfers ONLY)
//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor ==17
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05)
0x02, //endpoint number and direction (0x02 = EP2 OUT)
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt)
USB_EP2_RX_SIZE,0x00, //maximum packet size supported
0x01 //polling interval in ms. (for interrupt transfers ONLY) == 23
};
#define USB_NUM_HID_INTERFACES 1
#define USB_MAX_NUM_INTERFACES 2
const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={1};
const int16 USB_CLASS_DESCRIPTORS[USB_NUM_CONFIGURATIONS][USB_NUM_HID_INTERFACES][1]=
{
18
};
#if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
#error USB_TOTAL_CONFIG_LEN not defined correctly
#endif
const char USB_DEVICE_DESC[] = {
//starts of with device configuration. only one possible
USB_DESC_DEVICE_LEN, //the length of this report ==1
0x01, //the constant DEVICE (DEVICE 0x01) ==2
0x10,0x01, //usb version in bcd (pic167xx is 1.1) ==3,4
0x00, //class code ==5
0x00, //subclass code ==6
0x00, //protocol code ==7
USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8) ==8
0xD8,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??)
0x11, 0x22,//product id (0x18D1 //don't use ffff says usb-by-example guy. oops
0x10,0x21, //device release number ==13,14
0x01, //index of string description of manufacturer. therefore we point to string_1 array (see below) ==15
0x02, //index of string descriptor of the product ==16
0x00, //index of string descriptor of serial number ==17
USB_NUM_CONFIGURATIONS //number of possible configurations ==18
};
#if (sizeof(USB_DEVICE_DESC) != USB_DESC_DEVICE_LEN)
#error USB_DESC_DEVICE_LEN not defined correctly
#endif
const char USB_STRING_DESC_OFFSET[]={0,4,12}; //el 12 sería 4 + 8 del string 1, si cambias el dato del 8, volver a cambiar a aquí la suma
#define USB_STRING_DESC_COUNT sizeof(USB_STRING_DESC_OFFSET)
char const USB_STRING_DESC[]={
//string 0
4, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
0x09,0x04, //Microsoft Defined for US-English
//string 1 --> Lo que sea?
8, //length of string index (número de letras + 1)*2->(3 + 1)*2=4*2=8
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'U',0,
'S',0,
'B',0,
//string 2 --> nombre del dispositivo
22, //length of string index (número de letras + 1)*2->(10 + 1)*2=11*2=22
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'P',0,
'r',0,
'o',0,
'b',0,
'a',0,
'n',0,
'd',0,
'o',0,
'.',0,
'.',0
};
#endif