From ecc881f731fed583af9af3f626409758c28c86a3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Bernon?= Date: Mon, 14 Mar 2022 10:29:38 +0100 Subject: [PATCH] winebus.sys: Remove the now unused HID haptics combined waveform report. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: RĂ©mi Bernon Signed-off-by: Alexandre Julliard --- dlls/winebus.sys/hid.c | 107 +--------------------------------------- dlls/winebus.sys/unix_private.h | 20 -------- 2 files changed, 2 insertions(+), 125 deletions(-) diff --git a/dlls/winebus.sys/hid.c b/dlls/winebus.sys/hid.c index 46336716a70..5b18da5d8ed 100644 --- a/dlls/winebus.sys/hid.c +++ b/dlls/winebus.sys/hid.c @@ -331,12 +331,6 @@ BOOL hid_device_add_axes(struct unix_device *iface, BYTE count, USAGE usage_page } #include "pshpack1.h" -struct hid_haptics_waveform -{ - UINT16 intensity; - BYTE manual_trigger; - BYTE repeat_count; -}; struct hid_haptics_intensity { UINT16 rumble_intensity; @@ -348,68 +342,7 @@ BOOL hid_device_add_haptics(struct unix_device *iface) { struct hid_report_descriptor *desc = &iface->hid_report_descriptor; const BYTE haptics_features_report = ++desc->next_report_id[HidP_Feature]; - const BYTE haptics_waveform_report = ++desc->next_report_id[HidP_Output]; const BYTE haptics_intensity_report = ++desc->next_report_id[HidP_Output]; - const BYTE waveforms_template[] = - { - USAGE_PAGE(2, HID_USAGE_PAGE_HAPTICS), - USAGE(1, HID_USAGE_HAPTICS_SIMPLE_CONTROLLER), - COLLECTION(1, Logical), - REPORT_ID(1, haptics_features_report), - - USAGE(1, HID_USAGE_HAPTICS_WAVEFORM_LIST), - COLLECTION(1, NamedArray), - USAGE(4, (HID_USAGE_PAGE_ORDINAL<<16)|HAPTICS_WAVEFORM_RUMBLE_ORDINAL), /* HID_USAGE_HAPTICS_WAVEFORM_RUMBLE */ - USAGE(4, (HID_USAGE_PAGE_ORDINAL<<16)|HAPTICS_WAVEFORM_BUZZ_ORDINAL), /* HID_USAGE_HAPTICS_WAVEFORM_BUZZ */ - REPORT_COUNT(1, 2), - REPORT_SIZE(1, 16), - FEATURE(1, Data|Var|Abs|Null), - END_COLLECTION, - - USAGE(1, HID_USAGE_HAPTICS_DURATION_LIST), - COLLECTION(1, NamedArray), - USAGE(4, (HID_USAGE_PAGE_ORDINAL<<16)|HAPTICS_WAVEFORM_RUMBLE_ORDINAL), /* 0 (HID_USAGE_HAPTICS_WAVEFORM_RUMBLE) */ - USAGE(4, (HID_USAGE_PAGE_ORDINAL<<16)|HAPTICS_WAVEFORM_BUZZ_ORDINAL), /* 0 (HID_USAGE_HAPTICS_WAVEFORM_BUZZ) */ - REPORT_COUNT(1, 2), - REPORT_SIZE(1, 16), - FEATURE(1, Data|Var|Abs|Null), - END_COLLECTION, - - USAGE(1, HID_USAGE_HAPTICS_WAVEFORM_CUTOFF_TIME), - UNIT(2, 0x1001), /* seconds */ - UNIT_EXPONENT(1, -3), /* 10^-3 */ - LOGICAL_MINIMUM(4, 0x00000000), - LOGICAL_MAXIMUM(4, 0x7fffffff), - REPORT_SIZE(1, 32), - REPORT_COUNT(1, 1), - FEATURE(1, Data|Var|Abs), - /* reset global items */ - UNIT(1, 0), /* None */ - UNIT_EXPONENT(1, 0), - - REPORT_ID(1, haptics_waveform_report), - USAGE(1, HID_USAGE_HAPTICS_INTENSITY), - LOGICAL_MINIMUM(4, 0x00000000), - LOGICAL_MAXIMUM(4, 0x0000ffff), - REPORT_SIZE(1, 16), - REPORT_COUNT(1, 1), - OUTPUT(1, Data|Var|Abs), - - USAGE(1, HID_USAGE_HAPTICS_MANUAL_TRIGGER), - LOGICAL_MINIMUM(1, HAPTICS_WAVEFORM_NONE_ORDINAL), - LOGICAL_MAXIMUM(1, HAPTICS_WAVEFORM_LAST_ORDINAL), - REPORT_SIZE(1, 8), - REPORT_COUNT(1, 1), - OUTPUT(1, Data|Var|Abs), - - USAGE(1, HID_USAGE_HAPTICS_REPEAT_COUNT), - LOGICAL_MINIMUM(1, 0), - LOGICAL_MAXIMUM(1, 1), - REPORT_SIZE(1, 8), - REPORT_COUNT(1, 1), - OUTPUT(1, Data|Var|Abs), - END_COLLECTION, - }; const BYTE haptics_template[] = { USAGE_PAGE(2, HID_USAGE_PAGE_HAPTICS), @@ -419,6 +352,7 @@ BOOL hid_device_add_haptics(struct unix_device *iface) USAGE(1, HID_USAGE_HAPTICS_WAVEFORM_LIST), COLLECTION(1, NamedArray), + /* ordinal 1 and 2 are reserved for implicit waveforms */ USAGE(4, (HID_USAGE_PAGE_ORDINAL<<16)|3), REPORT_SIZE(1, 16), REPORT_COUNT(1, 1), @@ -427,6 +361,7 @@ BOOL hid_device_add_haptics(struct unix_device *iface) USAGE(1, HID_USAGE_HAPTICS_DURATION_LIST), COLLECTION(1, NamedArray), + /* ordinal 1 and 2 are reserved for implicit waveforms */ USAGE(4, (HID_USAGE_PAGE_ORDINAL<<16)|3), REPORT_SIZE(1, 16), REPORT_COUNT(1, 1), @@ -456,13 +391,7 @@ BOOL hid_device_add_haptics(struct unix_device *iface) }; iface->hid_haptics.features_report = haptics_features_report; - iface->hid_haptics.waveform_report = haptics_waveform_report; iface->hid_haptics.intensity_report = haptics_intensity_report; - iface->hid_haptics.features.waveform_list[0] = HID_USAGE_HAPTICS_WAVEFORM_RUMBLE; - iface->hid_haptics.features.waveform_list[1] = HID_USAGE_HAPTICS_WAVEFORM_BUZZ; - iface->hid_haptics.features.duration_list[0] = 0; - iface->hid_haptics.features.duration_list[1] = 0; - iface->hid_haptics.features.waveform_cutoff_time_ms = 1000; iface->hid_haptics.features.rumble.waveform = HID_USAGE_HAPTICS_WAVEFORM_RUMBLE; iface->hid_haptics.features.rumble.duration = 0; iface->hid_haptics.features.rumble.cutoff_time_ms = 1000; @@ -470,9 +399,6 @@ BOOL hid_device_add_haptics(struct unix_device *iface) iface->hid_haptics.features.buzz.duration = 0; iface->hid_haptics.features.buzz.cutoff_time_ms = 1000; - if (!hid_report_descriptor_append(desc, waveforms_template, sizeof(waveforms_template))) - return FALSE; - if (!hid_report_descriptor_append(desc, haptics_template, sizeof(haptics_template))) return FALSE; if (!hid_report_descriptor_append(desc, haptics_template, sizeof(haptics_template))) @@ -1153,34 +1079,6 @@ static void hid_device_set_output_report(struct unix_device *iface, HID_XFER_PAC io->Status = iface->hid_vtbl->haptics_start(iface, duration_ms, report->rumble_intensity, report->buzz_intensity); } } - else if (packet->reportId == haptics->waveform_report) - { - struct hid_haptics_waveform *report = (struct hid_haptics_waveform *)(packet->reportBuffer + 1); - UINT16 *rumble_intensity = haptics->waveform_intensity + HAPTICS_WAVEFORM_RUMBLE_ORDINAL; - UINT16 *buzz_intensity = haptics->waveform_intensity + HAPTICS_WAVEFORM_BUZZ_ORDINAL; - ULONG duration_ms; - - io->Information = sizeof(*report) + 1; - assert(packet->reportBufferLen == io->Information); - - if (report->manual_trigger == 0 || report->manual_trigger > HAPTICS_WAVEFORM_LAST_ORDINAL) - io->Status = STATUS_INVALID_PARAMETER; - else - { - if (report->manual_trigger == HAPTICS_WAVEFORM_STOP_ORDINAL) - { - memset(haptics->waveform_intensity, 0, sizeof(haptics->waveform_intensity)); - io->Status = iface->hid_vtbl->haptics_stop(iface); - } - else - { - haptics->waveform_intensity[report->manual_trigger] = report->intensity; - duration_ms = haptics->features.waveform_cutoff_time_ms; - if (!report->repeat_count) io->Status = STATUS_SUCCESS; - else io->Status = iface->hid_vtbl->haptics_start(iface, duration_ms, *rumble_intensity, *buzz_intensity); - } - } - } else if (packet->reportId == physical->device_control_report) { struct pid_device_control *report = (struct pid_device_control *)(packet->reportBuffer + 1); @@ -1387,7 +1285,6 @@ static void hid_device_set_feature_report(struct unix_device *iface, HID_XFER_PA io->Information = sizeof(*features) + 1; assert(packet->reportBufferLen == io->Information); - haptics->features.waveform_cutoff_time_ms = features->waveform_cutoff_time_ms; haptics->features.rumble.cutoff_time_ms = features->rumble.cutoff_time_ms; haptics->features.buzz.cutoff_time_ms = features->buzz.cutoff_time_ms; io->Status = STATUS_SUCCESS; diff --git a/dlls/winebus.sys/unix_private.h b/dlls/winebus.sys/unix_private.h index 081e57dc53d..0763d084823 100644 --- a/dlls/winebus.sys/unix_private.h +++ b/dlls/winebus.sys/unix_private.h @@ -123,21 +123,6 @@ struct hid_report_descriptor BYTE next_report_id[3]; }; -/* HID spec uses None / Stop names for the first two implicit waveforms, - * where Windows SDK headers use STOP / NULL for the corresponding HID - * usage constants. We're not actually using the usages anyway are we - * stick to the HID spec here. - */ -enum haptics_waveform_ordinal -{ - HAPTICS_WAVEFORM_NONE_ORDINAL = 1, /* implicit, not included in waveform_list / duration_list */ - HAPTICS_WAVEFORM_STOP_ORDINAL = 2, /* implicit, not included in waveform_list / duration_list */ - HAPTICS_WAVEFORM_RUMBLE_ORDINAL = 3, - HAPTICS_WAVEFORM_BUZZ_ORDINAL = 4, - HAPTICS_WAVEFORM_FIRST_ORDINAL = HAPTICS_WAVEFORM_RUMBLE_ORDINAL, - HAPTICS_WAVEFORM_LAST_ORDINAL = HAPTICS_WAVEFORM_BUZZ_ORDINAL, -}; - #include "pshpack1.h" struct hid_haptics_feature { @@ -148,9 +133,6 @@ struct hid_haptics_feature struct hid_haptics_features { - WORD waveform_list[HAPTICS_WAVEFORM_LAST_ORDINAL - HAPTICS_WAVEFORM_FIRST_ORDINAL + 1]; - WORD duration_list[HAPTICS_WAVEFORM_LAST_ORDINAL - HAPTICS_WAVEFORM_FIRST_ORDINAL + 1]; - UINT waveform_cutoff_time_ms; struct hid_haptics_feature rumble; struct hid_haptics_feature buzz; }; @@ -159,9 +141,7 @@ struct hid_haptics_features struct hid_haptics { struct hid_haptics_features features; - UINT16 waveform_intensity[HAPTICS_WAVEFORM_LAST_ORDINAL + 1]; BYTE features_report; - BYTE waveform_report; BYTE intensity_report; }; -- 2.11.4.GIT