From a18a11837c5bc78f6a81ca39737f276428ac8672 Mon Sep 17 00:00:00 2001 From: Fred Date: Wed, 11 Nov 2020 11:02:22 +0100 Subject: [PATCH] Add keyboard test --- tests/platform/print_keys.c | 99 +++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 tests/platform/print_keys.c diff --git a/tests/platform/print_keys.c b/tests/platform/print_keys.c new file mode 100644 index 00000000..5c648a45 --- /dev/null +++ b/tests/platform/print_keys.c @@ -0,0 +1,99 @@ +/*************************************************************************** + * Copyright (C) 2020 by Federico Amedeo Izzo IU2NUO, * + * Niccolò Izzo IU2KIN * + * Frederik Saraci IU2NRO * + * Silvano Seva IU2KWO * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see * + ***************************************************************************/ + +#include +#include +#include +#include +#include "gpio.h" +#include "graphics.h" +#include "hwconfig.h" +#include "platform.h" +#include "state.h" +#include "keyboard.h" +#include "ui.h" + +color_t color_yellow_fab413 = {250, 180, 19}; +color_t color_red = {255, 0, 0}; +color_t color_green = {0, 255, 0}; + +char *keys_list[] = { + " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "#", "ENTER", "ESC", "UP", "DOWN", "LEFT", "RIGHT", + "MONI", "F1" +}; + +void *print_keys(int keys) { + point_t origin = {0, SCREEN_HEIGHT / 4}; + //count set bits to check how many keys are being pressed + int i = __builtin_popcount(keys); + while (i > 0) { + char *buf[15]; + //position of the first set bit + int pos = __builtin_ctz(keys); + sprintf(buf, "Pressed: %s", keys_list[pos + 1]); + gfx_print(origin, buf, FONT_SIZE_2, TEXT_ALIGN_LEFT, color_green); + origin.y += 9; + //unset the bit we already handled + keys &= ~(1 << pos); + i--; + } +} + +int main(void) { + OS_ERR os_err; + + // Initialize the radio state + state_init(); + + // Init the graphic stack + gfx_init(); + platform_setBacklightLevel(255); + + // Print splash screen + point_t splash_origin = {0, SCREEN_HEIGHT / 2}; + char *splash_buf = "OpenRTX"; + gfx_clearScreen(); + gfx_print(splash_origin, splash_buf, FONT_SIZE_4, TEXT_ALIGN_CENTER, color_yellow_fab413); + gfx_render(); + while (gfx_renderingInProgress()); + OSTimeDlyHMSM(0u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err); + + // Clear screen + gfx_clearScreen(); + gfx_render(); + while (gfx_renderingInProgress()); + + point_t title_origin = {0, SCREEN_HEIGHT / 9}; + + + char *title_buf = "Keyboard demo"; + + // UI update infinite loop + while (1) { + gfx_clearScreen(); + gfx_print(title_origin, title_buf, FONT_SIZE_3, TEXT_ALIGN_CENTER, color_red); + uint32_t keys = kbd_getKeys(); + print_keys(keys); + gfx_render(); + while (gfx_renderingInProgress()); + OSTimeDlyHMSM(0u, 0u, 0u, 100u, OS_OPT_TIME_HMSM_STRICT, &os_err); + } +} +