Added capabilities list debug option

- Changed macro/capabilities data structure to index capabilities rather than specify function pointers
- Used an 8 bit array, this reduced the max number of capabities to 255
	* Shouldn't be an issue, but this can be addressed if the limit is hit...unlikely though
This commit is contained in:
Jacob Alexander 2014-07-24 23:18:38 -07:00
parent ff05e1ccb7
commit f7bacebb26
2 changed files with 46 additions and 17 deletions

View file

@ -370,7 +370,20 @@ inline void Macro_setup()
void cliFunc_capList( char* args )
{
// TODO
print( NL );
info_msg("Capabilities List");
// Iterate through all of the capabilities and display them
for ( unsigned int cap = 0; cap < CapabilitiesNum; cap++ )
{
print( NL "\t" );
printHex( cap );
print(" - ");
// Display/Lookup Capability Name (utilize debug mode of capability)
void (*capability)(uint8_t, uint8_t, uint8_t*) = (void(*)(uint8_t, uint8_t, uint8_t*))(CapabilitiesList[ cap ]);
capability( 0xFF, 0xFF, 0 );
}
}
void cliFunc_capSelect( char* args )
@ -588,20 +601,24 @@ void macroDebugShowResult( unsigned int index )
// Assign TriggerGuide element (key type, state and scancode)
ResultGuide *guide = (ResultGuide*)(&macro->guide[ pos ]);
// Display Function Index
printHex( guide->index );
print("|");
// Display Function Ptr Address
printHex( (unsigned int)guide->function );
printHex( (unsigned int)CapabilitiesList[ guide->index ] );
print("|");
// Display/Lookup Capability Name (utilize debug mode of capability)
void (*capability)(uint8_t, uint8_t, uint8_t*) = (void(*)(uint8_t, uint8_t, uint8_t*))(guide->function);
void (*capability)(uint8_t, uint8_t, uint8_t*) = (void(*)(uint8_t, uint8_t, uint8_t*))(CapabilitiesList[ guide->index ]);
capability( 0xFF, 0xFF, 0 );
// Display Argument(s)
print("(");
for ( unsigned int arg = 0; arg < guide->argCount; arg++ )
{
// Arguments are only 8 bit values (guides are 32 bit for function pointers)
printHex( (uint8_t)(unsigned int)(&guide->args)[ arg ] );
// Arguments are only 8 bit values
printHex( (&guide->args)[ arg ] );
// Only show arg separator if there are args left
if ( arg + 1 < guide->argCount )