summaryrefslogtreecommitdiffstats
path: root/keyboards/lfkeyboards/issi.h
diff options
context:
space:
mode:
authorScott Wilson <scott.t.wilson@gmail.com>2017-12-03 10:32:07 -0500
committerJack Humbert <jack.humb@gmail.com>2017-12-09 00:01:58 -0500
commitc51dfef958bce4a792b66db337d5c7cdf0956fc4 (patch)
treeb51a3d2a95c5ba47416e2964bc98c9ad329cf168 /keyboards/lfkeyboards/issi.h
parent8b1862330a960b0413046ed6fdba78d2570e7988 (diff)
Add support for LFKeyboard products: LFK78, LFK87 and SMK65
Diffstat (limited to 'keyboards/lfkeyboards/issi.h')
-rw-r--r--keyboards/lfkeyboards/issi.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/keyboards/lfkeyboards/issi.h b/keyboards/lfkeyboards/issi.h
new file mode 100644
index 0000000000..51777f6ee3
--- /dev/null
+++ b/keyboards/lfkeyboards/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