Files
OpenRGB/hidapi_wrapper/hidapi_wrapper.h

59 lines
3.2 KiB
C

/*---------------------------------------------------------*\
| hidapi_wrapper.h |
| |
| Wrapper for hidapi that can select from default or |
| libusb backends on Linux |
| |
| Matt Silva (thesilvanator) 2022 |
| Adam Honse (CalcProgrammer1) 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
#include <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_number_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*);
#if(HID_HOTPLUG_ENABLED)
typedef int (*hidapi_wrapper_hotplug_register_callback) (unsigned short vendor_id, unsigned short product_id, int events, int flags, hid_hotplug_callback_fn callback, void* user_data, hid_hotplug_callback_handle* callback_handle);
typedef int (*hidapi_wrapper_hotplug_deregister_callback) (hid_hotplug_callback_handle callback_handle);
#endif
/*---------------------------------------------------------*\
| 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_number_string hid_get_serial_number_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;
#if(HID_HOTPLUG_ENABLED)
hidapi_wrapper_hotplug_register_callback hid_hotplug_register_callback;
hidapi_wrapper_hotplug_deregister_callback hid_hotplug_deregister_callback;
#endif
};