summaryrefslogtreecommitdiffstats
path: root/quantum/rgb_matrix_types.h
diff options
context:
space:
mode:
authorXScorpion2 <rcalt2vt@gmail.com>2019-04-03 02:24:14 +0200
committerDrashna Jaelre <drashna@live.com>2019-04-03 02:24:14 +0200
commitc98247e3dd2958bd2d8969dc75170e7e2757b895 (patch)
treea566de223a9501809e1059c522b52adf7d37fe74 /quantum/rgb_matrix_types.h
parent68d8bb2b3fb8a35fda164539d27754b3f74e0819 (diff)
downloadqmk_firmware-c98247e3dd2958bd2d8969dc75170e7e2757b895.tar.gz
qmk_firmware-c98247e3dd2958bd2d8969dc75170e7e2757b895.tar.xz
RGB Matrix Overhaul (#5372)
* RGB Matrix overhaul Breakout of animations to separate files Integration of optimized int based math lib Overhaul of rgb_matrix.c and animations for performance * Updating effect function api for future extensions * Combined the keypresses || keyreleases define checks into a single define so I stop forgetting it where necessary * Moving define RGB_MATRIX_KEYREACTIVE_ENABLED earlier in the include chain
Diffstat (limited to 'quantum/rgb_matrix_types.h')
-rw-r--r--quantum/rgb_matrix_types.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/quantum/rgb_matrix_types.h b/quantum/rgb_matrix_types.h
new file mode 100644
index 000000000..f7643d2b0
--- /dev/null
+++ b/quantum/rgb_matrix_types.h
@@ -0,0 +1,90 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#if defined(__GNUC__)
+#define PACKED __attribute__ ((__packed__))
+#else
+#define PACKED
+#endif
+
+#if defined(_MSC_VER)
+#pragma pack( push, 1 )
+#endif
+
+#if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
+ #define RGB_MATRIX_KEYREACTIVE_ENABLED
+#endif
+
+// Last led hit
+#ifndef LED_HITS_TO_REMEMBER
+ #define LED_HITS_TO_REMEMBER 8
+#endif // LED_HITS_TO_REMEMBER
+
+#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
+typedef struct PACKED {
+ uint8_t count;
+ uint8_t x[LED_HITS_TO_REMEMBER];
+ uint8_t y[LED_HITS_TO_REMEMBER];
+ uint8_t index[LED_HITS_TO_REMEMBER];
+ uint16_t tick[LED_HITS_TO_REMEMBER];
+} last_hit_t;
+#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
+
+typedef enum rgb_task_states {
+ STARTING,
+ RENDERING,
+ FLUSHING,
+ SYNCING
+} rgb_task_states;
+
+typedef uint8_t led_flags_t;
+
+typedef struct PACKED {
+ uint8_t iter;
+ led_flags_t flags;
+ bool init;
+} effect_params_t;
+
+typedef struct PACKED {
+ // Global tick at 20 Hz
+ uint32_t tick;
+ // Ticks since this key was last hit.
+ uint32_t any_key_hit;
+} rgb_counters_t;
+
+typedef struct PACKED {
+ uint8_t x;
+ uint8_t y;
+} point_t;
+
+typedef union {
+ uint8_t raw;
+ struct {
+ uint8_t row:4; // 16 max
+ uint8_t col:4; // 16 max
+ };
+} matrix_co_t;
+
+typedef struct PACKED {
+ matrix_co_t matrix_co;
+ point_t point;
+ uint8_t modifier:1;
+} rgb_led;
+
+typedef union {
+ uint32_t raw;
+ struct PACKED {
+ bool enable :1;
+ uint8_t mode :7;
+ uint8_t hue :8;
+ uint8_t sat :8;
+ uint8_t val :8;
+ uint8_t speed :8;//EECONFIG needs to be increased to support this
+ };
+} rgb_config_t;
+
+#if defined(_MSC_VER)
+#pragma pack( pop )
+#endif