Major code cleanup and preparation for PartialMap Macro Module

- Code should be working, but much is untested
- All of the old modules will need to update and use the new DefaultMap keymap
- There might still be some naming conflicts with some Scan Modules
This commit is contained in:
Jacob Alexander 2014-04-06 11:49:27 -07:00
parent f3e22fb242
commit 9d423a64a8
81 changed files with 1373 additions and 904 deletions

View file

@ -26,6 +26,7 @@
// Project Includes
#include <led.h>
#include <macro.h>
#include <print.h>
// Local Includes
@ -47,11 +48,6 @@
// ----- Macros -----
// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte
// ----- Variables -----
@ -63,7 +59,7 @@ volatile uint8_t KeyIndex_Add_InputSignal; // Used to pass the (click/input valu
// Keeps track of the number of scans, so we only do a debounce assess when it would be valid (as it throws away data)
uint8_t scan_count = 0;
uint8_t Scan_count = 0;
// This is where the matrix scan data is held, as well as debouncing is evaluated to, which (depending on the read value) is handled
// by the macro module
@ -74,24 +70,24 @@ uint8_t KeyIndex_Array[KEYBOARD_KEYS + 1];
// ----- Functions -----
// Setup
inline void scan_setup()
inline void Scan_setup()
{
matrix_pinSetup( (uint8_t*)matrix_pinout, scanMode );
}
// Main Detection Loop
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
// Check count to see if the sample threshold may have been reached, otherwise collect more data
if ( scan_count < MAX_SAMPLES )
if ( Scan_count < MAX_SAMPLES )
{
matrix_scan( (uint8_t*)matrix_pinout, KeyIndex_Array );
// scanDual requires 2 passes, and thus needs more memory per matrix_scan pass
#if scanMode == scanDual
scan_count += 2;
Scan_count += 2;
#else
scan_count++;
Scan_count++;
#endif
// Signal Main Detection Loop to continue scanning
@ -99,7 +95,7 @@ inline uint8_t scan_loop()
}
// Reset Sample Counter
scan_count = 0;
Scan_count = 0;
// Assess debouncing sample table
// Loop over all of the sampled keys of the given array
@ -108,9 +104,8 @@ inline uint8_t scan_loop()
for ( uint8_t key = 1; key < KeyIndex_Size + 1; key++ ) if ( ( KeyIndex_Array[key] & ~(1 << 7) ) > SAMPLE_THRESHOLD )
{
// Debug output (keypress detected)
char tmpStr[6];
hexToStr( key, tmpStr );
dPrintStrs( tmpStr, " " );
printHex( key );
print(" ");
// Add the key to the buffer, if it isn't already in the current Key Buffer
for ( uint8_t c = 0; c < KeyIndex_BufferUsed + 1; c++ )
@ -118,7 +113,7 @@ inline uint8_t scan_loop()
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( key );
Macro_bufferAdd( key );
break;
}
@ -160,23 +155,16 @@ inline uint8_t scan_loop()
}
// Signal that the keys have been properly sent over USB
inline void scan_finishedWithUSBBuffer( uint8_t sentKeys )
// Signal that the USB keycodes have been properly sent through the Output Module
inline void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
return;
}
// Signal KeyIndex_Buffer that it has been fully scanned using the macro module
inline void scan_finishedWithBuffer( uint8_t sentKeys )
// Signal KeyIndex_Buffer that it has been fully processed using the macro module
inline void Scan_finishedWithBuffer( uint8_t sentKeys )
{
return;
}
// Send data to keyboard
// Not used in this module
uint8_t scan_sendData( uint8_t dataPayload )
{
return 0;
}

View file

@ -56,18 +56,12 @@ extern volatile uint8_t KeyIndex_Add_InputSignal;
// ----- Functions -----
void scan_setup( void );
uint8_t scan_loop( void );
void Scan_setup( void );
uint8_t Scan_loop( void );
// Functions available to macro.c
uint8_t scan_sendData( uint8_t dataPayload );
void scan_finishedWithBuffer( uint8_t sentKeys );
void scan_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
// Callbacks from the Macro and Output modules (useful with difficult protocols)
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
#endif // __SCAN_LOOP_H

View file

@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@ -27,12 +27,6 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )
add_definitions(
#-DMODIFIER_MASK=
#-DKEYINDEX_MASK=
)
###