⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radar_detector_sfun_c1.c

📁 马尔科夫matlab目标跟踪仿真源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
/*
 *
 * Stateflow code generation for chart:
 *    radar_detector/Radar Detector
 * 
 * Target Name                          : sfun
 * Model Version                        : 1.188
 * Stateflow Version                    : 5.1.0.13.00.1.000000
 * Date of code generation              : 13-Jan-2003 15:49:52
 *
 */

#include "radar_detector_sfun.h"
#include "radar_detector_sfun_c1.h"
#define mexPrintf                       sf_mex_printf
#ifdef printf
#undef printf
#endif
#define printf                          sf_mex_printf
#define CHARTINSTANCE_CHARTNUMBER       (chartInstance.chartNumber)
#define CHARTINSTANCE_INSTANCENUMBER    (chartInstance.instanceNumber)
#include "radar_detector_sfun_debug_macros.h"
#define IN_NO_ACTIVE_CHILD              (0)
#define IN_m0_c1_s2_Initialization      1
#define IN_m0_c1_s3_Locked              2
#define IN_m0_c1_s4_Seeking             3
#define IN_m0_c1_s7_Wait                4
#define IN_m0_c1_s5_Acquired            1
#define IN_m0_c1_s6_not_Acquired        2
#define IN_m0_c1_s9_Timer               1
#define event_m0_c1_e9_Pulse            1
#define event_m0_c1_e10_seconds         0
static SFradar_detector_sfun_c1InstanceStruct chartInstance;
#define InputData_m0_c1_d5_Rand         (((real_T *)(ssGetInputPortSignal(chartInstance.S,0)))[0])
#define m0_c1_e9_Pulse                  (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,1)[0]))
#define m0_c1_e10_seconds               (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,1)[1]))
#define OutputData_m0_c1_d6_P           (((real_T *)(ssGetOutputPortSignal(chartInstance.S,1)))[0])
#define OutputData_m0_c1_d7_stop        (((real_T *)(ssGetOutputPortSignal(chartInstance.S,2)))[0])
#define OutputData_m0_c1_d8_units       (((real_T *)(ssGetOutputPortSignal(chartInstance.S,3)))[0])

static void enter_atomic_m0_c1_s2_Initialization(void);
static void exit_atomic_m0_c1_s2_Initialization(void);
static void enter_atomic_m0_c1_s4_Seeking(void);
static void exit_atomic_m0_c1_s4_Seeking(void);
static void exit_internal_m0_c1_s4_Seeking(void);
static void enter_atomic_m0_c1_s5_Acquired(void);
static void exit_atomic_m0_c1_s5_Acquired(void);
static void enter_atomic_m0_c1_s6_not_Acquired(void);
static void exit_atomic_m0_c1_s6_not_Acquired(void);
static void exit_atomic_m0_c1_s7_Wait(void);
static void broadcast_m0_c1_e9_Pulse(void);
static void broadcast_m0_c1_e10_seconds(void);
void radar_detector_sfun_c1(void)
{
  _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG,0);
  if((_sfEvent_ == event_m0_c1_e10_seconds) && (chartInstance.Counters.i1 <
    0x7U)) {
    chartInstance.Counters.i1++;
  }
  if(chartInstance.State.is_active_radar_detector_sfun_c1 == 0) {
    _SFD_CC_CALL(CHART_ENTER_ENTRY_FUNCTION_TAG,0);
    chartInstance.State.is_active_radar_detector_sfun_c1 = 1;
    _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
    _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,4);
    _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,4,0);
    chartInstance.State.is_active_m0_c1_s1_Engage_RADAR = 1;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,4);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,3);
    _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,3);
    _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,3);
    enter_atomic_m0_c1_s2_Initialization();
    _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,5);
    _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,5,0);
    chartInstance.State.is_active_m0_c1_s8_Time_Past = 1;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,5);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,5);
    _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,7);
    if(CV_TRANSITION_EVAL(7, _SFD_CCP_CALL(7,0,(_sfEvent_ ==
        event_m0_c1_e10_seconds))) != 0) {
      _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,7);
      _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,7);
      _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,7);
      _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,7);
      OutputData_m0_c1_d8_units++;
      _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,7,0);
      _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,7);
      _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,7);
      _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,8);
      _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,8,0);
      chartInstance.State.is_m0_c1_s8_Time_Past = IN_m0_c1_s9_Timer;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,8);
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,8);
    }
  } else {
    _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,4);
    _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,4,0);
    switch(chartInstance.State.is_m0_c1_s1_Engage_RADAR) {
     case IN_m0_c1_s2_Initialization:
      CV_STATE_EVAL(4,0,1);
      _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,0);
      _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,0,0);
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,5);
      if(CV_TRANSITION_EVAL(5, (_SFD_CCP_CALL(5,0,(_sfEvent_ ==
           event_m0_c1_e9_Pulse)) != 0) && ((_SFD_CCP_CALL(5,1,(
            InputData_m0_c1_d5_Rand > chartInstance.LocalData.m0_c1_d3_Pinit))
          != 0) && (_SFD_CCP_CALL(5,2,(InputData_m0_c1_d5_Rand
            < 1.0 - chartInstance.LocalData.m0_c1_d4_PnAcq)) != 0))) != 0) {
        if(sf_debug_transition_conflict_check_enabled()) {
          unsigned int transitionList[3];
          unsigned int numTransitions=1;
          transitionList[0] = 5;
          sf_debug_transition_conflict_check_begin();
          if((_sfEvent_ == event_m0_c1_e9_Pulse) && (InputData_m0_c1_d5_Rand >=
            1.0 - chartInstance.LocalData.m0_c1_d4_PnAcq)) {
            transitionList[numTransitions] = 4;
            numTransitions++;
          }
          if((_sfEvent_ == event_m0_c1_e9_Pulse) && (InputData_m0_c1_d5_Rand <=
            chartInstance.LocalData.m0_c1_d3_Pinit)) {
            transitionList[numTransitions] = 9;
            numTransitions++;
          }
          sf_debug_transition_conflict_check_end();
          if(numTransitions>1) {
            _SFD_TRANSITION_CONFLICT(&(transitionList[0]),numTransitions);
          }
        }
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,5);
        _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,5);
        _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,5);
        exit_atomic_m0_c1_s2_Initialization();
        _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,5);
        OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d1_PAcq;
        _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,5,0);
        _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,5);
        _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,5);
        enter_atomic_m0_c1_s4_Seeking();
        enter_atomic_m0_c1_s5_Acquired();
      } else {
        _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,4);
        if(CV_TRANSITION_EVAL(4, (_SFD_CCP_CALL(4,0,(_sfEvent_ ==
             event_m0_c1_e9_Pulse)) != 0) && (_SFD_CCP_CALL(4,1,(
             InputData_m0_c1_d5_Rand >= 1.0 -
             chartInstance.LocalData.m0_c1_d4_PnAcq)) != 0)) != 0) {
          if(sf_debug_transition_conflict_check_enabled()) {
            unsigned int transitionList[2];
            unsigned int numTransitions=1;
            transitionList[0] = 4;
            sf_debug_transition_conflict_check_begin();
            if((_sfEvent_ == event_m0_c1_e9_Pulse) && (InputData_m0_c1_d5_Rand
              <= chartInstance.LocalData.m0_c1_d3_Pinit)) {
              transitionList[numTransitions] = 9;
              numTransitions++;
            }
            sf_debug_transition_conflict_check_end();
            if(numTransitions>1) {
              _SFD_TRANSITION_CONFLICT(&(transitionList[0]),numTransitions);
            }
          }
          _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,4);
          _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,4);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,4);
          exit_atomic_m0_c1_s2_Initialization();
          _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,4);
          OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d4_PnAcq;
          _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,4,0);
          _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,4);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,4);
          enter_atomic_m0_c1_s4_Seeking();
          enter_atomic_m0_c1_s6_not_Acquired();
        } else {
          _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,9);
          if(CV_TRANSITION_EVAL(9, (_SFD_CCP_CALL(9,0,(_sfEvent_ ==
               event_m0_c1_e9_Pulse)) != 0) && (_SFD_CCP_CALL(9,1,(
               InputData_m0_c1_d5_Rand <=
               chartInstance.LocalData.m0_c1_d3_Pinit)) != 0)) != 0) {
            _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,9);
            _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,9);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,9);
            exit_atomic_m0_c1_s2_Initialization();
            _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,9);
            OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d3_Pinit;
            _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,9,0);
            _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,9);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,9);
            enter_atomic_m0_c1_s2_Initialization();
          }
        }
      }
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
      break;
     case IN_m0_c1_s3_Locked:
      CV_STATE_EVAL(4,0,2);
      break;
     case IN_m0_c1_s4_Seeking:
      CV_STATE_EVAL(4,0,3);
      _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,3);
      _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,3,0);
      switch(chartInstance.State.is_m0_c1_s4_Seeking) {
       case IN_m0_c1_s5_Acquired:
        CV_STATE_EVAL(3,0,1);
        _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,7);
        _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,7,0);
        _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,11);
        if(CV_TRANSITION_EVAL(11, (_SFD_CCP_CALL(11,0,(_sfEvent_ ==
             event_m0_c1_e9_Pulse)) != 0) && (_SFD_CCP_CALL(11,1,(
             InputData_m0_c1_d5_Rand >= 1.0 -
             chartInstance.LocalData.m0_c1_d2_PLock)) != 0)) != 0) {
          _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,11);
          _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,11);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,11);
          exit_internal_m0_c1_s4_Seeking();
          exit_atomic_m0_c1_s4_Seeking();
          _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,11);
          OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d2_PLock;
          _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,11,0);
          _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,11);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,11);
          _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,2);
          _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,2,0);
          chartInstance.State.is_m0_c1_s1_Engage_RADAR = IN_m0_c1_s7_Wait;
          _SFD_CS_CALL(STATE_ACTIVE_TAG,2);
          chartInstance.Counters.i1 = 0;
          _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,2);
        } else {
          _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,2);
          if(CV_TRANSITION_EVAL(2, (_SFD_CCP_CALL(2,0,(_sfEvent_ ==
               event_m0_c1_e9_Pulse)) != 0) && ((_SFD_CCP_CALL(2,1,(
                InputData_m0_c1_d5_Rand >
                chartInstance.LocalData.m0_c1_d4_PnAcq)) != 0) &&
             (_SFD_CCP_CALL(2,2,(InputData_m0_c1_d5_Rand
                < 1.0 - chartInstance.LocalData.m0_c1_d2_PLock)) != 0))) != 0) {
            if(sf_debug_transition_conflict_check_enabled()) {
              unsigned int transitionList[2];
              unsigned int numTransitions=1;
              transitionList[0] = 2;
              sf_debug_transition_conflict_check_begin();
              if((_sfEvent_ == event_m0_c1_e9_Pulse) && (InputData_m0_c1_d5_Rand
                <= chartInstance.LocalData.m0_c1_d4_PnAcq)) {
                transitionList[numTransitions] = 10;
                numTransitions++;
              }
              sf_debug_transition_conflict_check_end();
              if(numTransitions>1) {
                _SFD_TRANSITION_CONFLICT(&(transitionList[0]),numTransitions);
              }
            }
            _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,2);
            _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,2);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,2);
            exit_atomic_m0_c1_s5_Acquired();
            _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,2);
            OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d1_PAcq;
            _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,2,0);
            _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,2);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,2);
            enter_atomic_m0_c1_s5_Acquired();
          } else {
            _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,10);
            if(CV_TRANSITION_EVAL(10, (_SFD_CCP_CALL(10,0,(_sfEvent_ ==
                 event_m0_c1_e9_Pulse)) != 0) && (_SFD_CCP_CALL(10,1,(
                 InputData_m0_c1_d5_Rand <=
                 chartInstance.LocalData.m0_c1_d4_PnAcq)) != 0)) != 0) {
              _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,10);
              _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,10);
              _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,10);
              exit_atomic_m0_c1_s5_Acquired();
              _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,10);
              OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d4_PnAcq;
              _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,10,0);
              _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,10);
              _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,10);
              enter_atomic_m0_c1_s6_not_Acquired();
            }
          }
        }
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,7);
        break;
       case IN_m0_c1_s6_not_Acquired:
        CV_STATE_EVAL(3,0,2);
        _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,6);
        _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,6,0);
        _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,8);
        if(CV_TRANSITION_EVAL(8, (_SFD_CCP_CALL(8,0,(_sfEvent_ ==
             event_m0_c1_e9_Pulse)) != 0) && (_SFD_CCP_CALL(8,1,(
             InputData_m0_c1_d5_Rand > chartInstance.LocalData.m0_c1_d4_PnAcq))

⌨️ 快捷键说明

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