#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