mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
Update hub_demo.ino
Updated code per @Lauszus request. The first item updated was a comment on LINE #308 saying that the string is UTF-16LE encoded. This is why we have to skip every second character when printing the string. The second item was figuring out the proper buffer size for LINE #280. After some research I found that the maximum string length is limited to 255 bytes since the bLength field is 1 byte long. I changed the buffer size to 256 to accommodate for this. Finally, I cleaned up some of the code to make it more consistent. This is purely aesthetic, and subjective at that.
This commit is contained in:
parent
3413f5b21e
commit
4be94d11c5
1 changed files with 11 additions and 12 deletions
|
@ -68,18 +68,15 @@ void PrintDescriptors(uint8_t addr)
|
|||
uint8_t num_conf = 0;
|
||||
|
||||
rcode = getdevdescr( (uint8_t)addr, num_conf );
|
||||
if ( rcode )
|
||||
{
|
||||
if ( rcode ) {
|
||||
printProgStr(Gen_Error_str);
|
||||
print_hex( rcode, 8 );
|
||||
}
|
||||
Serial.print("\r\n");
|
||||
|
||||
for (int i = 0; i < num_conf; i++)
|
||||
{
|
||||
for (int i = 0; i < num_conf; i++) {
|
||||
rcode = getconfdescr( addr, i ); // get configuration descriptor
|
||||
if ( rcode )
|
||||
{
|
||||
if ( rcode ) {
|
||||
printProgStr(Gen_Error_str);
|
||||
print_hex(rcode, 8);
|
||||
}
|
||||
|
@ -100,10 +97,8 @@ void loop()
|
|||
{
|
||||
Usb.Task();
|
||||
|
||||
if ( Usb.getUsbTaskState() == USB_STATE_RUNNING )
|
||||
{
|
||||
if ((millis() - next_time) >= 0L)
|
||||
{
|
||||
if ( Usb.getUsbTaskState() == USB_STATE_RUNNING ) {
|
||||
if ((millis() - next_time) >= 0L) {
|
||||
Usb.ForEachUsbDevice(&PrintAllDescriptors);
|
||||
Usb.ForEachUsbDevice(&PrintAllAddresses);
|
||||
|
||||
|
@ -282,7 +277,7 @@ uint8_t getallstrdescr(uint8_t addr)
|
|||
// function to get single string description
|
||||
unsigned int getstrdescr( unsigned int addr, uint8_t idx )
|
||||
{
|
||||
uint8_t buf[ 66 ];
|
||||
uint8_t buf[ 256 ];
|
||||
unsigned int rcode;
|
||||
uint8_t length;
|
||||
uint8_t i;
|
||||
|
@ -310,7 +305,7 @@ unsigned int getstrdescr( unsigned int addr, uint8_t idx )
|
|||
Serial.print("Error retrieving string ");
|
||||
return ( rcode );
|
||||
}
|
||||
for ( i = 2; i < length; i += 2 ) {
|
||||
for ( i = 2; i < length; i += 2 ) { //string is UTF-16LE encoded
|
||||
Serial.print((char) buf[i]);
|
||||
}
|
||||
return ( rcode );
|
||||
|
@ -338,6 +333,7 @@ void print_hex(int v, int num_places)
|
|||
}
|
||||
while (--num_nibbles);
|
||||
}
|
||||
|
||||
/* function to print configuration descriptor */
|
||||
void printconfdescr( uint8_t* descr_ptr )
|
||||
{
|
||||
|
@ -357,6 +353,7 @@ void printconfdescr( uint8_t* descr_ptr )
|
|||
print_hex( conf_ptr->bMaxPower, 8 );
|
||||
return;
|
||||
}
|
||||
|
||||
/* function to print interface descriptor */
|
||||
void printintfdescr( uint8_t* descr_ptr )
|
||||
{
|
||||
|
@ -378,6 +375,7 @@ void printintfdescr( uint8_t* descr_ptr )
|
|||
print_hex( intf_ptr->iInterface, 8 );
|
||||
return;
|
||||
}
|
||||
|
||||
/* function to print endpoint descriptor */
|
||||
void printepdescr( uint8_t* descr_ptr )
|
||||
{
|
||||
|
@ -394,6 +392,7 @@ void printepdescr( uint8_t* descr_ptr )
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
/*function to print unknown descriptor */
|
||||
void printunkdescr( uint8_t* descr_ptr )
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue