summaryrefslogtreecommitdiff
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
parentc56742e26dbf9c0f12fe78e22f551288dbfb5896 (diff)
feat: implemented several of the functions, added some more function declarations
-rw-r--r--streamdeck.c46
-rw-r--r--streamdeck.h17
2 files changed, 57 insertions, 6 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;
+}
+
diff --git a/streamdeck.h b/streamdeck.h
index 150623b..34b1e0a 100644
--- a/streamdeck.h
+++ b/streamdeck.h
@@ -1,10 +1,13 @@
#include <assert.h>
-#include <string.h>
+// #include <string.h>
#include <stdbool.h>
#include <libusb-1.0/libusb.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <hidapi/hidapi.h>
+// #include <stdlib.h>
+// #include <stdio.h>
+// #include <hidapi/hidapi.h>
+
+#include "util.h"
+
#define IMAGE_REPORT_LENGTH 8191
typedef struct Image image;
@@ -13,6 +16,8 @@ typedef struct Screen screen;
typedef struct Streamdeck streamdeck;
typedef struct Handler handler;
-int connect();
+streamdeck* connect(handler* deck);
int close();
-handler* create_hid_handler();
+int reset(handler* deck);
+int resetkeystream(handler* deck);
+