📄 createtimer.cpp
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -