www.pudn.com > truetime-1.2-compiled.zip > attachdlhandler.cpp


#ifndef ATTACH_DL_HANDLER
#define ATTACH_DL_HANDLER

#include "getnode.cpp"
#include "hdlerror.cpp"

void ttAttachDLHandler(char* nameOfTask, char* nameOfHandler) {

  DataNode *dn1, *dn2;
  
  dn1 = (DataNode*) getNode(nameOfTask, rtsys->taskList);
  if (dn1 == NULL) {
    char buf[200];
    sprintf(buf, "ttAttachDLHandler: Non-existent task '%s'", nameOfTask);
    MEX_ERROR(buf);
    return;
  }
  dn2 = (DataNode*) getNode(nameOfHandler, rtsys->handlerList);
  if (dn2 == NULL) {
    char buf[200];
    sprintf(buf, "ttAttachDLHandler: Non-existent handler '%s'", nameOfHandler);
    MEX_ERROR(buf);
    return;
  }

  UserTask* task = (UserTask*) dn1->data;
  InterruptHandler* hdl = (InterruptHandler*) dn2->data;

  if (hdl->type == UNUSED) {
    task->deadlineORhandler = hdl;
    hdl->usertask = task;
    hdl->timer = new Timer("");
    hdl->type = OVERRUN;
  } else {
    // Handler already assigned, display error message
    handler_error(hdl, "ttAttachDLHandler:");
  }
}

#endif