# HG changeset patch # User Jacob Alexander # Date 1434770077 25200 # Node ID f04450004adf58f56c5e4665085d0a2957b78264 # Parent e464aaa4730fdc76d4644113be14a091e2e4cfc1 Adding layerDebug cli command - Useful when trying to report layer stacking bugs - Or at least getting unconfused about what's happening with the layers diff -r e464aaa4730f -r f04450004adf Macro/PartialMap/macro.c --- a/Macro/PartialMap/macro.c Fri Jun 19 01:50:56 2015 -0700 +++ b/Macro/PartialMap/macro.c Fri Jun 19 20:14:37 2015 -0700 @@ -41,6 +41,7 @@ void cliFunc_keyHold ( char* args ); void cliFunc_keyPress ( char* args ); void cliFunc_keyRelease( char* args ); +void cliFunc_layerDebug( char* args ); void cliFunc_layerList ( char* args ); void cliFunc_layerState( char* args ); void cliFunc_macroDebug( char* args ); @@ -86,6 +87,7 @@ CLIDict_Entry( keyHold, "Send key-hold events to the macro module. Duplicates have undefined behaviour." NL "\t\t\033[35mS10\033[0m Scancode 0x0A" ); CLIDict_Entry( keyPress, "Send key-press events to the macro module. Duplicates have undefined behaviour." NL "\t\t\033[35mS10\033[0m Scancode 0x0A" ); CLIDict_Entry( keyRelease, "Send key-release event to macro module. Duplicates have undefined behaviour." NL "\t\t\033[35mS10\033[0m Scancode 0x0A" ); +CLIDict_Entry( layerDebug, "Layer debug mode. Shows layer stack and any changes." ); CLIDict_Entry( layerList, "List available layers." ); CLIDict_Entry( layerState, "Modify specified indexed layer state ." NL "\t\t\033[35mL2\033[0m Indexed Layer 0x02" NL "\t\t0 Off, 1 Shift, 2 Latch, 4 Lock States" ); CLIDict_Entry( macroDebug, "Disables/Enables sending USB keycodes to the Output Module and prints U/K codes." ); @@ -100,6 +102,7 @@ CLIDict_Item( keyHold ), CLIDict_Item( keyPress ), CLIDict_Item( keyRelease ), + CLIDict_Item( layerDebug ), CLIDict_Item( layerList ), CLIDict_Item( layerState ), CLIDict_Item( macroDebug ), @@ -111,6 +114,9 @@ }; +// Layer debug flag - If set, displays any changes to layers and the full layer stack on change +uint8_t layerDebugMode = 0; + // Macro debug flag - If set, clears the USB Buffers after signalling processing completion uint8_t macroDebugMode = 0; @@ -204,6 +210,30 @@ // Reduce LayerIndexStack size macroLayerIndexStackSize--; } + + // Layer Debug Mode + if ( layerDebugMode ) + { + dbug_msg("Layer "); + + // Iterate over each of the layers displaying the state as a hex value + for ( uint16_t index = 0; index < LayerNum; index++ ) + { + printHex_op( LayerState[ index ], 0 ); + } + + // Always show the default layer (it's always 0) + print(" 0"); + + // Iterate over the layer stack starting from the bottom of the stack + for ( uint16_t index = 0; index < macroLayerIndexStackSize; index++ ) + { + print(":"); + printHex_op( macroLayerIndexStack[ index ], 0 ); + } + + print( NL ); + } } // Modifies the specified Layer control byte @@ -1204,6 +1234,16 @@ } } +void cliFunc_layerDebug( char *args ) +{ + // Toggle layer debug mode + layerDebugMode = layerDebugMode ? 0 : 1; + + print( NL ); + info_msg("Layer Debug Mode: "); + printInt8( layerDebugMode ); +} + void cliFunc_layerList( char* args ) { print( NL );