- GCC version 12 generates a warnings for certain pointer
references. Apparently this is to decect invalid offsets. To properly
compiler, the recommended remedy is to add the compiler option
"--param=min-pagesize=0" to the flags. This option was introduced in
version 11.3, so we need to check the compiler version and only add for
>11.3.
- Moved setting of compiler flags to a new function c_toolchain_flags in
the toolchain file "generic-gcc-avr.cmake". This function is now called
from the CMakeLists.txt file in the src directory. This allows the test
for the compiler version to be specified in the toolchain file, but not
executed until called by the src subdir CMakeLists.txt. Delaying
evaluation of the function ensures that the CMAKE_C_VERSION variable is
properly set when the function is called.
- Moving the compiler flags out of the source dir CMakeLists.txt file
also improves portability by moving architecture-specific compiler
details from the source tree to the toolchain file.
Was only testing for handle less than next_handle, but not checking for
negative handle values. Fixed to use buffer_handle_valid() to test for a
valid handle.
- added keymap_setup() function to keymap tests
- The test string was not long enough to overflow the larger buffer.
Switched to use pseudo-random sequence intstead of a fixe test string.
factor out common code and add back wrappers, so keyboard initializes to
default keyboard on power up, and afterwards, won't reinitialize the
keyboard unless the map changes.
- update ARCHITECTURE-keymaps.org file for new keymap definition method
- remove unused keymap table template files
- in keymap_setup.c template, set default to keymap 0.
- Added the apple 2 CAPS map
- auto-generate a function to check validity of a keymap index
- Added buffered message printing. This is different from keycode
buffering, since an extra delay is added for each message character to
allow polling hosts to keep up. Keycodes are generated at human speeds
and need no further slowdown.
- Added a message character delay to the arch-* modules
- enlarged the buffer pool, and created a buffer for messages
- bumped version number
Accessing library functions via function pointer seems to cause a reset.
Still investigating the cause.
- compile keymaps subdir as part of main src cmakefile, rather than as a
separate library.
- rather than setup table of function pointers and using an indirection
in the main code, set up a jump table (switch). This is cleaner.
This appears to have been a cut-paste typo in the asdf_arch_out2_set() function
in asdf_arch_atmega328p.c. The port was set to OUT2, but the bit was OUT1.
C Flags set in src and test directories were not getting set because
they were assigned to C_FLAGS, which is ignored. Changed to CFLAGS,
which is used by cmake to set default c compilation options.
Apparently some file pollution resulted in a successful compile that couldn't be
reprodued from a fresh git clone. Fixed file copying and include paths so
compile works. All tests pass.
- keymap files (c,h) are in src/Keymaps
- keymap files are added to the keymap library in src/Keymaps/CMakeLists.txt
- keymaps for the build are listed, along with positions, in /keymap_lists.cmake
- cmake generates a keymap jump table from the keymap lib and list
- tests mostly passing. Keymap structure for testing will be used as the model
for the app keymaps.
Remove initialization from data structure.
Replace the previous virtual_init() with a virtual_init() that initializes the
data structures to a default state
Create virtual_sync() function to push the state of virtual devices to the
physical outputs. Moved from the previous virtual_init() function.
The virtual device table is now built by direct calls to virtual_add() from the
setup function.
Toward issue [#23]
Clean compile of asdf_keymaps.c/h and tests
Clean up keymap pointer notation
Reduce number of keymaps to 16, matching number of DIP switches allocated for
keymap selection.