void ionProd(unsigned long fromNode, unsigned long toNode, unsigned long xmitRate, unsigned int owlt) { Sdr ionsdr = _ionsdr(NULL); time_t fromTime; time_t toTime; Object elt; char textbuf[RFX_NOTE_LEN]; if (ionsdr == NULL) { if (ionAttach() < 0) { writeMemo("[?] ionProd: node not initialized yet."); return; } } fromTime = getUTCTime(); /* The current time. */ toTime = fromTime + 14400; /* Four hours later. */ elt = rfx_insert_range(fromTime, toTime, fromNode, toNode, owlt); if (elt == 0) { writeMemoNote("[?] ionProd: range insertion failed.", utoa(owlt)); return; } writeMemo("ionProd: range inserted."); writeMemo(rfx_print_range(sdr_list_data(ionsdr, elt), textbuf)); elt = rfx_insert_contact(fromTime, toTime, fromNode, toNode, xmitRate); if (elt == 0) { writeMemoNote("[?] ionProd: contact insertion failed.", utoa(xmitRate)); return; } writeMemo("ionProd: contact inserted."); writeMemo(rfx_print_contact(sdr_list_data(ionsdr, elt), textbuf)); }
void executeAdd(int tokenCount, char **tokens) { time_t refTime; time_t fromTime; time_t toTime; uvast fromNodeNbr; uvast toNodeNbr; unsigned int xmitRate; float prob; unsigned int owlt; if (tokenCount < 2) { //printText("Add what?"); return; } switch (tokenCount) { case 8: prob = atof(tokens[7]); break; case 7: prob = 1.0; break; default: SYNTAX_ERROR; return; } refTime = _referenceTime(NULL); fromTime = readTimestampUTC(tokens[2], refTime); toTime = readTimestampUTC(tokens[3], refTime); if (toTime <= fromTime) { printText("Interval end time must be later than start time."); return; } fromNodeNbr = strtouvast(tokens[4]); toNodeNbr = strtouvast(tokens[5]); if (strcmp(tokens[1], "contact") == 0) { xmitRate = strtol(tokens[6], NULL, 0); oK(rfx_insert_contact(fromTime, toTime, fromNodeNbr, toNodeNbr, xmitRate, prob)); //oK(_forecastNeeded(1)); return; } if (strcmp(tokens[1], "range") == 0) { owlt = atoi(tokens[6]); oK(rfx_insert_range(fromTime, toTime, fromNodeNbr, toNodeNbr, owlt)); return; } SYNTAX_ERROR; }