summaryrefslogtreecommitdiff
path: root/streamdeck.c
diff options
context:
space:
mode:
authorJoshua Liu <joshua.liu@sourceobby.com>2025-05-18 22:59:36 -0400
committerJoshua Liu <joshua.liu@sourceobby.com>2025-05-18 22:59:36 -0400
commit98d6ca6cf4adc75f3016a7fd4b83950e8f96fdd3 (patch)
tree835e6308e6e49b2f48eb1256e45226e860308df1 /streamdeck.c
parentc56742e26dbf9c0f12fe78e22f551288dbfb5896 (diff)
feat: implemented several of the functions, added some more function declarations
Diffstat (limited to 'streamdeck.c')
-rw-r--r--streamdeck.c46
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;
+}
+