/* * Real-Time Workshop code generation for Simulink model "ECPDSPResetmdl.mdl". * * Model Version : 1.16 * Real-Time Workshop file version : 5.1 $Date: 2003/08/08 18:37:24 $ * Real-Time Workshop file generated on : Fri Feb 10 08:06:09 2006 * TLC version : 5.1 (Aug 8 2003) * C source code generated on : Fri Feb 10 08:06:09 2006 */ #include #include #include "ECPDSPResetmdl.h" #include "ECPDSPResetmdl_private.h" #include "ext_work.h" #include "ECPDSPResetmdl_dt.h" #include "simstruc.h" /* Block signals (auto storage) */ BlockIO rtB; /* Parent Simstruct */ static SimStruct model_S; SimStruct *const rtS = &model_S; /* Start for root system: '' */ void MdlStart(void) { /* Level2 S-Function Block: /S-Function (ECPDSPReset) */ { SimStruct *rts = ssGetSFunction(rtS, 0); sfcnStart(rts); } } /* Outputs for root system: '' */ void MdlOutputs(int_T tid) { /* tid is required for a uniform function interface. This system * is single rate, and in this case, tid is not accessed. */ UNUSED_PARAMETER(tid); /* Level2 S-Function Block: /S-Function (ECPDSPReset) */ { SimStruct *rts = ssGetSFunction(rtS, 0); sfcnOutputs(rts, tid); } } /* Update for root system: '' */ void MdlUpdate(int_T tid) { /* tid is required for a uniform function interface. This system * is single rate, and in this case, tid is not accessed. */ UNUSED_PARAMETER(tid); } /* Terminate for root system: '' */ void MdlTerminate(void) { if(rtS != NULL) { /* Level2 S-Function Block: /S-Function (ECPDSPReset) */ { SimStruct *rts = ssGetSFunction(rtS, 0); sfcnTerminate(rts); } } } /* Helper function to make function calls from non-inlined S-functions */ int_T rt_CallSys(SimStruct *S, int_T element, int_T tid) { (*(S)->callSys.fcns[element])((S)->callSys.args1[element], (S)->callSys.args2[element], tid); if (ssGetErrorStatus(S) != NULL) { return 0; } else { return 1; } } /* Helper function to make function enables from non-inlined S-functions */ int_T rt_EnableSys(SimStruct *S, int_T element, int_T tid) { if ((S)->callSys.fcns[ssGetOutputPortWidth(S,0)+element] != NULL) { (*(S)->callSys.fcns[ssGetOutputPortWidth(S,0)+element]) ((S)->callSys.args1[element], (S)->callSys.args2[element], tid); if (ssGetErrorStatus(S) != NULL) { return 0; } } if ((S)->callSys.fcns[2*ssGetOutputPortWidth(S,0)+element] != NULL) { (*(S)->callSys.fcns[2*ssGetOutputPortWidth(S,0)+element]) ((S)->callSys.args1[element], (S)->callSys.args2[element], tid); if (ssGetErrorStatus(S) != NULL) { return 0; } } return 1; } /* Helper function to make function disables from non-inlined S-functions */ int_T rt_DisableSys(SimStruct *S, int_T element, int_T tid) { (*(S)->callSys.fcns[3*ssGetOutputPortWidth(S,0)+element]) ((S)->callSys.args1[element], (S)->callSys.args2[element], tid); if (ssGetErrorStatus(S) != NULL) { return 0; } else { return 1; } } /* Function to initialize sizes */ void MdlInitializeSizes(void) { ssSetNumContStates(rtS, 0); /* Number of continuous states */ ssSetNumY(rtS, 0); /* Number of model outputs */ ssSetNumU(rtS, 0); /* Number of model inputs */ ssSetDirectFeedThrough(rtS, 0); /* The model is not direct feedthrough */ ssSetNumSampleTimes(rtS, 1); /* Number of sample times */ ssSetNumBlocks(rtS, 3); /* Number of blocks */ ssSetNumBlockIO(rtS, 1); /* Number of block outputs */ ssSetNumBlockParams(rtS, 18); /* Sum of parameter "widths" */ } /* Function to initialize sample times */ void MdlInitializeSampleTimes(void) { /* task periods */ ssSetSampleTime(rtS, 0, 0.001); /* task offsets */ ssSetOffsetTime(rtS, 0, 0.0); } /* Function to register the model */ SimStruct *ECPDSPResetmdl(void) { static struct _ssMdlInfo mdlInfo; (void)memset((char *)rtS, 0, sizeof(SimStruct)); (void)memset((char *)&mdlInfo, 0, sizeof(struct _ssMdlInfo)); ssSetMdlInfoPtr(rtS, &mdlInfo); /* timing info */ { static time_T mdlPeriod[NSAMPLE_TIMES]; static time_T mdlOffset[NSAMPLE_TIMES]; static time_T mdlTaskTimes[NSAMPLE_TIMES]; static int_T mdlTsMap[NSAMPLE_TIMES]; static int_T mdlSampleHits[NSAMPLE_TIMES]; { int_T i; for(i = 0; i < NSAMPLE_TIMES; i++) { mdlPeriod[i] = 0.0; mdlOffset[i] = 0.0; mdlTaskTimes[i] = 0.0; } } (void)memset((char_T *)&mdlTsMap[0], 0, 1 * sizeof(int_T)); (void)memset((char_T *)&mdlSampleHits[0], 0, 1 * sizeof(int_T)); ssSetSampleTimePtr(rtS, &mdlPeriod[0]); ssSetOffsetTimePtr(rtS, &mdlOffset[0]); ssSetSampleTimeTaskIDPtr(rtS, &mdlTsMap[0]); ssSetTPtr(rtS, &mdlTaskTimes[0]); ssSetSampleHitPtr(rtS, &mdlSampleHits[0]); } ssSetSolverMode(rtS, SOLVER_MODE_SINGLETASKING); /* * initialize model vectors and cache them in SimStruct */ /* block I/O */ { void *b = (void *) &rtB; ssSetBlockIO(rtS, b); { int_T i; b =&rtB.S_Function; for (i = 0; i < 1; i++) { ((real_T*)b)[i] = 0.0; } } } /* parameters */ ssSetDefaultParam(rtS, (real_T *) &rtP); /* data type transition information (for external mode) */ { static DataTypeTransInfo dtInfo; (void)memset((char_T *) &dtInfo, 0, sizeof(dtInfo)); ssSetModelMappingInfo(rtS, &dtInfo); dtInfo.numDataTypes = 13; dtInfo.dataTypeSizes = &rtDataTypeSizes[0]; dtInfo.dataTypeNames = &rtDataTypeNames[0]; /* Block I/O transition table */ dtInfo.B = &rtBTransTable; /* Parameters transition table */ dtInfo.P = &rtPTransTable; } /* Model specific registration */ ssSetRootSS(rtS, rtS); ssSetVersion(rtS, SIMSTRUCT_VERSION_LEVEL2); ssSetModelName(rtS, "ECPDSPResetmdl"); ssSetPath(rtS, "ECPDSPResetmdl"); ssSetTStart(rtS, 0.0); ssSetTFinal(rtS, 1.0); ssSetStepSize(rtS, 0.001); ssSetFixedStepSize(rtS, 0.001); ssSetChecksumVal(rtS, 0, 3207970387U); ssSetChecksumVal(rtS, 1, 273742104U); ssSetChecksumVal(rtS, 2, 834454685U); ssSetChecksumVal(rtS, 3, 1307261054U); { static const EnableStates rtAlwaysEnabled = SUBSYS_ENABLED; static RTWExtModeInfo rt_ExtModeInfo; static const void *sysModes[1]; ssSetRTWExtModeInfo(rtS, &rt_ExtModeInfo); rteiSetSubSystemModeVectorAddresses(&rt_ExtModeInfo, sysModes); sysModes[0] = &rtAlwaysEnabled; rteiSetModelMappingInfoPtr(&rt_ExtModeInfo, &ssGetModelMappingInfo(rtS)); rteiSetChecksumsPtr(&rt_ExtModeInfo, ssGetChecksums(rtS)); rteiSetTPtr(&rt_ExtModeInfo, ssGetTPtr(rtS)); } /* child S-Function registration */ ssSetNumSFunctions(rtS, 1); /* register each child */ { static SimStruct childSFunctions[1]; static SimStruct *childSFunctionPtrs[1]; (void)memset((char_T *)&childSFunctions[0], 0, sizeof(childSFunctions)); ssSetSFunctions(rtS, &childSFunctionPtrs[0]); { int_T i; for(i = 0; i < 1; i++) { ssSetSFunction(rtS, i, &childSFunctions[i]); } } /* Level2 S-Function Block: ECPDSPResetmdl//S-Function (ECPDSPReset) */ { SimStruct *rts = ssGetSFunction(rtS, 0); /* timing info */ static time_T sfcnPeriod[1]; static time_T sfcnOffset[1]; static int_T sfcnTsMap[1]; { int_T i; for(i = 0; i < 1; i++) { sfcnPeriod[i] = sfcnOffset[i] = 0.0; } } ssSetSampleTimePtr(rts, &sfcnPeriod[0]); ssSetOffsetTimePtr(rts, &sfcnOffset[0]); ssSetSampleTimeTaskIDPtr(rts, sfcnTsMap); /* Set up the mdlInfo pointer */ ssSetMdlInfoPtr(rts, ssGetMdlInfoPtr(rtS)); /* Allocate memory of model methods 2 */ { static struct _ssSFcnModelMethods2 methods2; ssSetModelMethods2(rts, &methods2); } /* inputs */ { static struct _ssPortInputs inputPortInfo[1]; _ssSetNumInputPorts(rts, 1); ssSetPortInfoForInputs(rts, &inputPortInfo[0]); /* port 0 */ { static real_T const *sfcnUPtrs[1]; sfcnUPtrs[0] = &rtP.Add_1_Value; ssSetInputPortSignalPtrs(rts, 0, (InputPtrsType)&sfcnUPtrs[0]); _ssSetInputPortNumDimensions(rts, 0, 1); ssSetInputPortWidth(rts, 0, 1); } } /* outputs */ { static struct _ssPortOutputs outputPortInfo[1]; _ssSetNumOutputPorts(rts, 1); ssSetPortInfoForOutputs(rts, &outputPortInfo[0]); /* port 0 */ { _ssSetOutputPortNumDimensions(rts, 0, 1); ssSetOutputPortWidth(rts, 0, 1); ssSetOutputPortSignal(rts, 0, ((real_T *) &rtB.S_Function)); } } /* path info */ ssSetModelName(rts, "S-Function"); ssSetPath(rts, "ECPDSPResetmdl/ECPDSP Reset/S-Function"); if (ssGetRTModel(rtS) == NULL) { ssSetParentSS(rts, rtS); ssSetRootSS(rts, ssGetRootSS(rtS)); } else { ssSetRTModel(rts,ssGetRTModel(rtS)); ssSetParentSS(rts, NULL); ssSetRootSS(rts, rts); } ssSetVersion(rts, SIMSTRUCT_VERSION_LEVEL2); /* parameters */ { static mxArray *sfcnParams[4]; ssSetSFcnParamsCount(rts, 4); ssSetSFcnParamsPtr(rts, &sfcnParams[0]); ssSetSFcnParam(rts, 0, &rtP.S_Function_P1_Size[0]); ssSetSFcnParam(rts, 1, &rtP.S_Function_P2_Size[0]); ssSetSFcnParam(rts, 2, &rtP.S_Function_P3_Size[0]); ssSetSFcnParam(rts, 3, &rtP.S_Function_P4_Size[0]); } /* registration */ ECPDSPReset(rts); sfcnInitializeSizes(rts); sfcnInitializeSampleTimes(rts); /* adjust sample time */ ssSetSampleTime(rts, 0, 0.001); ssSetOffsetTime(rts, 0, 0.0); sfcnTsMap[0] = 0; /* set compiled values of dynamic vector attributes */ ssSetNumNonsampledZCs(rts, 0); /* Update connectivity flags for each port */ _ssSetInputPortConnected(rts, 0, 1); _ssSetOutputPortConnected(rts, 0, 1); _ssSetOutputPortBeingMerged(rts, 0, 0); /* Update the BufferDstPort flags for each input port */ ssSetInputPortBufferDstPort(rts, 0, -1); } } return rtS; }