diff options
| author | Ryan <fauxpark@gmail.com> | 2024-01-08 12:24:10 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-08 12:24:10 +1100 |
| commit | bdede8b2cdc05d5f3be04e900210aae9c07cf632 (patch) | |
| tree | a6833b9aefb4eb60d030e5f568b6224dfaf4d028 /drivers/led | |
| parent | 6e3cc56bdfb8b222ca64eb15aa7e69d9bcdc2a08 (diff) | |
LED drivers: misc formatting and typos (#22857)
Diffstat (limited to 'drivers/led')
| -rw-r--r-- | drivers/led/aw20216s.h | 11 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3218-mono.c | 14 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3218.c | 18 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3731-mono.c | 9 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3731.c | 8 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3733-mono.c | 4 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3733.c | 4 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3736-mono.c | 4 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3736.c | 4 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3737-mono.c | 4 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3737.c | 6 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3741-mono.c | 12 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3741.c | 20 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3742a-mono.c | 27 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3742a.c | 31 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3743a-mono.c | 30 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3743a.c | 34 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3745-mono.c | 30 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3745.c | 34 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3746a-mono.c | 30 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3746a.c | 34 | ||||
| -rw-r--r-- | drivers/led/snled27351-mono.c | 8 | ||||
| -rw-r--r-- | drivers/led/snled27351.c | 7 |
23 files changed, 307 insertions, 76 deletions
diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h index 38a0c92b2f..b8d8afc4cb 100644 --- a/drivers/led/aw20216s.h +++ b/drivers/led/aw20216s.h | |||
| @@ -119,6 +119,7 @@ void aw20216s_flush(void); | |||
| 119 | #define CS16_SW1 0x0F | 119 | #define CS16_SW1 0x0F |
| 120 | #define CS17_SW1 0x10 | 120 | #define CS17_SW1 0x10 |
| 121 | #define CS18_SW1 0x11 | 121 | #define CS18_SW1 0x11 |
| 122 | |||
| 122 | #define CS1_SW2 0x12 | 123 | #define CS1_SW2 0x12 |
| 123 | #define CS2_SW2 0x13 | 124 | #define CS2_SW2 0x13 |
| 124 | #define CS3_SW2 0x14 | 125 | #define CS3_SW2 0x14 |
| @@ -137,6 +138,7 @@ void aw20216s_flush(void); | |||
| 137 | #define CS16_SW2 0x21 | 138 | #define CS16_SW2 0x21 |
| 138 | #define CS17_SW2 0x22 | 139 | #define CS17_SW2 0x22 |
| 139 | #define CS18_SW2 0x23 | 140 | #define CS18_SW2 0x23 |
| 141 | |||
| 140 | #define CS1_SW3 0x24 | 142 | #define CS1_SW3 0x24 |
| 141 | #define CS2_SW3 0x25 | 143 | #define CS2_SW3 0x25 |
| 142 | #define CS3_SW3 0x26 | 144 | #define CS3_SW3 0x26 |
| @@ -155,6 +157,7 @@ void aw20216s_flush(void); | |||
| 155 | #define CS16_SW3 0x33 | 157 | #define CS16_SW3 0x33 |
| 156 | #define CS17_SW3 0x34 | 158 | #define CS17_SW3 0x34 |
| 157 | #define CS18_SW3 0x35 | 159 | #define CS18_SW3 0x35 |
| 160 | |||
| 158 | #define CS1_SW4 0x36 | 161 | #define CS1_SW4 0x36 |
| 159 | #define CS2_SW4 0x37 | 162 | #define CS2_SW4 0x37 |
| 160 | #define CS3_SW4 0x38 | 163 | #define CS3_SW4 0x38 |
| @@ -173,6 +176,7 @@ void aw20216s_flush(void); | |||
| 173 | #define CS16_SW4 0x45 | 176 | #define CS16_SW4 0x45 |
| 174 | #define CS17_SW4 0x46 | 177 | #define CS17_SW4 0x46 |
| 175 | #define CS18_SW4 0x47 | 178 | #define CS18_SW4 0x47 |
| 179 | |||
| 176 | #define CS1_SW5 0x48 | 180 | #define CS1_SW5 0x48 |
| 177 | #define CS2_SW5 0x49 | 181 | #define CS2_SW5 0x49 |
| 178 | #define CS3_SW5 0x4A | 182 | #define CS3_SW5 0x4A |
| @@ -191,6 +195,7 @@ void aw20216s_flush(void); | |||
| 191 | #define CS16_SW5 0x57 | 195 | #define CS16_SW5 0x57 |
| 192 | #define CS17_SW5 0x58 | 196 | #define CS17_SW5 0x58 |
| 193 | #define CS18_SW5 0x59 | 197 | #define CS18_SW5 0x59 |
| 198 | |||
| 194 | #define CS1_SW6 0x5A | 199 | #define CS1_SW6 0x5A |
| 195 | #define CS2_SW6 0x5B | 200 | #define CS2_SW6 0x5B |
| 196 | #define CS3_SW6 0x5C | 201 | #define CS3_SW6 0x5C |
| @@ -209,6 +214,7 @@ void aw20216s_flush(void); | |||
| 209 | #define CS16_SW6 0x69 | 214 | #define CS16_SW6 0x69 |
| 210 | #define CS17_SW6 0x6A | 215 | #define CS17_SW6 0x6A |
| 211 | #define CS18_SW6 0x6B | 216 | #define CS18_SW6 0x6B |
| 217 | |||
| 212 | #define CS1_SW7 0x6C | 218 | #define CS1_SW7 0x6C |
| 213 | #define CS2_SW7 0x6D | 219 | #define CS2_SW7 0x6D |
| 214 | #define CS3_SW7 0x6E | 220 | #define CS3_SW7 0x6E |
| @@ -227,6 +233,7 @@ void aw20216s_flush(void); | |||
| 227 | #define CS16_SW7 0x7B | 233 | #define CS16_SW7 0x7B |
| 228 | #define CS17_SW7 0x7C | 234 | #define CS17_SW7 0x7C |
| 229 | #define CS18_SW7 0x7D | 235 | #define CS18_SW7 0x7D |
| 236 | |||
| 230 | #define CS1_SW8 0x7E | 237 | #define CS1_SW8 0x7E |
| 231 | #define CS2_SW8 0x7F | 238 | #define CS2_SW8 0x7F |
| 232 | #define CS3_SW8 0x80 | 239 | #define CS3_SW8 0x80 |
| @@ -245,6 +252,7 @@ void aw20216s_flush(void); | |||
| 245 | #define CS16_SW8 0x8D | 252 | #define CS16_SW8 0x8D |
| 246 | #define CS17_SW8 0x8E | 253 | #define CS17_SW8 0x8E |
| 247 | #define CS18_SW8 0x8F | 254 | #define CS18_SW8 0x8F |
| 255 | |||
| 248 | #define CS1_SW9 0x90 | 256 | #define CS1_SW9 0x90 |
| 249 | #define CS2_SW9 0x91 | 257 | #define CS2_SW9 0x91 |
| 250 | #define CS3_SW9 0x92 | 258 | #define CS3_SW9 0x92 |
| @@ -263,6 +271,7 @@ void aw20216s_flush(void); | |||
| 263 | #define CS16_SW9 0x9F | 271 | #define CS16_SW9 0x9F |
| 264 | #define CS17_SW9 0xA0 | 272 | #define CS17_SW9 0xA0 |
| 265 | #define CS18_SW9 0xA1 | 273 | #define CS18_SW9 0xA1 |
| 274 | |||
| 266 | #define CS1_SW10 0xA2 | 275 | #define CS1_SW10 0xA2 |
| 267 | #define CS2_SW10 0xA3 | 276 | #define CS2_SW10 0xA3 |
| 268 | #define CS3_SW10 0xA4 | 277 | #define CS3_SW10 0xA4 |
| @@ -281,6 +290,7 @@ void aw20216s_flush(void); | |||
| 281 | #define CS16_SW10 0xB1 | 290 | #define CS16_SW10 0xB1 |
| 282 | #define CS17_SW10 0xB2 | 291 | #define CS17_SW10 0xB2 |
| 283 | #define CS18_SW10 0xB3 | 292 | #define CS18_SW10 0xB3 |
| 293 | |||
| 284 | #define CS1_SW11 0xB4 | 294 | #define CS1_SW11 0xB4 |
| 285 | #define CS2_SW11 0xB5 | 295 | #define CS2_SW11 0xB5 |
| 286 | #define CS3_SW11 0xB6 | 296 | #define CS3_SW11 0xB6 |
| @@ -299,6 +309,7 @@ void aw20216s_flush(void); | |||
| 299 | #define CS16_SW11 0xC3 | 309 | #define CS16_SW11 0xC3 |
| 300 | #define CS17_SW11 0xC4 | 310 | #define CS17_SW11 0xC4 |
| 301 | #define CS18_SW11 0xC5 | 311 | #define CS18_SW11 0xC5 |
| 312 | |||
| 302 | #define CS1_SW12 0xC6 | 313 | #define CS1_SW12 0xC6 |
| 303 | #define CS2_SW12 0xC7 | 314 | #define CS2_SW12 0xC7 |
| 304 | #define CS3_SW12 0xC8 | 315 | #define CS3_SW12 0xC8 |
diff --git a/drivers/led/issi/is31fl3218-mono.c b/drivers/led/issi/is31fl3218-mono.c index ad818f98b1..86683c910c 100644 --- a/drivers/led/issi/is31fl3218-mono.c +++ b/drivers/led/issi/is31fl3218-mono.c | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | */ | 15 | */ |
| 16 | |||
| 16 | #include "is31fl3218-mono.h" | 17 | #include "is31fl3218-mono.h" |
| 17 | #include <string.h> | 18 | #include <string.h> |
| 18 | #include "i2c_master.h" | 19 | #include "i2c_master.h" |
| @@ -93,14 +94,17 @@ void is31fl3218_init(void) { | |||
| 93 | 94 | ||
| 94 | void is31fl3218_set_value(int index, uint8_t value) { | 95 | void is31fl3218_set_value(int index, uint8_t value) { |
| 95 | is31fl3218_led_t led; | 96 | is31fl3218_led_t led; |
| 97 | |||
| 96 | if (index >= 0 && index < IS31FL3218_LED_COUNT) { | 98 | if (index >= 0 && index < IS31FL3218_LED_COUNT) { |
| 97 | memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); | 99 | memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); |
| 100 | |||
| 101 | if (g_pwm_buffer[led.v - IS31FL3218_REG_PWM] == value) { | ||
| 102 | return; | ||
| 103 | } | ||
| 104 | |||
| 105 | g_pwm_buffer[led.v - IS31FL3218_REG_PWM] = value; | ||
| 106 | g_pwm_buffer_update_required = true; | ||
| 98 | } | 107 | } |
| 99 | if (g_pwm_buffer[led.v - IS31FL3218_REG_PWM] == value) { | ||
| 100 | return; | ||
| 101 | } | ||
| 102 | g_pwm_buffer[led.v - IS31FL3218_REG_PWM] = value; | ||
| 103 | g_pwm_buffer_update_required = true; | ||
| 104 | } | 108 | } |
| 105 | 109 | ||
| 106 | void is31fl3218_set_value_all(uint8_t value) { | 110 | void is31fl3218_set_value_all(uint8_t value) { |
diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c index 9bfdc9c44d..49cfa08d3b 100644 --- a/drivers/led/issi/is31fl3218.c +++ b/drivers/led/issi/is31fl3218.c | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | */ | 15 | */ |
| 16 | |||
| 16 | #include "is31fl3218.h" | 17 | #include "is31fl3218.h" |
| 17 | #include <string.h> | 18 | #include <string.h> |
| 18 | #include "i2c_master.h" | 19 | #include "i2c_master.h" |
| @@ -93,16 +94,19 @@ void is31fl3218_init(void) { | |||
| 93 | 94 | ||
| 94 | void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 95 | void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 95 | is31fl3218_led_t led; | 96 | is31fl3218_led_t led; |
| 97 | |||
| 96 | if (index >= 0 && index < IS31FL3218_LED_COUNT) { | 98 | if (index >= 0 && index < IS31FL3218_LED_COUNT) { |
| 97 | memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); | 99 | memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); |
| 100 | |||
| 101 | if (g_pwm_buffer[led.r - IS31FL3218_REG_PWM] == red && g_pwm_buffer[led.g - IS31FL3218_REG_PWM] == green && g_pwm_buffer[led.b - IS31FL3218_REG_PWM] == blue) { | ||
| 102 | return; | ||
| 103 | } | ||
| 104 | |||
| 105 | g_pwm_buffer[led.r - IS31FL3218_REG_PWM] = red; | ||
| 106 | g_pwm_buffer[led.g - IS31FL3218_REG_PWM] = green; | ||
| 107 | g_pwm_buffer[led.b - IS31FL3218_REG_PWM] = blue; | ||
| 108 | g_pwm_buffer_update_required = true; | ||
| 98 | } | 109 | } |
| 99 | if (g_pwm_buffer[led.r - IS31FL3218_REG_PWM] == red && g_pwm_buffer[led.g - IS31FL3218_REG_PWM] == green && g_pwm_buffer[led.b - IS31FL3218_REG_PWM] == blue) { | ||
| 100 | return; | ||
| 101 | } | ||
| 102 | g_pwm_buffer[led.r - IS31FL3218_REG_PWM] = red; | ||
| 103 | g_pwm_buffer[led.g - IS31FL3218_REG_PWM] = green; | ||
| 104 | g_pwm_buffer[led.b - IS31FL3218_REG_PWM] = blue; | ||
| 105 | g_pwm_buffer_update_required = true; | ||
| 106 | } | 110 | } |
| 107 | 111 | ||
| 108 | void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { | 112 | void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { |
diff --git a/drivers/led/issi/is31fl3731-mono.c b/drivers/led/issi/is31fl3731-mono.c index 74e427ef0d..9518ac269f 100644 --- a/drivers/led/issi/is31fl3731-mono.c +++ b/drivers/led/issi/is31fl3731-mono.c | |||
| @@ -52,9 +52,7 @@ void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) { | |||
| 52 | 52 | ||
| 53 | #if IS31FL3731_I2C_PERSISTENCE > 0 | 53 | #if IS31FL3731_I2C_PERSISTENCE > 0 |
| 54 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { | 54 | for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { |
| 55 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) { | 55 | if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) break; |
| 56 | break; | ||
| 57 | } | ||
| 58 | } | 56 | } |
| 59 | #else | 57 | #else |
| 60 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); | 58 | i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); |
| @@ -174,14 +172,15 @@ void is31fl3731_init(uint8_t addr) { | |||
| 174 | 172 | ||
| 175 | void is31fl3731_set_value(int index, uint8_t value) { | 173 | void is31fl3731_set_value(int index, uint8_t value) { |
| 176 | is31fl3731_led_t led; | 174 | is31fl3731_led_t led; |
| 175 | |||
| 177 | if (index >= 0 && index < IS31FL3731_LED_COUNT) { | 176 | if (index >= 0 && index < IS31FL3731_LED_COUNT) { |
| 178 | memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); | 177 | memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); |
| 179 | 178 | ||
| 180 | // Subtract 0x24 to get the second index of g_pwm_buffer | 179 | // Subtract 0x24 to get the second index of g_pwm_buffer |
| 181 | |||
| 182 | if (g_pwm_buffer[led.driver][led.v - 0x24] == value) { | 180 | if (g_pwm_buffer[led.driver][led.v - 0x24] == value) { |
| 183 | return; | 181 | return; |
| 184 | } | 182 | } |
| 183 | |||
| 185 | g_pwm_buffer[led.driver][led.v - 0x24] = value; | 184 | g_pwm_buffer[led.driver][led.v - 0x24] = value; |
| 186 | g_pwm_buffer_update_required[led.driver] = true; | 185 | g_pwm_buffer_update_required[led.driver] = true; |
| 187 | } | 186 | } |
| @@ -212,6 +211,7 @@ void is31fl3731_set_led_control_register(uint8_t index, bool value) { | |||
| 212 | void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) { | 211 | void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) { |
| 213 | if (g_pwm_buffer_update_required[index]) { | 212 | if (g_pwm_buffer_update_required[index]) { |
| 214 | is31fl3731_write_pwm_buffer(addr, g_pwm_buffer[index]); | 213 | is31fl3731_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 214 | |||
| 215 | g_pwm_buffer_update_required[index] = false; | 215 | g_pwm_buffer_update_required[index] = false; |
| 216 | } | 216 | } |
| 217 | } | 217 | } |
| @@ -221,6 +221,7 @@ void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 221 | for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { | 221 | for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { |
| 222 | is31fl3731_write_register(addr, i, g_led_control_registers[index][i]); | 222 | is31fl3731_write_register(addr, i, g_led_control_registers[index][i]); |
| 223 | } | 223 | } |
| 224 | |||
| 224 | g_led_control_registers_update_required[index] = false; | 225 | g_led_control_registers_update_required[index] = false; |
| 225 | } | 226 | } |
| 226 | } | 227 | } |
diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c index 9a7d0b5eca..1d7c34adc2 100644 --- a/drivers/led/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c | |||
| @@ -171,6 +171,7 @@ void is31fl3731_init(uint8_t addr) { | |||
| 171 | 171 | ||
| 172 | void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 172 | void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 173 | is31fl3731_led_t led; | 173 | is31fl3731_led_t led; |
| 174 | |||
| 174 | if (index >= 0 && index < IS31FL3731_LED_COUNT) { | 175 | if (index >= 0 && index < IS31FL3731_LED_COUNT) { |
| 175 | memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); | 176 | memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); |
| 176 | 177 | ||
| @@ -178,6 +179,7 @@ void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | |||
| 178 | if (g_pwm_buffer[led.driver][led.r - 0x24] == red && g_pwm_buffer[led.driver][led.g - 0x24] == green && g_pwm_buffer[led.driver][led.b - 0x24] == blue) { | 179 | if (g_pwm_buffer[led.driver][led.r - 0x24] == red && g_pwm_buffer[led.driver][led.g - 0x24] == green && g_pwm_buffer[led.driver][led.b - 0x24] == blue) { |
| 179 | return; | 180 | return; |
| 180 | } | 181 | } |
| 182 | |||
| 181 | g_pwm_buffer[led.driver][led.r - 0x24] = red; | 183 | g_pwm_buffer[led.driver][led.r - 0x24] = red; |
| 182 | g_pwm_buffer[led.driver][led.g - 0x24] = green; | 184 | g_pwm_buffer[led.driver][led.g - 0x24] = green; |
| 183 | g_pwm_buffer[led.driver][led.b - 0x24] = blue; | 185 | g_pwm_buffer[led.driver][led.b - 0x24] = blue; |
| @@ -224,8 +226,9 @@ void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bo | |||
| 224 | void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) { | 226 | void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) { |
| 225 | if (g_pwm_buffer_update_required[index]) { | 227 | if (g_pwm_buffer_update_required[index]) { |
| 226 | is31fl3731_write_pwm_buffer(addr, g_pwm_buffer[index]); | 228 | is31fl3731_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 229 | |||
| 230 | g_pwm_buffer_update_required[index] = false; | ||
| 227 | } | 231 | } |
| 228 | g_pwm_buffer_update_required[index] = false; | ||
| 229 | } | 232 | } |
| 230 | 233 | ||
| 231 | void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) { | 234 | void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) { |
| @@ -233,8 +236,9 @@ void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 233 | for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { | 236 | for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { |
| 234 | is31fl3731_write_register(addr, i, g_led_control_registers[index][i]); | 237 | is31fl3731_write_register(addr, i, g_led_control_registers[index][i]); |
| 235 | } | 238 | } |
| 239 | |||
| 240 | g_led_control_registers_update_required[index] = false; | ||
| 236 | } | 241 | } |
| 237 | g_led_control_registers_update_required[index] = false; | ||
| 238 | } | 242 | } |
| 239 | 243 | ||
| 240 | void is31fl3731_flush(void) { | 244 | void is31fl3731_flush(void) { |
diff --git a/drivers/led/issi/is31fl3733-mono.c b/drivers/led/issi/is31fl3733-mono.c index 95d16bc4a3..21cd65a154 100644 --- a/drivers/led/issi/is31fl3733-mono.c +++ b/drivers/led/issi/is31fl3733-mono.c | |||
| @@ -199,12 +199,14 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { | |||
| 199 | 199 | ||
| 200 | void is31fl3733_set_value(int index, uint8_t value) { | 200 | void is31fl3733_set_value(int index, uint8_t value) { |
| 201 | is31fl3733_led_t led; | 201 | is31fl3733_led_t led; |
| 202 | |||
| 202 | if (index >= 0 && index < IS31FL3733_LED_COUNT) { | 203 | if (index >= 0 && index < IS31FL3733_LED_COUNT) { |
| 203 | memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); | 204 | memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); |
| 204 | 205 | ||
| 205 | if (g_pwm_buffer[led.driver][led.v] == value) { | 206 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 206 | return; | 207 | return; |
| 207 | } | 208 | } |
| 209 | |||
| 208 | g_pwm_buffer[led.driver][led.v] = value; | 210 | g_pwm_buffer[led.driver][led.v] = value; |
| 209 | g_pwm_buffer_update_required[led.driver] = true; | 211 | g_pwm_buffer_update_required[led.driver] = true; |
| 210 | } | 212 | } |
| @@ -241,6 +243,7 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 241 | if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) { | 243 | if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) { |
| 242 | g_led_control_registers_update_required[index] = true; | 244 | g_led_control_registers_update_required[index] = true; |
| 243 | } | 245 | } |
| 246 | |||
| 244 | g_pwm_buffer_update_required[index] = false; | 247 | g_pwm_buffer_update_required[index] = false; |
| 245 | } | 248 | } |
| 246 | } | 249 | } |
| @@ -252,6 +255,7 @@ void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 252 | for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { | 255 | for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { |
| 253 | is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); | 256 | is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); |
| 254 | } | 257 | } |
| 258 | |||
| 255 | g_led_control_registers_update_required[index] = false; | 259 | g_led_control_registers_update_required[index] = false; |
| 256 | } | 260 | } |
| 257 | } | 261 | } |
diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c index f7162a0ce5..06de119c69 100644 --- a/drivers/led/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c | |||
| @@ -198,12 +198,14 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { | |||
| 198 | 198 | ||
| 199 | void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 199 | void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 200 | is31fl3733_led_t led; | 200 | is31fl3733_led_t led; |
| 201 | |||
| 201 | if (index >= 0 && index < IS31FL3733_LED_COUNT) { | 202 | if (index >= 0 && index < IS31FL3733_LED_COUNT) { |
| 202 | memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); | 203 | memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); |
| 203 | 204 | ||
| 204 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 205 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 205 | return; | 206 | return; |
| 206 | } | 207 | } |
| 208 | |||
| 207 | g_pwm_buffer[led.driver][led.r] = red; | 209 | g_pwm_buffer[led.driver][led.r] = red; |
| 208 | g_pwm_buffer[led.driver][led.g] = green; | 210 | g_pwm_buffer[led.driver][led.g] = green; |
| 209 | g_pwm_buffer[led.driver][led.b] = blue; | 211 | g_pwm_buffer[led.driver][led.b] = blue; |
| @@ -256,6 +258,7 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 256 | if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) { | 258 | if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) { |
| 257 | g_led_control_registers_update_required[index] = true; | 259 | g_led_control_registers_update_required[index] = true; |
| 258 | } | 260 | } |
| 261 | |||
| 259 | g_pwm_buffer_update_required[index] = false; | 262 | g_pwm_buffer_update_required[index] = false; |
| 260 | } | 263 | } |
| 261 | } | 264 | } |
| @@ -267,6 +270,7 @@ void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 267 | for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { | 270 | for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { |
| 268 | is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); | 271 | is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); |
| 269 | } | 272 | } |
| 273 | |||
| 270 | g_led_control_registers_update_required[index] = false; | 274 | g_led_control_registers_update_required[index] = false; |
| 271 | } | 275 | } |
| 272 | } | 276 | } |
diff --git a/drivers/led/issi/is31fl3736-mono.c b/drivers/led/issi/is31fl3736-mono.c index 5ced65aa06..6a7c410962 100644 --- a/drivers/led/issi/is31fl3736-mono.c +++ b/drivers/led/issi/is31fl3736-mono.c | |||
| @@ -171,12 +171,14 @@ void is31fl3736_init(uint8_t addr) { | |||
| 171 | 171 | ||
| 172 | void is31fl3736_set_value(int index, uint8_t value) { | 172 | void is31fl3736_set_value(int index, uint8_t value) { |
| 173 | is31fl3736_led_t led; | 173 | is31fl3736_led_t led; |
| 174 | |||
| 174 | if (index >= 0 && index < IS31FL3736_LED_COUNT) { | 175 | if (index >= 0 && index < IS31FL3736_LED_COUNT) { |
| 175 | memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); | 176 | memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); |
| 176 | 177 | ||
| 177 | if (g_pwm_buffer[led.driver][led.v] == value) { | 178 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 178 | return; | 179 | return; |
| 179 | } | 180 | } |
| 181 | |||
| 180 | g_pwm_buffer[led.driver][led.v] = value; | 182 | g_pwm_buffer[led.driver][led.v] = value; |
| 181 | g_pwm_buffer_update_required[led.driver] = true; | 183 | g_pwm_buffer_update_required[led.driver] = true; |
| 182 | } | 184 | } |
| @@ -215,6 +217,7 @@ void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 215 | is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM); | 217 | is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM); |
| 216 | 218 | ||
| 217 | is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); | 219 | is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 220 | |||
| 218 | g_pwm_buffer_update_required[index] = false; | 221 | g_pwm_buffer_update_required[index] = false; |
| 219 | } | 222 | } |
| 220 | } | 223 | } |
| @@ -226,6 +229,7 @@ void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 226 | for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { | 229 | for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { |
| 227 | is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); | 230 | is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); |
| 228 | } | 231 | } |
| 232 | |||
| 229 | g_led_control_registers_update_required[index] = false; | 233 | g_led_control_registers_update_required[index] = false; |
| 230 | } | 234 | } |
| 231 | } | 235 | } |
diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c index 0d7b08e7e8..20a79327c0 100644 --- a/drivers/led/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c | |||
| @@ -171,12 +171,14 @@ void is31fl3736_init(uint8_t addr) { | |||
| 171 | 171 | ||
| 172 | void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 172 | void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 173 | is31fl3736_led_t led; | 173 | is31fl3736_led_t led; |
| 174 | |||
| 174 | if (index >= 0 && index < IS31FL3736_LED_COUNT) { | 175 | if (index >= 0 && index < IS31FL3736_LED_COUNT) { |
| 175 | memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); | 176 | memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); |
| 176 | 177 | ||
| 177 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 178 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 178 | return; | 179 | return; |
| 179 | } | 180 | } |
| 181 | |||
| 180 | g_pwm_buffer[led.driver][led.r] = red; | 182 | g_pwm_buffer[led.driver][led.r] = red; |
| 181 | g_pwm_buffer[led.driver][led.g] = green; | 183 | g_pwm_buffer[led.driver][led.g] = green; |
| 182 | g_pwm_buffer[led.driver][led.b] = blue; | 184 | g_pwm_buffer[led.driver][led.b] = blue; |
| @@ -232,6 +234,7 @@ void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 232 | is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM); | 234 | is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM); |
| 233 | 235 | ||
| 234 | is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); | 236 | is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 237 | |||
| 235 | g_pwm_buffer_update_required[index] = false; | 238 | g_pwm_buffer_update_required[index] = false; |
| 236 | } | 239 | } |
| 237 | } | 240 | } |
| @@ -243,6 +246,7 @@ void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 243 | for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { | 246 | for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { |
| 244 | is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); | 247 | is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); |
| 245 | } | 248 | } |
| 249 | |||
| 246 | g_led_control_registers_update_required[index] = false; | 250 | g_led_control_registers_update_required[index] = false; |
| 247 | } | 251 | } |
| 248 | } | 252 | } |
diff --git a/drivers/led/issi/is31fl3737-mono.c b/drivers/led/issi/is31fl3737-mono.c index 56f169550b..bee81b0c7a 100644 --- a/drivers/led/issi/is31fl3737-mono.c +++ b/drivers/led/issi/is31fl3737-mono.c | |||
| @@ -174,12 +174,14 @@ void is31fl3737_init(uint8_t addr) { | |||
| 174 | 174 | ||
| 175 | void is31fl3737_set_value(int index, uint8_t value) { | 175 | void is31fl3737_set_value(int index, uint8_t value) { |
| 176 | is31fl3737_led_t led; | 176 | is31fl3737_led_t led; |
| 177 | |||
| 177 | if (index >= 0 && index < IS31FL3737_LED_COUNT) { | 178 | if (index >= 0 && index < IS31FL3737_LED_COUNT) { |
| 178 | memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); | 179 | memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); |
| 179 | 180 | ||
| 180 | if (g_pwm_buffer[led.driver][led.v] == value) { | 181 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 181 | return; | 182 | return; |
| 182 | } | 183 | } |
| 184 | |||
| 183 | g_pwm_buffer[led.driver][led.v] = value; | 185 | g_pwm_buffer[led.driver][led.v] = value; |
| 184 | g_pwm_buffer_update_required[led.driver] = true; | 186 | g_pwm_buffer_update_required[led.driver] = true; |
| 185 | } | 187 | } |
| @@ -212,6 +214,7 @@ void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 212 | is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM); | 214 | is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM); |
| 213 | 215 | ||
| 214 | is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); | 216 | is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 217 | |||
| 215 | g_pwm_buffer_update_required[index] = false; | 218 | g_pwm_buffer_update_required[index] = false; |
| 216 | } | 219 | } |
| 217 | } | 220 | } |
| @@ -223,6 +226,7 @@ void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 223 | for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { | 226 | for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { |
| 224 | is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); | 227 | is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); |
| 225 | } | 228 | } |
| 229 | |||
| 226 | g_led_control_registers_update_required[index] = false; | 230 | g_led_control_registers_update_required[index] = false; |
| 227 | } | 231 | } |
| 228 | } | 232 | } |
diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c index 76d17c2b84..debfd570ce 100644 --- a/drivers/led/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | # define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM | 41 | # define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM |
| 42 | #endif | 42 | #endif |
| 43 | 43 | ||
| 44 | #ifndef IS31FL3737_CS_PULLDONW | 44 | #ifndef IS31FL3737_CS_PULLDOWN |
| 45 | # define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM | 45 | # define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM |
| 46 | #endif | 46 | #endif |
| 47 | 47 | ||
| @@ -174,12 +174,14 @@ void is31fl3737_init(uint8_t addr) { | |||
| 174 | 174 | ||
| 175 | void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 175 | void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 176 | is31fl3737_led_t led; | 176 | is31fl3737_led_t led; |
| 177 | |||
| 177 | if (index >= 0 && index < IS31FL3737_LED_COUNT) { | 178 | if (index >= 0 && index < IS31FL3737_LED_COUNT) { |
| 178 | memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); | 179 | memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); |
| 179 | 180 | ||
| 180 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 181 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 181 | return; | 182 | return; |
| 182 | } | 183 | } |
| 184 | |||
| 183 | g_pwm_buffer[led.driver][led.r] = red; | 185 | g_pwm_buffer[led.driver][led.r] = red; |
| 184 | g_pwm_buffer[led.driver][led.g] = green; | 186 | g_pwm_buffer[led.driver][led.g] = green; |
| 185 | g_pwm_buffer[led.driver][led.b] = blue; | 187 | g_pwm_buffer[led.driver][led.b] = blue; |
| @@ -228,6 +230,7 @@ void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 228 | is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM); | 230 | is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM); |
| 229 | 231 | ||
| 230 | is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); | 232 | is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 233 | |||
| 231 | g_pwm_buffer_update_required[index] = false; | 234 | g_pwm_buffer_update_required[index] = false; |
| 232 | } | 235 | } |
| 233 | } | 236 | } |
| @@ -239,6 +242,7 @@ void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 239 | for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { | 242 | for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { |
| 240 | is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); | 243 | is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); |
| 241 | } | 244 | } |
| 245 | |||
| 242 | g_led_control_registers_update_required[index] = false; | 246 | g_led_control_registers_update_required[index] = false; |
| 243 | } | 247 | } |
| 244 | } | 248 | } |
diff --git a/drivers/led/issi/is31fl3741-mono.c b/drivers/led/issi/is31fl3741-mono.c index 72260654ef..09838aa455 100644 --- a/drivers/led/issi/is31fl3741-mono.c +++ b/drivers/led/issi/is31fl3741-mono.c | |||
| @@ -185,12 +185,14 @@ void is31fl3741_init(uint8_t addr) { | |||
| 185 | 185 | ||
| 186 | void is31fl3741_set_value(int index, uint8_t value) { | 186 | void is31fl3741_set_value(int index, uint8_t value) { |
| 187 | is31fl3741_led_t led; | 187 | is31fl3741_led_t led; |
| 188 | |||
| 188 | if (index >= 0 && index < IS31FL3741_LED_COUNT) { | 189 | if (index >= 0 && index < IS31FL3741_LED_COUNT) { |
| 189 | memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); | 190 | memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); |
| 190 | 191 | ||
| 191 | if (g_pwm_buffer[led.driver][led.v] == value) { | 192 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 192 | return; | 193 | return; |
| 193 | } | 194 | } |
| 195 | |||
| 194 | g_pwm_buffer_update_required[led.driver] = true; | 196 | g_pwm_buffer_update_required[led.driver] = true; |
| 195 | g_pwm_buffer[led.driver][led.v] = value; | 197 | g_pwm_buffer[led.driver][led.v] = value; |
| 196 | } | 198 | } |
| @@ -220,14 +222,13 @@ void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 220 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_0); | 222 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_0); |
| 221 | 223 | ||
| 222 | is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); | 224 | is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 223 | } | ||
| 224 | 225 | ||
| 225 | g_pwm_buffer_update_required[index] = false; | 226 | g_pwm_buffer_update_required[index] = false; |
| 227 | } | ||
| 226 | } | 228 | } |
| 227 | 229 | ||
| 228 | void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value) { | 230 | void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value) { |
| 229 | g_pwm_buffer[pled->driver][pled->v] = value; | 231 | g_pwm_buffer[pled->driver][pled->v] = value; |
| 230 | |||
| 231 | g_pwm_buffer_update_required[pled->driver] = true; | 232 | g_pwm_buffer_update_required[pled->driver] = true; |
| 232 | } | 233 | } |
| 233 | 234 | ||
| @@ -252,8 +253,7 @@ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 252 | } | 253 | } |
| 253 | 254 | ||
| 254 | void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value) { | 255 | void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value) { |
| 255 | g_scaling_registers[pled->driver][pled->v] = value; | 256 | g_scaling_registers[pled->driver][pled->v] = value; |
| 256 | |||
| 257 | g_scaling_registers_update_required[pled->driver] = true; | 257 | g_scaling_registers_update_required[pled->driver] = true; |
| 258 | } | 258 | } |
| 259 | 259 | ||
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index 08b86f9171..9bc8c11e8c 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c | |||
| @@ -185,12 +185,14 @@ void is31fl3741_init(uint8_t addr) { | |||
| 185 | 185 | ||
| 186 | void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 186 | void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 187 | is31fl3741_led_t led; | 187 | is31fl3741_led_t led; |
| 188 | |||
| 188 | if (index >= 0 && index < IS31FL3741_LED_COUNT) { | 189 | if (index >= 0 && index < IS31FL3741_LED_COUNT) { |
| 189 | memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); | 190 | memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); |
| 190 | 191 | ||
| 191 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 192 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 192 | return; | 193 | return; |
| 193 | } | 194 | } |
| 195 | |||
| 194 | g_pwm_buffer_update_required[led.driver] = true; | 196 | g_pwm_buffer_update_required[led.driver] = true; |
| 195 | g_pwm_buffer[led.driver][led.r] = red; | 197 | g_pwm_buffer[led.driver][led.r] = red; |
| 196 | g_pwm_buffer[led.driver][led.g] = green; | 198 | g_pwm_buffer[led.driver][led.g] = green; |
| @@ -234,16 +236,15 @@ void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 234 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_0); | 236 | is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_0); |
| 235 | 237 | ||
| 236 | is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); | 238 | is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 237 | } | ||
| 238 | 239 | ||
| 239 | g_pwm_buffer_update_required[index] = false; | 240 | g_pwm_buffer_update_required[index] = false; |
| 241 | } | ||
| 240 | } | 242 | } |
| 241 | 243 | ||
| 242 | void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) { | 244 | void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) { |
| 243 | g_pwm_buffer[pled->driver][pled->r] = red; | 245 | g_pwm_buffer[pled->driver][pled->r] = red; |
| 244 | g_pwm_buffer[pled->driver][pled->g] = green; | 246 | g_pwm_buffer[pled->driver][pled->g] = green; |
| 245 | g_pwm_buffer[pled->driver][pled->b] = blue; | 247 | g_pwm_buffer[pled->driver][pled->b] = blue; |
| 246 | |||
| 247 | g_pwm_buffer_update_required[pled->driver] = true; | 248 | g_pwm_buffer_update_required[pled->driver] = true; |
| 248 | } | 249 | } |
| 249 | 250 | ||
| @@ -268,10 +269,9 @@ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 268 | } | 269 | } |
| 269 | 270 | ||
| 270 | void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) { | 271 | void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) { |
| 271 | g_scaling_registers[pled->driver][pled->r] = red; | 272 | g_scaling_registers[pled->driver][pled->r] = red; |
| 272 | g_scaling_registers[pled->driver][pled->g] = green; | 273 | g_scaling_registers[pled->driver][pled->g] = green; |
| 273 | g_scaling_registers[pled->driver][pled->b] = blue; | 274 | g_scaling_registers[pled->driver][pled->b] = blue; |
| 274 | |||
| 275 | g_scaling_registers_update_required[pled->driver] = true; | 275 | g_scaling_registers_update_required[pled->driver] = true; |
| 276 | } | 276 | } |
| 277 | 277 | ||
diff --git a/drivers/led/issi/is31fl3742a-mono.c b/drivers/led/issi/is31fl3742a-mono.c index 7d9095429d..29e932468a 100644 --- a/drivers/led/issi/is31fl3742a-mono.c +++ b/drivers/led/issi/is31fl3742a-mono.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3742a-mono.h" | 21 | #include "is31fl3742a-mono.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -146,12 +166,14 @@ void is31fl3742a_init(uint8_t addr) { | |||
| 146 | 166 | ||
| 147 | void is31fl3742a_set_value(int index, uint8_t value) { | 167 | void is31fl3742a_set_value(int index, uint8_t value) { |
| 148 | is31fl3742a_led_t led; | 168 | is31fl3742a_led_t led; |
| 169 | |||
| 149 | if (index >= 0 && index < IS31FL3742A_LED_COUNT) { | 170 | if (index >= 0 && index < IS31FL3742A_LED_COUNT) { |
| 150 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); | 171 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); |
| 151 | 172 | ||
| 152 | if (g_pwm_buffer[led.driver][led.v] == value) { | 173 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 153 | return; | 174 | return; |
| 154 | } | 175 | } |
| 176 | |||
| 155 | g_pwm_buffer[led.driver][led.v] = value; | 177 | g_pwm_buffer[led.driver][led.v] = value; |
| 156 | g_pwm_buffer_update_required[led.driver] = true; | 178 | g_pwm_buffer_update_required[led.driver] = true; |
| 157 | } | 179 | } |
| @@ -167,8 +189,7 @@ void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value) { | |||
| 167 | is31fl3742a_led_t led; | 189 | is31fl3742a_led_t led; |
| 168 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); | 190 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); |
| 169 | 191 | ||
| 170 | g_scaling_registers[led.driver][led.v] = value; | 192 | g_scaling_registers[led.driver][led.v] = value; |
| 171 | |||
| 172 | g_scaling_registers_update_required[led.driver] = true; | 193 | g_scaling_registers_update_required[led.driver] = true; |
| 173 | } | 194 | } |
| 174 | 195 | ||
| @@ -177,6 +198,7 @@ void is31fl3742a_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 177 | is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM); | 198 | is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM); |
| 178 | 199 | ||
| 179 | is31fl3742a_write_pwm_buffer(addr, g_pwm_buffer[index]); | 200 | is31fl3742a_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 201 | |||
| 180 | g_pwm_buffer_update_required[index] = false; | 202 | g_pwm_buffer_update_required[index] = false; |
| 181 | } | 203 | } |
| 182 | } | 204 | } |
| @@ -188,6 +210,7 @@ void is31fl3742a_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 188 | for (int i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) { | 210 | for (int i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) { |
| 189 | is31fl3742a_write_register(addr, i, g_scaling_registers[index][i]); | 211 | is31fl3742a_write_register(addr, i, g_scaling_registers[index][i]); |
| 190 | } | 212 | } |
| 213 | |||
| 191 | g_scaling_registers_update_required[index] = false; | 214 | g_scaling_registers_update_required[index] = false; |
| 192 | } | 215 | } |
| 193 | } | 216 | } |
diff --git a/drivers/led/issi/is31fl3742a.c b/drivers/led/issi/is31fl3742a.c index 766ba0ba34..9b9a11ff32 100644 --- a/drivers/led/issi/is31fl3742a.c +++ b/drivers/led/issi/is31fl3742a.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3742a.h" | 21 | #include "is31fl3742a.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -146,12 +166,14 @@ void is31fl3742a_init(uint8_t addr) { | |||
| 146 | 166 | ||
| 147 | void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 167 | void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 148 | is31fl3742a_led_t led; | 168 | is31fl3742a_led_t led; |
| 169 | |||
| 149 | if (index >= 0 && index < IS31FL3742A_LED_COUNT) { | 170 | if (index >= 0 && index < IS31FL3742A_LED_COUNT) { |
| 150 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); | 171 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); |
| 151 | 172 | ||
| 152 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 173 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 153 | return; | 174 | return; |
| 154 | } | 175 | } |
| 176 | |||
| 155 | g_pwm_buffer[led.driver][led.r] = red; | 177 | g_pwm_buffer[led.driver][led.r] = red; |
| 156 | g_pwm_buffer[led.driver][led.g] = green; | 178 | g_pwm_buffer[led.driver][led.g] = green; |
| 157 | g_pwm_buffer[led.driver][led.b] = blue; | 179 | g_pwm_buffer[led.driver][led.b] = blue; |
| @@ -169,10 +191,9 @@ void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, | |||
| 169 | is31fl3742a_led_t led; | 191 | is31fl3742a_led_t led; |
| 170 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); | 192 | memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led)); |
| 171 | 193 | ||
| 172 | g_scaling_registers[led.driver][led.r] = red; | 194 | g_scaling_registers[led.driver][led.r] = red; |
| 173 | g_scaling_registers[led.driver][led.g] = green; | 195 | g_scaling_registers[led.driver][led.g] = green; |
| 174 | g_scaling_registers[led.driver][led.b] = blue; | 196 | g_scaling_registers[led.driver][led.b] = blue; |
| 175 | |||
| 176 | g_scaling_registers_update_required[led.driver] = true; | 197 | g_scaling_registers_update_required[led.driver] = true; |
| 177 | } | 198 | } |
| 178 | 199 | ||
| @@ -181,6 +202,7 @@ void is31fl3742a_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 181 | is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM); | 202 | is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM); |
| 182 | 203 | ||
| 183 | is31fl3742a_write_pwm_buffer(addr, g_pwm_buffer[index]); | 204 | is31fl3742a_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 205 | |||
| 184 | g_pwm_buffer_update_required[index] = false; | 206 | g_pwm_buffer_update_required[index] = false; |
| 185 | } | 207 | } |
| 186 | } | 208 | } |
| @@ -192,6 +214,7 @@ void is31fl3742a_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 192 | for (int i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) { | 214 | for (int i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) { |
| 193 | is31fl3742a_write_register(addr, i, g_scaling_registers[index][i]); | 215 | is31fl3742a_write_register(addr, i, g_scaling_registers[index][i]); |
| 194 | } | 216 | } |
| 217 | |||
| 195 | g_scaling_registers_update_required[index] = false; | 218 | g_scaling_registers_update_required[index] = false; |
| 196 | } | 219 | } |
| 197 | } | 220 | } |
diff --git a/drivers/led/issi/is31fl3743a-mono.c b/drivers/led/issi/is31fl3743a-mono.c index f8340222e4..8bb8836204 100644 --- a/drivers/led/issi/is31fl3743a-mono.c +++ b/drivers/led/issi/is31fl3743a-mono.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3743a-mono.h" | 21 | #include "is31fl3743a-mono.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -155,12 +175,14 @@ void is31fl3743a_init(uint8_t addr, uint8_t sync) { | |||
| 155 | 175 | ||
| 156 | void is31fl3743a_set_value(int index, uint8_t value) { | 176 | void is31fl3743a_set_value(int index, uint8_t value) { |
| 157 | is31fl3743a_led_t led; | 177 | is31fl3743a_led_t led; |
| 178 | |||
| 158 | if (index >= 0 && index < IS31FL3743A_LED_COUNT) { | 179 | if (index >= 0 && index < IS31FL3743A_LED_COUNT) { |
| 159 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); | 180 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); |
| 160 | 181 | ||
| 161 | if (g_pwm_buffer[led.driver][led.v] == value) { | 182 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 162 | return; | 183 | return; |
| 163 | } | 184 | } |
| 185 | |||
| 164 | g_pwm_buffer_update_required[led.driver] = true; | 186 | g_pwm_buffer_update_required[led.driver] = true; |
| 165 | g_pwm_buffer[led.driver][led.v] = value; | 187 | g_pwm_buffer[led.driver][led.v] = value; |
| 166 | } | 188 | } |
| @@ -176,8 +198,7 @@ void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value) { | |||
| 176 | is31fl3743a_led_t led; | 198 | is31fl3743a_led_t led; |
| 177 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); | 199 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); |
| 178 | 200 | ||
| 179 | g_scaling_registers[led.driver][led.v] = value; | 201 | g_scaling_registers[led.driver][led.v] = value; |
| 180 | |||
| 181 | g_scaling_registers_update_required[led.driver] = true; | 202 | g_scaling_registers_update_required[led.driver] = true; |
| 182 | } | 203 | } |
| 183 | 204 | ||
| @@ -186,9 +207,9 @@ void is31fl3743a_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 186 | is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM); | 207 | is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM); |
| 187 | 208 | ||
| 188 | is31fl3743a_write_pwm_buffer(addr, g_pwm_buffer[index]); | 209 | is31fl3743a_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 189 | } | ||
| 190 | 210 | ||
| 191 | g_pwm_buffer_update_required[index] = false; | 211 | g_pwm_buffer_update_required[index] = false; |
| 212 | } | ||
| 192 | } | 213 | } |
| 193 | 214 | ||
| 194 | void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) { | 215 | void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) { |
| @@ -198,6 +219,7 @@ void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 198 | for (int i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) { | 219 | for (int i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) { |
| 199 | is31fl3743a_write_register(addr, i + 1, g_scaling_registers[index][i]); | 220 | is31fl3743a_write_register(addr, i + 1, g_scaling_registers[index][i]); |
| 200 | } | 221 | } |
| 222 | |||
| 201 | g_scaling_registers_update_required[index] = false; | 223 | g_scaling_registers_update_required[index] = false; |
| 202 | } | 224 | } |
| 203 | } | 225 | } |
diff --git a/drivers/led/issi/is31fl3743a.c b/drivers/led/issi/is31fl3743a.c index 997e1c9147..2e47ec83f9 100644 --- a/drivers/led/issi/is31fl3743a.c +++ b/drivers/led/issi/is31fl3743a.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3743a.h" | 21 | #include "is31fl3743a.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -155,12 +175,14 @@ void is31fl3743a_init(uint8_t addr, uint8_t sync) { | |||
| 155 | 175 | ||
| 156 | void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 176 | void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 157 | is31fl3743a_led_t led; | 177 | is31fl3743a_led_t led; |
| 178 | |||
| 158 | if (index >= 0 && index < IS31FL3743A_LED_COUNT) { | 179 | if (index >= 0 && index < IS31FL3743A_LED_COUNT) { |
| 159 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); | 180 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); |
| 160 | 181 | ||
| 161 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 182 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 162 | return; | 183 | return; |
| 163 | } | 184 | } |
| 185 | |||
| 164 | g_pwm_buffer_update_required[led.driver] = true; | 186 | g_pwm_buffer_update_required[led.driver] = true; |
| 165 | g_pwm_buffer[led.driver][led.r] = red; | 187 | g_pwm_buffer[led.driver][led.r] = red; |
| 166 | g_pwm_buffer[led.driver][led.g] = green; | 188 | g_pwm_buffer[led.driver][led.g] = green; |
| @@ -178,10 +200,9 @@ void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, | |||
| 178 | is31fl3743a_led_t led; | 200 | is31fl3743a_led_t led; |
| 179 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); | 201 | memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led)); |
| 180 | 202 | ||
| 181 | g_scaling_registers[led.driver][led.r] = red; | 203 | g_scaling_registers[led.driver][led.r] = red; |
| 182 | g_scaling_registers[led.driver][led.g] = green; | 204 | g_scaling_registers[led.driver][led.g] = green; |
| 183 | g_scaling_registers[led.driver][led.b] = blue; | 205 | g_scaling_registers[led.driver][led.b] = blue; |
| 184 | |||
| 185 | g_scaling_registers_update_required[led.driver] = true; | 206 | g_scaling_registers_update_required[led.driver] = true; |
| 186 | } | 207 | } |
| 187 | 208 | ||
| @@ -190,9 +211,9 @@ void is31fl3743a_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 190 | is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM); | 211 | is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM); |
| 191 | 212 | ||
| 192 | is31fl3743a_write_pwm_buffer(addr, g_pwm_buffer[index]); | 213 | is31fl3743a_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 193 | } | ||
| 194 | 214 | ||
| 195 | g_pwm_buffer_update_required[index] = false; | 215 | g_pwm_buffer_update_required[index] = false; |
| 216 | } | ||
| 196 | } | 217 | } |
| 197 | 218 | ||
| 198 | void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) { | 219 | void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) { |
| @@ -202,6 +223,7 @@ void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 202 | for (int i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) { | 223 | for (int i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) { |
| 203 | is31fl3743a_write_register(addr, i + 1, g_scaling_registers[index][i]); | 224 | is31fl3743a_write_register(addr, i + 1, g_scaling_registers[index][i]); |
| 204 | } | 225 | } |
| 226 | |||
| 205 | g_scaling_registers_update_required[index] = false; | 227 | g_scaling_registers_update_required[index] = false; |
| 206 | } | 228 | } |
| 207 | } | 229 | } |
diff --git a/drivers/led/issi/is31fl3745-mono.c b/drivers/led/issi/is31fl3745-mono.c index c99f397f53..51e4cb9dde 100644 --- a/drivers/led/issi/is31fl3745-mono.c +++ b/drivers/led/issi/is31fl3745-mono.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3745-mono.h" | 21 | #include "is31fl3745-mono.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -155,12 +175,14 @@ void is31fl3745_init(uint8_t addr, uint8_t sync) { | |||
| 155 | 175 | ||
| 156 | void is31fl3745_set_value(int index, uint8_t value) { | 176 | void is31fl3745_set_value(int index, uint8_t value) { |
| 157 | is31fl3745_led_t led; | 177 | is31fl3745_led_t led; |
| 178 | |||
| 158 | if (index >= 0 && index < IS31FL3745_LED_COUNT) { | 179 | if (index >= 0 && index < IS31FL3745_LED_COUNT) { |
| 159 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); | 180 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); |
| 160 | 181 | ||
| 161 | if (g_pwm_buffer[led.driver][led.v] == value) { | 182 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 162 | return; | 183 | return; |
| 163 | } | 184 | } |
| 185 | |||
| 164 | g_pwm_buffer_update_required[led.driver] = true; | 186 | g_pwm_buffer_update_required[led.driver] = true; |
| 165 | g_pwm_buffer[led.driver][led.v] = value; | 187 | g_pwm_buffer[led.driver][led.v] = value; |
| 166 | } | 188 | } |
| @@ -176,8 +198,7 @@ void is31fl3745_set_scaling_register(uint8_t index, uint8_t value) { | |||
| 176 | is31fl3745_led_t led; | 198 | is31fl3745_led_t led; |
| 177 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); | 199 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); |
| 178 | 200 | ||
| 179 | g_scaling_registers[led.driver][led.v] = value; | 201 | g_scaling_registers[led.driver][led.v] = value; |
| 180 | |||
| 181 | g_scaling_registers_update_required[led.driver] = true; | 202 | g_scaling_registers_update_required[led.driver] = true; |
| 182 | } | 203 | } |
| 183 | 204 | ||
| @@ -186,9 +207,9 @@ void is31fl3745_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 186 | is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM); | 207 | is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM); |
| 187 | 208 | ||
| 188 | is31fl3745_write_pwm_buffer(addr, g_pwm_buffer[index]); | 209 | is31fl3745_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 189 | } | ||
| 190 | 210 | ||
| 191 | g_pwm_buffer_update_required[index] = false; | 211 | g_pwm_buffer_update_required[index] = false; |
| 212 | } | ||
| 192 | } | 213 | } |
| 193 | 214 | ||
| 194 | void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) { | 215 | void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) { |
| @@ -198,6 +219,7 @@ void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 198 | for (int i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) { | 219 | for (int i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) { |
| 199 | is31fl3745_write_register(addr, i + 1, g_scaling_registers[index][i]); | 220 | is31fl3745_write_register(addr, i + 1, g_scaling_registers[index][i]); |
| 200 | } | 221 | } |
| 222 | |||
| 201 | g_scaling_registers_update_required[index] = false; | 223 | g_scaling_registers_update_required[index] = false; |
| 202 | } | 224 | } |
| 203 | } | 225 | } |
diff --git a/drivers/led/issi/is31fl3745.c b/drivers/led/issi/is31fl3745.c index 563fe3c115..63e5e08ace 100644 --- a/drivers/led/issi/is31fl3745.c +++ b/drivers/led/issi/is31fl3745.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3745.h" | 21 | #include "is31fl3745.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -155,12 +175,14 @@ void is31fl3745_init(uint8_t addr, uint8_t sync) { | |||
| 155 | 175 | ||
| 156 | void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 176 | void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 157 | is31fl3745_led_t led; | 177 | is31fl3745_led_t led; |
| 178 | |||
| 158 | if (index >= 0 && index < IS31FL3745_LED_COUNT) { | 179 | if (index >= 0 && index < IS31FL3745_LED_COUNT) { |
| 159 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); | 180 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); |
| 160 | 181 | ||
| 161 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 182 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 162 | return; | 183 | return; |
| 163 | } | 184 | } |
| 185 | |||
| 164 | g_pwm_buffer_update_required[led.driver] = true; | 186 | g_pwm_buffer_update_required[led.driver] = true; |
| 165 | g_pwm_buffer[led.driver][led.r] = red; | 187 | g_pwm_buffer[led.driver][led.r] = red; |
| 166 | g_pwm_buffer[led.driver][led.g] = green; | 188 | g_pwm_buffer[led.driver][led.g] = green; |
| @@ -178,10 +200,9 @@ void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, | |||
| 178 | is31fl3745_led_t led; | 200 | is31fl3745_led_t led; |
| 179 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); | 201 | memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led)); |
| 180 | 202 | ||
| 181 | g_scaling_registers[led.driver][led.r] = red; | 203 | g_scaling_registers[led.driver][led.r] = red; |
| 182 | g_scaling_registers[led.driver][led.g] = green; | 204 | g_scaling_registers[led.driver][led.g] = green; |
| 183 | g_scaling_registers[led.driver][led.b] = blue; | 205 | g_scaling_registers[led.driver][led.b] = blue; |
| 184 | |||
| 185 | g_scaling_registers_update_required[led.driver] = true; | 206 | g_scaling_registers_update_required[led.driver] = true; |
| 186 | } | 207 | } |
| 187 | 208 | ||
| @@ -190,9 +211,9 @@ void is31fl3745_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 190 | is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM); | 211 | is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM); |
| 191 | 212 | ||
| 192 | is31fl3745_write_pwm_buffer(addr, g_pwm_buffer[index]); | 213 | is31fl3745_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 193 | } | ||
| 194 | 214 | ||
| 195 | g_pwm_buffer_update_required[index] = false; | 215 | g_pwm_buffer_update_required[index] = false; |
| 216 | } | ||
| 196 | } | 217 | } |
| 197 | 218 | ||
| 198 | void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) { | 219 | void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) { |
| @@ -202,6 +223,7 @@ void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 202 | for (int i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) { | 223 | for (int i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) { |
| 203 | is31fl3745_write_register(addr, i + 1, g_scaling_registers[index][i]); | 224 | is31fl3745_write_register(addr, i + 1, g_scaling_registers[index][i]); |
| 204 | } | 225 | } |
| 226 | |||
| 205 | g_scaling_registers_update_required[index] = false; | 227 | g_scaling_registers_update_required[index] = false; |
| 206 | } | 228 | } |
| 207 | } | 229 | } |
diff --git a/drivers/led/issi/is31fl3746a-mono.c b/drivers/led/issi/is31fl3746a-mono.c index e0c29f3bd3..3dd97833dd 100644 --- a/drivers/led/issi/is31fl3746a-mono.c +++ b/drivers/led/issi/is31fl3746a-mono.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3746a-mono.h" | 21 | #include "is31fl3746a-mono.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -147,12 +167,14 @@ void is31fl3746a_init(uint8_t addr) { | |||
| 147 | 167 | ||
| 148 | void is31fl3746a_set_color(int index, uint8_t value) { | 168 | void is31fl3746a_set_color(int index, uint8_t value) { |
| 149 | is31fl3746a_led_t led; | 169 | is31fl3746a_led_t led; |
| 170 | |||
| 150 | if (index >= 0 && index < IS31FL3746A_LED_COUNT) { | 171 | if (index >= 0 && index < IS31FL3746A_LED_COUNT) { |
| 151 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); | 172 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); |
| 152 | 173 | ||
| 153 | if (g_pwm_buffer[led.driver][led.v] == value) { | 174 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 154 | return; | 175 | return; |
| 155 | } | 176 | } |
| 177 | |||
| 156 | g_pwm_buffer_update_required[led.driver] = true; | 178 | g_pwm_buffer_update_required[led.driver] = true; |
| 157 | g_pwm_buffer[led.driver][led.v] = value; | 179 | g_pwm_buffer[led.driver][led.v] = value; |
| 158 | } | 180 | } |
| @@ -168,8 +190,7 @@ void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value) { | |||
| 168 | is31fl3746a_led_t led; | 190 | is31fl3746a_led_t led; |
| 169 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); | 191 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); |
| 170 | 192 | ||
| 171 | g_scaling_registers[led.driver][led.v] = value; | 193 | g_scaling_registers[led.driver][led.v] = value; |
| 172 | |||
| 173 | g_scaling_registers_update_required[led.driver] = true; | 194 | g_scaling_registers_update_required[led.driver] = true; |
| 174 | } | 195 | } |
| 175 | 196 | ||
| @@ -178,9 +199,9 @@ void is31fl3746a_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 178 | is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM); | 199 | is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM); |
| 179 | 200 | ||
| 180 | is31fl3746a_write_pwm_buffer(addr, g_pwm_buffer[index]); | 201 | is31fl3746a_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 181 | } | ||
| 182 | 202 | ||
| 183 | g_pwm_buffer_update_required[index] = false; | 203 | g_pwm_buffer_update_required[index] = false; |
| 204 | } | ||
| 184 | } | 205 | } |
| 185 | 206 | ||
| 186 | void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) { | 207 | void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) { |
| @@ -190,6 +211,7 @@ void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 190 | for (int i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) { | 211 | for (int i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) { |
| 191 | is31fl3746a_write_register(addr, i + 1, g_scaling_registers[index][i]); | 212 | is31fl3746a_write_register(addr, i + 1, g_scaling_registers[index][i]); |
| 192 | } | 213 | } |
| 214 | |||
| 193 | g_scaling_registers_update_required[index] = false; | 215 | g_scaling_registers_update_required[index] = false; |
| 194 | } | 216 | } |
| 195 | } | 217 | } |
diff --git a/drivers/led/issi/is31fl3746a.c b/drivers/led/issi/is31fl3746a.c index 5a3001f02f..4da63313e8 100644 --- a/drivers/led/issi/is31fl3746a.c +++ b/drivers/led/issi/is31fl3746a.c | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | /* Copyright 2017 Jason Williams | ||
| 2 | * Copyright 2018 Jack Humbert | ||
| 3 | * Copyright 2018 Yiancar | ||
| 4 | * Copyright 2020 MelGeek | ||
| 5 | * Copyright 2021 MasterSpoon | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 1 | #include "is31fl3746a.h" | 21 | #include "is31fl3746a.h" |
| 2 | #include <string.h> | 22 | #include <string.h> |
| 3 | #include "i2c_master.h" | 23 | #include "i2c_master.h" |
| @@ -147,12 +167,14 @@ void is31fl3746a_init(uint8_t addr) { | |||
| 147 | 167 | ||
| 148 | void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | 168 | void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { |
| 149 | is31fl3746a_led_t led; | 169 | is31fl3746a_led_t led; |
| 170 | |||
| 150 | if (index >= 0 && index < IS31FL3746A_LED_COUNT) { | 171 | if (index >= 0 && index < IS31FL3746A_LED_COUNT) { |
| 151 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); | 172 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); |
| 152 | 173 | ||
| 153 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 174 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 154 | return; | 175 | return; |
| 155 | } | 176 | } |
| 177 | |||
| 156 | g_pwm_buffer_update_required[led.driver] = true; | 178 | g_pwm_buffer_update_required[led.driver] = true; |
| 157 | g_pwm_buffer[led.driver][led.r] = red; | 179 | g_pwm_buffer[led.driver][led.r] = red; |
| 158 | g_pwm_buffer[led.driver][led.g] = green; | 180 | g_pwm_buffer[led.driver][led.g] = green; |
| @@ -170,10 +192,9 @@ void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, | |||
| 170 | is31fl3746a_led_t led; | 192 | is31fl3746a_led_t led; |
| 171 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); | 193 | memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led)); |
| 172 | 194 | ||
| 173 | g_scaling_registers[led.driver][led.r] = red; | 195 | g_scaling_registers[led.driver][led.r] = red; |
| 174 | g_scaling_registers[led.driver][led.g] = green; | 196 | g_scaling_registers[led.driver][led.g] = green; |
| 175 | g_scaling_registers[led.driver][led.b] = blue; | 197 | g_scaling_registers[led.driver][led.b] = blue; |
| 176 | |||
| 177 | g_scaling_registers_update_required[led.driver] = true; | 198 | g_scaling_registers_update_required[led.driver] = true; |
| 178 | } | 199 | } |
| 179 | 200 | ||
| @@ -182,9 +203,9 @@ void is31fl3746a_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 182 | is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM); | 203 | is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM); |
| 183 | 204 | ||
| 184 | is31fl3746a_write_pwm_buffer(addr, g_pwm_buffer[index]); | 205 | is31fl3746a_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 185 | } | ||
| 186 | 206 | ||
| 187 | g_pwm_buffer_update_required[index] = false; | 207 | g_pwm_buffer_update_required[index] = false; |
| 208 | } | ||
| 188 | } | 209 | } |
| 189 | 210 | ||
| 190 | void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) { | 211 | void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) { |
| @@ -194,6 +215,7 @@ void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) { | |||
| 194 | for (int i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) { | 215 | for (int i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) { |
| 195 | is31fl3746a_write_register(addr, i + 1, g_scaling_registers[index][i]); | 216 | is31fl3746a_write_register(addr, i + 1, g_scaling_registers[index][i]); |
| 196 | } | 217 | } |
| 218 | |||
| 197 | g_scaling_registers_update_required[index] = false; | 219 | g_scaling_registers_update_required[index] = false; |
| 198 | } | 220 | } |
| 199 | } | 221 | } |
diff --git a/drivers/led/snled27351-mono.c b/drivers/led/snled27351-mono.c index 4519243e0e..93fea8b515 100644 --- a/drivers/led/snled27351-mono.c +++ b/drivers/led/snled27351-mono.c | |||
| @@ -172,7 +172,6 @@ void snled27351_init(uint8_t addr) { | |||
| 172 | 172 | ||
| 173 | snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL); | 173 | snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL); |
| 174 | 174 | ||
| 175 | // Enable LEDs ON/OFF | ||
| 176 | for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { | 175 | for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { |
| 177 | snled27351_write_register(addr, i, 0xFF); | 176 | snled27351_write_register(addr, i, 0xFF); |
| 178 | } | 177 | } |
| @@ -191,6 +190,7 @@ void snled27351_set_value(int index, uint8_t value) { | |||
| 191 | if (g_pwm_buffer[led.driver][led.v] == value) { | 190 | if (g_pwm_buffer[led.driver][led.v] == value) { |
| 192 | return; | 191 | return; |
| 193 | } | 192 | } |
| 193 | |||
| 194 | g_pwm_buffer[led.driver][led.v] = value; | 194 | g_pwm_buffer[led.driver][led.v] = value; |
| 195 | g_pwm_buffer_update_required[led.driver] = true; | 195 | g_pwm_buffer_update_required[led.driver] = true; |
| 196 | } | 196 | } |
| @@ -225,9 +225,10 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 225 | // If any of the transactions fail we risk writing dirty PG0, | 225 | // If any of the transactions fail we risk writing dirty PG0, |
| 226 | // refresh page 0 just in case. | 226 | // refresh page 0 just in case. |
| 227 | if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) { | 227 | if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) { |
| 228 | g_led_control_registers_update_required[index] = true; | 228 | g_pwm_buffer_update_required[index] = true; |
| 229 | } | 229 | } |
| 230 | } | 230 | } |
| 231 | |||
| 231 | g_pwm_buffer_update_required[index] = false; | 232 | g_pwm_buffer_update_required[index] = false; |
| 232 | } | 233 | } |
| 233 | 234 | ||
| @@ -238,8 +239,9 @@ void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 238 | for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { | 239 | for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { |
| 239 | snled27351_write_register(addr, i, g_led_control_registers[index][i]); | 240 | snled27351_write_register(addr, i, g_led_control_registers[index][i]); |
| 240 | } | 241 | } |
| 242 | |||
| 243 | g_led_control_registers_update_required[index] = false; | ||
| 241 | } | 244 | } |
| 242 | g_led_control_registers_update_required[index] = false; | ||
| 243 | } | 245 | } |
| 244 | 246 | ||
| 245 | void snled27351_flush(void) { | 247 | void snled27351_flush(void) { |
diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c index d985e4c5f1..28f770d0cd 100644 --- a/drivers/led/snled27351.c +++ b/drivers/led/snled27351.c | |||
| @@ -189,6 +189,7 @@ void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | |||
| 189 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { | 189 | if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { |
| 190 | return; | 190 | return; |
| 191 | } | 191 | } |
| 192 | |||
| 192 | g_pwm_buffer[led.driver][led.r] = red; | 193 | g_pwm_buffer[led.driver][led.r] = red; |
| 193 | g_pwm_buffer[led.driver][led.g] = green; | 194 | g_pwm_buffer[led.driver][led.g] = green; |
| 194 | g_pwm_buffer[led.driver][led.b] = blue; | 195 | g_pwm_buffer[led.driver][led.b] = blue; |
| @@ -239,9 +240,10 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) { | |||
| 239 | // If any of the transactions fail we risk writing dirty PG0, | 240 | // If any of the transactions fail we risk writing dirty PG0, |
| 240 | // refresh page 0 just in case. | 241 | // refresh page 0 just in case. |
| 241 | if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) { | 242 | if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) { |
| 242 | g_led_control_registers_update_required[index] = true; | 243 | g_pwm_buffer_update_required[index] = true; |
| 243 | } | 244 | } |
| 244 | } | 245 | } |
| 246 | |||
| 245 | g_pwm_buffer_update_required[index] = false; | 247 | g_pwm_buffer_update_required[index] = false; |
| 246 | } | 248 | } |
| 247 | 249 | ||
| @@ -252,8 +254,9 @@ void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) { | |||
| 252 | for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { | 254 | for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { |
| 253 | snled27351_write_register(addr, i, g_led_control_registers[index][i]); | 255 | snled27351_write_register(addr, i, g_led_control_registers[index][i]); |
| 254 | } | 256 | } |
| 257 | |||
| 258 | g_led_control_registers_update_required[index] = false; | ||
| 255 | } | 259 | } |
| 256 | g_led_control_registers_update_required[index] = false; | ||
| 257 | } | 260 | } |
| 258 | 261 | ||
| 259 | void snled27351_flush(void) { | 262 | void snled27351_flush(void) { |
