diff options
author | Joshua Liu <joshua.liu@sourceobby.com> | 2025-05-18 22:59:36 -0400 |
---|---|---|
committer | Joshua Liu <joshua.liu@sourceobby.com> | 2025-05-18 22:59:36 -0400 |
commit | 98d6ca6cf4adc75f3016a7fd4b83950e8f96fdd3 (patch) | |
tree | 835e6308e6e49b2f48eb1256e45226e860308df1 /streamdeck.c | |
parent | c56742e26dbf9c0f12fe78e22f551288dbfb5896 (diff) |
feat: implemented several of the functions, added some more function declarations
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; +} + |