diff --git a/model/input/driver/hdf_hid_adapter.c b/model/input/driver/hdf_hid_adapter.c index b6e2218de11321ff6a43750382f95474e5ce0c8d..b838468a7d39d05f920373823f5d9f570474d532 100644 --- a/model/input/driver/hdf_hid_adapter.c +++ b/model/input/driver/hdf_hid_adapter.c @@ -121,6 +121,11 @@ void HidReportEvent(const void *inputDev, uint32_t type, uint32_t code, int32_t PushOnePackage((InputDevice *)inputDev, type, code, value); } +void GetInfoFromHid(HidInfo info) +{ + (void)info; +} + static int32_t HdfHIDDriverInit(struct HdfDeviceObject *device) { (void)device; @@ -161,4 +166,4 @@ struct HdfDriverEntry g_hdfHIDEntry = { .Init = HdfHIDDriverInit, }; -HDF_INIT(g_hdfHIDEntry); \ No newline at end of file +HDF_INIT(g_hdfHIDEntry); diff --git a/model/input/driver/hdf_hid_adapter.h b/model/input/driver/hdf_hid_adapter.h index fc2aac7b38d2d8bc4903f392bb258768ac7b10d0..67285c3856daf97c47b13764b6ae52c8e57386be 100644 --- a/model/input/driver/hdf_hid_adapter.h +++ b/model/input/driver/hdf_hid_adapter.h @@ -8,9 +8,62 @@ #ifndef HDF_HID_ADAPTER_H #define HDF_HID_ADAPTER_H + +#ifdef DIV_ROUND_UP +#undef DIV_ROUND_UP +#endif +#define DIV_ROUND_UP(nr, d) (((nr) + (d) - 1) / (d)) + +#ifdef BYTE_HAS_BITS +#undef BYTE_HAS_BITS +#endif +#define BYTE_HAS_BITS 8 + +#ifdef BITS_TO_LONG +#undef BITS_TO_LONG +#endif +#define BITS_TO_LONG(count) DIV_ROUND_UP(count, BYTE_HAS_BITS * sizeof(unsigned long)) + +#define INPUT_PROP_MAX 0x1f +#define HDF_INPUT_PROP_CNT (INPUT_PROP_MAX + 1) +#define EV_MAX 0x1f +#define HDF_EV_CNT (EV_MAX + 1) +#define ABS_MAX 0x3f +#define HDF_ABS_CNT (ABS_MAX + 1) +#define REL_MAX 0x0f +#define HDF_REL_CNT (REL_MAX + 1) +#define KEY_MAX 0x2ff +#define HDF_KEY_CNT (KEY_MAX + 1) +#define SND_MAX 0x07 +#define HDF_SND_CNT (SND_MAX + 1) +#define LED_MAX 0x0f +#define HDF_LED_CNT (LED_MAX + 1) +#define MSC_MAX 0x07 +#define HDF_MSC_CNT (MSC_MAX + 1) +#define SW_MAX 0x0f +#define HDF_SW_CNT (SW_MAX + 1) +#define FF_MAX 0x7f +#define HDF_FF_CNT (FF_MAX + 1) + typedef struct HidInformation { uint32_t devType; const char *devName; + + unsigned long devProp[BITS_TO_LONG(HDF_INPUT_PROP_CNT)]; + unsigned long eventType[BITS_TO_LONG(HDF_EV_CNT)]; + unsigned long absCode[BITS_TO_LONG(HDF_ABS_CNT)]; + unsigned long relCode[BITS_TO_LONG(HDF_REL_CNT)]; + unsigned long keyCode[BITS_TO_LONG(HDF_KEY_CNT)]; + unsigned long ledCode[BITS_TO_LONG(HDF_LED_CNT)]; + unsigned long miscCode[BITS_TO_LONG(HDF_MSC_CNT)]; + unsigned long soundCode[BITS_TO_LONG(HDF_SND_CNT)]; + unsigned long forceCode[BITS_TO_LONG(HDF_FF_CNT)]; + unsigned long switchCode[BITS_TO_LONG(HDF_SW_CNT)]; + + uint16_t bustype; + uint16_t vendor; + uint16_t product; + uint16_t version; } HidInfo; enum HidType { @@ -20,8 +73,9 @@ enum HidType { HID_TYPE_UNKNOWN, /* Unknown input device type */ }; +void GetInfoFromHid(HidInfo info); void* HidRegisterHdfInputDev(HidInfo dev); void HidUnregisterHdfInputDev(const void *inputDev); void HidReportEvent(const void *inputDev, uint32_t type, uint32_t code, int32_t value); -#endif \ No newline at end of file +#endif