Implement the wrapper for Linux in ResourceManager, change IPU to I for HyperX Quadcast S, code cleanup

This commit is contained in:
Adam Honse 2023-01-25 19:42:23 -06:00
parent 45408ae159
commit 29d34f7768
11 changed files with 378 additions and 262 deletions

View file

@ -0,0 +1,46 @@
/*-----------------------------------------*\
| hidapi_wrapper.h |
| |
| Wrapper for hidapi that can select from |
| default or libusb backends on Linux |
| |
| Matt Silva (thesilvanator) 2022 |
| Adam Honse (calcprogrammer1) 2023 |
\*-----------------------------------------*/
#pragma once
#include <hidapi/hidapi.h>
#ifdef __linux__
#include <dlfcn.h>
#endif
/*-----------------------------------------------------*\
| Type definitions for libhidapi function pointers |
\*-----------------------------------------------------*/
typedef int (*hidapi_wrapper_send_feature_report) (hid_device*, const unsigned char*, size_t);
typedef int (*hidapi_wrapper_get_feature_report) (hid_device*, unsigned char*, size_t);
typedef int (*hidapi_wrapper_get_serial_num_string) (hid_device*, wchar_t*, size_t);
typedef hid_device* (*hidapi_wrapper_open_path) (const char*);
typedef hid_device_info* (*hidapi_wrapper_enumerate) (unsigned short, unsigned short);
typedef void (*hidapi_wrapper_free_enumeration) (hid_device_info*);
typedef void (*hidapi_wrapper_close) (hid_device*);
typedef const wchar_t* (*hidapi_wrapper_error) (hid_device*);
/*-----------------------------------------------------*\
| See comment at top of HyperXQuadcastSDetect.cpp for |
| details about the hidapi wrapper for this device |
\*-----------------------------------------------------*/
struct hidapi_wrapper
{
void* dyn_handle;
hidapi_wrapper_send_feature_report hid_send_feature_report;
hidapi_wrapper_get_feature_report hid_get_feature_report;
hidapi_wrapper_get_serial_num_string hid_get_serial_num_string;
hidapi_wrapper_open_path hid_open_path;
hidapi_wrapper_enumerate hid_enumerate;
hidapi_wrapper_free_enumeration hid_free_enumeration;
hidapi_wrapper_close hid_close;
hidapi_wrapper_error hid_error;
};