Commit | Line | Data |
---|---|---|
a9a46adb CM |
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 |