int main(int argc, char* argv[]) { char cmdBuf[SOCK_BUFF_SIZE]; printf("Quantum Test\nQEP %s\nQF %s, QF/Linux port %s\n", QEP_getVersion(), QF_getVersion(), QF_getPortVersion()); QF_init(); QF_psInit(subscrSto, Q_DIM(subscrSto)); QF_poolInit(poolArray, sizeof(poolArray), sizeof(GenEvt)); applicationStart(QSIZE); for (;;) { // Get the incoming string command from the dmsTerminal or the GUI receiveCmd(cmdBuf); // Attempt to parse the command string for IMPL or ACTIVE calls char tmpBuf[USER_ENTRY_SIZE]; char smName[USER_ENTRY_SIZE]; char attrName[USER_ENTRY_SIZE]; char valStr[USER_ENTRY_SIZE]; // scan for IMPL['SM'].set("attr", True/False), allowing blanks // IMPL['trans'].set('guard', False) int cnt = sscanf(strcpy(tmpBuf, cmdBuf), "IMPL[%*['\"]%[^'\"]%*['\"]].set(%*['\"]%[^'\"]%*['\"],%[^)])", smName, attrName, valStr); if (cnt > 0) { // found an IMPL attribute setter! setGuardAttribute(smName, attrName, valStr); continue; } char *word; word = strtok(cmdBuf, " "); // We assume the first word contains the signal that is to be published, // and the remaining words are data to be used to populate the event. GenEvt *event; int signal = strtoul(word, NULL, 10); if (signal == DURING) { QF_tick(); QF_publish( Q_NEW(QEvent, DURING) ); } else { event = Q_NEW(GenEvt, signal); // Loop through the remaining words and populate the event int i = 0; do { word = strtok('\0', " "); if (word) { Q_ASSERT(i<EVENT_SIZE); event->data[i] = strtoul(word, NULL, 16); } i = i + 1; } while (word); QF_publish((QEvent *)event); } QF_run(); } }
printf("Quantum DPP\nQEP %s\nQF %s, QF port %s\n" "Press ESC to quit...\n", QEP_getVersion(), QF_getVersion(), QF_getPortVersion());