www.pudn.com > truetime-1.2-compiled.zip > createhandler.cpp
#ifndef CREATE_HANDLER
#define CREATE_HANDLER
#include "getnode.cpp"
bool ttCreateInterruptHandler(char *name, double priority, double (*codeFcn)(int, void*)) {
InterruptHandler* hdl;
if (strcmp(name,"") == 0) {
MEX_ERROR("ttCreateInterruptHandler: Name should be a non-empty string!");
return false;
}
if (rtsys->prioFcn == NULL) {
MEX_ERROR("ttCreateInterruptHandler: Kernel must be initialized before creation of handlers!");
return false;
}
DataNode* dn =getNode(name, rtsys->handlerList);
if (dn != NULL) {
MEX_ERROR("ttCreateInterruptHandler: Name of handler not unique!");
return false;
}
hdl = new InterruptHandler(name);
hdl->codeFcn = codeFcn;
hdl->priority = priority;
hdl->handlerID = rtsys->nbrOfHandlers + 1;
hdl->display = true;
rtsys->handlerList->appendNode(new DataNode(hdl, hdl->name));
rtsys->nbrOfSchedHandlers++;
rtsys->nbrOfHandlers++;
return true;
}
void ttCreateInterruptHandler(char *name, double priority, double (*codeFcn)(int, void*), void* data) {
DataNode* n;
if (ttCreateInterruptHandler(name, priority, codeFcn)) {
n = (DataNode*) rtsys->handlerList->getLast();
((Task*) n->data)->data = data;
}
}
#endif