]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/lfkeyboards/issi.h
Usbasploader bootloader option addition (#6304)
[qmk_firmware.git] / keyboards / lfkeyboards / issi.h
1 #ifdef ISSI_ENABLE
2 #ifndef ISSI_H
3 #define ISSI_H
4
5 typedef struct ISSIDeviceStruct{
6     uint8_t fn_dirty;       // function registers need to be resent
7     uint8_t fn_device_addr;
8     uint8_t fn_register_addr;
9     uint8_t fn_registers[13];
10     uint8_t led_dirty;      // LED data has changed and needs to be resent
11     uint8_t led_device_addr;
12     uint8_t led_register_addr;
13     uint8_t led_ctrl[18];
14     uint8_t led_blink_ctrl[18];
15     uint8_t led_pwm[144];
16 }ISSIDeviceStruct;
17
18 extern ISSIDeviceStruct *issi_devices[];
19
20 // Low level commands- 'device' is the 2-bit i2c id.
21 void issi_init(void);
22 void set_shutdown(uint8_t device, uint8_t shutdown);
23 void writeRegister8(uint8_t device, uint8_t frame, uint8_t reg, uint8_t data);
24
25 // Higher level, no device is given, but it is calculated from 'matrix'
26 // Each device has 2 blocks, max of 4 devices:
27 //  Device  |   Block   =   Matrix
28 //    0           A           0
29 //    0           B           1
30 //    1           A           2
31 //    1           B           3
32 //    2           A           4
33 //    2           B           5
34 //    3           A           6
35 //    3           B           7
36 void activateLED(uint8_t matrix, uint8_t cx, uint8_t cy, uint8_t pwm);
37 void update_issi(uint8_t device_addr, uint8_t blocking);
38
39 #endif
40 #endif