40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #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 |