#include "betalupi_voyager.h" #include "raw_hid.h" keyboard_config_t keyboard_config; bool mcp23018_leds[2] = {0, 0}; bool is_launching = false; void voyager_led_task(void) { if (is_launching) { STATUS_LED_1(false); STATUS_LED_2(false); STATUS_LED_3(false); STATUS_LED_4(false); wait_ms(250); STATUS_LED_1(true); STATUS_LED_2(true); wait_ms(250); STATUS_LED_3(true); STATUS_LED_4(true); wait_ms(250); STATUS_LED_1(false); STATUS_LED_2(false); wait_ms(250); STATUS_LED_3(false); STATUS_LED_4(false); wait_ms(250); is_launching = false; layer_state_set_kb(layer_state); } } static THD_WORKING_AREA(waLEDThread, 128); static THD_FUNCTION(LEDThread, arg) { (void)arg; chRegSetThreadName("LEDThread"); while (true) { voyager_led_task(); } } void keyboard_pre_init_kb(void) { // Initialize Reset pins setPinInput(A8); setPinOutput(A9); writePinLow(A9); setPinOutput(B5); setPinOutput(B4); setPinOutput(B3); writePinLow(B5); writePinLow(B4); writePinLow(B3); chThdCreateStatic(waLEDThread, sizeof(waLEDThread), NORMALPRIO - 16, LEDThread, NULL); keyboard_pre_init_user(); rgb_matrix_set_flags(LED_FLAG_NONE); rgb_matrix_set_color_all(0, 0, 0); } layer_state_t layer_state_set_kb(layer_state_t state) { state = layer_state_set_user(state); return state; } #ifdef RGB_MATRIX_ENABLE // clang-format off const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location * | | G location * | | | B location * | | | | */ {0, C2_2, C1_2, C4_3}, {0, C2_3, C1_3, C3_3}, {0, C2_4, C1_4, C3_4}, {0, C2_5, C1_5, C3_5}, {0, C2_6, C1_6, C3_6}, {0, C2_7, C1_7, C3_7}, {0, C2_8, C1_8, C3_8}, {0, C8_1, C7_1, C9_1}, {0, C8_2, C7_2, C9_2}, {0, C8_3, C7_3, C9_3}, {0, C8_4, C7_4, C9_4}, {0, C8_5, C7_5, C9_5}, {0, C8_6, C7_6, C9_6}, {0, C2_10, C1_10, C4_11}, {0, C2_11, C1_11, C3_11}, {0, C2_12, C1_12, C3_12}, {0, C2_13, C1_13, C3_13}, {0, C2_14, C1_14, C3_14}, {0, C2_15, C1_15, C3_15}, {0, C2_16, C1_16, C3_16}, {0, C8_9, C7_9, C9_9}, {0, C8_10, C7_10, C9_10}, {0, C8_11, C7_11, C9_11}, {0, C8_12, C7_12, C9_12}, {0, C8_13, C7_13, C9_13}, {0, C8_14, C7_14, C9_14}, {1, C2_7, C1_7, C3_7}, {1, C2_6, C1_6, C3_6}, {1, C2_5, C1_5, C3_5}, {1, C2_4, C1_4, C3_4}, {1, C2_3, C1_3, C3_3}, {1, C2_2, C1_2, C4_3}, {1, C8_5, C7_5, C9_5}, {1, C8_4, C7_4, C9_4}, {1, C8_3, C7_3, C9_3}, {1, C8_2, C7_2, C9_2}, {1, C8_1, C7_1, C9_1}, {1, C2_8, C1_8, C3_8}, {1, C2_14, C1_14, C3_14}, {1, C2_13, C1_13, C3_13}, {1, C2_12, C1_12, C3_12}, {1, C2_11, C1_11, C3_11}, {1, C2_10, C1_10, C4_11}, {1, C8_6, C7_6, C9_6}, {1, C8_12, C7_12, C9_12}, {1, C8_11, C7_11, C9_11}, {1, C8_10, C7_10, C9_10}, {1, C8_9, C7_9, C9_9}, {1, C2_16, C1_16, C3_16}, {1, C2_15, C1_15, C3_15}, {1, C8_14, C7_14, C9_14}, {1, C8_13, C7_13, C9_13}, }; led_config_t g_led_config = { { { NO_LED, 0, 1, 2, 3, 4, 5 }, { NO_LED, 6, 7, 8, 9, 10, 11 }, { NO_LED, 12, 13, 14, 15, 16, 17 }, { NO_LED, 18, 19, 20, 21, 22, NO_LED }, { NO_LED, NO_LED, NO_LED, NO_LED, 23, NO_LED, NO_LED }, { 24, 25, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, { 26, 27, 28, 29, 30, 31, NO_LED }, { 32, 33, 34, 35, 36, 37, NO_LED }, { 38, 39, 40, 41, 42, 43, NO_LED }, { NO_LED, 45, 46, 47, 48, 49, NO_LED }, { NO_LED, NO_LED, 44, NO_LED, NO_LED, NO_LED, NO_LED }, { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 50, 51 }, }, { {0, 10}, {17, 10}, {34,8}, {52, 5}, {69, 8}, {86, 10}, {0, 21}, {17, 21}, {34, 19}, {52, 17}, {69, 19}, {86, 21}, {0, 32}, {17, 32}, {34, 30}, {52, 28}, {69, 30}, {86, 32}, {0, 43}, {17, 43}, {34, 41}, {52, 39}, {69, 41}, {86, 43}, {86, 53}, {96, 58}, {138, 10}, {155, 10}, {172, 8}, {190, 5}, {207, 8}, {224, 10}, {138, 21}, {155, 21}, {172, 19}, {190, 17}, {207, 19}, {224, 21}, {138, 32}, {155, 32}, {172, 30}, {190, 28}, {207, 30}, {224, 32}, {138, 43}, {155,43}, {172, 41}, {190, 39}, {207, 41}, {224, 43}, {128, 58}, {138, 53} }, { 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 1, 1, 1 } }; // clang-format on #endif bool process_record_kb(uint16_t keycode, keyrecord_t *record) { if (!process_record_user(keycode, record)) { return false; } switch (keycode) { #ifdef RGB_MATRIX_ENABLE case RGB_TOG: if (record->event.pressed) { switch (rgb_matrix_get_flags()) { case LED_FLAG_ALL: { rgb_matrix_set_flags(LED_FLAG_NONE); rgb_matrix_set_color_all(0, 0, 0); } break; default: { rgb_matrix_set_flags(LED_FLAG_ALL); } break; } } return false; #endif } return true; } void matrix_init_kb(void) { keyboard_config.raw = eeconfig_read_kb(); if (!keyboard_config.led_level && !keyboard_config.led_level_res) { keyboard_config.led_level = true; keyboard_config.led_level_res = 0b11; eeconfig_update_kb(keyboard_config.raw); } matrix_init_user(); } void eeconfig_init_kb(void) { // EEPROM is getting reset! keyboard_config.raw = 0; keyboard_config.led_level = true; keyboard_config.led_level_res = 0b11; keyboard_config.disable_layer_led = false; eeconfig_update_kb(keyboard_config.raw); eeconfig_init_user(); }