createtimer.cpp

来自「一个很棒的网络控制系统仿真软件」· C++ 代码 · 共 72 行

CPP
72
字号
#ifndef CREATE_TIMER#define CREATE_TIMER#include "gethandler.cpp"bool ttCreatePeriodicTimer(char *nameOfTimer, double start, double period, char *nameOfHandler) {  TimerNode* tn;  Timer* t;    if (strcmp(nameOfTimer,"") == 0) {    MEX_ERROR("ttCreate(Periodic)Timer: Name should be a non-empty string!");    return false;  }  if (rtsys->prioFcn == NULL) {    printf("ttCreate(Periodic)Timer: Kernel must be initialized before creation of timers!");    return false;  }  tn = (TimerNode*) rtsys->timerQ->getFirst();  while (tn!=NULL) {    if (tn->getTimer()->name != NULL) {      if (strcmp(tn->getTimer()->name, nameOfTimer) == 0)	break;    }    tn = (TimerNode*) tn->getNext();  }  if (tn != NULL) {     MEX_ERROR("ttCreate(Periodic)Timer: Name of timer not unique!");    return false;  }  Handler* handler = getHandler(nameOfHandler);   if (handler == NULL) {    // Handler does not exist     char buf[200];    sprintf(buf, "ttCreate(Periodic)Timer: Non-existent interrupt handler '%s'!", nameOfHandler);    MEX_ERROR(buf);    return false;  }  if (start - rtsys->time < -EPS) {    MEX_ERROR("ttCreate(Periodic)Timer: Can't create timer backwards in time!");    return false;  }  t = new Timer;  t->name = new char[strlen(nameOfTimer)+1];  strcpy(t->name, nameOfTimer);  t->time = start;  t->period = period;  if (period < 0.0) {    t->isPeriodic = false;  } else {    t->isPeriodic = true;  }  t->wcetORtimer = false;  t->dlORtimer = false;  t->handler = handler;  t->task = NULL;  rtsys->timerQ->insertSorted(new TimerNode(t));    return true;}    bool ttCreateTimer(char *nameOfTimer, double when, char *nameOfHandler) {    // Creating timer with negative period will create a one-shot timer  return ttCreatePeriodicTimer(nameOfTimer, when, -1.0, nameOfHandler);}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?