ttinitkernel.cpp

来自「一个很棒的网络控制系统仿真软件」· C++ 代码 · 共 62 行

CPP
62
字号
#define KERNEL_MATLAB#include "../ttkernel.h" RTsys *rtsys;#include "../initkernel.cpp"#include "getrtsys.cpp"void mexFunction( int nlhs, mxArray *plhs[],                  int nrhs, const mxArray *prhs[] ){  rtsys = getrtsys(); // Get pointer to rtsys   // Check number and type of arguments.   if (nrhs < 3 || nrhs > 4) {    mexErrMsgTxt("ttInitKernel: Wrong number of input arguments! \nUsage: ttInitKernel(nbrInputs, nbrOutputs, prioFcn) or\n       ttInitKernel(nbrInputs, nbrOutputs, prioFcn, contextSwitchOH)");  }  if (!mxIsDoubleScalar(prhs[0]))    mexErrMsgTxt("ttInitKernel: nbrInputs must be an integer");  if (!mxIsDoubleScalar(prhs[1]))    mexErrMsgTxt("ttInitKernel: nbrOutputs must be an integer");  if (mxIsChar(prhs[2]) != 1 || mxGetM(prhs[2]) != 1)    mexErrMsgTxt("ttInitKernel: prioFcn must be a string");  if (nrhs == 4) {    if (!mxIsDoubleScalar(prhs[3]))      mexErrMsgTxt("ttInitKernel: contextSwitchOH must be a number");  }  int nbrInp = (int) *mxGetPr(prhs[0]);  int nbrOutp = (int) *mxGetPr(prhs[1]);    if (nbrInp < 0 )    mexErrMsgTxt("ttInitKernel: nbrInputs must be positive or zero");  if (nbrOutp < 0 )    mexErrMsgTxt("ttInitKernel: nbrOutputs must be positive or zero");  char buf[20];  mxGetString(prhs[2], buf, 20);  int dispatch;  if (strcmp(buf, "prioFP") == 0) {    dispatch = FP;  } else if (strcmp(buf, "prioRM") == 0) {    dispatch = RM;  } else if (strcmp(buf, "prioDM") == 0){    dispatch = DM;  } else if (strcmp(buf, "prioEDF") == 0) {    dispatch = EDF;  } else {    printf("ttInitKernel: Unknown priority function '%s', using fixed priority scheduling!\n",buf);    dispatch = FP; // default   }    if (nrhs == 3) {    ttInitKernel(nbrInp, nbrOutp, dispatch);  } else {    double contextSwitchOH = *mxGetPr(prhs[3]);    ttInitKernel(nbrInp, nbrOutp, dispatch, contextSwitchOH);  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?