Why these two descriptors, one is working, the other is not.

General discussions about V-USB, our firmware-only implementation of a low speed USB device on Atmel's AVR microcontrollers
Post Reply
sprhawk
Posts: 11
Joined: Sun Oct 28, 2007 5:52 am

Why these two descriptors, one is working, the other is not.

Post by sprhawk » Thu Nov 15, 2007 1:56 pm

the working one:

Code: Select all

char usbHidReportDescriptor[25] = {//OK//ok
   0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
   0x15, 0x00,                  //Logical_Minimum (0)
   0x09, 0x04,                    // USAGE (Joystick)
   0xa1, 0x01,                    // COLLECTION (Application)
    0x05, 0x02,                    //    USAGE_PAGE (Simulation Controls)
   0x09, 0xc5,                    //     USAGE (Rudder)   
   0x09, 0xbb,                    //     USAGE (Brake) 
   0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)
    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
   0x75, 0x08,                    //     REPORT_SIZE (8)
    0x95, 0x02,                    //     REPORT_COUNT (2)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0xc0                           // END_COLLECTION
};


the non-working one:

Code: Select all

char usbHidReportDescriptor[30] = {
   0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
   0x15, 0x00,                  //Logical_Minimum (0)
   0x09, 0x04,                    // USAGE (Joystick)
   0xa1, 0x01,                    // COLLECTION (Application)
    0x05, 0x02,                    //    USAGE_PAGE (Simulation Controls)
   0x09, 0xc5,                    //     USAGE (Rudder)   
   0x09, 0xbb,                    //     USAGE (Brake) 
   0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)
    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
   0x35, 0x00,                    //     PHYSICAL_MINIMUM (0)
    0x46, 0xff, 0x00,              //     PHYSICAL_MAXIMUM (255)
    0x75, 0x08,                    //     REPORT_SIZE (8)
    0x95, 0x02,                    //     REPORT_COUNT (2)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0xc0                           // END_COLLECTION
};


who can tell me why? Thank you!

the following descriptor worked once, but didn't work now :oops:

Code: Select all

char usbHidReportDescriptor[28]= {//OK
   0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x15, 0x00,                    // LOGICAL_MINIMUM (0)
    0x09, 0x04,                    // USAGE (Joystick)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x09, 0x01,                    //   USAGE (Pointer)
    0xa1, 0x00,                    //   COLLECTION (Physical)
    0x09, 0x30,                    //     USAGE (X)
   0x09, 0x31,                    //     USAGE (Z)
    0x15, 0x81,                    //   LOGICAL_MINIMUM (-127)
    0x25, 0x7f,                    //   LOGICAL_MAXIMUM (127)
   0x75, 0x08,                  //     report size(8)
    0x95, 0x02,                    //     REPORT_COUNT (2)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0xc0,                           // END_COLLECTION
   0xc0                           // END_COLLECTION
};

Post Reply