void ui_process(uint16_t framenumber) { bool b_btn_state, success; static bool btn_last_state = false; static bool sequence_running = false; static uint8_t sequence_pos = 0; uint8_t value; static uint16_t cpt_sof = 0; if ((framenumber % 1000) == 0) { LED_On(LED_0_PIN); } if ((framenumber % 1000) == 500) { LED_Off(LED_0_PIN); } // Scan process running each 2ms cpt_sof++; if ((cpt_sof % 2) == 0) { return; } // Scan buttons on switch 0 to send keys sequence b_btn_state = (!port_pin_get_input_level(BUTTON_0_PIN)); if (b_btn_state != btn_last_state) { btn_last_state = b_btn_state; if (btn_wakeup) { if (!b_btn_state) { btn_wakeup = false; } } else { sequence_running = true; } } // Sequence process running each period if (SEQUENCE_PERIOD > cpt_sof) { return; } cpt_sof = 0; if (sequence_running) { // Send next key value = ui_sequence[sequence_pos].value; if (value!=0) { if (ui_sequence[sequence_pos].b_modifier) { if (ui_sequence[sequence_pos].b_down) { success = udi_hid_kbd_modifier_down(value); } else { success = udi_hid_kbd_modifier_up(value); } } else { if (ui_sequence[sequence_pos].b_down) { success = udi_hid_kbd_down(value); } else { success = udi_hid_kbd_up(value); } } if (!success) { return; // Retry it on next schedule } } // Valid sequence position sequence_pos++; if (sequence_pos >= sizeof(ui_sequence) / sizeof(ui_sequence[0])) { sequence_pos = 0; sequence_running = false; } } }
void ui_process(uint16_t framenumber) { bool b_btn_state, sucess; static bool btn_last_state = false; static bool sequence_running = false; static uint8_t u8_sequence_pos = 0; uint8_t u8_value; static uint16_t cpt_sof = 0; if ((framenumber % 1000) == 0) { LED_On(LED0_GPIO); } if ((framenumber % 1000) == 500) { LED_Off(LED0_GPIO); } // Scan process running each 2ms cpt_sof++; if ((cpt_sof % 2) == 0) { return; } // Scan buttons on switch 0 to send keys sequence b_btn_state = (!gpio_pin_is_high(GPIO_PUSH_BUTTON_1)) ? true : false; if (b_btn_state != btn_last_state) { btn_last_state = b_btn_state; sequence_running = true; } // Sequence process running each period if (SEQUENCE_PERIOD > cpt_sof) { return; } cpt_sof = 0; if (sequence_running) { // Send next key u8_value = ui_sequence[u8_sequence_pos].u8_value; if (u8_value!=0) { if (ui_sequence[u8_sequence_pos].b_modifier) { if (ui_sequence[u8_sequence_pos].b_down) { sucess = udi_hid_kbd_modifier_down(u8_value); } else { sucess = udi_hid_kbd_modifier_up(u8_value); } } else { if (ui_sequence[u8_sequence_pos].b_down) { sucess = udi_hid_kbd_down(u8_value); } else { sucess = udi_hid_kbd_up(u8_value); } } if (!sucess) { return; // Retry it on next schedule } } // Valid sequence position u8_sequence_pos++; if (u8_sequence_pos >= sizeof(ui_sequence) / sizeof(ui_sequence[0])) { u8_sequence_pos = 0; sequence_running = false; } } }
void ui_process(uint16_t framenumber) { bool b_btn_state, success; static bool btn_last_state = false; static bool sequence_running = false; static uint8_t sequence_pos = 0; uint8_t value; static uint16_t cpt_sof = 0; if ((framenumber % 1000) == 0) { LED_On(LED1); } if ((framenumber % 1000) == 500) { LED_Off(LED1); } /* Scan process running each 2ms */ cpt_sof++; if ((cpt_sof % 2) == 0) { return; } /* Scan buttons on push button 2 (BP3) to send keys sequence */ b_btn_state = !ioport_get_pin_level(GPIO_PUSH_BUTTON_2); if (b_btn_state != btn_last_state) { btn_last_state = b_btn_state; if (btn_wakeup) { if (!b_btn_state) { btn_wakeup = false; } } else { sequence_running = true; } } /* Sequence process running each period */ if (SEQUENCE_PERIOD > cpt_sof) { return; } cpt_sof = 0; if (sequence_running) { /* Send next key */ value = ui_sequence[sequence_pos].value; if (value!=0) { if (ui_sequence[sequence_pos].b_modifier) { if (ui_sequence[sequence_pos].b_down) { success = udi_hid_kbd_modifier_down(value); } else { success = udi_hid_kbd_modifier_up(value); } } else { if (ui_sequence[sequence_pos].b_down) { success = udi_hid_kbd_down(value); } else { success = udi_hid_kbd_up(value); } } if (!success) { return; /* Retry it on next schedule */ } } /* Valid sequence position */ sequence_pos++; if (sequence_pos >= sizeof(ui_sequence) / sizeof(ui_sequence[0])) { sequence_pos = 0; sequence_running = false; } } }