diff --git a/include/nsyshid/hid.h b/include/nsyshid/hid.h new file mode 100644 index 0000000..143c1b4 --- /dev/null +++ b/include/nsyshid/hid.h @@ -0,0 +1,123 @@ +#pragma once +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct +{ + uint32_t handle; + uint32_t physical_device_inst; + uint16_t vid; + uint16_t pid; + uint8_t interface_index; + uint8_t sub_class; + uint8_t protocol; + + uint16_t max_packet_size_rx; + uint16_t max_packet_size_tx; +} HIDDevice; + +#define HID_DEVICE_DETACH 0 +#define HID_DEVICE_ATTACH 1 + +typedef struct _HIDClient HIDClient; + +typedef int32_t (*HIDAttachCallback)(HIDClient *p_hc,HIDDevice *p_hd,uint32_t attach); + +struct _HIDClient +{ + HIDClient *next; + HIDAttachCallback attach_cb; +}; + +typedef void HIDCallback(uint32_t handle,int32_t error,uint8_t *p_buffer,uint32_t bytes_transferred,void *p_user); + +int32_t +HIDSetup(void); + +int32_t +HIDTeardown(void); + +int32_t +HIDAddClient(HIDClient *p_client, HIDAttachCallback attach_callback); + +int32_t +HIDDelClient(HIDClient *p_client); + +int32_t +HIDGetDescriptor(uint32_t handle, + uint8_t descriptor_type, + uint8_t descriptor_index, + uint16_t language_id, + uint8_t *p_buffer, + uint32_t buffer_length, + HIDCallback hc, void *p_user); + +int32_t +HIDSetDescriptor(uint32_t handle, + uint8_t descriptor_type, + uint8_t descriptor_index, + uint16_t language_id, + uint8_t *p_buffer, + uint32_t buffer_length, + HIDCallback hc, + void *p_user); + +int32_t +HIDGetReport(uint32_t handle, + uint8_t report_type, + uint8_t report_id, + uint8_t *p_buffer, + uint32_t buffer_length, + HIDCallback hc, + void *p_user); + +int32_t +HIDSetReport(uint32_t handle, + uint8_t report_type, + uint8_t report_id, + uint8_t *p_buffer, + uint32_t buffer_length, + HIDCallback hc, + void *p_user); + +int32_t +HIDSetIdle(uint32_t handle, + uint8_t interface_index, + uint8_t duration, + HIDCallback hc, + void *p_user); + +int32_t +HIDSetProtocol(uint32_t handle, + uint8_t interface_index, + uint8_t protocol, + HIDCallback hc, + void *p_user); + +int32_t +HIDGetProtocol(uint32_t handle, + uint8_t interface_index, + uint8_t * protocol, + HIDCallback hc, + void *p_user); + +int32_t +HIDRead(uint32_t handle, + uint8_t *p_buffer, + uint32_t buffer_length, + HIDCallback hc, + void *p_user); + +int32_t +HIDWrite(uint32_t handle, + uint8_t *p_buffer, + uint32_t buffer_length, + HIDCallback hc, + void *p_user); + +#ifdef __cplusplus +} +#endif