diff options
Diffstat (limited to 'streamdeck.c')
-rw-r--r-- | streamdeck.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/streamdeck.c b/streamdeck.c index e11d79d..4ffe719 100644 --- a/streamdeck.c +++ b/streamdeck.c @@ -21,6 +21,10 @@ struct Handler { hid_device* handler; }; +struct Streamdeck { + handler* hid_handle; +}; + handler* create_hid_handler() { handler* res = NULL; res = malloc(sizeof(handler)); @@ -62,3 +66,45 @@ handler* create_hid_handler() { return res; } +streamdeck* connect(handler* deck) +{ + streamdeck* res = malloc(sizeof(streamdeck)); + res->hid_handle = deck; + if (hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number)) + {} + if (resetkeystream(res->hid_handle) != 0) + {} + return res; +} + +int close() +{} + +int createreadthread() +{ + return 0; +} + +int resetkeystream(handler* deck) +{ + unsigned char data[IMAGE_REPORT_LENGTH]; + if (!memset(data, 0x00, IMAGE_REPORT_LENGTH)) + return -2; + data[0] = 0x02; + if (hid_write(deck->handler, data, IMAGE_REPORT_LENGTH) == -1) + return -1; + return 0; +} + +int reset(handler* deck) +{ + unsigned char data[17]; + if (!memset(data, 0x00, 17)) + return -2; + data[0] = 0x0B; + data[1] = 0x63; + if (hid_send_feature_report(deck->handler, data, 17) == -1) + return -1; + return 0; +} + |