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

📄 tpc9_sfun_c1.c

📁 CDMA移动通信系统功率控制算法的MATLAB仿真实现
💻 C
📖 第 1 页 / 共 5 页
字号:
/*
 *
 * Stateflow code generation for chart:
 *    tpc9/Mobile/MS_Control
 * 
 * Target Name                          : sfun
 * Model Version                        : 1.188
 * Stateflow Version                    : 5.0.0.13.00.1.000001
 * Date of code generation              : 16-May-2006 19:18:55
 *
 */

#include "tpc9_sfun.h"
#include "tpc9_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 "tpc9_sfun_debug_macros.h"
#define IN_NO_ACTIVE_CHILD              (0)
#define IN_m0_c1_s1_Mobile_Station_Control_on_the_Traffic_Channel_3 1
#define IN_m0_c1_s3_Mobile_Station_Idle_State_1 2
#define IN_m0_c1_s4_System_Access_2     3
#define IN_m0_c1_s2_Conversation_3_1    1
#define IN_m0_c1_s5_Access_Probe        1
#define IN_m0_c1_s6_Wait                2
#define event_m0_c1_e23_Start_Chart     0
#define event_m0_c1_e24_Start_Access    1
#define event_m0_c1_e25_BS_Response     3
#define event_m0_c1_e26_PCG_Clock       4
#define event_m0_c1_e27_End_Call        5
#define event_m0_c1_e28_MS_Clock        2
static SFtpc9_sfun_c1InstanceStruct chartInstance;
#define InputData_m0_c1_d18_Power_Bit   (((real_T *)(ssGetInputPortSignal(chartInstance.S,0)))[0])
#define InputData_m0_c1_d19_Current_Input_Power (((real_T *)(ssGetInputPortSignal(chartInstance.S,1)))[0])
#define m0_c1_e23_Start_Chart           (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,2)[0]))
#define m0_c1_e24_Start_Access          (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,2)[1]))
#define m0_c1_e25_BS_Response           (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,2)[2]))
#define m0_c1_e26_PCG_Clock             (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,2)[3]))
#define m0_c1_e27_End_Call              (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,2)[4]))
#define m0_c1_e28_MS_Clock              (*(real_T *)(ssGetInputPortSignalPtrs(chartInstance.S,2)[5]))
#define OutputData_m0_c1_d20_Tx_Power   (((real_T *)(ssGetOutputPortSignal(chartInstance.S,1)))[0])
#define OutputData_m0_c1_d21_Traffic_Tx_Enable (((real_T *)(ssGetOutputPortSignal(chartInstance.S,2)))[0])
#define OutputData_m0_c1_d22_Access_Tx_Enable (((real_T *)(ssGetOutputPortSignal(chartInstance.S,3)))[0])

static void
exit_atomic_m0_c1_s1_Mobile_Station_Control_on_the_Traffic_Channel_3(void);
static void
exit_internal_m0_c1_s1_Mobile_Station_Control_on_the_Traffic_Channel_3(void);
static void enter_atomic_m0_c1_s2_Conversation_3_1(void);
static void exit_atomic_m0_c1_s2_Conversation_3_1(void);
static void enter_atomic_m0_c1_s3_Mobile_Station_Idle_State_1(void);
static void exit_atomic_m0_c1_s3_Mobile_Station_Idle_State_1(void);
static void exit_atomic_m0_c1_s4_System_Access_2(void);
static void exit_internal_m0_c1_s4_System_Access_2(void);
static void enter_atomic_m0_c1_s5_Access_Probe(void);
static void exit_atomic_m0_c1_s5_Access_Probe(void);
static void exit_atomic_m0_c1_s6_Wait(void);
static void broadcast_m0_c1_e23_Start_Chart(void);
static void broadcast_m0_c1_e24_Start_Access(void);
static void broadcast_m0_c1_e25_BS_Response(void);
static void broadcast_m0_c1_e26_PCG_Clock(void);
static void broadcast_m0_c1_e27_End_Call(void);
static void broadcast_m0_c1_e28_MS_Clock(void);
void tpc9_sfun_c1(void)
{
  _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG,0);
  if((_sfEvent_ == event_m0_c1_e28_MS_Clock) && (chartInstance.Counters.i1 < 7))
  {
    chartInstance.Counters.i1++;
  }
  if(chartInstance.State.is_active_tpc9_sfun_c1 == 0) {
    _SFD_CC_CALL(CHART_ENTER_ENTRY_FUNCTION_TAG,0);
    chartInstance.State.is_active_tpc9_sfun_c1 = 1;
    _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,6);
    _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,6);
    _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,6);
    enter_atomic_m0_c1_s3_Mobile_Station_Idle_State_1();
  } else {
    switch(chartInstance.State.is_tpc9_sfun_c1) {
     case IN_m0_c1_s1_Mobile_Station_Control_on_the_Traffic_Channel_3:
      CV_CHART_EVAL(0,0,1);
      _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,1);
      _SFD_CCS_CALL(STATE_DURING_COVERAGE_TAG,1,0);
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,0);
      if(CV_TRANSITION_EVAL(0, _SFD_CCP_CALL(0,0,(_sfEvent_ ==
          event_m0_c1_e27_End_Call)))) {
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,0);
        _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,0);
        _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,0);
        exit_internal_m0_c1_s1_Mobile_Station_Control_on_the_Traffic_Channel_3();
        exit_atomic_m0_c1_s1_Mobile_Station_Control_on_the_Traffic_Channel_3();
        enter_atomic_m0_c1_s3_Mobile_Station_Idle_State_1();
      } else {
        _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,20);
        if(CV_TRANSITION_EVAL(20, _SFD_CCP_CALL(20,0,(_sfEvent_ ==
            event_m0_c1_e26_PCG_Clock)))) {
          _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,20);
          _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,20);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,20);
          _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,1);
          _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,1);
          _SFD_CT_CALL(TRANSITION_BEFORE_COND_ACTION_TAG,1);
          chartInstance.LocalData.m0_c1_d9_cmd0 =
            chartInstance.LocalData.m0_c1_d10_cmd1;
          _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,1,0);
          chartInstance.LocalData.m0_c1_d10_cmd1 =
            chartInstance.LocalData.m0_c1_d11_cmd2;
          _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,1,1);
          chartInstance.LocalData.m0_c1_d11_cmd2 =
            (real_T)(InputData_m0_c1_d18_Power_Bit != 0.0);
          _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,1,2);
          chartInstance.LocalData.m0_c1_d14_last_corrections =
            chartInstance.LocalData.m0_c1_d12_current_corrections;
          _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,1,3);
          chartInstance.LocalData.m0_c1_d12_current_corrections =
            chartInstance.LocalData.m0_c1_d8_Sum_Power_Bit_Corrections;
          _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,1,4);
          _SFD_CT_CALL(TRANSITION_AFTER_COND_ACTION_TAG,1);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,1);
          _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,11);
          _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,11);
          _SFD_CT_CALL(TRANSITION_BEFORE_COND_ACTION_TAG,11);
          chartInstance.LocalData.m0_c1_d17_temp = (4.0 *
            chartInstance.LocalData.m0_c1_d9_cmd0 + 2.0 *
            chartInstance.LocalData.m0_c1_d10_cmd1) +
            chartInstance.LocalData.m0_c1_d11_cmd2;
          _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,11,0);
          _SFD_CT_CALL(TRANSITION_AFTER_COND_ACTION_TAG,11);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,11);
          _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,4);
          if(CV_TRANSITION_EVAL(4,
            _SFD_CCP_CALL(4,0,(chartInstance.LocalData.m0_c1_d17_temp == 2.0))
            || _SFD_CCP_CALL(4,1,(
              chartInstance.LocalData.m0_c1_d17_temp == 5.0)))) {
            if(sf_debug_transition_conflict_check_enabled()) {
              unsigned int transitionList[4];
              unsigned int numTransitions=1;
              transitionList[0] = 4;
              sf_debug_transition_conflict_check_begin();
              if((chartInstance.LocalData.m0_c1_d17_temp == 0.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == 3.0) || (
                chartInstance.LocalData.m0_c1_d17_temp == 4.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == 7.0)) {
                transitionList[numTransitions] = 13;
                numTransitions++;
              }
              if((chartInstance.LocalData.m0_c1_d17_temp == 1.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == 6.0)) {
                transitionList[numTransitions] = 8;
                numTransitions++;
              }
              if((chartInstance.LocalData.m0_c1_d17_temp == -1.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == -2.0) || (
                chartInstance.LocalData.m0_c1_d17_temp == -3.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == -4.0) || (
                chartInstance.LocalData.m0_c1_d17_temp == -5.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == -6.0)) {
                transitionList[numTransitions] = 22;
                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);
            _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,17);
            _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,17);
            _SFD_CT_CALL(TRANSITION_BEFORE_COND_ACTION_TAG,17);
            chartInstance.LocalData.m0_c1_d16_res =
              chartInstance.LocalData.m0_c1_d15_m *
              chartInstance.LocalData.m0_c1_d13_delta_p0;
            _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,17,0);
            _SFD_CT_CALL(TRANSITION_AFTER_COND_ACTION_TAG,17);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,17);
            _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,5);
            if(CV_TRANSITION_EVAL(5,
              _SFD_CCP_CALL(5,0,(InputData_m0_c1_d18_Power_Bit != 0.0 == 0)))) {
              if(sf_debug_transition_conflict_check_enabled()) {
                unsigned int transitionList[2];
                unsigned int numTransitions=1;
                transitionList[0] = 5;
                sf_debug_transition_conflict_check_begin();
                if(InputData_m0_c1_d18_Power_Bit != 0.0 == 1) {
                  transitionList[numTransitions] = 12;
                  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_Conversation_3_1();
              _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,5);
              chartInstance.LocalData.m0_c1_d8_Sum_Power_Bit_Corrections +=
                chartInstance.LocalData.m0_c1_d16_res;
              _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_s2_Conversation_3_1();
              goto sf_label_1;
            } else {
              _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,12);
              if(CV_TRANSITION_EVAL(12,
                _SFD_CCP_CALL(12,0,(InputData_m0_c1_d18_Power_Bit != 0.0 ==
                  1)))) {
                _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,12);
                _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,12);
                _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,12);
                exit_atomic_m0_c1_s2_Conversation_3_1();
                _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,12);
                chartInstance.LocalData.m0_c1_d8_Sum_Power_Bit_Corrections -=
                  chartInstance.LocalData.m0_c1_d16_res;
                _SFD_CCT_CALL(TRANSITION_TRANSITION_ACTION_COVERAGE_TAG,12,0);
                _SFD_CT_CALL(TRANSITION_AFTER_TRANS_ACTION_TAG,12);
                _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,12);
                enter_atomic_m0_c1_s2_Conversation_3_1();
                goto sf_label_1;
              }
            }
          }
          _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,13);
          if(CV_TRANSITION_EVAL(13,
            _SFD_CCP_CALL(13,0,(chartInstance.LocalData.m0_c1_d17_temp == 0.0))
            || _SFD_CCP_CALL(13,1,(
              chartInstance.LocalData.m0_c1_d17_temp == 3.0)) ||
            _SFD_CCP_CALL(13,2,(chartInstance.LocalData.m0_c1_d17_temp == 4.0))
            || _SFD_CCP_CALL(13,3,(chartInstance.LocalData.m0_c1_d17_temp ==
              7.0)))) {
            if(sf_debug_transition_conflict_check_enabled()) {
              unsigned int transitionList[3];
              unsigned int numTransitions=1;
              transitionList[0] = 13;
              sf_debug_transition_conflict_check_begin();
              if((chartInstance.LocalData.m0_c1_d17_temp == 1.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == 6.0)) {
                transitionList[numTransitions] = 8;
                numTransitions++;
              }
              if((chartInstance.LocalData.m0_c1_d17_temp == -1.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == -2.0) || (
                chartInstance.LocalData.m0_c1_d17_temp == -3.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == -4.0) || (
                chartInstance.LocalData.m0_c1_d17_temp == -5.0) ||
               (chartInstance.LocalData.m0_c1_d17_temp == -6.0)) {
                transitionList[numTransitions] = 22;
                numTransitions++;
              }
              sf_debug_transition_conflict_check_end();
              if(numTransitions>1) {
                _SFD_TRANSITION_CONFLICT(&(transitionList[0]),numTransitions);
              }
            }
            _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,13);
            _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,13);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,13);
            _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,3);
            _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,3);
            _SFD_CT_CALL(TRANSITION_BEFORE_COND_ACTION_TAG,3);
            chartInstance.LocalData.m0_c1_d16_res =
              (chartInstance.LocalData.m0_c1_d12_current_corrections -
              chartInstance.LocalData.m0_c1_d14_last_corrections) + 0.5;
            _SFD_CCT_CALL(TRANSITION_CONDITION_ACTION_COVERAGE_TAG,3,0);
            _SFD_CT_CALL(TRANSITION_AFTER_COND_ACTION_TAG,3);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,3);
            _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,5);
            if(CV_TRANSITION_EVAL(5,
              _SFD_CCP_CALL(5,0,(InputData_m0_c1_d18_Power_Bit != 0.0 == 0)))) {
              if(sf_debug_transition_conflict_check_enabled()) {
                unsigned int transitionList[2];
                unsigned int numTransitions=1;
                transitionList[0] = 5;
                sf_debug_transition_conflict_check_begin();
                if(InputData_m0_c1_d18_Power_Bit != 0.0 == 1) {
                  transitionList[numTransitions] = 12;
                  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_Conversation_3_1();
              _SFD_CT_CALL(TRANSITION_BEFORE_TRANS_ACTION_TAG,5);
              chartInstance.LocalData.m0_c1_d8_Sum_Power_Bit_Corrections +=
                chartInstance.LocalData.m0_c1_d16_res;
              _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_s2_Conversation_3_1();
              goto sf_label_1;
            } else {
              _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,12);
              if(CV_TRANSITION_EVAL(12,
                _SFD_CCP_CALL(12,0,(InputData_m0_c1_d18_Power_Bit != 0.0 ==
                  1)))) {
                _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,12);
                _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,12);
                _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,12);
                exit_atomic_m0_c1_s2_Conversation_3_1();

⌨️ 快捷键说明

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