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

📄 radar_detector_sfun_c1.c

📁 马尔科夫matlab目标跟踪仿真源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
           != 0)) != 0) {
          if(sf_debug_transition_conflict_check_enabled()) {
            unsigned int transitionList[2];
            unsigned int numTransitions=1;
            transitionList[0] = 8;
            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] = 1;
              numTransitions++;
            }
            sf_debug_transition_conflict_check_end();
            if(numTransitions>1) {
              _SFD_TRANSITION_CONFLICT(&(transitionList[0]),numTransitions);
            }
          }
          _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,8);
          _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,8);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,8);
          exit_atomic_m0_c1_s6_not_Acquired();
          _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,8);
          OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d1_PAcq;
          _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,8,0);
          _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,8);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,8);
          enter_atomic_m0_c1_s5_Acquired();
        } else {
          _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,1);
          if(CV_TRANSITION_EVAL(1, (_SFD_CCP_CALL(1,0,(_sfEvent_ ==
               event_m0_c1_e9_Pulse)) != 0) && (_SFD_CCP_CALL(1,1,(
               InputData_m0_c1_d5_Rand <=
               chartInstance.LocalData.m0_c1_d4_PnAcq)) != 0)) != 0) {
            _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,1);
            _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,1);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,1);
            exit_atomic_m0_c1_s6_not_Acquired();
            _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,1);
            OutputData_m0_c1_d6_P *= chartInstance.LocalData.m0_c1_d4_PnAcq;
            _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,1,0);
            _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,1);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,1);
            enter_atomic_m0_c1_s6_not_Acquired();
          }
        }
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,6);
        break;
       default:
        CV_STATE_EVAL(3,0,0);
        break;
      }
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,3);
      break;
     case IN_m0_c1_s7_Wait:
      CV_STATE_EVAL(4,0,4);
      _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,2);
      _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,2,0);
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,6);
      if(CV_TRANSITION_EVAL(6, (_SFD_CCP_CALL(6,0,(_sfEvent_ ==
           event_m0_c1_e10_seconds)) != 0) && (_SFD_CCP_CALL(6,1,(
           chartInstance.Counters.i1 >= 5)) != 0)) != 0) {
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,6);
        _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,6);
        _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,6);
        exit_atomic_m0_c1_s7_Wait();
        _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,1);
        _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,1,0);
        chartInstance.State.is_m0_c1_s1_Engage_RADAR = IN_m0_c1_s3_Locked;
        _SFD_CS_CALL(STATE_ACTIVE_TAG,1);
        _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,1);
        OutputData_m0_c1_d7_stop = 1.0;
        _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,1,1);
        _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,1);
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,1);
      }
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,2);
      break;
     default:
      CV_STATE_EVAL(4,0,0);
      break;
    }
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
    _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,5);
    _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,5,0);
    _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,8);
    _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,8,0);
    _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,0);
    if(CV_TRANSITION_EVAL(0, _SFD_CCP_CALL(0,0,(_sfEvent_ ==
        event_m0_c1_e10_seconds))) != 0) {
      _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,0);
      _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,0);
      _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,0);
      _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,0);
      OutputData_m0_c1_d8_units++;
      _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,0,0);
      _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,0);
      _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,0);
    }
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,8);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,5);
  }
  _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
}

static void enter_atomic_m0_c1_s2_Initialization(void)
{
  _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,0);
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,0,0);
  chartInstance.State.is_m0_c1_s1_Engage_RADAR = IN_m0_c1_s2_Initialization;
  _SFD_CS_CALL(STATE_ACTIVE_TAG,0);
  _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,0);
  chartInstance.LocalData.m0_c1_d3_Pinit = 0.01;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,0,1);
  chartInstance.LocalData.m0_c1_d1_PAcq = 0.54;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,0,2);
  chartInstance.LocalData.m0_c1_d4_PnAcq = 0.45;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,0,3);
  _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,0);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
}

static void exit_atomic_m0_c1_s2_Initialization(void)
{
  _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,0);
  _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,0,0);
  chartInstance.State.is_m0_c1_s1_Engage_RADAR = IN_NO_ACTIVE_CHILD;
  _SFD_CS_CALL(STATE_INACTIVE_TAG,0);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
}

static void enter_atomic_m0_c1_s4_Seeking(void)
{
  _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,3);
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,3,0);
  chartInstance.State.is_m0_c1_s1_Engage_RADAR = IN_m0_c1_s4_Seeking;
  _SFD_CS_CALL(STATE_ACTIVE_TAG,3);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,3);
}

static void exit_atomic_m0_c1_s4_Seeking(void)
{
  _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,3);
  _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,3,0);
  chartInstance.State.is_m0_c1_s1_Engage_RADAR = IN_NO_ACTIVE_CHILD;
  _SFD_CS_CALL(STATE_INACTIVE_TAG,3);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,3);
}

static void exit_internal_m0_c1_s4_Seeking(void)
{
  switch(chartInstance.State.is_m0_c1_s4_Seeking) {
   case IN_m0_c1_s5_Acquired:
    CV_STATE_EVAL(3,1,1);
    exit_atomic_m0_c1_s5_Acquired();
    break;
   case IN_m0_c1_s6_not_Acquired:
    CV_STATE_EVAL(3,1,2);
    exit_atomic_m0_c1_s6_not_Acquired();
    break;
   default:
    CV_STATE_EVAL(3,1,0);
    break;
  }
}

static void enter_atomic_m0_c1_s5_Acquired(void)
{
  _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,7);
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,7,0);
  chartInstance.State.is_m0_c1_s4_Seeking = IN_m0_c1_s5_Acquired;
  _SFD_CS_CALL(STATE_ACTIVE_TAG,7);
  _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,7);
  chartInstance.LocalData.m0_c1_d1_PAcq = 0.15;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,7,1);
  chartInstance.LocalData.m0_c1_d4_PnAcq = 0.10;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,7,2);
  chartInstance.LocalData.m0_c1_d2_PLock = 0.75;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,7,3);
  _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,7);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,7);
}

static void exit_atomic_m0_c1_s5_Acquired(void)
{
  _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,7);
  _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,7,0);
  chartInstance.State.is_m0_c1_s4_Seeking = IN_NO_ACTIVE_CHILD;
  _SFD_CS_CALL(STATE_INACTIVE_TAG,7);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,7);
}

static void enter_atomic_m0_c1_s6_not_Acquired(void)
{
  _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,6);
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,6,0);
  chartInstance.State.is_m0_c1_s4_Seeking = IN_m0_c1_s6_not_Acquired;
  _SFD_CS_CALL(STATE_ACTIVE_TAG,6);
  _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,6);
  chartInstance.LocalData.m0_c1_d1_PAcq = 0.65;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,6,1);
  chartInstance.LocalData.m0_c1_d4_PnAcq = 0.35;
  _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,6,2);
  _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,6);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,6);
}

static void exit_atomic_m0_c1_s6_not_Acquired(void)
{
  _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,6);
  _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,6,0);
  chartInstance.State.is_m0_c1_s4_Seeking = IN_NO_ACTIVE_CHILD;
  _SFD_CS_CALL(STATE_INACTIVE_TAG,6);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,6);
}

static void exit_atomic_m0_c1_s7_Wait(void)
{
  _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,2);
  _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,2,0);
  chartInstance.State.is_m0_c1_s1_Engage_RADAR = IN_NO_ACTIVE_CHILD;
  _SFD_CS_CALL(STATE_INACTIVE_TAG,2);
  _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,2);
}

static void broadcast_m0_c1_e9_Pulse(void)
{
  uint8_T previousEvent;
  previousEvent = _sfEvent_;
  _sfEvent_ = event_m0_c1_e9_Pulse;
  _SFD_CE_CALL(EVENT_ENTER_BROADCAST_FUNCTION_TAG,event_m0_c1_e9_Pulse);
  _SFD_CE_CALL(EVENT_BEFORE_BROADCAST_TAG,event_m0_c1_e9_Pulse);
  sf_mex_listen_for_ctrl_c(chartInstance.S);
  radar_detector_sfun_c1();
  _SFD_CE_CALL(EVENT_AFTER_BROADCAST_TAG,event_m0_c1_e9_Pulse);
  _sfEvent_ = previousEvent;
}

static void broadcast_m0_c1_e10_seconds(void)
{
  uint8_T previousEvent;
  previousEvent = _sfEvent_;
  _sfEvent_ = event_m0_c1_e10_seconds;
  _SFD_CE_CALL(EVENT_ENTER_BROADCAST_FUNCTION_TAG,event_m0_c1_e10_seconds);
  _SFD_CE_CALL(EVENT_BEFORE_BROADCAST_TAG,event_m0_c1_e10_seconds);
  sf_mex_listen_for_ctrl_c(chartInstance.S);
  radar_detector_sfun_c1();
  _SFD_CE_CALL(EVENT_AFTER_BROADCAST_TAG,event_m0_c1_e10_seconds);
  _sfEvent_ = previousEvent;
}

void sf_radar_detector_sfun_c1_get_check_sum(mxArray *plhs[])
{
  ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2411618379U);
  ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3276552302U);
  ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3458581023U);
  ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3812530432U);
}
/*
 * Chart initialization function
 */
/* work around the buggy macro in simstruc.h until it is fixed */
#define cdrGetOutputPortReusable(S,port) \
  ( (S)->portInfo.outputs[(port)].attributes.optimOpts != \
   SS_NOT_REUSABLE_AND_GLOBAL )

static void initialize_radar_detector_sfun_c1( SimStruct *S)
{

  {
    chartInstance.LocalData.m0_c1_d1_PAcq = 0.0;
    chartInstance.LocalData.m0_c1_d2_PLock = 0.0;
    chartInstance.LocalData.m0_c1_d3_Pinit = 0.0;
    chartInstance.LocalData.m0_c1_d4_PnAcq = 0.0;
    if(!cdrGetOutputPortReusable(S,1)) {
      OutputData_m0_c1_d6_P = 1.0;
    }
    if(!cdrGetOutputPortReusable(S,2)) {
      OutputData_m0_c1_d7_stop = 0.0;
    }
    if(!cdrGetOutputPortReusable(S,3)) {
      OutputData_m0_c1_d8_units = 0.0;
    }
  }

  /* Initialize chart's state configuration */
  memset((void*)&(chartInstance.State),0,sizeof(chartInstance.State));

  {

⌨️ 快捷键说明

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