4 Commits

Author SHA1 Message Date
Tomasz Pakuła
c29bb95c40 Bump dkms version to 0.0.8 2024-08-28 17:30:18 +03:00
Tomasz Pakuła
b62cc67397 Update ffb test file 2024-08-28 17:30:18 +03:00
Lawstorant
f3648cc3c5 Add support for Moza FH5 compatibility mode 2024-08-28 17:30:18 +03:00
Oleg
3afa74502e Bump dkms version to 0.0.7 2024-08-26 16:53:47 +03:00
4 changed files with 56 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
PACKAGE_NAME="universal-pidff" PACKAGE_NAME="universal-pidff"
PACKAGE_VERSION="0.0.6" PACKAGE_VERSION="0.0.8"
MAKE[0]="make KVERSION=$kernelver" MAKE[0]="make KVERSION=$kernelver"
CLEAN="make clean" CLEAN="make clean"
BUILT_MODULE_NAME[0]="hid-universal-pidff" BUILT_MODULE_NAME[0]="hid-universal-pidff"

View File

@@ -1,67 +1,91 @@
00000000 # Constant force left 00000000 # Constant force left
00000000 > UPLOAD id:-1 dir:16384 type:CONSTANT level:9000 00000000 > UPLOAD id:-1 dir:16384 type:CONSTANT level:5000
00000000 < 0 id:0 00000000 < 0 id:0
00000000 > PLAY 0 1 00000000 > PLAY 0 1
03000000 # Constant force right 03000000 # Constant force right
03000000 > UPLOAD id:0 dir:16384 type:CONSTANT level:-9000 03000000 > UPLOAD id:0 dir:16384 type:CONSTANT level:-5000
06000000 # Spring 06000000 # Spring
06000000 > REMOVE 0 06000000 > REMOVE 0
06000000 > UPLOAD id:-1 dir:16384 type:SPRING left_coeff:32767 right_coeff:32767 06000000 > UPLOAD id:-1 dir:16384 type:SPRING left_coeff:2000 right_coeff:2000
06000000 < 0 id:0 06000000 < 0 id:0
06000000 > PLAY 0 1 06000000 > PLAY 0 1
07000000 # Move the wheel yourself to test these next 3 effects 07000000 # Move the wheel yourself to test these next 3 effects
09000000 > STOP 0 09000000 > STOP 0
09000000 # Damper 09000000 # Damper
09000000 > REMOVE 0 09000000 > REMOVE 0
09000000 > UPLOAD id:-1 dir:16384 type:DAMPER left_coeff:32767 right_coeff:32767 09000000 > UPLOAD id:-1 dir:16384 type:DAMPER left_coeff:32767 right_coeff:32767
09000000 < 0 id:0 09000000 < 0 id:0
09000000 > PLAY 0 1 09000000 > PLAY 0 1
12000000 # Friction 12000000 # Friction
12000000 > STOP 0 12000000 > STOP 0
12000000 > REMOVE 0 12000000 > REMOVE 0
12000000 > UPLOAD id:-1 dir:16384 type:FRICTION left_coeff:32767 right_coeff:32767 12000000 > UPLOAD id:-1 dir:16384 type:FRICTION left_coeff:32767 right_coeff:32767
12000000 < 0 id:0 12000000 < 0 id:0
12000000 > PLAY 0 1 12000000 > PLAY 0 1
15000000 # Inertia 15000000 # Inertia
15000000 > STOP 0 15000000 > STOP 0
15000000 > REMOVE 0 15000000 > REMOVE 0
15000000 > UPLOAD id:-1 dir:16384 type:INERTIA left_coeff:32767 right_coeff:32767 15000000 > UPLOAD id:-1 dir:16384 type:INERTIA left_coeff:32767 right_coeff:32767
15000000 < 0 id:0 15000000 < 0 id:0
15000000 > PLAY 0 1 15000000 > PLAY 0 1
18000000 # Periodic sine 18000000 # Periodic sine
18000000 > REMOVE 0 18000000 > REMOVE 0
18000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SINE period:100 magnitude:9000 18000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SINE period:100 magnitude:9000
18000000 < 0 id:0 18000000 < 0 id:0
18000000 > PLAY 0 1 18000000 > PLAY 0 1
21000000 # Periodic square 21000000 # Periodic square
21000000 > REMOVE 0 21000000 > REMOVE 0
21000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SQUARE period:100 magnitude:9000 21000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SQUARE period:100 magnitude:4000
21000000 < 0 id:0 21000000 < 0 id:0
21000000 > PLAY 0 1 21000000 > PLAY 0 1
24000000 # Periodic triangle 24000000 # Periodic triangle
24000000 > REMOVE 0 24000000 > REMOVE 0
24000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:TRIANGLE period:100 magnitude:9000 24000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:TRIANGLE period:100 magnitude:9000
24000000 < 0 id:0 24000000 < 0 id:0
24000000 > PLAY 0 1 24000000 > PLAY 0 1
27000000 # Periodic saw up 27000000 # Periodic saw up
27000000 > REMOVE 0 27000000 > REMOVE 0
27000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SAW_UP period:100 magnitude:9000 27000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SAW_UP period:100 magnitude:4000
27000000 < 0 id:0 27000000 < 0 id:0
27000000 > PLAY 0 1 27000000 > PLAY 0 1
30000000 # Periodic saw down 30000000 # Periodic saw down
30000000 > REMOVE 0 30000000 > REMOVE 0
30000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SAW_DOWN period:100 magnitude:9000 30000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SAW_DOWN period:100 magnitude:4000
30000000 < 0 id:0 30000000 < 0 id:0
30000000 > PLAY 0 1 30000000 > PLAY 0 1
33000000 # Sine constant force emulation left 33000000 # Sine constant force emulation left
33000000 > REMOVE 0 33000000 > REMOVE 0
33000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SINE period:1000 magnitude:0 offset:12000 33000000 > UPLOAD id:-1 dir:16384 type:PERIODIC waveform:SINE period:1000 magnitude:0 offset:4000
33000000 < 0 id:0 33000000 < 0 id:0
33000000 > PLAY 0 1 33000000 > PLAY 0 1
36000000 # Sine constant force emulation right 36000000 # Sine constant force emulation right
36000000 > UPLOAD id:0 dir:16384 type:PERIODIC waveform:SINE period:1000 magnitude:0 offset:-12000 36000000 > UPLOAD id:0 dir:16384 type:PERIODIC waveform:SINE period:1000 magnitude:0 offset:-4000
39000000 > STOP 0
39000000 > REMOVE 0 39000000 > REMOVE 0
39000000 # Sine constant force emulation right
39000000 > UPLOAD id:0 dir:16384 type:PERIODIC waveform:SINE period:1000 magnitude:0 offset:-12000 40000000 # Back to center
40000000 > UPLOAD id:-1 dir:16384 type:FRICTION left_coeff:16000 right_coeff:16000
40000000 > UPLOAD id:-1 dir:16384 type:SPRING left_coeff:3000 right_coeff:3000
40000000 < 0 id:0
40000000 < 1 id:1
40100000 > PLAY 0 1
40100000 > PLAY 1 1
42000000 > STOP 1
42000000 > STOP 0 42000000 > STOP 0
42000000 > REMOVE 0 42000000 > REMOVE 1
42000000 > REMOVE 0
42000000 # Test end

View File

@@ -2,6 +2,7 @@
#ifndef __HID_IDS_H #ifndef __HID_IDS_H
#define __HID_IDS_H #define __HID_IDS_H
// Moza Racing
#define USB_VENDOR_ID_MOZA 0x346e #define USB_VENDOR_ID_MOZA 0x346e
#define USB_DEVICE_ID_MOZA_R3 0x0005 #define USB_DEVICE_ID_MOZA_R3 0x0005
#define USB_DEVICE_ID_MOZA_R5 0x0004 #define USB_DEVICE_ID_MOZA_R5 0x0004
@@ -9,6 +10,14 @@
#define USB_DEVICE_ID_MOZA_R12 0x0006 #define USB_DEVICE_ID_MOZA_R12 0x0006
#define USB_DEVICE_ID_MOZA_R16_R21 0x0000 #define USB_DEVICE_ID_MOZA_R16_R21 0x0000
// Moza Racing FH5 mode
#define USB_DEVICE_ID_MOZA_R3_FH5 0x0015
#define USB_DEVICE_ID_MOZA_R5_FH5 0x0014
#define USB_DEVICE_ID_MOZA_R9_FH5 0x0012
#define USB_DEVICE_ID_MOZA_R12_FH5 0x0016
#define USB_DEVICE_ID_MOZA_R16_R21_FH5 0x0010
// Cammus
#define USB_VENDOR_ID_CAMMUS 0x3416 #define USB_VENDOR_ID_CAMMUS 0x3416
#define USB_DEVICE_ID_CAMMUS_C5 0x0301 #define USB_DEVICE_ID_CAMMUS_C5 0x0301
#define USB_DEVICE_ID_CAMMUS_C12 0x0302 #define USB_DEVICE_ID_CAMMUS_C12 0x0302

View File

@@ -27,6 +27,16 @@ static const struct hid_device_id pidff_wheel_devices[] = {
.driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION }, .driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION },
{ HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R16_R21), { HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R16_R21),
.driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION }, .driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION },
{ HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R3_FH5),
.driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION },
{ HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R5_FH5),
.driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION },
{ HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R9_FH5),
.driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION },
{ HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R12_FH5),
.driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION },
{ HID_USB_DEVICE(USB_VENDOR_ID_MOZA, USB_DEVICE_ID_MOZA_R16_R21_FH5),
.driver_data = PIDFF_QUIRK_FIX_WHEEL_DIRECTION },
{ HID_USB_DEVICE(USB_VENDOR_ID_CAMMUS, USB_DEVICE_ID_CAMMUS_C5), { HID_USB_DEVICE(USB_VENDOR_ID_CAMMUS, USB_DEVICE_ID_CAMMUS_C5),
.driver_data = PIDFF_QUIRK_NO_DELAY_EFFECT }, .driver_data = PIDFF_QUIRK_NO_DELAY_EFFECT },
{ HID_USB_DEVICE(USB_VENDOR_ID_CAMMUS, USB_DEVICE_ID_CAMMUS_C12), { HID_USB_DEVICE(USB_VENDOR_ID_CAMMUS, USB_DEVICE_ID_CAMMUS_C12),
@@ -71,7 +81,7 @@ static int universal_pidff_input_mapping(struct hid_device *hdev, struct hid_inp
int code = button + BTN_JOYSTICK; int code = button + BTN_JOYSTICK;
// Detect the end of JOYSTICK buttons range // Detect the end of JOYSTICK buttons range
// KEY_AUDIO_DESC = 0x270 // KEY_NEXT_FAVORITE = 0x270
if (code > BTN_DEAD) if (code > BTN_DEAD)
code = button + KEY_NEXT_FAVORITE - JOY_RANGE; code = button + KEY_NEXT_FAVORITE - JOY_RANGE;