Browse Source

Remove chibios threading code in favor of more agnostic code

pull/22181/head
Drashna Jael're 2 weeks ago
parent
commit
8c08e31ab3
No known key found for this signature in database GPG Key ID: DBA1FD3A860D1B11
2 changed files with 69 additions and 62 deletions
  1. +1
    -0
      keyboards/zsa/voyager/info.json
  2. +68
    -62
      keyboards/zsa/voyager/voyager.c

+ 1
- 0
keyboards/zsa/voyager/info.json View File

@ -16,6 +16,7 @@
"features": {
"bootmagic": true,
"caps_word": true,
"defered_exec": true,
"mousekey": true,
"extrakey": true,
"nkro": true,


+ 68
- 62
keyboards/zsa/voyager/voyager.c View File

@ -9,66 +9,72 @@ keyboard_config_t keyboard_config;
bool mcp23018_leds[2] = {0, 0};
bool is_launching = false;
#ifdef DYNAMIC_MACRO_ENABLE
static bool is_dynamic_recording = false;
#if defined(DEFERRED_EXEC_ENABLE)
# if defined(DYNAMIC_MACRO_ENABLE)
deferred_token dynamic_macro_token = INVALID_DEFERRED_TOKEN;
static uint32_t dynamic_macro_led(uint32_t trigger_time, void *cb_arg) {
static bool led_state = true;
;
led_state = !led_state;
STATUS_LED_3(led_state);
return 100;
}
void dynamic_macro_record_start_user(void) {
is_dynamic_recording = true;
if (my_token == INVALID_DEFERRED_TOKEN) {
STATUS_LED_3(true);
dynamic_macro_token = defer_exec(100, dynamic_macro_led, NULL);
}
}
void dynamic_macro_record_end_user(int8_t direction) {
is_dynamic_recording = false;
STATUS_LED_3(false);
}
#endif
void voyager_led_task(void) {
if (is_launching) {
STATUS_LED_1(false);
STATUS_LED_2(false);
if (cancel_deferred_exec(dynamic_macro_token)) {
dynamic_macro_token = INVALID_DEFERRED_TOKEN;
STATUS_LED_3(false);
STATUS_LED_4(false);
STATUS_LED_1(true);
wait_ms(250);
STATUS_LED_2(true);
wait_ms(250);
STATUS_LED_3(true);
wait_ms(250);
STATUS_LED_4(true);
wait_ms(250);
STATUS_LED_1(false);
wait_ms(250);
STATUS_LED_2(false);
wait_ms(250);
STATUS_LED_3(false);
wait_ms(250);
STATUS_LED_4(false);
wait_ms(250);
is_launching = false;
layer_state_set_kb(layer_state);
}
#ifdef DYNAMIC_MACRO_ENABLE
else if (is_dynamic_recording) {
STATUS_LED_3(true);
wait_ms(100);
STATUS_LED_3(false);
wait_ms(55);
}
#endif
else {
wait_ms(100);
}
}
# endif
static THD_WORKING_AREA(waLEDThread, 128);
static THD_FUNCTION(LEDThread, arg) {
(void)arg;
chRegSetThreadName("LEDThread");
while (true) {
voyager_led_task();
static uint32_t startup_exec(uint32_t trigger_time, void *cb_arg) {
static uint8_t startup_loop = 0;
switch (startup_loop++) {
case 0:
STATUS_LED_1(true);
STATUS_LED_2(false);
STATUS_LED_3(false);
STATUS_LED_4(false);
break;
case 1:
STATUS_LED_2(true);
break;
case 2:
STATUS_LED_3(true);
break;
case 3:
STATUS_LED_4(true);
break;
case 4:
STATUS_LED_1(false);
break;
case 5:
STATUS_LED_2(false);
break;
case 6:
STATUS_LED_3(false);
break;
case 7:
STATUS_LED_4(false);
break;
case 8:
is_launching = false;
layer_state_set_kb(layer_state);
return 0;
}
return 250;
}
#endif
void keyboard_pre_init_kb(void) {
// Initialize Reset pins
@ -84,7 +90,6 @@ void keyboard_pre_init_kb(void) {
gpio_write_pin_low(B4);
gpio_write_pin_low(B3);
chThdCreateStatic(waLEDThread, sizeof(waLEDThread), NORMALPRIO - 16, LEDThread, NULL);
keyboard_pre_init_user();
}
@ -95,12 +100,12 @@ layer_state_t layer_state_set_kb(layer_state_t state) {
uint8_t layer = get_highest_layer(state);
STATUS_LED_1(layer & (1<<0));
STATUS_LED_2(layer & (1<<1));
STATUS_LED_3(layer & (1<<2));
STATUS_LED_1(layer & (1 << 0));
STATUS_LED_2(layer & (1 << 1));
STATUS_LED_3(layer & (1 << 2));
# if !defined(CAPS_LOCK_STATUS)
STATUS_LED_4(layer & (1<<3));
STATUS_LED_4(layer & (1 << 3));
# endif
return state;
}
@ -174,11 +179,6 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{1, C8_13, C7_13, C9_13},
};
// clang-format on
void keyboard_post_init_kb(void) {
rgb_matrix_enable_noeeprom();
keyboard_post_init_user();
}
#endif
#ifdef SWAP_HANDS_ENABLE
@ -259,7 +259,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return true;
}
void matrix_init_kb(void) {
void keyboard_post_init_kb(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_enable_noeeprom();
#endif
keyboard_config.raw = eeconfig_read_kb();
if (!keyboard_config.led_level && !keyboard_config.led_level_res) {
@ -267,7 +271,10 @@ void matrix_init_kb(void) {
keyboard_config.led_level_res = 0b11;
eeconfig_update_kb(keyboard_config.raw);
}
matrix_init_user();
#if defined(DEFERRED_EXEC_ENABLE)
defer_exec(500, startup_exec, NULL);
#endif
keyboard_post_init_user();
}
void eeconfig_init_kb(void) { // EEPROM is getting reset!
@ -293,7 +300,6 @@ __attribute__((weak)) void bootloader_jump(void) {
NVIC_SystemReset();
}
__attribute__((weak)) void mcu_reset(void) {
gpio_set_pin_output_push_pull(A9);
gpio_set_pin_output_push_pull(A8);


Loading…
Cancel
Save