servo_demo_sfun.c
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:5k
源码类别:

matlab例程

开发平台:

Matlab

  1. /* Include files */
  2. #define IN_SF_MACHINE_SOURCE            1
  3. #include "servo_demo_sfun.h"
  4. #include "c1_servo_demo.h"
  5. /* Type Definitions */
  6. /* Named Constants */
  7. /* Variable Declarations */
  8. /* Variable Definitions */
  9. uint8_T _sfEvent_;
  10. uint32_T _servo_demoMachineNumber_;
  11. real_T _sfTime_;
  12. /* Function Declarations */
  13. /* Function Definitions */
  14. void servo_demo_initializer(void)
  15. {
  16.   _sfEvent_ = CALL_EVENT;
  17. }
  18. void servo_demo_terminator(void)
  19. {
  20. }
  21. /* SFunction Glue Code */
  22. unsigned int sf_servo_demo_method_dispatcher(SimStruct *simstructPtr, const char
  23.  *chartName, int_T method, void *data)
  24. {
  25.   if(!strcmp_ignore_ws(chartName,"servo_demo/PWM_driver_ckt/ SFunction ")) {
  26.     c1_servo_demo_method_dispatcher(simstructPtr, method, data);
  27.     return 1;
  28.   }
  29.   return 0;
  30. }
  31. unsigned int sf_servo_demo_process_check_sum_call( int nlhs, mxArray * plhs[],
  32.  int nrhs, const mxArray * prhs[] )
  33. {
  34. #ifdef MATLAB_MEX_FILE
  35.   char commandName[20];
  36.   if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0;
  37.   /* Possible call to get the checksum */
  38.   mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char));
  39.   commandName[(sizeof(commandName)/sizeof(char)-1)] = '';
  40.   if(strcmp(commandName,"sf_get_check_sum")) return 0;
  41.   plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL);
  42.   if(nrhs>1 && mxIsChar(prhs[1])) {
  43.     mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char));
  44.     commandName[(sizeof(commandName)/sizeof(char)-1)] = '';
  45.     if(!strcmp(commandName,"machine")) {
  46.       ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3001779515U);
  47.       ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3093288751U);
  48.       ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(870329323U);
  49.       ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3241469047U);
  50.     }else if(!strcmp(commandName,"exportedFcn")) {
  51.       ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U);
  52.       ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U);
  53.       ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U);
  54.       ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U);
  55.     }else if(!strcmp(commandName,"makefile")) {
  56.       ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2703224572U);
  57.       ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3542450069U);
  58.       ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(4094587722U);
  59.       ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(524858718U);
  60.     }else if(nrhs==3 && !strcmp(commandName,"chart")) {
  61.       unsigned int chartFileNumber;
  62.       chartFileNumber = (unsigned int)mxGetScalar(prhs[2]);
  63.       switch(chartFileNumber) {
  64.        case 1:
  65.         {
  66.           extern void sf_c1_servo_demo_get_check_sum(mxArray *plhs[]);
  67.           sf_c1_servo_demo_get_check_sum(plhs);
  68.           break;
  69.         }
  70.        default:
  71.         ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0);
  72.         ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0);
  73.         ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0);
  74.         ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0);
  75.       }
  76.     }else if(!strcmp(commandName,"target")) {
  77.       ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1099933135U);
  78.       ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3099773274U);
  79.       ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1123725778U);
  80.       ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3891239738U);
  81.     }else {
  82.       return 0;
  83.     }
  84.   } else{
  85.     ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1838742911U);
  86.     ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3048058178U);
  87.     ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3021245786U);
  88.     ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1241392195U);
  89.   }
  90.   return 1;
  91. #else
  92.   return 0;
  93. #endif
  94. }
  95. unsigned int sf_servo_demo_autoinheritance_info( int nlhs, mxArray * plhs[], int
  96.  nrhs, const mxArray * prhs[] )
  97. {
  98. #ifdef MATLAB_MEX_FILE
  99.   char commandName[32];
  100.   if (nrhs<2 || !mxIsChar(prhs[0]) ) return 0;
  101.   /* Possible call to get the autoinheritance_info */
  102.   mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char));
  103.   commandName[(sizeof(commandName)/sizeof(char)-1)] = '';
  104.   if(strcmp(commandName,"get_autoinheritance_info")) return 0;
  105.   {
  106.     unsigned int chartFileNumber;
  107.     chartFileNumber = (unsigned int)mxGetScalar(prhs[1]);
  108.     switch(chartFileNumber) {
  109.      case 1:
  110.       {
  111.         extern mxArray *sf_c1_servo_demo_get_autoinheritance_info(void);
  112.         plhs[0] = sf_c1_servo_demo_get_autoinheritance_info();
  113.         break;
  114.       }
  115.      default:
  116.       plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL);
  117.     }
  118.   }
  119.   return 1;
  120. #else
  121.   return 0;
  122. #endif
  123. }
  124. void servo_demo_debug_initialize(void)
  125. {
  126.   _servo_demoMachineNumber_ =
  127.   sf_debug_initialize_machine("servo_demo","sfun",0,1,0,0,0);
  128.   sf_debug_set_machine_event_thresholds(_servo_demoMachineNumber_,0,0);
  129.   sf_debug_set_machine_data_thresholds(_servo_demoMachineNumber_,0);
  130. }