📄 sendmsg.cpp
字号:
#ifndef SEND_MSG#define SEND_MSG#include "getnetwork.cpp"// do the dirty work: poke around inside nwsys of the network block void nwSendMsg(NWmsg *nwmsg, RTnetwork *nwsys) { // set time when finished preprocessing nwmsg->waituntil = rtsys->time + nwsys->predelay; // enqueue message in preprocQ nwsys->nwnodes[nwmsg->sender]->preprocQ->appendNode(nwmsg);}// declare the four(!) versionsvoid ttSendMsg(int receiver, void *data, int length);void ttSendMsg(int receiver, void *data, int length, int priority);void ttSendMsg(int networkNbr, int receiver, void *data, int length);void ttSendMsg(int networkNbr, int receiver, void *data, int length, int priority);void ttSendMsg(int receiver, void *data, int length){ Network* net = getNetwork(1); if (net == NULL) { MEX_ERROR("ttSendMsg: Network not present!"); return; } int priority = net->nodeNbr; ttSendMsg(1, receiver, data, length);}void ttSendMsg(int networkNbr, int receiver, void *data, int length){ Network* net = getNetwork(networkNbr); if (net == NULL) { char buf[200]; sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr); MEX_ERROR(buf); return; } int priority = net->nodeNbr; ttSendMsg(networkNbr, receiver, data, length, priority);}void ttSendMsg(int receiver, void *data, int length, int priority){ ttSendMsg(1, receiver, data, length, priority);}void ttSendMsg(int networkNbr, int receiver, void *data, int length, int priority){ int i; Network* net = getNetwork(networkNbr); if (net == NULL) { char buf[200]; sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr); MEX_ERROR(buf); return; } if (receiver < -1 || receiver > net->nwsys->nbrOfNodes) { MEX_ERROR("ttSendMsg: receiver number out of bounds!"); return; } NWmsg *nwmsg = new NWmsg(); nwmsg->sender = net->nodeNbr; nwmsg->timesRead = 0; nwmsg->receiver = receiver-1; nwmsg->data = data; nwmsg->length = length; nwmsg->prio = priority; nwSendMsg(nwmsg, net->nwsys); rtsys->nwSnd[net->networkID - 1] += 1.0; // trigger output}// For use from Matlab mex functionvoid ttSendMsgMATLAB(int networkNbr, int receiver, int length, char* dataMATLAB, double priority){ int i; Network* net = getNetwork(networkNbr); if (net == NULL) { // is there no network? char buf[200]; sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr); mexErrMsgTxt(buf); } if (receiver < -1 || receiver > net->nwsys->nbrOfNodes) { mexErrMsgTxt("ttSendMsg: receiver number out of bounds"); } NWmsg *nwmsg = new NWmsg(); nwmsg->sender = net->nodeNbr; nwmsg->timesRead = 0; nwmsg->receiver = receiver-1; nwmsg->data = NULL; nwmsg->dataMATLAB = new char[strlen(dataMATLAB)+1]; strcpy(nwmsg->dataMATLAB, dataMATLAB); nwmsg->length = length; nwmsg->prio = priority; nwSendMsg(nwmsg, net->nwsys); rtsys->nwSnd[net->networkID - 1] += 1.0; // trigger output} void ttSendMsgMATLAB(int networkNbr, int receiver, int length, char* dataMATLAB){ Network* net = getNetwork(networkNbr); if (net == NULL) { // is there no network? char buf[200]; sprintf(buf, "ttSendMsg: Network #%d not present!", networkNbr); mexErrMsgTxt(buf); } int priority = net->nodeNbr; ttSendMsgMATLAB(networkNbr, receiver, length, dataMATLAB, priority);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -