diff --git a/common/pimoroni_i2c.cpp b/common/pimoroni_i2c.cpp index 16a61aea..887fa1b7 100644 --- a/common/pimoroni_i2c.cpp +++ b/common/pimoroni_i2c.cpp @@ -68,7 +68,7 @@ namespace pimoroni { return value; } - int I2C::write_bytes(uint8_t address, uint8_t reg, uint8_t *buf, int len) { + int I2C::write_bytes(uint8_t address, uint8_t reg, const uint8_t *buf, int len) { uint8_t buffer[len + 1]; buffer[0] = reg; for(int x = 0; x < len; x++) { diff --git a/common/pimoroni_i2c.hpp b/common/pimoroni_i2c.hpp index 5066022a..6348acf4 100644 --- a/common/pimoroni_i2c.hpp +++ b/common/pimoroni_i2c.hpp @@ -55,7 +55,7 @@ namespace pimoroni { int16_t reg_read_int16(uint8_t address, uint8_t reg); uint32_t reg_read_uint32(uint8_t address, uint8_t reg); - int write_bytes(uint8_t address, uint8_t reg, uint8_t *buf, int len); + int write_bytes(uint8_t address, uint8_t reg, const uint8_t *buf, int len); int read_bytes(uint8_t address, uint8_t reg, uint8_t *buf, int len); uint8_t get_bits(uint8_t address, uint8_t reg, uint8_t shift, uint8_t mask=0b1); void set_bits(uint8_t address, uint8_t reg, uint8_t shift, uint8_t mask=0b1); diff --git a/drivers/is31fl3731/is31fl3731.cpp b/drivers/is31fl3731/is31fl3731.cpp index 334407d8..7a68ec6e 100644 --- a/drivers/is31fl3731/is31fl3731.cpp +++ b/drivers/is31fl3731/is31fl3731.cpp @@ -77,14 +77,7 @@ namespace pimoroni { void IS31FL3731::enable(std::initializer_list pattern, uint8_t frame) { i2c->reg_write_uint8(address, reg::BANK, frame); - uint8_t enable_buf[19]; - enable_buf[0] = ENABLE_OFFSET; - uint8_t offset = 1; - for(auto byte : pattern) { - enable_buf[offset] = byte; - offset++; - } - i2c->write_blocking(address, enable_buf, sizeof(enable_buf), false); + i2c->write_bytes(address, ENABLE_OFFSET, pattern.begin(), pattern.size()); } void IS31FL3731::set(uint8_t index, uint8_t brightness) {