Implement new functions in hid_driver_t in WiiU driver

== DETAILS

This implements the WiiU-specific functions.

Since the wiiu_hid_t data structure contains the handle and interface
index, the method signatures can be simplified quite a bit. And since
(at least for now) we want these to be synchronous, we don't need to
expose the callback parameters.
This commit is contained in:
gblues 2017-12-17 22:15:21 -08:00 committed by twinaphex
parent 678c4093c1
commit 661e5bf50b
3 changed files with 43 additions and 8 deletions

View File

@ -133,13 +133,44 @@ static void wiiu_hid_poll(void *data)
(void)data;
}
static void wiiu_hid_device_send_control(void *data,
uint8_t *buffer,
size_t buffer_size) {
struct wiiu_adapter *adapter = (struct wiiu_adapter *)data;
static int32_t wiiu_hid_set_report(void *data, uint8_t report_type, report_id,
void *report_data, uint32_t report_length)
{
wiiu_hid_t *hid = (wiiu_hid_t)data;
if(!adapter)
return;
if(!hid)
return -1;
return HIDSetReport(hid->handle,
report_type,
report_id,
report_data,
report_length,
NULL, NULL);
}
static int32_t wiiu_hid_set_idle(void *data, uint8_t duration)
{
wiiu_hid_t *hid = (wiiu_hid_t)data;
if(!hid)
return -1;
return HIDSetIdle(hid->handle,
hid->interface_index,
duration,
NULL, NULL);
}
static int32_t wiiu_hid_set_protocol(void *data, uint8_t protocol)
{
wiiu_hid_t *hid = (wiiu_hid_t)data;
if(!hid)
return -1;
return HIDSetProtocol(hid->handle,
hid->interface_index,
protocol,
NULL, NULL);
}
static void start_polling_thread(wiiu_hid_t *hid) {
@ -419,4 +450,8 @@ hid_driver_t wiiu_hid = {
wiiu_hid_joypad_rumble,
wiiu_hid_joypad_name,
"wiiu",
NULL, // send_control
wiiu_hid_set_report,
wiiu_hid_set_idle,
wiiu_hid_set_protocol
};

View File

@ -195,7 +195,7 @@ struct hid_driver
const char *ident;
void (*send_control)(void *data, uint8_t *buf, size_t size);
int32_t (*set_report)(void *, uint8_t, uint8_t, void *, uint32_t);
int32_t (*set_idle)(void *, uint8_t, uint8_t);
int32_t (*set_idle)(void *, uint8_t);
int32_t (*set_protocol)(void *, uint8_t);
};

View File

@ -104,7 +104,7 @@ HIDSetIdle(uint32_t handle,
int32_t
HIDSetProtocol(uint32_t handle,
uint8_t int32_terface_index,
uint8_t interface_index,
uint8_t protocol,
HIDCallback hc,
void *p_user);