Skip to content

Commit dda6e7f

Browse files
authored
LED drivers: register naming cleanups (qmk#22436)
1 parent e279c78 commit dda6e7f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+684
-671
lines changed

drivers/led/aw20216s.c

+12-35
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,16 @@
1919
#include "wait.h"
2020
#include "spi_master.h"
2121

22-
/* The AW20216S appears to be somewhat similar to the IS31FL743, although quite
23-
* a few things are different, such as the command byte format and page ordering.
24-
* The LED addresses start from 0x00 instead of 0x01.
25-
*/
26-
#define AW20216S_ID 0b1010 << 4
27-
28-
#define AW20216S_PAGE_FUNCTION 0x00 << 1 // PG0, Function registers
29-
#define AW20216S_PAGE_PWM 0x01 << 1 // PG1, LED PWM control
30-
#define AW20216S_PAGE_SCALING 0x02 << 1 // PG2, LED current scaling control
31-
#define AW20216S_PAGE_PATCHOICE 0x03 << 1 // PG3, Pattern choice?
32-
#define AW20216S_PAGE_PWMSCALING 0x04 << 1 // PG4, LED PWM + Scaling control?
33-
34-
#define AW20216S_WRITE 0
35-
#define AW20216S_READ 1
36-
37-
#define AW20216S_REG_CONFIGURATION 0x00 // PG0
38-
#define AW20216S_REG_GLOBALCURRENT 0x01 // PG0
39-
#define AW20216S_REG_RESET 0x2F // PG0
40-
#define AW20216S_REG_MIXFUNCTION 0x46 // PG0
41-
42-
// Default value of AW20216S_REG_CONFIGURATION
43-
// D7:D4 = 1011, SWSEL (SW1~SW12 active)
44-
// D3 = 0?, reserved (apparently this should be 1 but it doesn't seem to matter)
45-
// D2:D1 = 00, OSDE (open/short detection enable)
46-
// D0 = 0, CHIPEN (write 1 to enable LEDs when hardware enable pulled high)
47-
#define AW20216S_CONFIG_DEFAULT 0b10110000
48-
#define AW20216S_MIXCR_DEFAULT 0b00000000
49-
#define AW20216S_RESET_CMD 0xAE
50-
#define AW20216S_CHIPEN 1
51-
#define AW20216S_LPEN (0x01 << 1)
52-
5322
#define AW20216S_PWM_REGISTER_COUNT 216
5423

24+
#ifndef AW20216S_CONFIGURATION
25+
# define AW20216S_CONFIGURATION (AW20216S_CONFIGURATION_SWSEL_1_12 | AW20216S_CONFIGURATION_CHIPEN)
26+
#endif
27+
28+
#ifndef AW20216S_MIX_FUNCTION
29+
# define AW20216S_MIX_FUNCTION (AW20216S_MIX_FUNCTION_LPEN)
30+
#endif
31+
5532
#ifndef AW20216S_SCALING_MAX
5633
# define AW20216S_SCALING_MAX 150
5734
#endif
@@ -102,7 +79,7 @@ static inline bool aw20216s_write_register(pin_t cs_pin, uint8_t page, uint8_t r
10279
}
10380

10481
void aw20216s_soft_reset(pin_t cs_pin) {
105-
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_RESET, AW20216S_RESET_CMD);
82+
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_RESET, AW20216S_RESET_MAGIC);
10683
}
10784

10885
static void aw20216s_init_scaling(pin_t cs_pin) {
@@ -114,16 +91,16 @@ static void aw20216s_init_scaling(pin_t cs_pin) {
11491

11592
static inline void aw20216s_init_current_limit(pin_t cs_pin) {
11693
// Push config
117-
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_GLOBALCURRENT, AW20216S_GLOBAL_CURRENT_MAX);
94+
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_GLOBAL_CURRENT, AW20216S_GLOBAL_CURRENT_MAX);
11895
}
11996

12097
static inline void aw20216s_soft_enable(pin_t cs_pin) {
12198
// Push config
122-
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_CONFIGURATION, AW20216S_CONFIG_DEFAULT | AW20216S_CHIPEN);
99+
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_CONFIGURATION, AW20216S_CONFIGURATION);
123100
}
124101

125102
static inline void aw20216s_auto_lowpower(pin_t cs_pin) {
126-
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_MIXFUNCTION, AW20216S_MIXCR_DEFAULT | AW20216S_LPEN);
103+
aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_MIX_FUNCTION, AW20216S_MIX_FUNCTION);
127104
}
128105

129106
void aw20216s_init_drivers(void) {

drivers/led/aw20216s.h

+22
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,28 @@
5252
#define g_aw_leds g_aw20216s_leds
5353
// ========
5454

55+
#define AW20216S_ID (0b1010 << 4)
56+
#define AW20216S_WRITE 0
57+
#define AW20216S_READ 1
58+
59+
#define AW20216S_PAGE_FUNCTION (0x00 << 1)
60+
#define AW20216S_PAGE_PWM (0x01 << 1)
61+
#define AW20216S_PAGE_SCALING (0x02 << 1)
62+
#define AW20216S_PAGE_PATTERN_CHOICE (0x03 << 1)
63+
#define AW20216S_PAGE_PWM_SCALING (0x04 << 1)
64+
65+
#define AW20216S_FUNCTION_REG_CONFIGURATION 0x00
66+
#define AW20216S_CONFIGURATION_SWSEL_1_12 (0b1011 << 4)
67+
#define AW20216S_CONFIGURATION_CHIPEN (0b1 << 0)
68+
69+
#define AW20216S_FUNCTION_REG_GLOBAL_CURRENT 0x01
70+
71+
#define AW20216S_FUNCTION_REG_RESET 0x2F
72+
#define AW20216S_RESET_MAGIC 0xAE
73+
74+
#define AW20216S_FUNCTION_REG_MIX_FUNCTION 0x46
75+
#define AW20216S_MIX_FUNCTION_LPEN (0b1 << 1)
76+
5577
#if defined(RGB_MATRIX_AW20216S)
5678
# define AW20216S_LED_COUNT RGB_MATRIX_LED_COUNT
5779
#endif

drivers/led/issi/is31fl3218-simple.c

+2-9
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,6 @@
1717
#include <string.h>
1818
#include "i2c_master.h"
1919

20-
// These are the register addresses
21-
#define IS31FL3218_REG_SHUTDOWN 0x00
22-
#define IS31FL3218_REG_PWM 0x01
23-
#define IS31FL3218_REG_CONTROL 0x13
24-
#define IS31FL3218_REG_UPDATE 0x16
25-
#define IS31FL3218_REG_RESET 0x17
26-
2720
#define IS31FL3218_PWM_REGISTER_COUNT 18
2821
#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3
2922

@@ -86,7 +79,7 @@ void is31fl3218_init(void) {
8679

8780
// turn off all LEDs in the LED control register
8881
for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
89-
is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, 0x00);
82+
is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00);
9083
}
9184

9285
// Load PWM registers and LED Control register data
@@ -146,7 +139,7 @@ void is31fl3218_update_pwm_buffers(void) {
146139
void is31fl3218_update_led_control_registers(void) {
147140
if (g_led_control_registers_update_required) {
148141
for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
149-
is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, g_led_control_registers[i]);
142+
is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]);
150143
}
151144

152145
g_led_control_registers_update_required = false;

drivers/led/issi/is31fl3218-simple.h

+8
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@
2121
#include "progmem.h"
2222
#include "util.h"
2323

24+
#define IS31FL3218_REG_SHUTDOWN 0x00
25+
#define IS31FL3218_REG_PWM 0x01
26+
#define IS31FL3218_REG_LED_CONTROL_1 0x13
27+
#define IS31FL3218_REG_LED_CONTROL_2 0x14
28+
#define IS31FL3218_REG_LED_CONTROL_3 0x15
29+
#define IS31FL3218_REG_UPDATE 0x16
30+
#define IS31FL3218_REG_RESET 0x17
31+
2432
#define IS31FL3218_I2C_ADDRESS 0x54
2533

2634
#if defined(LED_MATRIX_IS31FL3218)

drivers/led/issi/is31fl3218.c

+2-9
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,6 @@
1717
#include <string.h>
1818
#include "i2c_master.h"
1919

20-
// These are the register addresses
21-
#define IS31FL3218_REG_SHUTDOWN 0x00
22-
#define IS31FL3218_REG_PWM 0x01
23-
#define IS31FL3218_REG_CONTROL 0x13
24-
#define IS31FL3218_REG_UPDATE 0x16
25-
#define IS31FL3218_REG_RESET 0x17
26-
2720
#define IS31FL3218_PWM_REGISTER_COUNT 18
2821
#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3
2922

@@ -86,7 +79,7 @@ void is31fl3218_init(void) {
8679

8780
// turn off all LEDs in the LED control register
8881
for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
89-
is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, 0x00);
82+
is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00);
9083
}
9184

9285
// Load PWM registers and LED Control register data
@@ -162,7 +155,7 @@ void is31fl3218_update_pwm_buffers(void) {
162155
void is31fl3218_update_led_control_registers(void) {
163156
if (g_led_control_registers_update_required) {
164157
for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
165-
is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, g_led_control_registers[i]);
158+
is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]);
166159
}
167160

168161
g_led_control_registers_update_required = false;

drivers/led/issi/is31fl3218.h

+8
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@
2121
#include "progmem.h"
2222
#include "util.h"
2323

24+
#define IS31FL3218_REG_SHUTDOWN 0x00
25+
#define IS31FL3218_REG_PWM 0x01
26+
#define IS31FL3218_REG_LED_CONTROL_1 0x13
27+
#define IS31FL3218_REG_LED_CONTROL_2 0x14
28+
#define IS31FL3218_REG_LED_CONTROL_3 0x15
29+
#define IS31FL3218_REG_UPDATE 0x16
30+
#define IS31FL3218_REG_RESET 0x17
31+
2432
#define IS31FL3218_I2C_ADDRESS 0x54
2533

2634
#if defined(RGB_MATRIX_IS31FL3218)

drivers/led/issi/is31fl3731-simple.c

+10-30
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,6 @@
2222
#include "i2c_master.h"
2323
#include "wait.h"
2424

25-
#define IS31FL3731_REG_CONFIG 0x00
26-
#define IS31FL3731_REG_CONFIG_PICTUREMODE 0x00
27-
#define IS31FL3731_REG_CONFIG_AUTOPLAYMODE 0x08
28-
#define IS31FL3731_REG_CONFIG_AUDIOPLAYMODE 0x18
29-
30-
#define IS31FL3731_CONF_PICTUREMODE 0x00
31-
#define IS31FL3731_CONF_AUTOFRAMEMODE 0x04
32-
#define IS31FL3731_CONF_AUDIOMODE 0x08
33-
34-
#define IS31FL3731_REG_PICTUREFRAME 0x01
35-
36-
// Not defined in the datasheet -- See AN for IC
37-
#define IS31FL3731_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
38-
39-
#define IS31FL3731_REG_SHUTDOWN 0x0A
40-
#define IS31FL3731_REG_AUDIOSYNC 0x06
41-
42-
#define IS31FL3731_COMMANDREGISTER 0xFD
43-
#define IS31FL3731_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine'
44-
4525
#define IS31FL3731_PWM_REGISTER_COUNT 144
4626
#define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18
4727

@@ -144,26 +124,26 @@ void is31fl3731_init(uint8_t addr) {
144124
// then disable software shutdown.
145125

146126
// select "function register" bank
147-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG);
127+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
148128

149129
// enable software shutdown
150-
is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x00);
130+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00);
151131
#ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array
152-
is31fl3731_write_register(addr, IS31FL3731_REG_GHOST_IMAGE_PREVENTION, 0x10);
132+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN);
153133
#endif
154134

155135
// this delay was copied from other drivers, might not be needed
156136
wait_ms(10);
157137

158138
// picture mode
159-
is31fl3731_write_register(addr, IS31FL3731_REG_CONFIG, IS31FL3731_REG_CONFIG_PICTUREMODE);
139+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE);
160140
// display frame 0
161-
is31fl3731_write_register(addr, IS31FL3731_REG_PICTUREFRAME, 0x00);
141+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00);
162142
// audio sync off
163-
is31fl3731_write_register(addr, IS31FL3731_REG_AUDIOSYNC, 0x00);
143+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00);
164144

165145
// select bank 0
166-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0);
146+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
167147

168148
// turn off all LEDs in the LED control register
169149
for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
@@ -181,15 +161,15 @@ void is31fl3731_init(uint8_t addr) {
181161
}
182162

183163
// select "function register" bank
184-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG);
164+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
185165

186166
// disable software shutdown
187-
is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x01);
167+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01);
188168

189169
// select bank 0 and leave it selected.
190170
// most usage after initialization is just writing PWM buffers in bank 0
191171
// as there's not much point in double-buffering
192-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0);
172+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
193173
}
194174

195175
void is31fl3731_set_value(int index, uint8_t value) {

drivers/led/issi/is31fl3731-simple.h

+24
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,30 @@
5050
#define g_is31_leds g_is31fl3731_leds
5151
// ========
5252

53+
#define IS31FL3731_REG_COMMAND 0xFD
54+
#define IS31FL3731_COMMAND_FRAME_1 0x00
55+
#define IS31FL3731_COMMAND_FRAME_2 0x01
56+
#define IS31FL3731_COMMAND_FRAME_3 0x02
57+
#define IS31FL3731_COMMAND_FRAME_4 0x03
58+
#define IS31FL3731_COMMAND_FRAME_5 0x04
59+
#define IS31FL3731_COMMAND_FRAME_6 0x05
60+
#define IS31FL3731_COMMAND_FRAME_7 0x06
61+
#define IS31FL3731_COMMAND_FRAME_8 0x07
62+
#define IS31FL3731_COMMAND_FUNCTION 0x0B
63+
64+
#define IS31FL3731_FUNCTION_REG_CONFIG 0x00
65+
#define IS31FL3731_CONFIG_MODE_PICTURE 0x00
66+
#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08
67+
#define IS31FL3731_CONFIG_MODE_AUDIO_PLAY 0x18
68+
69+
#define IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY 0x01
70+
#define IS31FL3731_FUNCTION_REG_AUDIO_SYNC 0x06
71+
#define IS31FL3731_FUNCTION_REG_SHUTDOWN 0x0A
72+
73+
// Not defined in the datasheet -- See AN for IC
74+
#define IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION 0xC2
75+
#define IS31FL3731_GHOST_IMAGE_PREVENTION_GEN 0x10
76+
5377
#define IS31FL3731_I2C_ADDRESS_GND 0x74
5478
#define IS31FL3731_I2C_ADDRESS_SCL 0x75
5579
#define IS31FL3731_I2C_ADDRESS_SDA 0x76

drivers/led/issi/is31fl3731.c

+10-30
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,6 @@
2121
#include "i2c_master.h"
2222
#include "wait.h"
2323

24-
#define IS31FL3731_REG_CONFIG 0x00
25-
#define IS31FL3731_REG_CONFIG_PICTUREMODE 0x00
26-
#define IS31FL3731_REG_CONFIG_AUTOPLAYMODE 0x08
27-
#define IS31FL3731_REG_CONFIG_AUDIOPLAYMODE 0x18
28-
29-
#define IS31FL3731_CONF_PICTUREMODE 0x00
30-
#define IS31FL3731_CONF_AUTOFRAMEMODE 0x04
31-
#define IS31FL3731_CONF_AUDIOMODE 0x08
32-
33-
#define IS31FL3731_REG_PICTUREFRAME 0x01
34-
35-
// Not defined in the datasheet -- See AN for IC
36-
#define IS31FL3731_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
37-
38-
#define IS31FL3731_REG_SHUTDOWN 0x0A
39-
#define IS31FL3731_REG_AUDIOSYNC 0x06
40-
41-
#define IS31FL3731_COMMANDREGISTER 0xFD
42-
#define IS31FL3731_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine'
43-
4424
#define IS31FL3731_PWM_REGISTER_COUNT 144
4525
#define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18
4626

@@ -141,26 +121,26 @@ void is31fl3731_init(uint8_t addr) {
141121
// then disable software shutdown.
142122

143123
// select "function register" bank
144-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG);
124+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
145125

146126
// enable software shutdown
147-
is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x00);
127+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00);
148128
#ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array
149-
is31fl3731_write_register(addr, IS31FL3731_REG_GHOST_IMAGE_PREVENTION, 0x10);
129+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN);
150130
#endif
151131

152132
// this delay was copied from other drivers, might not be needed
153133
wait_ms(10);
154134

155135
// picture mode
156-
is31fl3731_write_register(addr, IS31FL3731_REG_CONFIG, IS31FL3731_REG_CONFIG_PICTUREMODE);
136+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE);
157137
// display frame 0
158-
is31fl3731_write_register(addr, IS31FL3731_REG_PICTUREFRAME, 0x00);
138+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00);
159139
// audio sync off
160-
is31fl3731_write_register(addr, IS31FL3731_REG_AUDIOSYNC, 0x00);
140+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00);
161141

162142
// select bank 0
163-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0);
143+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
164144

165145
// turn off all LEDs in the LED control register
166146
for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
@@ -178,15 +158,15 @@ void is31fl3731_init(uint8_t addr) {
178158
}
179159

180160
// select "function register" bank
181-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG);
161+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
182162

183163
// disable software shutdown
184-
is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x01);
164+
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01);
185165

186166
// select bank 0 and leave it selected.
187167
// most usage after initialization is just writing PWM buffers in bank 0
188168
// as there's not much point in double-buffering
189-
is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0);
169+
is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
190170
}
191171

192172
void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {

0 commit comments

Comments
 (0)