|
|
@ -51,23 +51,17 @@ bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false}; |
|
|
|
uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0}; |
|
|
|
bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false}; |
|
|
|
|
|
|
|
bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
|
|
|
// If the transaction fails function returns false. |
|
|
|
void snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) { |
|
|
|
i2c_transfer_buffer[0] = reg; |
|
|
|
i2c_transfer_buffer[1] = data; |
|
|
|
|
|
|
|
#if SNLED27351_I2C_PERSISTENCE > 0 |
|
|
|
for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { |
|
|
|
if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) == 0) break; |
|
|
|
} |
|
|
|
#else |
|
|
|
if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT); |
|
|
|
#endif |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
void snled27351_select_page(uint8_t addr, uint8_t page) { |
|
|
|