void cmdParse(char *cmd) { size_t argc, i = 0; char *argv[30]; argv[i] = strtok(cmd, " "); do { argv[++i] = strtok(NULL, " "); } while ((i < 30) && (argv[i] != NULL)); argc = i; for (i=0; i < CMD_COUNT; i++) { if (!strcmp(argv[0], cmd_tbl[i].command)) { if ((argc == 2) && !strcmp (argv [1], "?")) { // Display parameter help menu on 'command ?' printf ("%s%s%s", cmd_tbl[i].description, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); printf ("%s%s", cmd_tbl[i].parameters, CFG_PRINTF_NEWLINE); } else if ((argc - 1) < cmd_tbl[i].minArgs) { // Too few arguments supplied printf ("Too few arguments (%d expected)%s", cmd_tbl[i].minArgs, CFG_PRINTF_NEWLINE); printf ("%sType '%s ?' for more information%s%s", CFG_PRINTF_NEWLINE, cmd_tbl[i].command, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); } else if ((argc - 1) > cmd_tbl[i].maxArgs) { // Too many arguments supplied printf ("Too many arguments (%d maximum)%s", cmd_tbl[i].maxArgs, CFG_PRINTF_NEWLINE); printf ("%sType '%s ?' for more information%s%s", CFG_PRINTF_NEWLINE, cmd_tbl[i].command, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); } else { #if CFG_INTERFACE_ENABLEIRQ != 0 // Set the IRQ pin high at start of a command gpioSetValue(CFG_INTERFACE_IRQPORT, CFG_INTERFACE_IRQPIN, 1); #endif // Dispatch command to the appropriate function cmd_tbl[i].func(argc - 1, &argv [1]); #if CFG_INTERFACE_ENABLEIRQ != 0 // Set the IRQ pin low to signal the end of a command gpioSetValue(CFG_INTERFACE_IRQPORT, CFG_INTERFACE_IRQPIN, 0); #endif } // Refresh the command prompt cmdMenu(); return; } } printf("Command not recognized: '%s'%s%s", cmd, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); #if CFG_INTERFACE_SILENTMODE == 0 printf("Type '?' for a list of all available commands%s", CFG_PRINTF_NEWLINE); #endif cmdMenu(); }
void cmdParse(char *cmd) { size_t argc, i = 0; char *argv[30]; argv[i] = strtok(cmd, " "); do { argv[++i] = strtok(NULL, " "); } while ((i < 30) && (argv[i] != NULL)); argc = i; for (i=0; i < CMD_COUNT; i++) { if (!strcmp(argv[0], cmd_tbl[i].command)) { if ((argc == 2) && !strcmp (argv [1], "?")) { // Display parameter help menu on 'command ?' printf ("%s%s%s", cmd_tbl[i].description, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); printf ("%s%s", cmd_tbl[i].parameters, CFG_PRINTF_NEWLINE); } else if ((argc - 1) < cmd_tbl[i].minArgs) { // Too few arguments supplied printf ("Too few arguments (%d expected)%s", cmd_tbl[i].minArgs, CFG_PRINTF_NEWLINE); printf ("%sType '%s ?' for more information%s%s", CFG_PRINTF_NEWLINE, cmd_tbl[i].command, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); } else if ((argc - 1) > cmd_tbl[i].maxArgs) { // Too many arguments supplied printf ("Too many arguments (%d maximum)%s", cmd_tbl[i].maxArgs, CFG_PRINTF_NEWLINE); printf ("%sType '%s ?' for more information%s%s", CFG_PRINTF_NEWLINE, cmd_tbl[i].command, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); } else { // Dispatch command to the appropriate function cmd_tbl[i].func(argc - 1, &argv [1]); } // Refresh the command prompt cmdMenu(); return; } } printf("Command not recognized: '%s'%s%s", cmd, CFG_PRINTF_NEWLINE, CFG_PRINTF_NEWLINE); printf("Type '?' for a list of all available commands%s", CFG_PRINTF_NEWLINE); cmdMenu(); }
void cmdInit() { #if defined CFG_INTERFACE && defined CFG_INTERFACE_UART // Check if UART is already initialised uart_pcb_t *pcb = uartGetPCB(); if (!pcb->initialised) { uartInit(CFG_UART_BAUDRATE); } #endif #if CFG_INTERFACE_ENABLEIRQ != 0 // Set IRQ pin as output gpioSetDir(CFG_INTERFACE_IRQPORT, CFG_INTERFACE_IRQPIN, gpioDirection_Output); gpioSetValue(CFG_INTERFACE_IRQPORT, CFG_INTERFACE_IRQPIN, 1); #endif // init the msg ptr msg_ptr = msg; // Show the menu cmdMenu(); // Set the IRQ pin low by default #if CFG_INTERFACE_ENABLEIRQ != 0 gpioSetValue(CFG_INTERFACE_IRQPORT, CFG_INTERFACE_IRQPIN, 0); #endif }
void cmdInit() { #ifdef CFG_INTERFACE_UART // Check if UART is already initialised uart_pcb_t *pcb = uartGetPCB(); if (!pcb->initialised) { uartInit(CFG_UART_BAUDRATE); } #endif // init the msg ptr msg_ptr = msg; // Show the menu cmdMenu(); }
void SimApp::simCommand(const QSimCommand &cmd) { switch (cmd.type()) { case QSimCommand::SetupMenu: { // prevent No SIM message from appearing while fetching main menu if ( failLabel ) { stack->removeWidget( failLabel ); delete failLabel; failLabel = 0; } QWidget *oldView = view; if (listViewPreferred(cmd)) cmdMenu(cmd); else softKeysMenu(cmd); removeView(oldView); break; } case QSimCommand::DisplayText: cmdDisplayText(cmd); break; case QSimCommand::GetInkey: cmdInKey(cmd); break; case QSimCommand::GetInput: cmdInput(cmd); break; case QSimCommand::SetupCall: cmdSetupCall(cmd); break; case QSimCommand::PlayTone: cmdTone(cmd); break; case QSimCommand::SelectItem: if (listViewPreferred(cmd)) cmdMenu(cmd); else softKeysMenu(cmd); break; case QSimCommand::Refresh: cmdRefresh(cmd); break; case QSimCommand::SendSS: case QSimCommand::SendSMS: case QSimCommand::SendUSSD: case QSimCommand::SendDTMF: case QSimCommand::RunATCommand: case QSimCommand::CloseChannel: case QSimCommand::ReceiveData: case QSimCommand::SendData: // Pop up a notification to the user if text is not empty. showNotification(cmd); break; case QSimCommand::Timeout: // Wavecom only - ignore this. break; case QSimCommand::EndSession: qApp->quit(); break; case QSimCommand::LaunchBrowser: cmdLaunchBrowser(cmd); break; case QSimCommand::OpenChannel: cmdChannel(cmd); break; case QSimCommand::SetupIdleModeText: cmdIdleModeText(cmd); break; case QSimCommand::NoCommand: case QSimCommand::MoreTime: case QSimCommand::PollInterval: case QSimCommand::PollingOff: case QSimCommand::ProvideLocalInformation: case QSimCommand::PerformCardAPDU: case QSimCommand::PowerOffCard: case QSimCommand::PowerOnCard: case QSimCommand::GetReaderStatus: case QSimCommand::TimerManagement: case QSimCommand::GetChannelStatus: case QSimCommand::LanguageNotification: // Ignore these commands: they are handled by modem vendor plugins. break; case QSimCommand::SetupEventList: cmdSetupEventList(cmd); break; default: break; } }