void TCParser::_parseStatus(const std::vector<std::string> &args) { if (args.size() != 1) { _parserError(tcrec_cmd_status, "Bad status argument"); return; } doStatus(args[0]); }
// The screen motor void TScreen::Task() { if (ETouch.isArmed()) // touch trigged in interrupt. Process it here in the main loop Touch(ETouch.xt,ETouch.yt); if (EunTouch.isArmed()) unTouch(EunTouch.xt,EunTouch.yt); if (ESlide.isArmed()) Slide(ESlide.xt,ESlide.yt); if (ESecond.isArmed()) doSecond(DateTime (rtc.now()));; if (E100msecond.isArmed()) do100msecond();; if (EStatus.isArmed()) doStatus(); // call the user processing userTask(); }
void paraNode() /* paraNode - a net server. */ { char *line; char *command; struct sockaddr_in sai; /* We have to know who we are... */ hostName = getMachine(); initRandom(); getTicksToHundreths(); /* log init */ if (optionExists("log")) logOpenFile("paraNode", optionVal("log", NULL)); else logOpenSyslog("paraNode", optionVal("logFacility", NULL)); logSetMinPriority(optionVal("logMinPriority", "info")); logInfo("starting paraNode on %s", hostName); /* Make job lists. */ jobsRunning = newDlList(); jobsFinished = newDlList(); /* Set up socket and self to listen to it. */ ZeroVar(&sai); sai.sin_family = AF_INET; sai.sin_port = htons(paraNodePort); sai.sin_addr.s_addr = INADDR_ANY; mainRudp = rudpMustOpenBound(&sai); mainRudp->maxRetries = 12; /* Event loop. */ findNow(); for (;;) { /* Get next incoming message and optionally check to make * sure that it's from a host we trust, and check signature * on first bit of incoming data. */ if (pmReceive(&pmIn, mainRudp)) { findNow(); if (hubName == NULL || ntohl(pmIn.ipAddress.sin_addr.s_addr) == hubIp || ntohl(pmIn.ipAddress.sin_addr.s_addr) == localIp) { /* Host and signature look ok, read a string and * parse out first word as command. */ line = pmIn.data; logDebug("message from %s: \"%s\"", paraFormatIp(ntohl(pmIn.ipAddress.sin_addr.s_addr)), line); command = nextWord(&line); if (command != NULL) { if (sameString("quit", command)) break; else if (sameString("run", command)) doRun(line, &pmIn.ipAddress); else if (sameString("jobDone", command)) jobDone(line); else if (sameString("status", command)) doStatus(); else if (sameString("kill", command)) doKill(line); else if (sameString("check", command)) doCheck(line, &pmIn.ipAddress); else if (sameString("resurrect", command)) doResurrect(line, &pmIn.ipAddress); else if (sameString("listJobs", command)) listJobs(); else if (sameString("fetch", command)) doFetch(line); else logWarn("invalid command: \"%s\"", command); } logDebug("done command"); } else { logWarn("command from unauthorized host %s", paraFormatIp(ntohl(pmIn.ipAddress.sin_addr.s_addr))); } } } rudpClose(&mainRudp); }
int main() { int i; char* argv[8]; int argc; printf_register(serial_putchar); printf("waiting..."); // Wait a short while for(i = 0; i < 10000; ++i) asm volatile ("nop"); printf("configuring..."); i2c_init(); argv[0] = "1"; argc = 1; doConfig(argv, argc); printf("done.\n"); while (1) { printf("\n> "); argc = readcmd(argv, 8); printf("\r\n> "); if(argc > 0) { switch(argv[0][0]) { case 'S': doSet(argv, argc); break; case 'G': doGet(argv, argc); break; case 'R': doResult(argv, argc); break; case 'W': doWrite(argv, argc); break; case 'X': doRead(argv, argc); break; case 'Z': doStatus(argv, argc); break; case 'I': switch(argv[0][1]) { case 'I': i2c_init(); break; case 'W': doI2CWrite(argv, argc); break; case 'R': doI2CRead(argv, argc); break; case 'C': doConfig(argv, argc); break; } break; } } } }