diff options
author | Florian Didron <0x6664@hey.com> | 2023-03-15 15:55:50 +0700 |
---|---|---|
committer | Florian Didron <0x6664@hey.com> | 2023-03-15 15:55:50 +0700 |
commit | 0f23d33a864b78b20b460eb9126ee17a26f6f0ac (patch) | |
tree | 2a22c9a0f6c116de05920b9350a2e9b77ccaecec /quantum/oryx.h | |
parent | 788d70c1a78a30d75a5a286f04d8451162bb7f6e (diff) |
feat: allows to take over the rgb leds and light them individually from raw hid
Diffstat (limited to 'quantum/oryx.h')
-rw-r--r-- | quantum/oryx.h | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/quantum/oryx.h b/quantum/oryx.h index 526299b4aa..25deb74f55 100644 --- a/quantum/oryx.h +++ b/quantum/oryx.h @@ -1,4 +1,15 @@ #pragma once +/* +The Oryx Webhid protocol + +Each HID packet is a series of bytes. The first byte is the packet type is the command. The rest of the bytes are the params. + +Before sending a packet, the host needs to be paired or should request a pairing code. + +The pairing code is a sequence of key positions derived from Oryx's firmware version code stored in the FIRMWARE_VERSION define. + +Once the host has paired, it can freely use the commands define in the Oryx_Command_Code enum for which the board will always respond with a Oryx_Event_Code or a Oryx_Error_Code. +*/ #include "quantum.h" #include "raw_hid.h" @@ -10,6 +21,7 @@ # define RAW_EPSIZE 32 #endif +#define ORYX_PROTOCOL_VERSION = 0x01 #define ORYX_STOP_BIT -2 #define PAIRING_BLINK_STEPS 512 #define PAIRING_BLINK_END PAIRING_BLINK_STEPS * 60 @@ -22,7 +34,10 @@ enum Oryx_Command_Code { ORYX_CMD_PAIRING_INIT, ORYX_CMD_PAIRING_VALIDATE, ORYX_CMD_DISCONNECT, - ORYX_SET_LAYER + ORYX_SET_LAYER, + ORYX_RGB_CONTROL, + ORYX_SET_RGB_LED, + ORYX_GET_PROTOCOL_VERSION = 0xFE, }; enum Oryx_Event_Code { @@ -34,6 +49,16 @@ enum Oryx_Event_Code { ORYX_EVT_LAYER, ORYX_EVT_KEYDOWN, ORYX_EVT_KEYUP, + ORYX_EVT_GET_PROTOCOL_VERSION = 0XFE, + ORYX_EVT_ERROR = 0xFF, +}; + +enum Oryx_Error_Code { + ORYX_ERR_PAIRING_INIT_FAILED, + ORYX_ERR_PAIRING_INPUT_FAILED, + ORYX_ERR_PAIRING_KEY_INPUT_FAILED, + ORYX_ERR_PAIRING_FAILED, + ORYX_ERR_RGB_MATRIX_NOT_ENABLED, }; extern bool oryx_state_live_training_enabled; @@ -41,23 +66,30 @@ extern bool oryx_state_live_training_enabled; typedef struct { bool pairing; bool paired; + bool rgb_control; } rawhid_state_t; extern rawhid_state_t rawhid_state; -void create_pairing_code(void); -bool store_pairing_sequence(keypos_t* pairing_sequence); -keypos_t get_random_keypos(void); -void pairing_init_handler(void); -void pairing_validate_handler(void); -void pairing_validate_eeprom_handler(void); -void pairing_init_event(void); -bool compare_sequences(keypos_t a[PAIRING_SEQUENCE_SIZE], keypos_t b[PAIRING_SEQUENCE_SIZE]); -void pairing_key_input_event(void); -void pairing_failed_event(void); -void pairing_succesful_event(void); +void create_pairing_code(void); +void oryx_error(uint8_t code); +bool store_pairing_sequence(keypos_t* pairing_sequence); +keypos_t get_random_keypos(void); +void pairing_init_handler(void); +void pairing_validate_handler(void); +void pairing_validate_eeprom_handler(void); +void pairing_init_event(void); +bool compare_sequences(keypos_t a[PAIRING_SEQUENCE_SIZE], keypos_t b[PAIRING_SEQUENCE_SIZE]); +void pairing_key_input_event(void); +void pairing_failed_event(void); +void pairing_succesful_event(void); +keypos_t* pairing_sequence(void); void oryx_layer_event(void); bool is_oryx_live_training_enabled(void); bool process_record_oryx(uint16_t keycode, keyrecord_t* record); void layer_state_set_oryx(layer_state_t state); + +#if defined(RGB_MATRIX_ENABLE) && !defined(KEYBOARD_ergodox_ez_glow) +RGB webhid_leds[DRIVER_LED_TOTAL]; +#endif
\ No newline at end of file |