?? setperiod.cpp
字號:
#ifndef SET_PERIOD#define SET_PERIOD#include "gettask.cpp"#include "findQ.cpp"#include "moveready.cpp"// Setting period of a specific taskvoid ttSetPeriod(double newPeriod, char *nameOfTask) { TaskNode *tn; Task* task = getTask(nameOfTask); if (task == NULL) { char buf[200]; sprintf(buf, "ttSetPeriod: Non-existent task '%s'!", nameOfTask); MEX_ERROR(buf); return; } if (task->perTimer == NULL) { char buf[200]; sprintf(buf, "ttSetPeriod: Task '%s' not periodic!", nameOfTask); MEX_ERROR(buf); return; } double lastStart = task->perTimer->time - task->perTimer->period; double newTime = lastStart + newPeriod; task->perTimer->time = newTime; task->perTimer->period = newPeriod; // Update timerQ TimerNode* tin = (TimerNode*) rtsys->timerQ->getLast(); while (tin->getTimer() != task->perTimer) { tin = (TimerNode*) tin->getPrev(); } rtsys->timerQ->removeNode(tin); rtsys->timerQ->insertSorted(tin); // Reshuffle readyQ? tn = findInQ(nameOfTask, rtsys->readyQ); if (tn != NULL) { rtsys->readyQ->deleteNode(tn); moveToReadyQ(task); }}// Setting period of calling taskvoid ttSetPeriod(double newPeriod) { if(rtsys->executing == NULL) { MEX_ERROR("ttSetPeriod: No running task!"); return; } ttSetPeriod(newPeriod, rtsys->executing->name);}#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -