Force Feedback (descriptor help)

Post
ulao
Senior Member
2010/03/23 08:01:15
Hi all been trying to use the DX ( HID ) based Force Feedback for some time now. Most of the info I find is on this site so I hope at most I get one reply. Seems as most sites ovoid this like the plague.

If anyone has hidView please, please do share.. I can not find this thing, and the new usbcv is crap.. I think I could help myself if I had access to such a tool.

I'm only interested in the vibration and thinking I need to use constant force for it.

Here is my descriptor is usblyzer sees it. So far its the best I can come up with.


Usage Page (Generic Desktop)     05 01
Usage (Joystick)     09 04
Collection (Application)     A1 01
Report Size (8)     75 08
Report Count (6)     95 06
Logical Minimum (0)     15 00
Logical Maximum (255)     26 FF 00
Physical Minimum (0)     35 00
Physical Maximum (255)     46 FF 00
Usage (X)     09 30
Usage (Y)     09 31
Usage (Z)     09 32
Usage (Rx)     09 33
Usage (Ry)     09 34
Usage (Rz)     09 35
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)     81 02
Report Size (8)     75 08
Report Count (2)     95 02
Logical Minimum (0)     15 00
Logical Maximum (255)     26 FF 00
Usage (Slider)     09 36
Usage (Dial)     09 37
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)     81 02
Unit (None)     65 00
Usage Page (Button)     05 09
Logical Minimum (0)     15 00
Logical Maximum (1)     25 01
Report Size (1)     75 01
Report Count (24)     95 18
Usage Minimum (Button 1)     19 01
Usage Maximum (Button 24)     29 18
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)     81 02
Usage Page (Physical Input Device)     05 0F
Usage (PID State Report)     09 92
Collection (Logical)     A1 02
    Usage (Device Paused)     09 9F
    Usage (Actuators Enabled)     09 A0
    Usage (Safety Switch)     09 A4
    Usage (Actuator Override Switch)     09 A5
    Usage (Actuator Power)     09 A6
    Logical Minimum (0)     15 00
    Logical Maximum (1)     25 01
    Physical Minimum (0)     35 00
    Physical Maximum (1)     45 01
    Report Size (1)     75 01
    Report Count (5)     95 05
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)     81 02
    Report Count (3)     95 03
    Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)     81 03
    Usage (Effect Playing)     09 94
    Logical Minimum (0)     15 00
    Logical Maximum (1)     25 01
    Physical Minimum (0)     35 00
    Physical Maximum (1)     45 01
    Report Size (1)     75 01
    Report Count (1)     95 01
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)     81 02
    Usage (Effect Block Index)     09 22
    Logical Minimum (1)     15 01
    Logical Maximum (40)     25 28
    Physical Minimum (1)     35 01
    Physical Maximum (40)     45 28
    Report Size (7)     75 07
    Report Count (1)     95 01
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)     81 02
End Collection     C0
Usage (Set Effect Report)     09 21
Collection (Logical)     A1 02
    Usage (Effect Block Index)     09 22
    Logical Minimum (1)     15 01
    Logical Maximum (40)     25 28
    Physical Minimum (1)     35 01
    Physical Maximum (40)     45 28
    Report Size (8)     75 08
    Report Count (1)     95 01
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)     91 02
    Usage (Effect Type)     09 25
    Collection (Logical)     A1 02
        Usage (ET Constant Force)     09 26
        Logical Maximum (12)     25 0C
        Logical Minimum (1)     15 01
        Physical Minimum (1)     35 01
        Physical Maximum (12)     45 0C
        Report Size (8)     75 08
        Report Count (1)     95 01
        Output (Data,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)     91 00
    End Collection     C0
    Usage (Set Constant Force Report)     09 73
    Collection (Logical)     A1 02
        Usage (Effect Block Index)     09 22
        Logical Minimum (1)     15 01
        Logical Maximum (40)     25 28
        Physical Minimum (1)     35 01
        Physical Maximum (40)     45 28
        Report Size (8)     75 08
        Report Count (1)     95 01
        Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)     91 02
        Usage (Magnitude)     09 70
        Logical Minimum (-255)     16 01 FF
        Logical Maximum (255)     26 FF 00
        Physical Minimum (-10000)     36 F0 D8
        Physical Maximum (10000)     46 10 27
        Report Size (16)     75 10
        Report Count (1)     95 01
        Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)     91 02
    End Collection     C0
End Collection     C0
End Collection     C0





I also could add

0x09,0x92,    //    Usage ES Playing
     0xA1,0x02,    //    Collection Datalink
     0x09,0x9F,    //    Usage DS Device is Reset
     0x09,0xA0,    //    Usage DS Device is Pause
     0x09,0xA4,    //    Usage Actuator Power
     0x09,0xA5,    //    Usage Undefined
     0x09,0xA6,    //    Usage Undefined
     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 PID Device Control
     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

but I dont know that its needed, nor does it help.I did try the really big desc found on this site but it does not work ( I think do to the size ) but I dont really care to make a mess of things. I try to learn how its done and then use whats needed. So far fedit does not see any FFB devices. Is something else needed to sign this as a FFB device?


Something else I notices is if I try adding all of the Report Definitions my application page collection gets is too big. I use size of to determin the size but I guess there is a limitation some where.
post edited by ulao - 2010/03/23 20:06:08
xiaofan
Super Member
RE: Force Feedback (descriptor help) 2010/03/23 20:21:43
I have no ideas of Force Feedback. But here is a thread in the USB links collection (my signature) which should help.
http://www.microchip.com/forums/tm.aspx?m=320225
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/03/24 08:24:31
thx xiaofan, this is the thread I spoke of above, and the reason I'm here. I think I have sort of answered my problems, but now I'm running in to a limit.

I have a descriptor that needs a lot of info to make the physical layer work. Most examples show 10 pages of stuff. All of this info goes under the usage application collection. I get about 200 lines worth before I run in to trouble.


int getGenericUsbHidReportDescriptor_size(void)
{
   return sizeof(generic_usbHidReportDescriptor);
}



So I know that is not the issue. Commenting a few lines out allow the device to enumerate. un-commenting them will cause a failure. It does not matter what section I comment out. There must be a limitation somewhere, is this a new topic ?

Seems to be  wDescriptorLength  greater then  2 00FBh (251) bytes  where I get issues. guessing 255 ?
post edited by ulao - 2010/03/24 13:08:55
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/05/01 11:15:38
ok got past that issue, was a bug in v-usb. Now that I can use any size desc I tried the one arrow posted but the DX tool says no device. My config and device desc's look good. Is there something I need to do to get my device to report right?

Here is my export
http://spawnlinux.dyndns.org/tmp/test.html

post edited by ulao - 2010/05/01 11:18:38
verm_pat
New Member
RE: Force Feedback (descriptor help) 2010/05/01 12:09:45
Hi Ulao,

I got your mail, its been quite some time since i last worked on my force feedback project, but i'll try to find some info for you.
Maybe i evenhave the old hidview somewhere in my backups, gonna take me some time to find it though... I'll also find my report descriptor for you if you think it could be of some use...

With kind regards,
verm_pat
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/05/03 10:51:47
Hey thx, anything will help at this point. 
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/05/04 13:29:59
ok just got to thinking and did a test.. I new that my xbox (XBCD drivers ) worked with FFB, so for kicks I change my vendor and device to


0x5E, 0x04,    //vendor ID
0x89, 0x02, //product ID


and it worked? So why or how do I need to make my id's FFB compatible, : confused :

chinzei
Super Member
RE: Force Feedback (descriptor help) 2010/05/04 22:45:11
Xbox game controller is not a HID device, but HID-like vendor-specific device.
If you want to make a clone, this page will help you.

Inside Xbox Controller
http://euc.jp/periphs/xbox-controller.en.html

Tsuneo
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/05/05 20:25:20
thx chinzei, no I dont want to make a clone of the xbox ( thx for the info ) I want my device to be registered as a FFB device like other has success with. Not sure why my PID set is not working? Dont see how its even relevant.
chinzei
Super Member
RE: Force Feedback (descriptor help) 2010/05/05 20:57:39
You assigned VID/PID of Xbox game controller to your device.
It means you assigned specific PC device driver (XBCD drivers) to your device.
In principle, the idea is good. But the controller is not a HID device, in this case.

I'm not sure, if the parser of default HID device driver on Windows passes Force Feedback USAGEs to DirectX (DirectInput), or not. I suppose it doesn't. Usually, joystick manufacturers distribute mini-drivers specific to their products, to bind HID reports to DirectInput. To use such mini-driver, assign VID/PID of commercial joystick to your device, whose device driver is already installed to your PC. And then, "clone" its report descriptor and input/output reports. If you could specify the INF file of the device driver, you can add another VID/PID to the INF.

Of course, writing custom mini-driver is better, but it's hard.

Tsuneo
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/05/07 16:47:26
yes, I get that now.. My intent was not to keep that pid assigned. I just didnt understand why it worked at first. I do now.

'm not sure, if the parser of default HID device driver on Windows passes Force Feedback USAGEs to DirectX (DirectInput), or not. I suppose it doesn't. 
It does, and does so quite UN_elegantly.

At the moment I'm trying to ovoid drivers. What I want is to have the same success Arrow and verm had. If I get there I can easily see if my usb firmware can use the data form the endpoint.
post edited by ulao - 2010/05/07 16:53:12
chinzei
Super Member
RE: Force Feedback (descriptor help) 2010/05/09 12:00:45


'm not sure, if the parser of default HID device driver on Windows passes Force Feedback USAGEs to DirectX (DirectInput), or not. I suppose it doesn't. 

It does, and does so quite UN_elegantly.

If so, Windows do it in undocumented way.

DirectInput - Force Feedback section of WDK describes that INF file for FFB device has to register "OEMForceFeedback" key on the registry (*1). DirectInput searches for this registry key to count up FFB devices.

I searched for the word, "OEMForceFeedback", in C:\Windows\inf directory on XP. Just these pre-installed INF files have the AddReg entries for this key.

lwusbhid.inf (Logitech Wingman Force)
sdwndr2k.inf (SideWinder FFB 2 / FFB Wheel)
swnt.inf (SideWinder FFB Pro)

As these INF specifies VID/PID for their target device, they aren't applied to usual HID joystick of other VID/PID. For such a device, default INF, input.inf, is applied. input.inf has no OEMForceFeedback entry.

In this reason, I thought usual joystick isn't registered as FFB device.


(*1) OEMForceFeedback Registry Settings
http://msdn.microsoft.com/en-us/library/ff542434(VS.85).aspx
New joystick registry entries are found under an OEM-specific key that is installed for each joystick device type under the key with the registry path HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM. The data stored under this OEM-specific key is initialized when the device is first installed and then used for reference purposes only. In addition to the values defined for existing joystick devices, two new optional generic values and a set of force feedback specific values have been defined.
...
A new OEMForceFeedback key has been defined to hold force feedback specific keys and values. Under this key is an Effects subkey that contains two values for each effect.



Tsuneo
post edited by chinzei - 2010/05/09 12:09:48
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/05/21 10:06:03
Tsuneo, good point! I still wonder how others said it was recognized. I would guess just adding this reg entry will do, and an easy .reg file for the user.  Going to try it out.

I did find this but it was not much help.
http://social.microsoft.com/Forums/en-IE/Offtopic/thread/63b800b9-d575-4c83-80d1-86dcf10bb514


post edited by ulao - 2010/05/21 10:13:05
chinzei
Super Member
RE: Force Feedback (descriptor help) 2010/05/21 11:51:05
I still wonder how others said it was recognized.

I suppose they assigned one of VID/PID of SideWinder to their device.

VID/PID = 045E / 001B (SideWinder FFB 2)
or
VID/PID = 045E / 0034 (SideWinder FFB Wheel)

And run it on Win XP (Vista and 7 don't have pre-installed driver for SideWinder)
It invokes pre-installed driver and registry setting on INF for SideWinder.

The device driver for these SideWinders base on USB PID (Physical Interface Device) standard (roughly), and it accepts customization (simplify) in some extent. I think this is what they do.

Tsuneo
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/05/22 08:39:37
Well, surprisingly, my pid/vid has OEMForceFeedback and effects after that. I know for a fact I didnt not do that so the descriptor must have. I see its missing its children as SideWinder has 12 but mine has 1. Going to try deleting and seeing if the descriptor is doing this.

UPDATE:: Yes, When I include the Force Feed Back descriptions it does in fact put it under the joystick->oem->my vid/pid->OEMForceFeedback, where as If I dont have the descriptions it does not. I would guess if used the sidewinder descriptor I'd get all 12, but either was my device is still not read a a force feed back so there must be more hidden magic.




UPDATE 2::
"Well blow me down Olive." I just deleted the oemFFB and put in the side winder description and it worked. So the reason it was not working is that I needed to delete the oem FFB first. Oh brother.. Ok I think I can make this work now that I see what my description ( by looking in the registry ) is missing .

I did take the liberty to delete the 11 other force types in sidewinder and it still worked. I also saw my descriptor's string for constant force was just a bit different them sidewinders. So I change my reg setting to match sidewinders and its still not a recognized device. There may be more than one registry setting for all I know.

At this point my only guess is that GUID_ConstantForce may require an ID. I'm not using ID's with my report at the moment I may need to.

UPDATE 3:: Well I took the side winder description and merged it in to mine. And force feed back is report to work going to try to talk to it and trip this 100 page descriptor down as well as I can as I dont need any forces but the const. Stay tuned...

update 4:: Staring to feel like a blog here, hope some one finds this useful someday. I see there is a bit more to this, same settings must be sent from the client, never saw this before.

0x05,0x01, // Usage Page Generic Desktop
0x09,0x04, // Usage Joystick
0xA1,0x01, // Collection Application
0x85,0x01, // Report ID 1
0x09,0x30, // Usage X
0x16,0x00,0xFE, // Logical Minimum FE00h (-512d)
0x26,0xFF,0x01, // Logical Maximum 1FFh (511d)
0x35,0x00, // Physical Minimum 0
0x46,0xFF,0x03, // Physical Maximum 3FFh (1023d)
0x75,0x0A, // Report Size Ah (10d)
0x95,0x01, // Report Count 1
0x81,0x02, // Input (Variable)
0x75,0x06, // Report Size 6
0x81,0x03, // Input (Constant, Variable)
0xA1,0x00, // Collection Linked
0x05,0x01, // Usage Page Generic Desktop
0x09,0x31, // Usage Y
0x15,0x00, // Logical Minimum 0
0x25,0x3F, // Logical Maximum 3Fh (63d)
0x35,0x00, // Physical Minimum 0
0x45,0x3F, // Physical Maximum 3Fh (63d)
0x75,0x06, // Report Size 6
0x95,0x01, // Report Count 1
0x81,0x02, // Input (Variable)
0x75,0x02, // Report Size 2
0x81,0x03, // Input (Constant, Variable)
0x09,0x35, // Usage Rz
0x75,0x06, // Report Size 6
0x81,0x02, // Input (Variable)
0x75,0x02, // Report Size 2
0x81,0x03, // Input (Constant, Variable)
0xC0 , // End Collection
0x05,0x09, // Usage Page Button
0x15,0x00, // Logical Minimum 0
0x19,0x01, // Usage Minimum Button 1
0x29,0x08, // Usage Maximum Button 8
0x25,0x01, // Logical Maximum 1
0x35,0x00, // Physical Minimum 0
0x45,0x01, // Physical Maximum 1
0x75,0x01, // Report Size 1
0x95,0x08, // Report Count 8
0x81,0x02, // Input (Variable)
0x06,0x01,0xFF, // Usage Page Generic Desktop
0x09,0x49, // Usage Undefined
0x75,0x01, // Report Size 1
0x95,0x01, // Report Count 1
0x81,0x02, // Input (Variable)
0x75,0x07, // Report Size 7
0x81,0x03, // Input (Constant, Variable)
0x05,0x0F, // Usage Page Physical Interface
0x09,0x92, // Usage ES Playing
0xA1,0x02, // Collection Datalink
0x85,0x02, // Report ID 2
0x09,0x9F, // Usage DS Device is Reset
0x09,0xA0, // Usage DS Device is Pause
0x09,0xA4, // Usage Actuator Power
0x09,0xA5, // Usage Undefined
0x09,0xA6, // Usage Undefined
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 PID Device Control
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

Notice that the bold is still part of the input description. So its expecting some sort of data to go out.

I tried to send these settings with no avail.

    reportBuffer[0]=2;//report ID
    reportBuffer[1]=1;// Usage DS Device is Reset
    reportBuffer[2]=0;// Usage DS Device is Pause
    reportBuffer[3]=0x5a;// Usage Actuator Power
    reportBuffer[4]=0;// Usage Undefined
    reportBuffer[5]=0;// Usage Undefined
    reportBuffer[6]=3;// report count 3
    reportBuffer[7]=1;// Usage PID Device Control
    reportBuffer[8]=1;// Effect block

But I really dont know what to set, just guesses.BTW: Fedit is reporting that the effect is not set up and is NULL.

According to Arrow in another topic I should get a request for Report ID 3 ( feature ) form the host. But I dont see any data... Arrow also never mentioned what to do for Report ID 2 ( from device to host )

update5:: Ok its working. Most of the problem right now is my usb firmware. Going to try to work out the issues and strip down this monster descriptor. So for anyone interested I have finally master this stupid hid-based no driver FFB stuff... What an adventure that was...

And my last update..  
Got it... Finally figure it out. As there is no interest here I'm not going to try to explain it but most of what one would need is in this post. Its just a bit comlicated to figure out. Fee free to PM me in the event you get here from searching.


post edited by ulao - 2010/06/02 06:24:55
Easty.
New Member
RE: Force Feedback (descriptor help) 2010/06/15 04:28:22
you have disabled your PM-Receive-Feature (?) :-D
m_gray
Starting Member
RE: Force Feedback (descriptor help) 2010/06/15 05:37:47
Hello ulao!

I think we met on the USB IF forum (RIP.. apparently)

I would have PM'd you but looks like you blocked the function.

I thought that Report ID 2 was just some kind of safety report. Do you really use it to drive your effects?

Regards, great job btw!
ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/06/15 06:40:31
you have disabled your PM-Receive-Feature (?) :-D
what a stupid default setting.. Ok fixed ..


m_gray, yes we did meet ;) about the report 2 assuming you mean the get?

Once an effect is ran I get:
SET report 1 : this is out index effect. Save this data it looks like 01 03 00 00 where 3 is our index.
than immediately you get
GET report 2 : you need to send a : 02 03 01 ff ff where 3 is the index. The other data seems to be irrelevant for my purposes but has to do with memory management.

If you mean the report send at the top of the descriptor I think your right, i never use it. but yes I did think so at first.


m_gray - looks like your pm is disabled as well.
post edited by ulao - 2010/06/15 07:11:36
m_gray
Starting Member
RE: Force Feedback (descriptor help) 2010/06/15 07:35:45
Indeed, the no PM is default![&:]

I got the good set and get features, thx. I was thinking about the IN report ID 2 at the top of the descriptor! I don't use it either!

ulao
Senior Member
RE: Force Feedback (descriptor help) 2010/06/15 07:48:33
I think its used for pausing an effect form the client. Although I dont see an immediate need for this.

So gray, are you suggesting your the second person in the entire world that has made this work without becoming MIA, mute, scares, or otherwise consumed by the evil FFB internet troll? I warn you of extreme caution in answering that, as it would seem people end up missing as a result.

Also what happened to the USB-IF forums?
post edited by ulao - 2010/06/15 08:05:34
willynovi
New Member
Re: RE: Force Feedback (descriptor help) 2010/06/17 20:09:24
hi ulao, I´m also working on a FFB device, but I´m not using it as a PID, instead I made a descriptor liky a joystick and an in report of some bytes.
In host PC I run a program which sends data to joystick, like constant force.
I am working on a steering wheel.

Did you find something usefull using the device like a PID?

regards, Willy
m_gray
Starting Member
Re: RE: Force Feedback (descriptor help) 2010/06/18 08:02:59
Hello Willy,

The interesting thing using PID is that microsoft DircetInput (part of DirectX) opens the collection to send the effects automatically (when the game developers take the time to implement it)

You probably are writing a small driver that translates the effect instructions to your input frame data. This works too, but the PID/DirectInput driver is installed automatically on Windows devices, so you don't have anything to install. This is the main reason to use a PID device.

regards,
Paul

willynovi
New Member
Re: RE: Force Feedback (descriptor help) 2010/06/18 10:59:55
hi Paul, thanks for your reply.

right now I´m working on hardware, on a H bridge to control motor and manage some effects like constant force, vibration sinewave, triangular, etc.
Next I´ll work on PID descriptor.
As I could understand, if game sends effects to directinput I could send this effects directly to my device?

regards, Willy
ulao
Senior Member
Re: RE: Force Feedback (descriptor help) 2010/06/20 16:49:09
You got it Willy, that is why the PID is handy.  Think of the PID is  a driverless solution that latches on the the DirectX paradigm.
 
post edited by ulao - 2010/06/23 19:23:22
weehau
Starting Member
Re: RE: Force Feedback (descriptor help) 2010/06/23 23:47:07
Hi guys,

I faced a similar issue like you, but I have no idea how to fix it.
This is my thread: http://www.microchip.com/forums/m508413.aspx
Would anyone assist on this? I am giving reward anyone fix this for me.
Thanks!
m_gray
Starting Member
Re: RE: Force Feedback (descriptor help) 2010/06/24 02:13:53
Weehau,

Not at all the same issue. What was difficult here is to handle the effects, which yours do not have.
gbr
Starting Member
Re: RE: Force Feedback (descriptor help) 2010/10/03 23:49:56
Hi all !!

After successfully testing (approx 3 months)my first use of USB on Pic 18 F 2550 and other biggies
Tests have been done on line and off line on IL2
The device incorporates a possible keys access (firmware only no specialdriver needed but keys are FIRMWARE)
The device is used as a supplement to a Microsoft FFB for separating the throttle and adding axes and extra keys

I now am looking forward to implement  FFB to a Thrustmaster Cougar
I would be interested in pooling all ideas and results to help or be helped in this exploration of new possibilities
On-line flyers are litterally DROOLING on the kind of force feed back given by the Microsoft Stick ,I am no talking about the fancy stuff just the spring proportional to the speed and  shaking when approaching stall .
Please contact my PM or leave Msg here

My implementation was done in ASM OSHON soft easily understandable
 
I had forgotten to mention the FANTASTIC help received from Tsuneo for the keys implementation
 

post edited by gbr - 2010/10/03 23:59:46
FFB_Boy
Starting Member
Re: RE: Force Feedback (descriptor help) 2011/04/21 04:12:06
Hi I guy
I've done a FFB device able to receive FFB value from game.
I'm looking for the way to use the value I got.
I read
Device Class Definition for Physical Interface Devices - USB.org 
But It is for PC not for Board
I've started a post with the value I receive
Decode Force Feedback USB protocol

I you have ideas to help me

Thks
ulao
Senior Member
Re: RE: Force Feedback (descriptor help) 2011/05/07 11:30:46
Ok, I dont get around microChip much guys. I do come here for the good info from time to time, but very seldom. Seems I have created some what the monster here. My inbox has become swamped with FFB inquires. So I wanted to leave my forums with you to make things easier. It will be required to register to post.

Please note I have spend a long time working with this FFB thing. Please respect that, this is all I ask. If you design a project from my information please show credit and link back as indicated on the following forum page. My project is under the GPL license.

http://blissbox.freeforum...rce-feed-back-t30.html




post edited by ulao - 2011/05/09 08:02:00
FFB_Boy
Starting Member
RE: Force Feedback (descriptor help) 2012/05/11 03:30:19
Hi ulao,
very interesting post I try to make a FFB board.
Actually the analog+button works fine but once I try to add FFB info like you
 
0x06,0x01,0xFF, // Usage Page Generic Desktop
0x09,0x49, // Usage Undefined
0x75,0x01, // Report Size 1
0x95,0x01, // Report Count 1
0x81,0x02, // Input (Variable)
0x75,0x07, // Report Size 7
0x81,0x03, // Input (Constant, Variable)
0x05,0x0F, // Usage Page Physical Interface
0x09,0x92, // Usage ES Playing
0xA1,0x02, // Collection Datalink
0x85,0x02, // Report ID 2
0x09,0x9F, // Usage DS Device is Reset
0x09,0xA0, // Usage DS Device is Pause
0x09,0xA4, // Usage Actuator Power
0x09,0xA5, // Usage Undefined
0x09,0xA6, // Usage Undefined
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 PID Device Control
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)

 
the joystick appears in the control panel but the value doesn't change .
I've understand on your post that I've to modify the way to send Standart data + FFB but I don't where it is in the code.
 
Thanks for your help