servo_demo_sfun_registry.c
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:4k
源码类别:
matlab例程
开发平台:
Matlab
- #include "servo_demo_sfun.h"
- #include "sfcdebug.h"
- #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL
- unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs,
- const mxArray * prhs[] )
- {
- extern unsigned int sf_servo_demo_process_check_sum_call( int nlhs, mxArray *
- plhs[], int nrhs, const mxArray * prhs[] );
- if(sf_servo_demo_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1;
- return 0;
- }
- unsigned int sf_process_autoinheritence_call( int nlhs, mxArray * plhs[], int
- nrhs, const mxArray * prhs[] )
- {
- extern unsigned int sf_servo_demo_autoinheritance_info( int nlhs, mxArray *
- plhs[], int nrhs, const mxArray * prhs[] );
- if(sf_servo_demo_autoinheritance_info(nlhs,plhs,nrhs,prhs)) return 1;
- return 0;
- }
- unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const
- mxArray * prhs[] )
- {
- char commandName[20];
- if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0;
- /* Possible call to get the checksum */
- mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char));
- commandName[(sizeof(commandName)/sizeof(char)-1)] = ' ';
- if(strcmp(commandName,"sf_mex_unlock")) return 0;
- while(mexIsLocked()) {
- mexUnlock();
- }
- return(1);
- }
- extern unsigned int sf_debug_api( int nlhs, mxArray * plhs[], int nrhs, const
- mxArray * prhs[] );
- static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[],
- int nrhs, const mxArray * prhs[])
- {
- if(sf_debug_api(nlhs,plhs,nrhs,prhs)) return 1;
- if(sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1;
- if(sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1;
- if(sf_process_autoinheritence_call(nlhs,plhs,nrhs,prhs)) return 1;
- return 0;
- }
- static unsigned int sfMachineGlobalTerminatorCallable = 0;
- static unsigned int sfMachineGlobalInitializerCallable = 1;
- extern unsigned int sf_servo_demo_method_dispatcher(SimStruct *S, const char
- *chartName, int_T method, void *data);
- unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const
- char *chartName, int_T method, void *data)
- {
- if(sf_servo_demo_method_dispatcher(simstructPtr,chartName,method,data)) return
- 1;
- return 0;
- }
- extern void servo_demo_terminator(void);
- void sf_machine_global_terminator(void)
- {
- if(sfMachineGlobalTerminatorCallable) {
- sfMachineGlobalTerminatorCallable = 0;
- sfMachineGlobalInitializerCallable = 1;
- servo_demo_terminator();
- sf_debug_terminate();
- }
- return;
- }
- extern void servo_demo_initializer(void);
- extern void servo_demo_debug_initialize(void);
- void sf_machine_global_initializer(void)
- {
- if(sfMachineGlobalInitializerCallable) {
- sfMachineGlobalInitializerCallable = 0;
- sfMachineGlobalTerminatorCallable =1;
- servo_demo_debug_initialize();
- servo_demo_initializer();
- }
- return;
- }
- #define PROCESS_MEX_SFUNCTION_EVERY_CALL
- unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T
- nrhs, const mxArray *prhs[]);
- #include "simulink.c" /* MEX-file interface mechanism */
- static void sf_machine_load_sfunction_ptrs(SimStruct *S)
- {
- ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes);
- ssSetmdlInitializeConditions(S,__mdlInitializeConditions);
- ssSetmdlOutputs(S,__mdlOutputs);
- ssSetmdlTerminate(S,__mdlTerminate);
- ssSetmdlRTW(S,__mdlRTW);
- ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths);
- #if defined(MDL_HASSIMULATIONCONTEXTIO)
- ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO);
- #endif
- #if defined(MDL_START)
- ssSetmdlStart(S,__mdlStart);
- #endif
- #if defined(RTW_GENERATED_ENABLE)
- ssSetRTWGeneratedEnable(S,__mdlEnable);
- #endif
- #if defined(RTW_GENERATED_DISABLE)
- ssSetRTWGeneratedDisable(S,__mdlDisable);
- #endif
- #if defined(MDL_ENABLE)
- ssSetmdlEnable(S,__mdlEnable);
- #endif
- #if defined(MDL_DISABLE)
- ssSetmdlDisable(S,__mdlDisable);
- #endif
- #if defined(MDL_SIM_STATUS_CHANGE)
- ssSetmdlSimStatusChange(S,__mdlSimStatusChange);
- #endif
- #if defined(MDL_EXT_MODE_EXEC)
- ssSetmdlExtModeExec(S,__mdlExtModeExec);
- #endif
- #if defined(MDL_UPDATE)
- ssSetmdlUpdate(S,__mdlUpdate);
- #endif
- }
- unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T
- nrhs, const mxArray *prhs[])
- {
- if (nlhs < 0) {
- SimStruct *S = (SimStruct *)plhs[_LHS_SS];
- int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG]));
- if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) {
- sf_machine_load_sfunction_ptrs(S);
- }
- }
- return 0;
- }