From 7e56881b8819cf4c9ad2f27f0ef702034c50c030 Mon Sep 17 00:00:00 2001 From: gblues Date: Sat, 2 Dec 2017 13:48:32 -0800 Subject: [PATCH] Some cleanups --- input/drivers_hid/wiiu_hid.c | 42 ++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/input/drivers_hid/wiiu_hid.c b/input/drivers_hid/wiiu_hid.c index b0ac012da4..0ebc7bc772 100644 --- a/input/drivers_hid/wiiu_hid.c +++ b/input/drivers_hid/wiiu_hid.c @@ -26,18 +26,14 @@ typedef struct wiiu_hid { void *empty; - uint32_t nsyshid; HIDClient *client; - HIDAttachCallback attach_callback; } wiiu_hid_t; typedef struct wiiu_hid_user { - unsigned char *buffer; - uint32_t nsishid; - void *hid_read; - void *hid_write; + uint8_t *buffer; uint32_t transfersize; + uint32_t handle; } wiiu_hid_user_t; static wiiu_hid_t *new_wiiu_hid_t(void); @@ -106,7 +102,7 @@ static void *wiiu_hid_init(void) if(!hid || !client) goto error; - HIDAddClient(client, hid->attach_callback); + HIDAddClient(client, wiiu_attach_callback); hid->client = client; return hid; @@ -139,7 +135,20 @@ static void wiiu_hid_poll(void *data) */ int32_t wiiu_attach_callback(HIDClient *client, HIDDevice *device, uint32_t attach) { - return 0; + switch(attach) { + int32_t result = DEVICE_UNUSED; + case HID_DEVICE_ATTACH: + // TODO: new device attached! Register it. + break; + case HID_DEVICE_DETACH: + // TODO: device detached! Unregister it. + break; + default: + // Undefined behavior, bail out + break; + } + + return result; } static void wiiu_read_callback(uint32_t handle, int32_t errno, unsigned char *buffer, uint32_t transferred, void *usr) { @@ -159,7 +168,6 @@ static wiiu_hid_t *new_wiiu_hid_t(void) { goto error; memset(hid, 0, sizeof(wiiu_hid_t)); - hid->attach_callback = wiiu_attach_callback; return hid; @@ -176,6 +184,7 @@ static void delete_wiiu_hid_t(wiiu_hid_t *hid) { if(hid->client) { HIDDelClient(hid->client); delete_hidclient(hid->client); + hid->client = NULL; } free(hid); @@ -195,6 +204,21 @@ static void delete_hidclient(HIDClient *client) { free(client); } +static wiiu_hid_user_t *new_wiiu_hid_user_t(void) { + wiiu_hid_user_t *user = calloc(1, sizeof(wiiu_hid_user_t)); + if(user != NULL) { + memset(client, 0, sizeof(wiiu_hid_user_t)); + } + + return client; +} + +static void delete_wiiu_hid_user_t(wiiu_hid_user_t *user) { + if(user) { + free(user); + } +} + hid_driver_t wiiu_hid = { wiiu_hid_init, wiiu_hid_joypad_query,