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

📄 c5_lmdap_library_ncs.c

📁 m files for SIAM book, Numerical Computing with MATLAB
💻 C
📖 第 1 页 / 共 5 页
字号:
/* Include files */
#include "LMdap_Library_NCS_sfun.h"
#include "c5_LMdap_Library_NCS.h"
#define CHARTINSTANCE_CHARTNUMBER       (chartInstance->chartNumber)
#define CHARTINSTANCE_INSTANCENUMBER    (chartInstance->instanceNumber)
#include "LMdap_Library_NCS_sfun_debug_macros.h"

/* Type Definitions */

/* Named Constants */
#define c5_IN_NO_ACTIVE_CHILD           (0)
#define c5_IN_Wait_for_stable_rate      (8)
#define c5_IN_Start                     (7)
#define c5_IN_Fire_region_1             (3)
#define c5_IN_Coast_region_2            (2)
#define c5_IN_Skip_a_Sample_2           (6)
#define c5_IN_Skip_a_Sample_1           (5)
#define c5_IN_Coast_region_1            (1)
#define c5_IN_Fire_region_2             (4)

/* Variable Declarations */

/* Variable Definitions */

/* Function Declarations */
static void initialize_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void
initialize_params_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void enable_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void disable_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void finalize_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void sf_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void
c5_chartstep_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void c5_Fire_region_1(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void c5_Coast_region_2(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void c5_Coast_region_1(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void c5_Fire_region_2(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void init_script_number_translation(uint32_T c5_machineNumber, uint32_T
 c5_chartNumber);
static void init_test_point_addr_map(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void **get_test_point_address_map(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static rtwCAPI_ModelMappingInfo
*get_test_point_mapping_info(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);
static void init_dsm_address_info(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance);

/* Function Definitions */
static void initialize_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
  real_T *c5_jets;
  real_T *c5_enable;
  real_T *c5_ton;
  c5_jets = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1);
  c5_enable = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2);
  c5_ton = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3);
  _sfTime_ = (real_T)ssGetT(chartInstance->S);
  chartInstance->c5_tp_Coast_region_1 = 0U;
  chartInstance->c5_tp_Coast_region_2 = 0U;
  chartInstance->c5_tp_Fire_region_1 = 0U;
  chartInstance->c5_tp_Fire_region_2 = 0U;
  chartInstance->c5_tp_Skip_a_Sample_1 = 0U;
  chartInstance->c5_tp_Skip_a_Sample_2 = 0U;
  chartInstance->c5_tp_Start = 0U;
  chartInstance->c5_tp_Wait_for_stable_rate = 0U;
  chartInstance->c5_is_active_c5_LMdap_Library_NCS = 0U;
  chartInstance->c5_is_c5_LMdap_Library_NCS = 0U;
  chartInstance->c5_count = 0.0;
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance->S, 1) != 0)) {
    *c5_jets = 0.0;
  }
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance->S, 2) != 0)) {
    *c5_enable = 0.0;
  }
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance->S, 3) != 0)) {
    *c5_ton = 0.0;
  }
}

static void
initialize_params_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
  real_T c5_d0;
  real_T c5_d1;
  sf_set_error_prefix_string("Stateflow Runtime Error (chart): Error evaluating data 'tmin' in the parent workspace.\n");
  sf_mex_import(sf_mex_get_sfun_param(chartInstance->S, 1, 0),
   "sf_mex_get_sfun_param", &c5_d0, 0, 0, 0U, 0, 0);
  chartInstance->c5_tmin = c5_d0;
  sf_set_error_prefix_string("Stateflow Runtime Error (chart): ");
  sf_set_error_prefix_string("Stateflow Runtime Error (chart): Error evaluating data 'delt' in the parent workspace.\n");
  sf_mex_import(sf_mex_get_sfun_param(chartInstance->S, 0, 0),
   "sf_mex_get_sfun_param", &c5_d1, 0, 0, 0U, 0, 0);
  chartInstance->c5_delt = c5_d1;
  sf_set_error_prefix_string("Stateflow Runtime Error (chart): ");
}

static void enable_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
}

static void disable_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
}

static void finalize_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
}

static void sf_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
  int32_T c5_i0;
  uint8_T c5_previousEvent;
  real_T *c5_Nofjets;
  real_T *c5_jets;
  real_T *c5_enable;
  real_T *c5_ton;
  real_T *c5_Firefct1;
  real_T *c5_Coastfct1;
  real_T *c5_Firefct2;
  real_T *c5_Coastfct2;
  real_T *c5_tjcalc1;
  real_T *c5_tjcalc;
  real_T (*c5_e)[2];
  c5_jets = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1);
  c5_tjcalc = (real_T *)ssGetInputPortSignal(chartInstance->S, 7);
  c5_Coastfct1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 3);
  c5_tjcalc1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 6);
  c5_enable = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2);
  c5_Coastfct2 = (real_T *)ssGetInputPortSignal(chartInstance->S, 5);
  c5_Nofjets = (real_T *)ssGetInputPortSignal(chartInstance->S, 0);
  c5_ton = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3);
  c5_Firefct2 = (real_T *)ssGetInputPortSignal(chartInstance->S, 4);
  c5_Firefct1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 2);
  c5_e = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 1);
  _sfTime_ = (real_T)ssGetT(chartInstance->S);
  _SFD_DATA_RANGE_CHECK(*c5_Nofjets, 8U);
  _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
  for(c5_i0 = 0; c5_i0 < 2; c5_i0 = c5_i0 + 1) {
    _SFD_DATA_RANGE_CHECK((*c5_e)[c5_i0], 6U);
  }
  _SFD_DATA_RANGE_CHECK(*c5_enable, 9U);
  _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
  _SFD_DATA_RANGE_CHECK(*c5_Firefct1, 11U);
  _SFD_DATA_RANGE_CHECK(*c5_Coastfct1, 12U);
  _SFD_DATA_RANGE_CHECK(*c5_Firefct2, 1U);
  _SFD_DATA_RANGE_CHECK(*c5_Coastfct2, 2U);
  _SFD_DATA_RANGE_CHECK(*c5_tjcalc1, 4U);
  _SFD_DATA_RANGE_CHECK(*c5_tjcalc, 13U);
  _SFD_DATA_RANGE_CHECK(chartInstance->c5_tmin, 10U);
  _SFD_DATA_RANGE_CHECK(chartInstance->c5_delt, 5U);
  _SFD_DATA_RANGE_CHECK(chartInstance->c5_count, 7U);
  c5_previousEvent = _sfEvent_;
  _sfEvent_ = CALL_EVENT;
  c5_chartstep_c5_LMdap_Library_NCS(chartInstance);
  _sfEvent_ = c5_previousEvent;
  sf_debug_check_for_state_inconsistency(_LMdap_Library_NCSMachineNumber_,
   chartInstance->chartNumber, chartInstance->instanceNumber);
}

static void
c5_chartstep_c5_LMdap_Library_NCS(SFc5_LMdap_Library_NCSInstanceStruct
 *chartInstance)
{
  real_T *c5_Firefct2;
  real_T *c5_Coastfct2;
  real_T *c5_Firefct1;
  real_T *c5_Coastfct1;
  real_T *c5_jets;
  real_T *c5_ton;
  real_T *c5_enable;
  real_T *c5_Nofjets;
  real_T *c5_tjcalc;
  real_T *c5_tjcalc1;
  real_T (*c5_e)[2];
  c5_jets = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1);
  c5_tjcalc = (real_T *)ssGetInputPortSignal(chartInstance->S, 7);
  c5_Coastfct1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 3);
  c5_tjcalc1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 6);
  c5_enable = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2);
  c5_Coastfct2 = (real_T *)ssGetInputPortSignal(chartInstance->S, 5);
  c5_Nofjets = (real_T *)ssGetInputPortSignal(chartInstance->S, 0);
  c5_ton = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3);
  c5_Firefct2 = (real_T *)ssGetInputPortSignal(chartInstance->S, 4);
  c5_Firefct1 = (real_T *)ssGetInputPortSignal(chartInstance->S, 2);
  c5_e = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 1);
  _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG,0);
  if(chartInstance->c5_is_active_c5_LMdap_Library_NCS == 0) {
    _SFD_CC_CALL(CHART_ENTER_ENTRY_FUNCTION_TAG,0);
    chartInstance->c5_is_active_c5_LMdap_Library_NCS = 1U;
    _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
    _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,11);
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,11);
    chartInstance->c5_count = 2.0;
    _SFD_DATA_RANGE_CHECK(chartInstance->c5_count, 7U);
    chartInstance->c5_is_c5_LMdap_Library_NCS =
      (uint8_T)c5_IN_Wait_for_stable_rate;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,6);
    chartInstance->c5_tp_Wait_for_stable_rate = 1U;
  } else {
    switch(chartInstance->c5_is_c5_LMdap_Library_NCS) {
     case c5_IN_Coast_region_1:
      CV_CHART_EVAL(0,0,1);
      c5_Coast_region_1(chartInstance);
      break;
     case c5_IN_Coast_region_2:
      CV_CHART_EVAL(0,0,2);
      c5_Coast_region_2(chartInstance);
      break;
     case c5_IN_Fire_region_1:
      CV_CHART_EVAL(0,0,3);
      c5_Fire_region_1(chartInstance);
      break;
     case c5_IN_Fire_region_2:
      CV_CHART_EVAL(0,0,4);
      c5_Fire_region_2(chartInstance);
      break;
     case c5_IN_Skip_a_Sample_1:
      CV_CHART_EVAL(0,0,5);
      _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,7);
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,8);
      if(CV_TRANSITION_EVAL(8U,
        (int32_T)_SFD_CCP_CALL(8,0,((chartInstance->c5_count == 0.0)!=0))) != 0U
       != 0) {
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,8);
        _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,7);
        chartInstance->c5_tp_Skip_a_Sample_1 = 0U;
        _SFD_CS_CALL(STATE_INACTIVE_TAG,7);
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,7);
        chartInstance->c5_is_c5_LMdap_Library_NCS =
          (uint8_T)c5_IN_Coast_region_1;
        _SFD_CS_CALL(STATE_ACTIVE_TAG,3);
        chartInstance->c5_tp_Coast_region_1 = 1U;
        *c5_jets = 0.0;
        _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
        *c5_ton = 0.0;
        _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
        *c5_enable = 0.0;
        _SFD_DATA_RANGE_CHECK(*c5_enable, 9U);
      } else {
        _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,15);
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,15);
        _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,7);
        chartInstance->c5_tp_Skip_a_Sample_1 = 0U;
        _SFD_CS_CALL(STATE_INACTIVE_TAG,7);
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,7);
        *c5_ton = *c5_ton - chartInstance->c5_delt;
        _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
        chartInstance->c5_is_c5_LMdap_Library_NCS =
          (uint8_T)c5_IN_Skip_a_Sample_1;
        _SFD_CS_CALL(STATE_ACTIVE_TAG,7);
        chartInstance->c5_tp_Skip_a_Sample_1 = 1U;
        chartInstance->c5_count = chartInstance->c5_count - 1.0;
        _SFD_DATA_RANGE_CHECK(chartInstance->c5_count, 7U);
      }
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,7);
      break;
     case c5_IN_Skip_a_Sample_2:
      CV_CHART_EVAL(0,0,6);
      _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,1);
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,7);
      if(CV_TRANSITION_EVAL(7U,
        (int32_T)_SFD_CCP_CALL(7,0,((chartInstance->c5_count == 0.0)!=0))) != 0U
       != 0) {
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,7);
        _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,1);
        chartInstance->c5_tp_Skip_a_Sample_2 = 0U;
        _SFD_CS_CALL(STATE_INACTIVE_TAG,1);
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,1);
        chartInstance->c5_is_c5_LMdap_Library_NCS =
          (uint8_T)c5_IN_Coast_region_2;
        _SFD_CS_CALL(STATE_ACTIVE_TAG,0);
        chartInstance->c5_tp_Coast_region_2 = 1U;
        *c5_jets = 0.0;
        _SFD_DATA_RANGE_CHECK(*c5_jets, 0U);
        *c5_ton = 0.0;
        _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
        *c5_enable = 0.0;
        _SFD_DATA_RANGE_CHECK(*c5_enable, 9U);
      } else {
        _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,12);
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,12);
        _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,1);
        chartInstance->c5_tp_Skip_a_Sample_2 = 0U;
        _SFD_CS_CALL(STATE_INACTIVE_TAG,1);
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,1);
        *c5_ton = *c5_ton - chartInstance->c5_delt;
        _SFD_DATA_RANGE_CHECK(*c5_ton, 3U);
        chartInstance->c5_is_c5_LMdap_Library_NCS =
          (uint8_T)c5_IN_Skip_a_Sample_2;
        _SFD_CS_CALL(STATE_ACTIVE_TAG,1);
        chartInstance->c5_tp_Skip_a_Sample_2 = 1U;
        chartInstance->c5_count = chartInstance->c5_count - 1.0;
        _SFD_DATA_RANGE_CHECK(chartInstance->c5_count, 7U);
      }
      _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,1);
      break;
     case c5_IN_Start:
      CV_CHART_EVAL(0,0,7);
      _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,5);
      _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,1);
      if(CV_TRANSITION_EVAL(1U, ((_SFD_CCP_CALL(1,0,(((*c5_e)[1] < 0.0)!=0)) !=

⌨️ 快捷键说明

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