diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/FFBEFFECTS.md | 215 | ||||
| -rw-r--r-- | docs/INTEGRATION.md | 5 |
2 files changed, 170 insertions, 50 deletions
diff --git a/docs/FFBEFFECTS.md b/docs/FFBEFFECTS.md index e2b3edc..93dbb80 100644 --- a/docs/FFBEFFECTS.md +++ b/docs/FFBEFFECTS.md @@ -16,7 +16,7 @@ have model specific peculiarities, though. > USB interface, not the only available ones. ## GENERAL -### Playing +### Playing a single effect once ``` 60 00 - standard header 01 - ID @@ -28,6 +28,19 @@ have model specific peculiarities, though. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ``` +### Playing a single effect multiple or infinite times +``` + 60 00 - standard header + 01 - ID + 89 - playing options + 41 - play with count + 00 00 00 00 - play count, 0 for infinite, seems to be u16 + 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +``` + ### Stopping/removing (why are they rolled into one?) ``` 60 00 - standard header @@ -112,7 +125,7 @@ have model specific peculiarities, though. 60 00 - standard header 01 - ID 6a - new constant effect(?) - fe ff - strength *** + fe ff - strength between ff bf (-16385) and fd 3f (16381) *** 00 00 - attack_length 00 00 - attack_level *** 00 00 - fade_length @@ -136,7 +149,7 @@ have model specific peculiarities, though. 60 00 - standard header 01 - ID 0a - modify constant force - 05 16 - constant force *** + 05 16 - constant force between ff bf (-16385) and fd 3f (16381) *** 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -249,21 +262,34 @@ Ramps seem to follow triangle wave parameters. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ``` -#### Offset: `N/A` +#### Offset: `N/A` -## FF_SPRING: +## FF_DAMPER + FF_FRICTION + FF_INERTIA + FF_SPRING: ### Init: ``` 60 00 - standard header - 01 - ID - 64 - new conditional effect - fc 7f - positive coefficient (right?) - fc 7f - negative coefficient (left?) - fe ff - deadband (left?) (deadband + offset) (fe ff means no deadband) - fe ff - deadband (right?) (deadband + offset) - a6 6a a6 6a fe ff fe ff fe ff fe ff df 58 a6 6a 06 - some weird hard-coded - values to do with springs? - + 02 -ID + 64 - new conditional effect (sometimes e4) + fc 7f - positive coefficient (right) + between 01 80 (-32767) and fc 7f (32764) + fc 7f - negative coefficient (left) + between 01 80 (-32767) and fc 7f (32764) + fe ff - deadband right (offset + deadband) + between 01 80 (-32767) and ff 7f (32767) + fe ff - deadband left (offset - deadband) + between 01 80 (-32767) and ff 7f (32767) + fc 7f - positive saturation (right) + between 00 00 and fc 7f (32764) or a6 6a (27302) + fc 7f - negative saturation (left) + between 00 00 and fc 7f (32764) or a6 6a (27302) + fe ff fe ff fe ff fe ff - some weird hard-coded + values to do with friction? + fc 7f - max positive saturation (type 07 - fc 7f + type 06 - a6 6a) + fc 7f - max negative saturation (type 07 - fc 7f + type 06 - a6 6a) + 07 - type (damper, friction, inertia - 07 + spring - 06) 4f f7 17 - duration 00 00 @@ -274,36 +300,36 @@ Ramps seem to follow triangle wave parameters. ``` ### Modifying: -Same as below (FF_DAMPER + FF_FRICTION + FF_INERTIA) -## FF_DAMPER + FF_FRICTION + FF_INERTIA: -### Init: ``` - 60 00 - standard header - 02 -ID - 64 - new conditional effect - fc 7f - positive coefficient (right?) - fc 7f - negative coefficient (left?) - fe ff - deadband (left?) (deadband + offset) (fe ff means no deadband) - fe ff - deadband (right?) (deadband + offset) - fc 7f fc 7f fe ff fe ff fe ff fe ff fc 7f fc 7f 07 - some weird hard-coded - values to do with friction? - 4f - f7 17 - duration - 00 00 - 00 00 - offset - 00 ff ff - end of init - 00 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +4th byte 5th byte hex +00001110 01000001 0e 41 positive coefficient +00001110 01000010 0e 42 negative coefficient +00001110 01000011 0e 43 both coefficint +00001110 01001100 0e 4c right and left deadband +00001110 01010000 0e 50 positive saturation +00001110 01100000 0e 60 negative saturation +00001110 01110000 0e 70 both saturation +00001110 01001111 0e 4f coefficient + deadband +00001110 01111100 0e 7c deadband + saturation +00001110 01110011 0e 73 coefficient + saturation +00001110 01101101 0e 6d positive coefficient + deadband + negative saturation +01001110 01000001 4e 41 positive coefficient + duration +00001100 0c all effect specific parameters +01001001 49 duration +01001100 4c all effect specific parameters + duration ``` -### Modifying: +Any combination that makes sense is possible, not restricted to the list above. + +The order of the fields are defined in the `all effect specific parameters + duration` packet example below. + ``` positive coefficient: 60 00 02 - ID 0e 41 - 64 35 - value, signed (between 00 00 and 01 80?) + 64 35 - value, signed, between 01 80 (-32767) and fc 7f (32764) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -313,31 +339,121 @@ Same as below (FF_DAMPER + FF_FRICTION + FF_INERTIA) 60 00 02 - ID 0e 42 - 64 35 - value, signed (between 00 00 and ff 7f?) + 64 35 - value, signed, between 01 80 (-32767) and fc 7f (32764) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + positive and negative coefficient: + 60 00 + 01 - ID + 0e 43 + ab 67 - right coefficient, signed, between 01 80 (-32767) and fc 7f (32764) + 50 18 - left coefficient, signed, between 01 80 (-32767) and fc 7f (32764) + 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + deadband/offset: 60 00 02 - ID 0e 4c - 64 35 - deadband (right?) (deadband + offset) (fe ff means no deadband) - 00 00 - deadband (left?) (deadband + offset) + 64 35 - deadband right (offset + deadband) + between 01 80 (-32767) and ff 7f (32767) + 00 00 - deadband left (offset - deadband) + between 01 80 (-32767) and ff 7f (32767) + 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + positive saturation + 60 00 + 01 - ID + 0e 50 + fc 7f - value between 00 00 and fc 7f or a6 6a (defined in init) + 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + negative saturation + 60 00 + 01 - ID + 0e 60 + fc 7f - value between 00 00 and fc 7f or a6 6a (defined in init) + 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + positive and negative saturation + 60 00 + 01 - ID + 0e 70 + da 5d - right saturation between 00 00 and fc 7f or a6 6a (defined in init) + b9 0b - left saturation between 00 00 and fc 7f or a6 6a (defined in init) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + all effect specific parameters + 60 00 + 01 - ID + 0c + fe 1f - positive coefficient + 98 19 - negative coefficient + 96 59 - right deadband + fe 3f - left deadband + 65 26 - positive saturation + 98 19 - negative saturation + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + all effect specific parameters + duration + 60 00 + 01 - ID + 4c + 30 73 - positive coefficient + 30 73 - negative coefficient + ff 7f - right deadband + fc ff - left deadband + fd 5f - positive saturation + fd 5f - negative saturation + 06 - effect type (condition)? + 45 - update type, see below + 10 27 - length in milliseconds + 00 00 - offset in milliseconds + 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + ``` ### Duration: + +Update type: + +``` +6th byte hex +01000001 41 length +01000100 44 offset +01000101 45 length + offset +``` + ``` 60 00 - standard header 01 - ID - 49 06 41 - modify timing? + 49 + 06 - effect type (condition)? + 45 - update type 6c 20 - length in milliseconds - 00 00 00 00 00 00 00 00 + 00 00 - offset in milliseconds + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -351,10 +467,11 @@ Same as below (FF_DAMPER + FF_FRICTION + FF_INERTIA) 60 00 - standard header 01 - ID 6b - new periodic effect - 00 00 - magnitude *** - fe ff - offset (up/down) - 00 00 - phase (left/right) - e8 03 - period + 00 00 - magnitude between 00 00 and fc 7f (32764) *** + fe ff - offset (up/down) between ff bf (-16385) and fd 3f (16381) + 00 00 - phase (left/right) between 00 00 and 4a f7 (32586) + meaning is 0 to ~359 deg phase shift in 5b steps + e8 03 - period between 00 00 and ff ff (in milliseconds) 00 80 00 00 - attack_length 00 00 - attack_level *** @@ -380,7 +497,7 @@ Same as below (FF_DAMPER + FF_FRICTION + FF_INERTIA) 60 00 02 - ID 0e 01 - 64 35 - value, signed (between 00 00 and ff 7f?) + 64 35 - value, between 00 00 and fc 7f (32764) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -390,7 +507,7 @@ Same as below (FF_DAMPER + FF_FRICTION + FF_INERTIA) 60 00 02 - ID 0e 02 - 64 35 - value, signed (between 00 00 and ff 7f?) + 64 35 - value, between ff bf (-16385) and fd 3f (16381) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -400,7 +517,8 @@ Same as below (FF_DAMPER + FF_FRICTION + FF_INERTIA) 60 00 02 - ID 0e 04 - 64 35 - value, signed (between 80 01 and ff 7f?) + 64 35 - value, between 00 00 and 4a f7 (32586) in 5b steps + meaning is 0 to 359 deg phase shift 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -410,8 +528,7 @@ Same as below (FF_DAMPER + FF_FRICTION + FF_INERTIA) 60 00 02 - ID 0e 08 - 64 35 - value, signed (between 00 00 and I guess ff 7f?) (max value in - wireshark is 0d 07, but I don't know if that's a driver or program issue) + 64 35 - value, between 00 00 and ff ff (in milliseconds) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/docs/INTEGRATION.md b/docs/INTEGRATION.md index bcdb9f4..3d7c1aa 100644 --- a/docs/INTEGRATION.md +++ b/docs/INTEGRATION.md @@ -3,4 +3,7 @@ in the README. This page is intended to collect information about the topic. # NixOS -See https://github.com/Kimplul/hid-tmff2/issues/71. +The previous discussion was in https://github.com/Kimplul/hid-tmff2/issues/71, +but it seems to have been removed by GitHub. For now, please refer to + +https://search.nixos.org/packages?query=hid-tmff2 |
