void xfault() { #if 0 volatile int i; while (1) { led_set_status(LED_SCROLL_LOCK, 1); for (i=0;i<10000;i++); led_set_status(LED_SCROLL_LOCK, 0); for (i=0;i<10000;i++); } #endif }
static void led_handle_events(event_handler* ev) { led_handler* h = (led_handler*) ev; h->status = ! h->status; led_set_status(h->led, h->status); }
void led_handler_construct (led_handler* h, int led) { h->led = led; h->status = 0; fire_n_handler_construct(&h->ev, -1, led_handle_events); led_set_status(h->led, h->status); }
void set_usb_kbd_leds(uint8_t leds) { int i; leds_real_status = leds; if (leds_override != LEDS_OVERRIDE_NONE) return; for (i=0;i<LED_COUNT;i++){ led_set_status(i, leds & (1<<i)); } }
void kbd_suspend() { int i; matrix_scan_stop(); /* shutdown LEDs */ for (i=0;i<LED_COUNT;i++){ led_set_status(i, 0); } matrix_unselect_cols(); if (usb_remote_wakeup_enabled()) { matrix_idle_wakeup_event_enter(); } }
void handle_leds_override() { if (likely(leds_ticks>0)) return; switch (leds_override){ case LEDS_OVERRIDE_STARTUP: case LEDS_OVERRIDE_STARTUP+3: led_set_status(LED_NUM_LOCK, 1); led_set_status(LED_CAPS_LOCK, 0); led_set_status(LED_SCROLL_LOCK, 0); leds_override++; leds_ticks = 100; break; case LEDS_OVERRIDE_STARTUP+1: case LEDS_OVERRIDE_STARTUP+4: led_set_status(LED_NUM_LOCK, 0); led_set_status(LED_CAPS_LOCK, 1); led_set_status(LED_SCROLL_LOCK, 0); leds_override++; leds_ticks = 100; break; case LEDS_OVERRIDE_STARTUP+2: case LEDS_OVERRIDE_STARTUP+5: led_set_status(LED_NUM_LOCK, 0); led_set_status(LED_CAPS_LOCK, 0); led_set_status(LED_SCROLL_LOCK, 1); leds_override++; leds_ticks = 100; break; case LEDS_OVERRIDE_STARTUP+6: leds_override = LEDS_OVERRIDE_NONE; set_usb_kbd_leds(leds_real_status); break; } }
void led_handler_set (led_handler* h, int status) { fire_n_handler_repeat(&h->ev, 0); h->status = status; led_set_status(h->led, h->status); }