📄 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 + -