#include "i2c.h"
#include "quantum.h"
+// for keyboard subdirectory level init functions
+// @Override
+void matrix_init_kb(void) {
+ // call user level keymaps, if any
+ matrix_init_user();
+}
+
+#ifdef RGBLIGHT_ENABLE
extern rgblight_config_t rgblight_config;
+// custom RGB driver
void rgblight_set(void) {
- uint8_t data[3 * RGBLED_NUM];
- for (uint8_t i = 0; i < RGBLED_NUM; i++) {
- if (rgblight_config.enable) {
- data[3 * i] = led[i].g;
- data[3 * i + 1] = led[i].r;
- data[3 * i + 2] = led[i].b;
- } else {
- data[3 * i] = 0;
- data[3 * i + 1] = 0;
- data[3 * i + 2] = 0;
- }
+ if (!rgblight_config.enable) {
+ for (uint8_t i=0; i<RGBLED_NUM; i++) {
+ led[i].r = 0;
+ led[i].g = 0;
+ led[i].b = 0;
}
+ }
+
+ i2c_init();
+ i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM);
+}
+
+bool rgb_init = false;
+void matrix_scan_kb(void) {
+ // if LEDs were previously on before poweroff, turn them back on
+ if (rgb_init == false && rgblight_config.enable) {
i2c_init();
- i2c_send(0xb0, data, 48);
+ i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM);
+ rgb_init = true;
+ }
+
+ rgblight_task();
+#else
+void matrix_scan_kb(void) {
+#endif
+ matrix_scan_user();
+ /* Nothing else for now. */
}
-__attribute__ ((weak))
+__attribute__((weak)) // overridable
+void matrix_init_user(void) {
+
+}
+
+
+__attribute__((weak)) // overridable
void matrix_scan_user(void) {
- rgblight_task();
+
}