From a9a46adba0e005f6fecfb5ed47fe8a5eec4b06f4 Mon Sep 17 00:00:00 2001 From: Cole Markham Date: Fri, 17 Nov 2017 12:01:21 -0600 Subject: Add support for Meira --- keyboards/meira/issi.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 keyboards/meira/issi.h (limited to 'keyboards/meira/issi.h') diff --git a/keyboards/meira/issi.h b/keyboards/meira/issi.h new file mode 100755 index 000000000..51777f6ee --- /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 -- cgit v1.2.3-24-g4f1b