/** ** Process the command list. ** ** This configuration is a list of valid ports and is ended by a ** delimiter. ** ** @param ErrorString error string buffer ** @param ErrStrLen the length of the error string buffer ** ** @return an error code integer ** (0 = success, >0 = non-fatal error, <0 = fatal error) ** ** @retval 0 successs ** @retval -1 generic fatal error */ static int ProcessCmds(char *ErrorString, int ErrStrLen, int action) { char *pcToken; int iEndCmds = 0; int id; pcToken = strtok(NULL, CONF_SEPARATORS); if (!pcToken) { snprintf(ErrorString, ErrStrLen, "Invalid command list format."); return -1; } if (strcmp(CONF_START_LIST, pcToken)) { snprintf(ErrorString, ErrStrLen, "Must start a command list with the '%s' token.", CONF_START_LIST); return -1; } while ((pcToken = strtok(NULL, CONF_SEPARATORS)) != NULL) { if (strcmp(CONF_END_LIST, pcToken) == 0) { iEndCmds = 1; break; } id = GetCmdId(pcToken); if (action == ACTION_ALERT) { _smtp_cmd_config[id].alert = 1; } else if (action == ACTION_NO_ALERT) { _smtp_cmd_config[id].alert = 0; } else if (action == ACTION_NORMALIZE) { _smtp_cmd_config[id].normalize = 1; } } if (!iEndCmds) { snprintf(ErrorString, ErrStrLen, "Must end '%s' configuration with '%s'.", action == ACTION_ALERT ? CONF_INVALID_CMDS : (action == ACTION_NO_ALERT ? CONF_VALID_CMDS : (action == ACTION_NORMALIZE ? CONF_NORMALIZE_CMDS : "")), CONF_END_LIST); return -1; } return 0; }
// virtual BOOL FW_Cmd::OnCmdMsg( UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo ) { BOOL bOK = CCmdTarget::OnCmdMsg( nID, nCode, pExtra, pHandlerInfo ); if(!bOK) { if(nID == GetCmdId()) { switch(nCode) { case CN_COMMAND: { // pHandlerInfo!=NULL means it is checking whether the command should be enable, // otherwise the command is executed if(!pHandlerInfo) { if(!OnExecute()) OnTerminate(); } bOK = TRUE; } break; case CN_UPDATE_COMMAND_UI: { OnUpdateCmdUI((CCmdUI*)pExtra); bOK = TRUE; // Enable the command } break; default: break; } } } return bOK; }
/***************************************************************************** * FUNCTION: process_cmd * * RETURNS: None * * PARAMS: None * * NOTES: Determines which command has been received and processes it. *****************************************************************************/ void process_cmd(void) { bool new_arg; uint8_t i; g_ConsoleContext.argc = 0; new_arg = true; // Get pointers to each token in the command string TokenizeCmdLine(g_ConsoleContext.rxBuf); // if command line nothing but white kSpace or a linefeed if ( g_ConsoleContext.argc == 0u ) { return; // nothing to do } // change the command itself (token[0]) to lower case for (i = 0; i < strlen((char *)g_ConsoleContext.argv[0]); ++i) { g_ConsoleContext.argv[0][i] = tolower(g_ConsoleContext.argv[0][i]); } if ( IS_ECHO_ON() ) { SYS_CONSOLE_MESSAGE("\n\r"); } switch (GetCmdId()) { case HELP_MSG: do_help_msg(); IperfConsoleSetMsgFlag(); break; case RESET_HOST: Reset(); break; case CLEAR_SCREEN_MSG: do_cls_cmd(); break; default: IperfConsoleSetMsgFlag(); break; } }
/***************************************************************************** * FUNCTION: process_cmd * * RETURNS: None * * PARAMS: None * * NOTES: Determines which command has been received and processes it. *****************************************************************************/ void process_cmd(void) { BOOL new_arg; UINT8 i; g_ConsoleContext.argc = 0; new_arg = TRUE; // Get pointers to each token in the command string TokenizeCmdLine(g_ConsoleContext.rxBuf); // if command line nothing but white kWFSpace or a linefeed if ( g_ConsoleContext.argc == 0u ) { return; // nothing to do } // change the command itself (token[0]) to lower case for (i = 0; i < strlen((char *)g_ConsoleContext.argv[0]); ++i) { g_ConsoleContext.argv[0][i] = tolower(g_ConsoleContext.argv[0][i]); } if ( IS_ECHO_ON() ) { putrsUART("\n\r"); } switch (GetCmdId()) { case HELP_MSG: do_help_msg(); WFConsoleSetMsgFlag(); break; case GET_WF_VERSION_MSG: do_get_wfver_cmd(); break; case RESET_HOST: Reset(); break; case CLEAR_SCREEN_MSG: do_cls_cmd(); break; #if defined(MRF24WG) case WPS_PIN_MSG: do_wps_pin_cmd(); break; case WPS_PUSHBUTTON_MSG: do_wps_push_button_cmd(); break; case WPS_GET_CREDENTIALS_MSG: do_wps_get_credentials_cmd(); break; #endif /* MRF24WG */ #if defined(WF_CONSOLE_IFCFGUTIL) case IFCONFIG_MSG: do_ifconfig_cmd(); break; case IWCONFIG_MSG: do_iwconfig_cmd(); break; case IWPRIV_MSG: do_iwpriv_cmd(); break; #endif // WF_CONSOLE_IFCFGUTIL default: WFConsoleSetMsgFlag(); break; } }
/***************************************************************************** * FUNCTION: process_cmd * * RETURNS: None * * PARAMS: None * * NOTES: Determines which command has been received and processes it. *****************************************************************************/ tZGVoidReturn process_cmd(tZGVoidInput) { tZGBool new_arg; tZGU8 i; g_ConsoleContext.argc = 0; new_arg = kZGBoolTrue; // Get pointers to each token in the command string TokenizeCmdLine(g_ConsoleContext.rxBuf); // if command line nothing but white kZGSpace or a linefeed if ( g_ConsoleContext.argc == 0u ) { return; // nothing to do } // change the command itself (token[0]) to lower case for (i = 0; i < strlen((char *)g_ConsoleContext.argv[0]); ++i) { g_ConsoleContext.argv[0][i] = tolower(g_ConsoleContext.argv[0][i]); } if ( IS_ECHO_ON() ) { ZG_PUTRSUART("\n\r"); } switch (GetCmdId()) { case HELP_MSG: do_help_msg(); break; case GET_ZG2100_VERSION_MSG: do_get_zg2100_version_cmd(); break; case RESET_HOST: Reset(); break; case CLEAR_SCREEN_MSG: do_cls_cmd(); break; case IFCONFIG_MSG: do_ifconfig_cmd(); break; case IWCONFIG_MSG: do_iwconfig_cmd(); break; case IWPRIV_MSG: do_iwpriv_cmd(); break; default: // if we don't match one of the built-in command strings, check to // see if we match one of the application-defined command strings if (CheckForAppSpecificCommand(g_ConsoleContext.argv[0])) { ; // nothing else to do } else { sprintf((char *) g_ConsoleContext.txBuf, "Unknown cmd: %s\n\r", ARGV[0]); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); } break; } }
/** ** ** alt_max_command_line_len <int> { <cmd> [<cmd>] } ** ** @param ErrorString error string buffer ** @param ErrStrLen the length of the error string buffer ** ** @return an error code integer ** (0 = success, >0 = non-fatal error, <0 = fatal error) ** ** @retval 0 successs ** @retval -1 generic fatal error */ static int ProcessAltMaxCmdLen(char *ErrorString, int ErrStrLen) { char *pcToken; char *pcLen; char *pcLenEnd; int iEndCmds = 0; int id; int cmd_len; /* Find number */ pcLen = strtok(NULL, CONF_SEPARATORS); if (!pcLen) { snprintf(ErrorString, ErrStrLen, "Invalid format for alt_max_command_line_len."); return -1; } pcToken = strtok(NULL, CONF_SEPARATORS); if (!pcToken) { snprintf(ErrorString, ErrStrLen, "Invalid format for alt_max_command_line_len."); return -1; } cmd_len = strtoul(pcLen, &pcLenEnd, 10); if (pcLenEnd == pcLen) { snprintf(ErrorString, ErrStrLen, "Invalid format for alt_max_command_line_len (non-numeric)."); return -1; } if (strcmp(CONF_START_LIST, pcToken)) { snprintf(ErrorString, ErrStrLen, "Must start alt_max_command_line_len list with the '%s' token.", CONF_START_LIST); return -1; } while ((pcToken = strtok(NULL, CONF_SEPARATORS)) != NULL) { if (strcmp(CONF_END_LIST, pcToken) == 0) { iEndCmds = 1; break; } id = GetCmdId(pcToken); _smtp_cmd_config[id].max_line_len = cmd_len; } if (!iEndCmds) { snprintf(ErrorString, ErrStrLen, "Must end alt_max_command_line_len configuration with '%s'.", CONF_END_LIST); return -1; } return 0; }