static void kbd_task(void *pvParameters) { uint8_t idx = 0; bool last_state = false; char hikob[] = "-- HiKoB --"; while (1) { /* LED used to indicate if the device is set up */ if(kbd_get_state()) leds_off(LED_1); last_state = false; leds_toggle(LED_0); vTaskDelay(configTICK_RATE_HZ/10); if(!button_state() && !last_state){ //if the button is pushed kbd_send(hikob[idx]); idx ++; last_state = true; } else{ kbd_send(NO_CHAR); last_state = false; } if(idx > sizeof(hikob)) idx = 0; } }
static void sio_data_write(void *opaque, uint32_t addr, uint32_t value) { KeyBoardState *s = opaque; if (s->status & SIO_STAT_TXRDY) { s->status &= ~SIO_STAT_TXE; kbd_send(s, value); } }