aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards/ai03/orbit/transport.h
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ai03/orbit/transport.h')
-rw-r--r--keyboards/ai03/orbit/transport.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/keyboards/ai03/orbit/transport.h b/keyboards/ai03/orbit/transport.h
new file mode 100644
index 000000000..422e2ecb9
--- /dev/null
+++ b/keyboards/ai03/orbit/transport.h
@@ -0,0 +1,42 @@
+#pragma once
+
+#include <common/matrix.h>
+
+#define ROWS_PER_HAND (MATRIX_ROWS/2)
+
+typedef struct _Serial_s2m_buffer_t {
+ // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack
+ matrix_row_t smatrix[ROWS_PER_HAND];
+} Serial_s2m_buffer_t;
+
+typedef struct _Serial_m2s_buffer_t {
+#ifdef BACKLIGHT_ENABLE
+ uint8_t backlight_level;
+#endif
+#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
+ rgblight_config_t rgblight_config; //not yet use
+ //
+ // When MCUs on both sides drive their respective RGB LED chains,
+ // it is necessary to synchronize, so it is necessary to communicate RGB information.
+ // In that case, define the RGBLIGHT_SPLIT macro.
+ //
+ // Otherwise, if the master side MCU drives both sides RGB LED chains,
+ // there is no need to communicate.
+#endif
+
+ uint8_t current_layer;
+ uint8_t nlock_led;
+ uint8_t clock_led;
+ uint8_t slock_led;
+
+} Serial_m2s_buffer_t;
+
+extern volatile Serial_s2m_buffer_t serial_s2m_buffer;
+extern volatile Serial_m2s_buffer_t serial_m2s_buffer;
+
+void transport_master_init(void);
+void transport_slave_init(void);
+
+// returns false if valid data not received from slave
+bool transport_master(matrix_row_t matrix[]);
+void transport_slave(matrix_row_t matrix[]);