winebus.sys: Remove the now unused HID haptics combined waveform report.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Rémi Bernon 2022-03-14 10:29:38 +01:00 committed by Alexandre Julliard
parent ec059e2b7e
commit ecc881f731
2 changed files with 2 additions and 125 deletions

View File

@ -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;

View File

@ -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;
};