You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					40 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					40 lines
				
				1.3 KiB
			| 
								 
											8 years ago
										 
									 | 
							
								#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
							 |