diff options
-rw-r--r-- | streamdeck.c | 46 | ||||
-rw-r--r-- | streamdeck.h | 17 |
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); + |