none
Multi-device report with Force Feedback (FFB) RRS feed

  • Question

  • I have succeeded in creating a multi-device report using a single HID descriptor that contains up to 16 input reports. Each one assigned a different Report ID: 1 to 16.

    I also succeeded in creating a single joystick that supports FFB (Force Feedback). This was achieved by using many input, output and feature reports. Also, each one assigned a different ID number. I believe (but not certain) that the different reports are seen by the OS as a single device because they are all wrapped under one Collection (Application).

    Now, I'd like to create a multi-device report that also supports FFB. I'd like to have 16 identical joysticks, each supporting its own FFB features. I wonder how to do it. Should I duplicate my FFB descriptor 16 times? How should I treat the various Report IDs?



    • Edited by shaul_ei Wednesday, September 26, 2012 6:57 PM
    Tuesday, September 25, 2012 8:07 AM

Answers

  • If anyone is still interested, the problem is solved.

    Basically, you can use a report ID only once in the entire report, with the exception that you can reuse a report ID within a top level collection.

    If this sounds unclear, then here is my solution for a HID Report Descriptor:

    1. All top-level collections, each representing a device, are marked with Report ID 0x01 to 0x0F.
    2. All FFB-related collections are encapsulated in second-level (that is a level under the top-level) collections.
    3. All FFB-related collections have unique Report IDs. All Report IDs for the first device (whose top-level report ID is 0x01) are 0x10 to 0x1F, All Report IDs for the second device (whose top-level report ID is 0x02) are 0x20 to 0x2F, and so forth.

    It is tested.

    • Marked as answer by shaul_ei Wednesday, November 19, 2014 8:54 PM
    Wednesday, November 19, 2014 8:54 PM
  • Hi,

    My project is a virtual Joystick. Hence it is all in software.

    I'd be glad to share my code with you. It is a huge (Over 600 lines) header file that consists of a single array of char. 

    Struggled with it for weeks and my advice is: Use it as is and only then try to modify it one step at a time. If you fined ways to improve my code, I'm especially interested in multi-device, please share it. 

    Good luck.

    Thursday, November 22, 2012 1:48 PM

All replies

  • Anyone at all?
    Wednesday, September 26, 2012 6:58 PM
  • Hi

    I try to make my own FFB device .

    Which chip do you use to make your project , I work with a PIC

    Could you help me . I've some problem to make a descriptor compatbile with the pid.ddl.

    Could you share the descriptor part of your project ?

    Thanks 

    Thursday, November 22, 2012 1:18 PM
  • Hi,

    My project is a virtual Joystick. Hence it is all in software.

    I'd be glad to share my code with you. It is a huge (Over 600 lines) header file that consists of a single array of char. 

    Struggled with it for weeks and my advice is: Use it as is and only then try to modify it one step at a time. If you fined ways to improve my code, I'm especially interested in multi-device, please share it. 

    Good luck.

    Thursday, November 22, 2012 1:48 PM
  • Hi,

    Happy new year,

    Now I've time to look at your project and I've found 2 differents descriptor :

    ..\Incompatible\ForceFB\driver\sys\vjoy.h

    ..\Incompatible\ForceFB\driver\sys\hidReportDesc.h

    why are they so different ?

    Your project is amazing , are you alone to work on it ?

    Now I'm trying to install a virtual FFB driver to test it with FFB software.

    Where is the installer ? , I don't find the way to install the vjoy

    Thanks



    • Edited by FFB.BOY.30 Thursday, January 17, 2013 7:57 AM Prb
    Thursday, January 17, 2013 7:38 AM
  • Hi FFB Boy,

    This FFB branch is an experimental spin off of my base (Non FFB) project. Yes, I work alone on this project.

    vJoy.h calls hidReportDesc.h - the latter holds the actual descriptor. The former holds all kind of obsolete stuff.

    Please let me know hiow it goes and if I can help.

    Thursday, January 17, 2013 2:36 PM
  • Hi

    Today I've finished to code a simple USB stack on my board and tonight I will try to use your descriptor with my board.

    I've looked at this kind of descriptor before but I loose my mind with this , the HID documentation is not very clear about it.

    What is a multi-device ?

    Thanks

    Thursday, January 17, 2013 3:58 PM
  • Assuming you have a piece of hardware that contains a joystick and a Steering wheel. How will you write its device descriptor? Well, you do it by writing a device descriptor that holds more than one Device IDs.

    This is how I implement the option for up to 16 virtual joysticks - by assigning a unique device ID to each one of the devices. This is a multi-device descriptor that causes the driver to issue multi-device reports.

    Saturday, January 19, 2013 1:41 PM
  • I've a steering wheel and an hardaware able to drive a motor and read some potentiometers.

    I don't test you're descriptor actually , but I will change few part at the startup I just need 3 axis 10bits and 3 buttons.

    How did you make this descriptor ? it is really big.

    The first step is to make a simple device I will test multi device later ,when my prototype will work properly.

    Thanks

    Saturday, January 19, 2013 1:47 PM
  • As I wrote in the header file. I found an example and modified it. I agree that the USB documents are terrible so I had to make small changes and monitor the output. Slowly but surely I got where we are now.

    I don't even call it Alpha - it is just in the process of development.

     
    Saturday, January 19, 2013 1:54 PM
  • I try to compile the code but I've some problem so I've opened a topic in your forum to make tutorial "how to compile " :-)

    Thanks

    Saturday, January 19, 2013 8:48 PM
  • Hello. I am very intrigued by this project. I am looking for an alternative to ppjoy that will assign a virtual joystick to Windows, but with the ability to support force feedback games. If you guys come up with something please keep us posted :)
    Monday, May 13, 2013 1:36 AM
  • If anyone is still interested, the problem is solved.

    Basically, you can use a report ID only once in the entire report, with the exception that you can reuse a report ID within a top level collection.

    If this sounds unclear, then here is my solution for a HID Report Descriptor:

    1. All top-level collections, each representing a device, are marked with Report ID 0x01 to 0x0F.
    2. All FFB-related collections are encapsulated in second-level (that is a level under the top-level) collections.
    3. All FFB-related collections have unique Report IDs. All Report IDs for the first device (whose top-level report ID is 0x01) are 0x10 to 0x1F, All Report IDs for the second device (whose top-level report ID is 0x02) are 0x20 to 0x2F, and so forth.

    It is tested.

    • Marked as answer by shaul_ei Wednesday, November 19, 2014 8:54 PM
    Wednesday, November 19, 2014 8:54 PM
  • Hi, very interesting project. I also want to make it. Your descriptor worked and thank you for that. I can't handle the feature report. Please give me some clue. Thank you.
    Sunday, July 17, 2016 11:03 AM
  • Well, haven't been here for 2 years. Please be more specific so I can look into my code to see what (and if) I have done?

    Thursday, July 21, 2016 12:48 PM