File: Top_Level_Mode_Functional.c

    1   /*
    2    * Code generation for system model 'Top_Level_Mode_Functional'
    3    *
    4    * Model                      : Top_Level_Mode_Functional
    5    * Model version              : 1.1167
    6    * Simulink Coder version : 8.4 (R2013a) 13-Feb-2013
    7    * C source code generated on : Thu Sep 12 09:50:34 2013
    8    *
    9    * Note that the functions contained in this file are part of a Simulink
   10    * model, and are not self-contained algorithms.
   11    */
   12   
   13   #include "Top_Level_Mode_Functional.h"
   14   #include "Top_Level_Mode_Functional_private.h"
   15   
   16   /* Named constants for Chart: '<Root>/Top Level Mode Sub-System' */
   17   #define Top_Level_Mode_Functional_IN_Confirm_Stop ((uint8_T)1U)
   18   #define Top_Level_Mode_Functional_IN_NOT_ON ((uint8_T)1U)
   19   #define Top_Level_Mode_Functional_IN_NO_ACTIVE_CHILD ((uint8_T)0U)
   20   #define Top_Level_Mode_Functional_IN_OFF ((uint8_T)1U)
   21   #define Top_Level_Mode_Functional_IN_ON ((uint8_T)2U)
   22   #define Top_Level_Mode_Functional_IN_TOP_Level_Mode ((uint8_T)2U)
   23   
   24   /* Forward declaration for local functions */
   25   static void Top_Level_Mode_Functional_writeLog(uint8_T logEvent,
   26     B_Top_Level_Mode_Functional_c_T *localB);
   27   static real_T Top_Level_Mode_Functional_Step_Scaling_Factor(uint8_T inputVal);
   28   
   29   /* Function for Chart: '<Root>/Top Level Mode Sub-System' */
   30   static void Top_Level_Mode_Functional_writeLog(uint8_T logEvent,
   31     B_Top_Level_Mode_Functional_c_T *localB)
   32   {
   33     /* Graphical Function 'writeLog': '<S1>:4072' */
   34     /* Transition: '<S1>:4065' */
   35     localB->TLM_MODE_OUT_Log_Message_ID = logEvent;
   36   }
   37   
   38   /* Function for Chart: '<Root>/Top Level Mode Sub-System' */
   39   static real_T Top_Level_Mode_Functional_Step_Scaling_Factor(uint8_T inputVal)
   40   {
   41     /* Graphical Function 'Step_Scaling_Factor': '<S1>:4070' */
   42     /* Transition: '<S1>:4064' */
   43     return inputVal;
   44   }
   45   
   46   /* Initial conditions for referenced model: 'Top_Level_Mode_Functional' */
   47   void Top_Level_Mode_Functional_Init(B_Top_Level_Mode_Functional_c_T *localB,
   48     DW_Top_Level_Mode_Functional_f_T *localDW)
   49   {
   50     /* InitializeConditions for Chart: '<Root>/Top Level Mode Sub-System' */
   51     localDW->is_TOP_Level_Mode = Top_Level_Mode_Functional_IN_NO_ACTIVE_CHILD;
   52     localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_NO_ACTIVE_CHILD;
   53     localDW->is_active_c2_Top_Level_Mode_Functional = 0U;
   54     localDW->is_c2_Top_Level_Mode_Functional =
   55       Top_Level_Mode_Functional_IN_NO_ACTIVE_CHILD;
   56     localDW->confirmStopTimer = 0.0;
   57     localB->TLM_MODE_OUT_Request_Confirm_Stop = FALSE;
   58     localB->TLM_MODE_OUT_Log_Message_ID = 0U;
   59   }
   60   
   61   /* Output and update for referenced model: 'Top_Level_Mode_Functional' */
   62   void Top_Level_Mode_Functional(const Operator_Commands *rtu_OP_CMD_IN, const
   63     Device_Configuration_Inputs *rtu_CONST_IN, Top_Level_Mode_Outputs
   64     *rty_TLM_MODE_OUT, B_Top_Level_Mode_Functional_c_T *localB,
   65     DW_Top_Level_Mode_Functional_f_T *localDW)
   66   {
   67     boolean_T System_Stop;
   68     boolean_T Cancel;
   69     boolean_T TLM_MODE_OUT_System_On;
   70   
   71     /* BusSelector: '<Root>/BusConversion_InsertedFor_OP_CMD_IN_at_outport_0' */
   72     System_Stop = rtu_OP_CMD_IN->System_Stop;
   73     Cancel = rtu_OP_CMD_IN->Cancel;
   74   
   75     /* Chart: '<Root>/Top Level Mode Sub-System' incorporates:
   76      *  BusSelector: '<Root>/BusConversion_InsertedFor_CONST_IN_at_outport_0'
   77      *  BusSelector: '<Root>/BusConversion_InsertedFor_OP_CMD_IN_at_outport_0'
   78      */
   79     /* Gateway: Top Level Mode Sub-System */
   80     /* During: Top Level Mode Sub-System */
   81     if (localDW->is_active_c2_Top_Level_Mode_Functional == 0U) {
   82       /* Entry: Top Level Mode Sub-System */
   83       localDW->is_active_c2_Top_Level_Mode_Functional = 1U;
   84   
   85       /* Entry Internal: Top Level Mode Sub-System */
   86       if (rtu_OP_CMD_IN->System_Start) {
   87         /* Transition: '<S1>:4040' */
   88         localDW->is_c2_Top_Level_Mode_Functional =
   89           Top_Level_Mode_Functional_IN_TOP_Level_Mode;
   90   
   91         /* Entry 'TOP_Level_Mode': '<S1>:4024' */
   92         TLM_MODE_OUT_System_On = TRUE;
   93   
   94         /* Entry Internal 'TOP_Level_Mode': '<S1>:4024' */
   95         /* Transition: '<S1>:4056' */
   96         localDW->is_TOP_Level_Mode = Top_Level_Mode_Functional_IN_Confirm_Stop;
   97   
   98         /* Entry Internal 'Confirm_Stop': '<S1>:4050' */
   99         if (rtu_OP_CMD_IN->System_Stop) {
  100           /* Transition: '<S1>:4057' */
  101           localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_ON;
  102   
  103           /* Entry 'ON': '<S1>:4055' */
  104           localB->TLM_MODE_OUT_Request_Confirm_Stop = TRUE;
  105           localDW->confirmStopTimer++;
  106         } else {
  107           /* Transition: '<S1>:4051' */
  108           localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_OFF;
  109   
  110           /* Entry 'OFF': '<S1>:4054' */
  111           localB->TLM_MODE_OUT_Request_Confirm_Stop = FALSE;
  112           localDW->confirmStopTimer = 0.0;
  113         }
  114       } else {
  115         /* Transition: '<S1>:4038' */
  116         localDW->is_c2_Top_Level_Mode_Functional =
  117           Top_Level_Mode_Functional_IN_NOT_ON;
  118   
  119         /* Entry 'NOT_ON': '<S1>:4034' */
  120         TLM_MODE_OUT_System_On = FALSE;
  121       }
  122     } else if (localDW->is_c2_Top_Level_Mode_Functional ==
  123                Top_Level_Mode_Functional_IN_NOT_ON) {
  124       /* During 'NOT_ON': '<S1>:4034' */
  125       if (rtu_OP_CMD_IN->System_Start) {
  126         /* Transition: '<S1>:4042' */
  127         Top_Level_Mode_Functional_writeLog(1U, localB);
  128   
  129         /* Exit 'NOT_ON': '<S1>:4034' */
  130         localDW->is_c2_Top_Level_Mode_Functional =
  131           Top_Level_Mode_Functional_IN_TOP_Level_Mode;
  132   
  133         /* Entry 'TOP_Level_Mode': '<S1>:4024' */
  134         TLM_MODE_OUT_System_On = TRUE;
  135   
  136         /* Entry Internal 'TOP_Level_Mode': '<S1>:4024' */
  137         /* Transition: '<S1>:4056' */
  138         localDW->is_TOP_Level_Mode = Top_Level_Mode_Functional_IN_Confirm_Stop;
  139   
  140         /* Entry Internal 'Confirm_Stop': '<S1>:4050' */
  141         if (System_Stop) {
  142           /* Transition: '<S1>:4057' */
  143           localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_ON;
  144   
  145           /* Entry 'ON': '<S1>:4055' */
  146           localB->TLM_MODE_OUT_Request_Confirm_Stop = TRUE;
  147           localDW->confirmStopTimer++;
  148         } else {
  149           /* Transition: '<S1>:4051' */
  150           localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_OFF;
  151   
  152           /* Entry 'OFF': '<S1>:4054' */
  153           localB->TLM_MODE_OUT_Request_Confirm_Stop = FALSE;
  154           localDW->confirmStopTimer = 0.0;
  155         }
  156       } else {
  157         TLM_MODE_OUT_System_On = FALSE;
  158       }
  159     } else {
  160       /* During 'TOP_Level_Mode': '<S1>:4024' */
  161       TLM_MODE_OUT_System_On = TRUE;
  162   
  163       /* During 'Confirm_Stop': '<S1>:4050' */
  164       if (localDW->is_Confirm_Stop == Top_Level_Mode_Functional_IN_OFF) {
  165         /* During 'OFF': '<S1>:4054' */
  166         if (rtu_OP_CMD_IN->System_Stop) {
  167           /* Transition: '<S1>:4052' */
  168           localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_ON;
  169   
  170           /* Entry 'ON': '<S1>:4055' */
  171           localB->TLM_MODE_OUT_Request_Confirm_Stop = TRUE;
  172           localDW->confirmStopTimer++;
  173         }
  174       } else {
  175         /* During 'ON': '<S1>:4055' */
  176         if (!rtu_OP_CMD_IN->System_Start) {
  177           /* Transition: '<S1>:4039' */
  178           Top_Level_Mode_Functional_writeLog(2U, localB);
  179   
  180           /* Exit Internal 'TOP_Level_Mode': '<S1>:4024' */
  181           /* Exit Internal 'Confirm_Stop': '<S1>:4050' */
  182           localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_NO_ACTIVE_CHILD;
  183           localDW->is_TOP_Level_Mode =
  184             Top_Level_Mode_Functional_IN_NO_ACTIVE_CHILD;
  185   
  186           /* Exit 'TOP_Level_Mode': '<S1>:4024' */
  187           localDW->is_c2_Top_Level_Mode_Functional =
  188             Top_Level_Mode_Functional_IN_NOT_ON;
  189   
  190           /* Entry 'NOT_ON': '<S1>:4034' */
  191           TLM_MODE_OUT_System_On = FALSE;
  192         } else {
  193           if (Cancel || (localDW->confirmStopTimer >
  194                          Top_Level_Mode_Functional_Step_Scaling_Factor
  195                          (rtu_CONST_IN->Max_Confirm_Stop_Duration))) {
  196             /* Transition: '<S1>:4053' */
  197             localDW->is_Confirm_Stop = Top_Level_Mode_Functional_IN_OFF;
  198   
  199             /* Entry 'OFF': '<S1>:4054' */
  200             localB->TLM_MODE_OUT_Request_Confirm_Stop = FALSE;
  201             localDW->confirmStopTimer = 0.0;
  202           } else {
  203             localDW->confirmStopTimer++;
  204           }
  205         }
  206       }
  207     }
  208   
  209     /* End of Chart: '<Root>/Top Level Mode Sub-System' */
  210   
  211     /* BusCreator: '<Root>/BusConversion_InsertedFor_TLM_MODE_OUT_at_inport_0' */
  212     rty_TLM_MODE_OUT->System_On = TLM_MODE_OUT_System_On;
  213     rty_TLM_MODE_OUT->Request_Confirm_Stop =
  214       localB->TLM_MODE_OUT_Request_Confirm_Stop;
  215     rty_TLM_MODE_OUT->Log_Message_ID = localB->TLM_MODE_OUT_Log_Message_ID;
  216   }
  217   
  218   /* Model initialize function */
  219   void Top_Level_Mode_Functional_initialize(const char_T **rt_errorStatus,
  220     RT_MODEL_Top_Level_Mode_Functional_T *const Top_Level_Mode_Functional_M,
  221     B_Top_Level_Mode_Functional_c_T *localB, DW_Top_Level_Mode_Functional_f_T
  222     *localDW)
  223   {
  224     /* Registration code */
  225   
  226     /* initialize error status */
  227     rtmSetErrorStatusPointer(Top_Level_Mode_Functional_M, rt_errorStatus);
  228   
  229     /* block I/O */
  230     (void) memset(((void *) localB), 0,
  231                   sizeof(B_Top_Level_Mode_Functional_c_T));
  232   
  233     /* states (dwork) */
  234     (void) memset((void *)localDW, 0,
  235                   sizeof(DW_Top_Level_Mode_Functional_f_T));
  236   }
  237