1from libc.stddef cimport wchar_t, size_t
2
3cdef extern from "hidapi.h":
4    ctypedef struct hid_device:
5        pass
6
7    cdef struct hid_device_info:
8        char *path
9        unsigned short vendor_id
10        unsigned short product_id
11        wchar_t *serial_number
12        unsigned short release_number
13        wchar_t *manufacturer_string
14        wchar_t *product_string
15        unsigned short usage_page
16        unsigned short usage
17        int interface_number
18        hid_device_info *next
19
20    hid_device_info* hid_enumerate(unsigned short, unsigned short) nogil
21    void hid_free_enumeration(hid_device_info*)
22
23    hid_device* hid_open(unsigned short, unsigned short, const wchar_t*)
24    hid_device* hid_open_path(char *path)
25    void hid_close(hid_device *)
26    int hid_exit()
27    int hid_write(hid_device* device, unsigned char *data, int length) nogil
28    int hid_read(hid_device* device, unsigned char* data, int max_length) nogil
29    int hid_read_timeout(hid_device* device, unsigned char* data, int max_length, int milliseconds) nogil
30    int hid_set_nonblocking(hid_device* device, int value)
31    int hid_send_feature_report(hid_device* device, unsigned char *data, int length) nogil
32    int hid_get_feature_report(hid_device* device, unsigned char *data, int length) nogil
33    int hid_get_input_report(hid_device* device, unsigned char *data, int length) nogil
34
35    int hid_get_manufacturer_string(hid_device*, wchar_t *, size_t)
36    int hid_get_product_string(hid_device*, wchar_t *, size_t)
37    int hid_get_serial_number_string(hid_device*, wchar_t *, size_t)
38    int hid_get_indexed_string(hid_device*, int, wchar_t *, size_t)
39    wchar_t *hid_error(hid_device *)
40