From 118065236b6facd7b7ec141f0c0c36184249a8b6 Mon Sep 17 00:00:00 2001 From: Dave Date: Tue, 14 Dec 2021 11:26:47 -0600 Subject: [PATCH] Add asdf_keymap_setup.[ch] to test directory --- firmware/asdf/test/asdf_keymap_setup.c | 125 +++++++++++++++++++++++++ firmware/asdf/test/asdf_keymap_setup.h | 51 ++++++++++ 2 files changed, 176 insertions(+) create mode 100644 firmware/asdf/test/asdf_keymap_setup.c create mode 100644 firmware/asdf/test/asdf_keymap_setup.h diff --git a/firmware/asdf/test/asdf_keymap_setup.c b/firmware/asdf/test/asdf_keymap_setup.c new file mode 100644 index 0000000..4af7774 --- /dev/null +++ b/firmware/asdf/test/asdf_keymap_setup.c @@ -0,0 +1,125 @@ +// -*- mode: C; tab-width: 2 ; indent-tabs-mode: nil -*- +// +// Unified Keyboard Project +// ASDF keyboard firmware +// +// asdf_keymap_table.c +// +// initialize keymap setup function table +// +// *** This is a special versiof for testing. +// *** Not auto-generated. +// +// Copyright 2019 David Fenyes +// +// 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 "asdf_keymap_table.h" +#include "test_asdf_keymap_defs.h" + +// PROCEDURE: asdf_keymap_setup +// +// INPUTS: (uint8_t) index - index of the keymap setup function to call +// OUTPUTS: none +//// +// DESCRIPTION: This function calls the keymap setup function specified +// by the index. +// +// SIDE EFFECTS: See Description +// +// NOTES: This function is necessary because functions defined in external +// modules are not considered compile-time constants by the C99 standard, so the +// array cannot be initialized with a compile-time declaration. +// +// SCOPE: public +// +// COMPLEXITY: 1 +// +void asdf_keymap_setup(uint8_t index) { + switch(index) { + + default: + case ASDF_TEST_PLAIN_MAP_INDEX: setup_test_plain_map(); break; + case ASDF_TEST_CAPS_MAP_INDEX: setup_test_caps_map(); break; + case ASDF_TEST2_PLAIN_MAP_INDEX: setup_test2_plain_map(); break; + case ASDF_TEST2_CAPS_MAP_INDEX: setup_test2_caps_map(); + break; + + // keymap assignments for the virtual device tests + case SINGLE_TESTS_KEYMAP: setup_test_vdevs_single(); break; + case DOUBLE_ASSIGN_TEST_KEYMAP: setup_test_vdevs_double(); break; + case TRIPLE_TESTS_KEYMAP: setup_test_vdevs_triple(); break; + case VCAPS_TEST_KEYMAP: setup_test_vdevs_vcaps(); + break; + + // keymap assignments for the hook mechanism tests + case ASDF_TEST_DEFAULT_SCANNER_MAP: setup_test_hooks_alt_scanner(); break; + case ASDF_TEST_ALTERNATE_OUTPUT_MAP: setup_test_hooks_alt_output(); break; + case ASDF_TEST_EACH_SCAN_MAP: setup_test_hooks_each_scan(); break; + } +} + +// PROCEDURE: asdf_keymap_valid +// +// INPUTS: (uint8_t) index - index of the keymap setup function to check +// OUTPUTS: (uintu_t) returns TRUE (nonzero) if valid, FALSE (0) otherwise +// +// DESCRIPTION: This function returns TRUE if the index corresponds to +// a valid keymap. +// +// SIDE EFFECTS: none +// +// NOTES: +// +// SCOPE: public +// +// COMPLEXITY: 1 +// +uint8_t asdf_keymap_valid(uint8_t index) { + uint8_t valid = 0; + + switch(index) { + case ASDF_TEST_PLAIN_MAP_INDEX: + case ASDF_TEST_CAPS_MAP_INDEX: + case ASDF_TEST2_PLAIN_MAP_INDEX: + case ASDF_TEST2_CAPS_MAP_INDEX: + + // keymap assignments for the virtual device tests + case SINGLE_TESTS_KEYMAP: + case DOUBLE_ASSIGN_TEST_KEYMAP: + case TRIPLE_TESTS_KEYMAP: + case VCAPS_TEST_KEYMAP: + + // keymap assignments for the hook mechanism tests + case ASDF_TEST_DEFAULT_SCANNER_MAP: + case ASDF_TEST_ALTERNATE_OUTPUT_MAP: + case ASDF_TEST_EACH_SCAN_MAP: + + valid = 1; + break; + + default: + valid = 0; + break; + } + + return valid; +} + + +//-------|---------|---------+---------+---------+---------+---------+---------+ +// Above line is 80 columns, and should display completely in the editor. + diff --git a/firmware/asdf/test/asdf_keymap_setup.h b/firmware/asdf/test/asdf_keymap_setup.h new file mode 100644 index 0000000..11df758 --- /dev/null +++ b/firmware/asdf/test/asdf_keymap_setup.h @@ -0,0 +1,51 @@ +// -*- mode: C; tab-width: 2 ; indent-tabs-mode: nil -*- +// +// Unified Keyboard Project +// ASDF keyboard firmware +// +// asdf_keymap_table.c +// +// initialize keymap setup function table +// +// *** This is configured for testing. +// *** NOT auto-generated +// +// Copyright 2019 David Fenyes +// +// 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 . +// + +#define ASDF_NUM_KEYMAPS 11 + +// define the type for a keymap setup function. Keymaps are registerd by storing +// a keymap setup function in the keymap setup array. + +// PROCEDURE: asdf_keymap_setup +// INPUTS: (uint8_t) index - index of the keymap setup function to call +// OUTPUTS: none +// DESCRIPTION: This function calls the keymap setup function specified +// by the index. +// SIDE EFFECTS: See Description +void asdf_keymap_setup(uint8_t index); + +// PROCEDURE: asdf_keymap_valid +// INPUTS: (uint8_t) index - index of the keymap setup function to check +// OUTPUTS: (uintu_t) returns TRUE (nonzero) if valid, FALSE (0) otherwise +// DESCRIPTION: This function returns TRUE if the index corresponds to +// a valid keymap. +uint8_t asdf_keymap_valid(uint8_t index); + +//-------|---------|---------+---------+---------+---------+---------+---------+ +// Above line is 80 columns, and should display completely in the editor. +