📄 radar_detector_sfun_c1.c
字号:
/*
*
* 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 + -