X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Macro%2FPartialMap%2Fmacro.c;h=7161fbf9e495d92eb9ec5d6c42f50afae355555a;hb=51486bc4e16830c16c30f696b3a4f84c93a5baf8;hp=89444dcfc1e390f0f3ec0753853ba7658cf0a545;hpb=a8caf6e51537e09478a93339e73292913a05e0a8;p=kiibohd-controller.git diff --git a/Macro/PartialMap/macro.c b/Macro/PartialMap/macro.c index 89444dc..7161fbf 100644 --- a/Macro/PartialMap/macro.c +++ b/Macro/PartialMap/macro.c @@ -374,7 +374,7 @@ nat_ptr_t *Macro_layerLookup( TriggerGuide *guide, uint8_t latch_expire ) } // If no trigger macro is defined at the given layer, fallthrough to the next layer - for ( uint16_t layerIndex = 0; layerIndex < macroLayerIndexStackSize; layerIndex++ ) + for ( uint16_t layerIndex = macroLayerIndexStackSize; layerIndex != 0xFFFF; layerIndex-- ) { // Lookup Layer const Layer *layer = &LayerIndex[ macroLayerIndexStack[ layerIndex ] ]; @@ -456,7 +456,7 @@ inline void Macro_interconnectAdd( void *trigger_ptr ) case 0x03: break; default: - erro_print("Invalid key state"); + erro_msg("Invalid key state - "); error = 1; break; } @@ -464,11 +464,18 @@ inline void Macro_interconnectAdd( void *trigger_ptr ) // Invalid TriggerGuide type default: - erro_print("Invalid type"); + erro_msg("Invalid type - "); error = 1; break; } + // Check if ScanCode is out of range + if ( trigger->scanCode > MaxScanCode ) + { + warn_msg("ScanCode is out of range/not defined - "); + error = 1; + } + // Display TriggerGuide if ( error ) { @@ -529,6 +536,15 @@ inline void Macro_keyState( uint8_t scanCode, uint8_t state ) case 0x01: // Pressed case 0x02: // Held case 0x03: // Released + // Check if ScanCode is out of range + if ( scanCode > MaxScanCode ) + { + warn_msg("ScanCode is out of range/not defined: "); + printHex( scanCode ); + print( NL ); + return; + } + macroTriggerListBuffer[ macroTriggerListBufferSize ].scanCode = scanCode; macroTriggerListBuffer[ macroTriggerListBufferSize ].state = state; macroTriggerListBuffer[ macroTriggerListBufferSize ].type = 0x00; // Normal key @@ -549,6 +565,15 @@ inline void Macro_analogState( uint8_t scanCode, uint8_t state ) // TODO Handle change for interconnect if ( state != 0x00 ) { + // Check if ScanCode is out of range + if ( scanCode > MaxScanCode ) + { + warn_msg("ScanCode is out of range/not defined: "); + printHex( scanCode ); + print( NL ); + return; + } + macroTriggerListBuffer[ macroTriggerListBufferSize ].scanCode = scanCode; macroTriggerListBuffer[ macroTriggerListBufferSize ].state = state; macroTriggerListBuffer[ macroTriggerListBufferSize ].type = 0x02; // Analog key @@ -567,6 +592,9 @@ inline void Macro_ledState( uint8_t ledCode, uint8_t state ) // TODO Handle change for interconnect if ( state != 0x00 ) { + // Check if LedCode is out of range + // TODO + macroTriggerListBuffer[ macroTriggerListBufferSize ].scanCode = ledCode; macroTriggerListBuffer[ macroTriggerListBufferSize ].state = state; macroTriggerListBuffer[ macroTriggerListBufferSize ].type = 0x01; // LED key