Other Parts Discussed in Thread: AWR1642
这个函数是AWR1642的SDK2.0中cli.c第216行给出的代码,我不太明白他有什么用,我贴出代码以供参考
static void CLI_task(UArg arg0, UArg arg1) { uint8_t cmdString[256]; char* tokenizedArgs[CLI_MAX_ARGS]; char* ptrCLICommand; char delimitter[] = " \r\n"; uint32_t argIndex; CLI_CmdTableEntry* ptrCLICommandEntry; int32_t cliStatus; uint32_t index; /* Do we have a banner to be displayed? */ if (gCLI.cfg.cliBanner != NULL) { /* YES: Display the banner */ CLI_write (gCLI.cfg.cliBanner); } /* Loop around forever: */ while (1) { /* Demo Prompt: */ CLI_write (gCLI.cfg.cliPrompt); /* Reset the command string: */ memset ((void *)&cmdString[0], 0, sizeof(cmdString)); /* Read the command message from the UART: */ UART_read (gCLI.cfg.cliUartHandle, &cmdString[0], (sizeof(cmdString) - 1)); /* Reset all the tokenized arguments: */ memset ((void *)&tokenizedArgs, 0, sizeof(tokenizedArgs)); argIndex = 0; ptrCLICommand = (char*)&cmdString[0]; /* comment lines found - ignore the whole line*/ if (cmdString[0]=='%') { CLI_write ("Skipped\n"); continue; } /* Set the CLI status: */ cliStatus = -1; /* The command has been entered we now tokenize the command message */ while (1) { /* Tokenize the arguments: */ tokenizedArgs[argIndex] = strtok(ptrCLICommand, delimitter); if (tokenizedArgs[argIndex] == NULL) break; /* Increment the argument index: */ argIndex++; if (argIndex >= CLI_MAX_ARGS) break; /* Reset the command string */ ptrCLICommand = NULL; } /* Were we able to tokenize the CLI command? */ if (argIndex == 0) continue; /* Cycle through all the registered CLI commands: */ for (index = 0; index < gCLI.numCLICommands; index++) { ptrCLICommandEntry = &gCLI.cfg.tableEntry[index]; /* Do we have a match? */ if (strcmp(ptrCLICommandEntry->cmd, tokenizedArgs[0]) == 0) { /* YES: Pass this to the CLI registered function */ cliStatus = ptrCLICommandEntry->cmdHandlerFxn (argIndex, tokenizedArgs); if (cliStatus == 0) { CLI_write ("Done\n"); } else { CLI_write ("Error %d\n", cliStatus); } break; } } /* Did we get a matching CLI command? */ if (index == gCLI.numCLICommands) { /* NO matching command found. Is the mmWave extension enabled? */ if (gCLI.cfg.enableMMWaveExtension == 1U) { /* Yes: Pass this to the mmWave extension handler */ cliStatus = CLI_MMWaveExtensionHandler (argIndex, tokenizedArgs); } /* Was the CLI command found? */ if (cliStatus == -1) { /* No: The command was still not found */ CLI_write ("'%s' is not recognized as a CLI command\n", tokenizedArgs[0]); } } } }