CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug Reports on this forum. Send them to support@ccsinfo.com

Large Descriptor

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
vtrx



Joined: 11 Oct 2017
Posts: 29

View user's profile Send private message

Large Descriptor
PostPosted: Tue May 21, 2019 9:08 am     Reply with quote

What do I need to change to use a descriptor greater than 255 bytes?

Code:
   //if a class has an extra descriptor not part of the config descriptor,
   // this lookup table defines the size of that descriptor.
   //first element is the config number (if your device has more than one config)
   //second element is which interface number
   //set element to 0xFFFF if this config/interface combo doesn't exist
   const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[USB_NUM_CONFIGURATIONS][3] =
   {
   //config 1
      //interface 0
       63,
      //interface 1
       32,
      //interface 2
       >256//large descriptor part here
   };


I want to try to implement force feedback.
Ttelmah



Joined: 11 Mar 2010
Posts: 14617

View user's profile Send private message

PostPosted: Tue May 21, 2019 10:42 am     Reply with quote

Er. You can't.
The first byte of a USB descriptor, is it's length. A one byte value.
So all USB descriptors are inherently limited to 255 bytes or less.
(since this can only give 1 to 255 as a length).
Why on earth do you think force feedback requires a > 255 byte descriptor?.

<https://www.microchip.com/forums/m958105.aspx>
vtrx



Joined: 11 Oct 2017
Posts: 29

View user's profile Send private message

PostPosted: Tue May 21, 2019 11:34 am     Reply with quote

Code:
0x05,0x01, // Usage Page Generic Desktop
 0x09,0x04, // Usage Joystick
 0xA1,0x01, // Collection Application
    0x85,0x01, // Report ID 1
0x05,0x09, // [0x03]USAGE PAGE (BUTTON)
0x19,0x01, // [0x04]USAGE_MINIMUM(BUTTON 1)
0x29,0x10, // [0x05]USAGE_MAXIMUM(BUTTON 16)
0x15,0x00, // [0x06]LOGICAL_MINIMUM
0x25,0x01, // [0x07]LOGICAL_MAXIMUM
0x35,0x00, // [0x08]PHYSICAL_MINIMUM
0x45,0x01, // [0x09]PHYSICAL_MAXIMUM
0x75,0x01, // [0x0A]REPORT_SIZE
0x95,0x10, // [0x0B]REPORT_COUNT
0x81,0x02, // [0x0C]INPUT
0x05,0x01, // [0x0D]USAGE PAGE (GENERIC DESKTOP CONTROLS)
0x09,0x39, // [0x0E]USAGE(HAT_SWITCH)
0x15,0x00, // [0x0F]LOGICAL_MINIMUM
0x25,0x07, // [0x10]LOGICAL_MAXIMUM
0x35,0x00, // [0x11]PHYSICAL_MINIMUM
0x46,0x3B,0x01, // [0x12]PHYSICAL_MAXIMUM
0x65,0x14, // [0x13]UNIT
0x75,0x04, // [0x14]REPORT_SIZE
0x95,0x01, // [0x15]REPORT_COUNT
0x81,0x42, // [0x16]INPUT
0x65,0x00, // [0x17]UNIT
0x95,0x01, // [0x18]REPORT_COUNT
0x81,0x01, // [0x19]INPUT
0x09,0x30, // [0x1A]USAGE(X)
0x09,0x31, // [0x1B]USAGE(Y)
0x09,0x32, // [0x1C]USAGE(Z)
0x09,0x33, // [0x1D]USAGE(Rx)
0x15,0x00, // [0x1E]LOGICAL_MINIMUM
0x26,0x00,0x04, // [0x1F]LOGICAL_MAXIMUM
0x35,0x00, // [0x20]PHYSICAL_MINIMUM
0x46,0x00,0x04, // [0x21]PHYSICAL_MAXIMUM
0x75,0x10, // [0x22]REPORT_SIZE
0x95,0x04, // [0x23]REPORT_COUNT
0x81,0x02, // [0x24]INPUT
   

 
 /*
  Input
  Collection Datalink (sub-collection)
  Physical Interface (Usage: PID State report)
  ID: 2
  state report: 5X1bit
  Padding: 3bit
  PID Device Control: 1bit
  Effect Block Index: 7bit
 */



    0x05,0x0F, // Usage Page Physical Interface
    0x09,0x92, // Usage PID State report
    0xA1,0x02, // Collection Datalink (logical)

       0x85,0x02, // Report ID 2
       0x09,0x9F, // Usage Device is Pause
       0x09,0xA0, // Usage Actuators Enabled
       0x09,0xA4, // Usage Safety Switch
       0x09,0xA5, // Usage Actuator Override Switch
       0x09,0xA6, // Usage Actuator Power
       0x15,0x00, // Logical Minimum 0
       0x25,0x01, // Logical Maximum 1
       0x35,0x00, // Physical Minimum 0
       0x45,0x01, // Physical Maximum 1
       0x75,0x01, // Report Size 1
       0x95,0x05, // Report Count 5
       0x81,0x02, // Input (Variable)
       0x95,0x03, // Report Count 3
       0x81,0x03, // Input (Constant, Variable)


       0x09,0x94, // Usage Effect Playing
       0x15,0x00, // Logical Minimum 0
       0x25,0x01, // Logical Maximum 1
       0x35,0x00, // Physical Minimum 0
       0x45,0x01, // Physical Maximum 1
       0x75,0x01, // Report Size 1
       0x95,0x01, // Report Count 1
       0x81,0x02, // Input (Variable)
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x07, // Report Size 7
       0x95,0x01, // Report Count 1
       0x81,0x02, // Input (Variable)
    0xC0 , // End Collection
 
 /*
  Output
  Collection Datalink:
  Usage Set Effect Report
 
  ID:1
  Effect Block Index: 8bit
 
  subcollection Effect Type
  12 effect types, 8bit each

 */
    0x09,0x21, // Usage Set Effect Report
    0xA1,0x02, // Collection Datalink (Logical)
       0x85,0x01, // Report ID 1
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)

       0x09,0x25, // Usage Effect Type
       0xA1,0x02, // Collection Datalink
          0x09,0x26, // Usage ET Constant Force
          0x09,0x27, // Usage ET Ramp
          0x09,0x30, // Usage ET Square
          0x09,0x31, // Usage ET Sine
          0x09,0x32, // Usage ET Triangle
          0x09,0x33, // Usage ET Sawtooth Up
          0x09,0x34, // Usage ET Sawtooth Down
          0x09,0x40, // Usage ET Spring
          0x09,0x41, // Usage ET Damper
          0x09,0x42, // Usage ET Inertia
          0x09,0x43, // Usage ET Friction
          0x09,0x28, // Usage ET Custom Force Data
          0x25,0x0C, // Logical Maximum Ch (12d)
          0x15,0x01, // Logical Minimum 1
          0x35,0x01, // Physical Minimum 1
          0x45,0x0C, // Physical Maximum Ch (12d)
          0x75,0x08, // Report Size 8
          0x95,0x01, // Report Count 1
          0x91,0x00, // Output

       0xC0 , // End Collection

       0x09,0x50, // Usage Duration
       0x09,0x54, // Usage Trigger Repeat Interval
       0x09,0x51, // Usage Sample Period
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x7F, // Logical Maximum 7FFFh (32767d)
       0x35,0x00, // Physical Minimum 0
       0x46,0xFF,0x7F, // Physical Maximum 7FFFh (32767d)
       0x66,0x03,0x10, // Unit 1003h (4099d)
       0x55,0xFD, // Unit Exponent FDh (253d)
       0x75,0x10, // Report Size 10h (16d)
       0x95,0x03, // Report Count 3
       0x91,0x02, // Output (Variable)

       0x55,0x00, // Unit Exponent 0
       0x66,0x00,0x00, // Unit 0
       0x09,0x52, // Usage Gain
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)

       0x09,0x53, // Usage Trigger Button
       0x15,0x01, // Logical Minimum 1
       0x25,0x08, // Logical Maximum 8
       0x35,0x01, // Physical Minimum 1
       0x45,0x08, // Physical Maximum 8
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)

       0x09,0x55, // Usage Axes Enable
       0xA1,0x02, // Collection Datalink
          0x05,0x01, // Usage Page Generic Desktop
          0x09,0x30, // Usage X
          0x09,0x31, // Usage Y
          0x15,0x00, // Logical Minimum 0
          0x25,0x01, // Logical Maximum 1
          0x75,0x01, // Report Size 1
          0x95,0x02, // Report Count 2
          0x91,0x02, // Output (Variable)

       0xC0 , // End Collection

       0x05,0x0F, // Usage Page Physical Interface
       0x09,0x56, // Usage Direction Enable
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)

       0x95,0x05, // Report Count 5
       0x91,0x03, // Output (Constant, Variable)

       0x09,0x57, // Usage Direction
       0xA1,0x02, // Collection Datalink
          0x0B,0x01,0x00,0x0A,0x00, // Usage Ordinals: Instance 1
          0x0B,0x02,0x00,0x0A,0x00, // Usage Ordinals: Instance 2
          0x66,0x14,0x00, // Unit 14h (20d)
          0x55,0xFE, // Unit Exponent FEh (254d)
          0x15,0x00, // Logical Minimum 0
          0x26,0xFF,0x00, // Logical Maximum FFh (255d)
          0x35,0x00, // Physical Minimum 0
          0x47,0xA0,0x8C,0x00,0x00, // Physical Maximum 8CA0h (36000d)
          0x66,0x00,0x00, // Unit 0
          0x75,0x08, // Report Size 8
          0x95,0x02, // Report Count 2
          0x91,0x02, // Output (Variable)
          0x55,0x00, // Unit Exponent 0
          0x66,0x00,0x00, // Unit 0
       0xC0 , // End Collection

       0x05,0x0F, // Usage Page Physical Interface
       0x09,0xA7, // Usage Undefined
       0x66,0x03,0x10, // Unit 1003h (4099d)
       0x55,0xFD, // Unit Exponent FDh (253d)
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x7F, // Logical Maximum 7FFFh (32767d)
       0x35,0x00, // Physical Minimum 0
       0x46,0xFF,0x7F, // Physical Maximum 7FFFh (32767d)
       0x75,0x10, // Report Size 10h (16d)
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x66,0x00,0x00, // Unit 0
       0x55,0x00, // Unit Exponent 0
    0xC0 , // End Collection

    0x05,0x0F, // Usage Page Physical Interface
    0x09,0x5A, // Usage Set Envelope Report
    0xA1,0x02, // Collection Datalink
       0x85,0x02, // Report ID 2
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x5B, // Usage Attack Level
       0x09,0x5D, // Usage Fade Level
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x95,0x02, // Report Count 2
       0x91,0x02, // Output (Variable)
       0x09,0x5C, // Usage Attack Time
       0x09,0x5E, // Usage Fade Time
       0x66,0x03,0x10, // Unit 1003h (4099d)
       0x55,0xFD, // Unit Exponent FDh (253d)
       0x26,0xFF,0x7F, // Logical Maximum 7FFFh (32767d)
       0x46,0xFF,0x7F, // Physical Maximum 7FFFh (32767d)
       0x75,0x10, // Report Size 10h (16d)
       0x91,0x02, // Output (Variable)
       0x45,0x00, // Physical Maximum 0
       0x66,0x00,0x00, // Unit 0
       0x55,0x00, // Unit Exponent 0
    0xC0 , // End Collection

    0x09,0x5F, // Usage Set Condition Report
    0xA1,0x02, // Collection Datalink
       0x85,0x03, // Report ID 3
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x23, // Usage Parameter Block Offset
       0x15,0x00, // Logical Minimum 0
       0x25,0x01, // Logical Maximum 1
       0x35,0x00, // Physical Minimum 0
       0x45,0x01, // Physical Maximum 1
       0x75,0x04, // Report Size 4
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x58, // Usage Type Specific Block Off...
       0xA1,0x02, // Collection Datalink

          0x0B,0x01,0x00,0x0A,0x00, // Usage Ordinals: Instance 1
          0x0B,0x02,0x00,0x0A,0x00, // Usage Ordinals: Instance 2
          0x75,0x02, // Report Size 2
          0x95,0x02, // Report Count 2
          0x91,0x02, // Output (Variable)
       0xC0 , // End Collection

       0x15,0x80, // Logical Minimum 80h (-128d)
       0x25,0x7F, // Logical Maximum 7Fh (127d)
       0x36,0xF0,0xD8, // Physical Minimum D8F0h (-10000d)
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x09,0x60, // Usage CP Offset
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x36,0xF0,0xD8, // Physical Minimum D8F0h (-10000d)
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x09,0x61, // Usage Positive Coefficient
       0x09,0x62, // Usage Negative Coefficient
       0x95,0x02, // Report Count 2
       0x91,0x02, // Output (Variable)
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x09,0x63, // Usage Positive Saturation
       0x09,0x64, // Usage Negative Saturation
       0x75,0x08, // Report Size 8
       0x95,0x02, // Report Count 2
       0x91,0x02, // Output (Variable)
       0x09,0x65, // Usage Dead Band
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
    0xC0 , // End Collection
    0x09,0x6E, // Usage Set Periodic Report
    0xA1,0x02, // Collection Datalink
       0x85,0x04, // Report ID 4
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x70, // Usage Magnitude
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x6F, // Usage Offset
       0x15,0x80, // Logical Minimum 80h (-128d)
       0x25,0x7F, // Logical Maximum 7Fh (127d)
       0x36,0xF0,0xD8, // Physical Minimum D8F0h (-10000d)
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x71, // Usage Phase
       0x66,0x14,0x00, // Unit 14h (20d)
       0x55,0xFE, // Unit Exponent FEh (254d)
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x47,0xA0,0x8C,0x00,0x00, // Physical Maximum 8CA0h (36000d)
       0x91,0x02, // Output (Variable)
       0x09,0x72, // Usage Period
       0x26,0xFF,0x7F, // Logical Maximum 7FFFh (32767d)
       0x46,0xFF,0x7F, // Physical Maximum 7FFFh (32767d)
       0x66,0x03,0x10, // Unit 1003h (4099d)
       0x55,0xFD, // Unit Exponent FDh (253d)
       0x75,0x10, // Report Size 10h (16d)
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x66,0x00,0x00, // Unit 0
       0x55,0x00, // Unit Exponent 0
    0xC0 , // End Collection
    0x09,0x73, // Usage Set Constant Force Rep...
    0xA1,0x02, // Collection Datalink
       0x85,0x05, // Report ID 5
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x70, // Usage Magnitude
       0x16,0x01,0xFF, // Logical Minimum FF01h (-255d)
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x36,0xF0,0xD8, // Physical Minimum D8F0h (-10000d)
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x75,0x10, // Report Size 10h (16d)
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
    0xC0 , // End Collection
    0x09,0x74, // Usage Set Ramp Force Report
    0xA1,0x02, // Collection Datalink
       0x85,0x06, // Report ID 6
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x75, // Usage Ramp Start
       0x09,0x76, // Usage Ramp End
       0x15,0x80, // Logical Minimum 80h (-128d)
       0x25,0x7F, // Logical Maximum 7Fh (127d)
       0x36,0xF0,0xD8, // Physical Minimum D8F0h (-10000d)
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x75,0x08, // Report Size 8
       0x95,0x02, // Report Count 2
       0x91,0x02, // Output (Variable)
    0xC0 , // End Collection
    0x09,0x68, // Usage Custom Force Data Rep...
    0xA1,0x02, // Collection Datalink
       0x85,0x07, // Report ID 7
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x6C, // Usage Custom Force Data Offset
       0x15,0x00, // Logical Minimum 0
       0x26,0x10,0x27, // Logical Maximum 2710h (10000d)
       0x35,0x00, // Physical Minimum 0
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x75,0x10, // Report Size 10h (16d)
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x69, // Usage Custom Force Data
       0x15,0x81, // Logical Minimum 81h (-127d)
       0x25,0x7F, // Logical Maximum 7Fh (127d)
       0x35,0x00, // Physical Minimum 0
       0x46,0xFF,0x00, // Physical Maximum FFh (255d)
       0x75,0x08, // Report Size 8
       0x95,0x0C, // Report Count Ch (12d)
       0x92,0x02,0x01, // Output (Variable, Buffered)
    0xC0 , // End Collection
    0x09,0x66, // Usage Download Force Sample
    0xA1,0x02, // Collection Datalink
       0x85,0x08, // Report ID 8
       0x05,0x01, // Usage Page Generic Desktop
       0x09,0x30, // Usage X
       0x09,0x31, // Usage Y
       0x15,0x81, // Logical Minimum 81h (-127d)
       0x25,0x7F, // Logical Maximum 7Fh (127d)
       0x35,0x00, // Physical Minimum 0
       0x46,0xFF,0x00, // Physical Maximum FFh (255d)
       0x75,0x08, // Report Size 8
       0x95,0x02, // Report Count 2
       0x91,0x02, // Output (Variable)
    0xC0 , // End Collection
    0x05,0x0F, // Usage Page Physical Interface
    0x09,0x77, // Usage Effect Operation Report
    0xA1,0x02, // Collection Datalink
       0x85,0x0A, // Report ID Ah (10d)
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x78, // Usage Effect Operation
       0xA1,0x02, // Collection Datalink
          0x09,0x79, // Usage Op Effect Start
          0x09,0x7A, // Usage Op Effect Start Solo
          0x09,0x7B, // Usage Op Effect Stop
          0x15,0x01, // Logical Minimum 1
          0x25,0x03, // Logical Maximum 3
          0x75,0x08, // Report Size 8
          0x95,0x01, // Report Count 1
          0x91,0x00, // Output
       0xC0 , // End Collection
       0x09,0x7C, // Usage Loop Count
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x46,0xFF,0x00, // Physical Maximum FFh (255d)
       0x91,0x02, // Output (Variable)
    0xC0 , // End Collection
    0x09,0x90, // Usage PID Block Free Report
    0xA1,0x02, // Collection Datalink
       0x85,0x0B, // Report ID Bh (11d)
       0x09,0x22, // Usage Effect Block Index
       0x25,0x28, // Logical Maximum 28h (40d)
       0x15,0x01, // Logical Minimum 1
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
    0xC0 , // End Collection
    0x09,0x96, // Usage PID Device Control
    0xA1,0x02, // Collection Datalink
       0x85,0x0C, // Report ID Ch (12d)
       0x09,0x97, // Usage DC Enable Actuators
       0x09,0x98, // Usage DC Disable Actuators
       0x09,0x99, // Usage DC Stop All Effects
       0x09,0x9A, // Usage DC Device Reset
       0x09,0x9B, // Usage DC Device Pause
       0x09,0x9C, // Usage DC Device Continue
       0x15,0x01, // Logical Minimum 1
       0x25,0x06, // Logical Maximum 6
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x00, // Output
    0xC0 , // End Collection
    0x09,0x7D, // Usage Device Gain Report
    0xA1,0x02, // Collection Datalink
       0x85,0x0D, // Report ID Dh (13d)
       0x09,0x7E, // Usage Device Gain
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x46,0x10,0x27, // Physical Maximum 2710h (10000d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
    0xC0 , // End Collection
    0x09,0x6B, // Usage Set Custom Force Report
    0xA1,0x02, // Collection Datalink
       0x85,0x0E, // Report ID Eh (14d)
       0x09,0x22, // Usage Effect Block Index
       0x15,0x01, // Logical Minimum 1
       0x25,0x28, // Logical Maximum 28h (40d)
       0x35,0x01, // Physical Minimum 1
       0x45,0x28, // Physical Maximum 28h (40d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x6D, // Usage Sample Count
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x00, // Logical Maximum FFh (255d)
       0x35,0x00, // Physical Minimum 0
       0x46,0xFF,0x00, // Physical Maximum FFh (255d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x09,0x51, // Usage Sample Period
       0x66,0x03,0x10, // Unit 1003h (4099d)
       0x55,0xFD, // Unit Exponent FDh (253d)
       0x15,0x00, // Logical Minimum 0
       0x26,0xFF,0x7F, // Logical Maximum 7FFFh (32767d)
       0x35,0x00, // Physical Minimum 0
       0x46,0xFF,0x7F, // Physical Maximum 7FFFh (32767d)
       0x75,0x10, // Report Size 10h (16d)
       0x95,0x01, // Report Count 1
       0x91,0x02, // Output (Variable)
       0x55,0x00, // Unit Exponent 0
       0x66,0x00,0x00, // Unit 0
    0xC0 , // End Collection
    0x09,0xAB, // Usage Create New Effect Report
    0xA1,0x02, // Collection Datalink
       0x85,0x01, // Report ID 1
       0x09,0x25, // Usage Effect Type
       0xA1,0x02, // Collection Datalink
       0x09,0x26, // Usage ET Constant Force
       0x09,0x27, // Usage ET Ramp
       0x09,0x30, // Usage ET Square
       0x09,0x31, // Usage ET Sine
       0x09,0x32, // Usage ET Triangle
       0x09,0x33, // Usage ET Sawtooth Up
       0x09,0x34, // Usage ET Sawtooth Down
       0x09,0x40, // Usage ET Spring
       0x09,0x41, // Usage ET Damper
       0x09,0x42, // Usage ET Inertia
       0x09,0x43, // Usage ET Friction
       0x09,0x28, // Usage ET Custom Force Data
       0x25,0x0C, // Logical Maximum Ch (12d)
       0x15,0x01, // Logical Minimum 1
       0x35,0x01, // Physical Minimum 1
       0x45,0x0C, // Physical Maximum Ch (12d)
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0xB1,0x00, // Feature
    0xC0 , // End Collection
    0x05,0x01, // Usage Page Generic Desktop
    0x09,0x3B, // Usage Reserved
    0x15,0x00, // Logical Minimum 0
    0x26,0xFF,0x01, // Logical Maximum 1FFh (511d)
    0x35,0x00, // Physical Minimum 0
    0x46,0xFF,0x01, // Physical Maximum 1FFh (511d)
    0x75,0x0A, // Report Size Ah (10d)
    0x95,0x01, // Report Count 1
    0xB1,0x02, // Feature (Variable)
    0x75,0x06, // Report Size 6
    0xB1,0x01, // Feature (Constant)
 0xC0 , // End Collection
 0x05,0x0F, // Usage Page Physical Interface
 0x09,0x89, // Usage Block Load Status
 0xA1,0x02, // Collection Datalink
    0x85,0x02, // Report ID 2
    0x09,0x22, // Usage Effect Block Index
    0x25,0x28, // Logical Maximum 28h (40d)
    0x15,0x01, // Logical Minimum 1
    0x35,0x01, // Physical Minimum 1
    0x45,0x28, // Physical Maximum 28h (40d)
    0x75,0x08, // Report Size 8
    0x95,0x01, // Report Count 1
    0xB1,0x02, // Feature (Variable)
    0x09,0x8B, // Usage Block Load Status
    0xA1,0x02, // Collection Datalink
       0x09,0x8C, // Usage Block Load Success
       0x09,0x8D, // Usage Block Load Full
       0x09,0x8E, // Usage Block Load Error
       0x25,0x03, // Logical Maximum 3
       0x15,0x01, // Logical Minimum 1
       0x35,0x01, // Physical Minimum 1
       0x45,0x03, // Physical Maximum 3
       0x75,0x08, // Report Size 8
       0x95,0x01, // Report Count 1
       0xB1,0x00, // Feature
    0xC0 , // End Collection
    0x09,0xAC, // Usage Undefined
    0x15,0x00, // Logical Minimum 0
    0x27,0xFF,0xFF,0x00,0x00, // Logical Maximum FFFFh (65535d)
    0x35,0x00, // Physical Minimum 0
    0x47,0xFF,0xFF,0x00,0x00, // Physical Maximum FFFFh (65535d)
    0x75,0x10, // Report Size 10h (16d)
    0x95,0x01, // Report Count 1
    0xB1,0x00, // Feature
 0xC0 , // End Collection
 0x09,0x7F, // Usage PID Pool Report
 0xA1,0x02, // Collection Datalink
    0x85,0x03, // Report ID 3
    0x09,0x80, // Usage RAM Pool size
    0x75,0x10, // Report Size 10h (16d)
    0x95,0x01, // Report Count 1
    0x15,0x00, // Logical Minimum 0
    0x35,0x00, // Physical Minimum 0
    0x27,0xFF,0xFF,0x00,0x00, // Logical Maximum FFFFh (65535d)
    0x47,0xFF,0xFF,0x00,0x00, // Physical Maximum FFFFh (65535d)
    0xB1,0x02, // Feature (Variable)
    0x09,0x83, // Usage Simultaneous Effects Max
    0x26,0xFF,0x00, // Logical Maximum FFh (255d)
    0x46,0xFF,0x00, // Physical Maximum FFh (255d)
    0x75,0x08, // Report Size 8
    0x95,0x01, // Report Count 1
    0xB1,0x02, // Feature (Variable)
    0x09,0xA9, // Usage Device Managed Pool
    0x09,0xAA, // Usage Shared Parameter Blocks
    0x75,0x01, // Report Size 1
    0x95,0x02, // Report Count 2
    0x15,0x00, // Logical Minimum 0
    0x25,0x01, // Logical Maximum 1
    0x35,0x00, // Physical Minimum 0
    0x45,0x01, // Physical Maximum 1
    0xB1,0x02, // Feature (Variable)
    0x75,0x06, // Report Size 6
    0x95,0x01, // Report Count 1
    0xB1,0x03, // Feature (Constant, Variable)
    0xC0, // End Collection
 0xC0 // End Collection
 
}


Reference;
https://www.microchip.com/forums/m958105.aspx
Ttelmah



Joined: 11 Mar 2010
Posts: 14617

View user's profile Send private message

PostPosted: Tue May 21, 2019 2:00 pm     Reply with quote

If you look at the code you are copying from, the descriptor size is just
64bytes. The big block is the report.
vtrx



Joined: 11 Oct 2017
Posts: 29

View user's profile Send private message

PostPosted: Tue May 21, 2019 2:22 pm     Reply with quote

Is it possible to implement this example with CCS?
temtronic



Joined: 01 Jul 2010
Posts: 6807
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Tue May 21, 2019 2:57 pm     Reply with quote

yes, you can though I can't help as I stay away from USB...too dang slow, too complicated and NOT interrupt driven.
Ttelmah



Joined: 11 Mar 2010
Posts: 14617

View user's profile Send private message

PostPosted: Wed May 22, 2019 12:49 am     Reply with quote

Sorry Jay, but for a force feedback joystick, USB is the only solution.
and (of course) USB is interrupt driven. It's just that there is not a nice
simple interrupt for an event. Instead the handler has to interpret the
packet and work out what it is.

Now on this, the data here is the report descriptor. It contains separate
descriptors for a huge number of different possible packets that the
stick can generate (I count about 23...). This goes into the block starting:

const char USB_CLASS_SPECIFIC_DESC[] =

Have a look at the example for multihid, which shows a larger class
descriptor.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group