From 98d6ca6cf4adc75f3016a7fd4b83950e8f96fdd3 Mon Sep 17 00:00:00 2001 From: Joshua Liu Date: Sun, 18 May 2025 22:59:36 -0400 Subject: feat: implemented several of the functions, added some more function declarations --- streamdeck.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'streamdeck.c') 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; +} + -- cgit v1.2.3