summaryrefslogtreecommitdiffstats
path: root/keyboards/meira/issi.h
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/meira/issi.h')
-rwxr-xr-xkeyboards/meira/issi.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/keyboards/meira/issi.h b/keyboards/meira/issi.h
new file mode 100755
index 0000000000..51777f6ee3
--- /dev/null
+++ b/keyboards/meira/issi.h
@@ -0,0 +1,40 @@
+#ifdef ISSI_ENABLE
+#ifndef ISSI_H
+#define ISSI_H
+
+typedef struct ISSIDeviceStruct{
+ uint8_t fn_dirty; // function registers need to be resent
+ uint8_t fn_device_addr;
+ uint8_t fn_register_addr;
+ uint8_t fn_registers[13];
+ uint8_t led_dirty; // LED data has changed and needs to be resent
+ uint8_t led_device_addr;
+ uint8_t led_register_addr;
+ uint8_t led_ctrl[18];
+ uint8_t led_blink_ctrl[18];
+ uint8_t led_pwm[144];
+}ISSIDeviceStruct;
+
+extern ISSIDeviceStruct *issi_devices[];
+
+// Low level commands- 'device' is the 2-bit i2c id.
+void issi_init(void);
+void set_shutdown(uint8_t device, uint8_t shutdown);
+void writeRegister8(uint8_t device, uint8_t frame, uint8_t reg, uint8_t data);
+
+// Higher level, no device is given, but it is calculated from 'matrix'
+// Each device has 2 blocks, max of 4 devices:
+// Device | Block = Matrix
+// 0 A 0
+// 0 B 1
+// 1 A 2
+// 1 B 3
+// 2 A 4
+// 2 B 5
+// 3 A 6
+// 3 B 7
+void activateLED(uint8_t matrix, uint8_t cx, uint8_t cy, uint8_t pwm);
+void update_issi(uint8_t device_addr, uint8_t blocking);
+
+#endif
+#endif \ No newline at end of file