}
// R-block (ack)
else if ( ((cmd[0] & 0xD0) == 0x80) && ( cmdsize > 2) ) {
- snprintf(exp, size, "R-block");
+ if ( (cmd[0] & 0x10) == 0 )
+ snprintf(exp, size, "R-block ACK");
+ else
+ snprintf(exp, size, "R-block NACK");
}
// I-block
else {
static int CmdHelp(const char *Cmd);
static int CmdQuit(const char *Cmd);
static int CmdRev(const char *Cmd);
+static int CmdLS(const char *Cmd);
//For storing command that are received from the device
static UsbCommand cmdBuffer[CMD_BUFFER_SIZE];
static command_t CommandTable[] =
{
{"help", CmdHelp, 1, "This help. Use '<command> help' for details of a particular command."},
+ {"ls", CmdLS, 1, "list commands"},
{"data", CmdData, 1, "{ Plot window / data buffer manipulation... }"},
{"hf", CmdHF, 1, "{ High Frequency commands... }"},
{"hw", CmdHW, 1, "{ Hardware commands... }"},
{"lf", CmdLF, 1, "{ Low Frequency commands... }"},
- {"reveng",CmdRev, 1, "Crc calculations from the software reveng1-30"},
+ {"reveng", CmdRev, 1, "Crc calculations from the software reveng 1.30"},
{"script", CmdScript, 1, "{ Scripting commands }"},
{"quit", CmdQuit, 1, "Exit program"},
{"exit", CmdQuit, 1, "Exit program"},
CmdsHelp(CommandTable);
return 0;
}
+int CmdLS(const char *Cmd){
+ CmdsLS(CommandTable);
+ return 0;
+}
int CmdQuit(const char *Cmd)
{
}
}
+void CmdsLS(const command_t Commands[])
+{
+ if (Commands[0].Name == NULL) return;
+ int i = 0;
+ while (Commands[i].Name)
+ {
+ if (!offline || Commands[i].Offline)
+ PrintAndLog("%-16s", Commands[i].Name);
+ ++i;
+ }
+}
+
void CmdsParse(const command_t Commands[], const char *Cmd)
{
if(strcmp( Cmd, "XX_internal_command_dump_XX") == 0)
// Print help for each command in the command array
void CmdsHelp(const command_t Commands[]);
+// Print each command in the command array without help
+void CmdsLS(const command_t Commands[]);
// Parse a command line
void CmdsParse(const command_t Commands[], const char *Cmd);
void dumpCommandsRecursive(const command_t cmds[], int markdown);