Technical data

3
Writing Target Language Files
3-36
/* Register children S-Functions (s-funcs without TLC files) */
{
static SimStruct childSFunctions[1];
static SimStruct *childSFunctionPtrs[1];
ssSetSFunctions(S, (SimStruct **) &childSFunctionPtrs[0]);
/* S-Function Block: foo */
{
static real_T sfcnPeriod[1];
static real_T sfcnOffset[1];
static real_T sfcnTsMap[1];
static mxArray *sfcnParams[1];
extern void foogain(SimStruct *);
SimStruct *s = &childrenSFunctions[0];
memset((char *) s, 0, sizeof(SimStruct));
ssSetModelName(s, "foogain");
ssSetPath(s, "foogain");
ssSetParentSS(s, S);
ssSetRootSS(s, ssGetRootSS(S));
ssSetSFcnParamsCount(s, 1);
ssSetSFcnParamsPtr(s, (const mxArray **) &sfcnParams[0]);
ssSetSFcnParam(s, 0, (real_T *) &P.foo.P1Sizes[0]);
ssSetU(s, &rtGround);
ssSetY(s, &B.foo);
ssSetMdlInfoPtr(s, ssGetMdlInfoPtr(S));
ssSetSampleTimePtr(s, (real_T *) &sfcnPeriod[0]);
ssSetOffsetTimePtr(s, (real_T *) &sfcnOffset[0]);
ssSetSampleTimeTaskIDPtr(s, (int_T *) &sfcnTsMap[0]);
sfunctionName(s);
ssSetSFunction(S, 0, s);
sfcnInitializeSizes(s);
sfcnInitializeSampleTimes(s);
}
}
}
Note 3