File: CONFIG_Functional.c

    1   /*
    2    * Code generation for system model 'CONFIG_Functional'
    3    *
    4    * Model                      : CONFIG_Functional
    5    * Model version              : 1.1164
    6    * Simulink Coder version : 8.4 (R2013a) 13-Feb-2013
    7    * C source code generated on : Thu Sep 12 09:49:47 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 "CONFIG_Functional.h"
   14   #include "CONFIG_Functional_private.h"
   15   
   16   /* Named constants for Chart: '<Root>/Config  Sub-System' */
   17   #define CONFIG_Functional_IN_Configuration ((uint8_T)1U)
   18   #define CONFIG_Functional_IN_ConfirmInfusionInitation ((uint8_T)1U)
   19   #define CONFIG_Functional_IN_DisplayErrorMessage ((uint8_T)1U)
   20   #define CONFIG_Functional_IN_DisplayParam ((uint8_T)2U)
   21   #define CONFIG_Functional_IN_GetDrugSafeValues ((uint8_T)3U)
   22   #define CONFIG_Functional_IN_GetInfusionParam ((uint8_T)1U)
   23   #define CONFIG_Functional_IN_GetParam  ((uint8_T)4U)
   24   #define CONFIG_Functional_IN_Infusion_info ((uint8_T)2U)
   25   #define CONFIG_Functional_IN_MAIN      ((uint8_T)1U)
   26   #define CONFIG_Functional_IN_NOT_ON    ((uint8_T)2U)
   27   #define CONFIG_Functional_IN_NO_ACTIVE_CHILD ((uint8_T)0U)
   28   #define CONFIG_Functional_IN_Patient_Drug_info ((uint8_T)3U)
   29   #define CONFIG_Functional_IN_Prescription_Config ((uint8_T)2U)
   30   #define CONFIG_Functional_IN_RequestInfusionParam ((uint8_T)2U)
   31   #define CONFIG_Functional_IN_SelectType ((uint8_T)4U)
   32   #define CONFIG_Functional_IN_ValidateInfusionParam ((uint8_T)3U)
   33   #define CONFIG_Functional_IN_ValidateParam ((uint8_T)5U)
   34   
   35   /* Forward declaration for local functions */
   36   static real_T CONFIG_Functional_Step_Scaling_Factor(uint8_T inputVal);
   37   static void CONFIG_Functional_writeLog(uint8_T logEvent, B_CONFIG_Functional_c_T
   38     *localB);
   39   static void CONFIG_Functional_cancelConfigValues(B_CONFIG_Functional_c_T *localB,
   40     DW_CONFIG_Functional_f_T *localDW);
   41   static void CONFIG_Functional_checkIfPrescriptionAvailable
   42     (B_CONFIG_Functional_c_T *localB, DW_CONFIG_Functional_f_T *localDW);
   43   static void CONFIG_Functional_saveConfigValues(B_CONFIG_Functional_c_T *localB,
   44     DW_CONFIG_Functional_f_T *localDW);
   45   static void CONFIG_Functional_copyCurrentValuesToTemp(B_CONFIG_Functional_c_T
   46     *localB, DW_CONFIG_Functional_f_T *localDW);
   47   static void CONFIG_Functional_setReservoirVolume(B_CONFIG_Functional_c_T *localB,
   48     DW_CONFIG_Functional_f_T *localDW);
   49   static real_T CONFIG_Functional_checkPatient_DrugParam(B_CONFIG_Functional_c_T
   50     *localB, DW_CONFIG_Functional_f_T *localDW);
   51   static real_T CONFIG_Functional_checkInfusionParam(B_CONFIG_Functional_c_T
   52     *localB, DW_CONFIG_Functional_f_T *localDW);
   53   static real_T CONFIG_Functional_CheckDrugName(real_T z, B_CONFIG_Functional_c_T *
   54     localB);
   55   static void CONFIG_Functional_Prescription_Config(B_CONFIG_Functional_c_T
   56     *localB, DW_CONFIG_Functional_f_T *localDW);
   57   
   58   /* Function for Chart: '<Root>/Config  Sub-System' */
   59   static real_T CONFIG_Functional_Step_Scaling_Factor(uint8_T inputVal)
   60   {
   61     /* Graphical Function 'Step_Scaling_Factor': '<S1>:4565' */
   62     /* Transition: '<S1>:4566' */
   63     return inputVal;
   64   }
   65   
   66   /* Function for Chart: '<Root>/Config  Sub-System' */
   67   static void CONFIG_Functional_writeLog(uint8_T logEvent, B_CONFIG_Functional_c_T
   68     *localB)
   69   {
   70     /* Graphical Function 'writeLog': '<S1>:4537' */
   71     /* Transition: '<S1>:4539' */
   72     localB->CONFIG_OUT_Log_Message_ID = logEvent;
   73   }
   74   
   75   /* Function for Chart: '<Root>/Config  Sub-System' */
   76   static void CONFIG_Functional_cancelConfigValues(B_CONFIG_Functional_c_T *localB,
   77     DW_CONFIG_Functional_f_T *localDW)
   78   {
   79     /* Graphical Function 'cancelConfigValues': '<S1>:4522' */
   80     /* Transition: '<S1>:4524' */
   81     localDW->t_PatientID = 0U;
   82     localDW->t_DrugName = 0U;
   83     localDW->t_DrugConcentration = 0U;
   84     localDW->t_EnteredReservoirVolume = 0U;
   85     localDW->t_VTBI_total = 0U;
   86     localDW->t_Duration_total = 0U;
   87     localDW->t_FlowRate_basal = 0U;
   88     localDW->t_FlowRate_sbolus = 0U;
   89     localDW->t_FlowRate_pbolus = 0U;
   90     localDW->t_FlowRate_kvo = 0U;
   91     localDW->t_Duration_sbolus = 0U;
   92     localDW->t_Duration_pbolus = 0U;
   93     localDW->t_LockOutPeriod_pbolus = 0U;
   94     localDW->t_NumberMax_pbolus = 0U;
   95     localDW->t_Interval_sbolus = 0U;
   96     CONFIG_Functional_writeLog(2U, localB);
   97   }
   98   
   99   /* Function for Chart: '<Root>/Config  Sub-System' */
  100   static void CONFIG_Functional_checkIfPrescriptionAvailable
  101     (B_CONFIG_Functional_c_T *localB, DW_CONFIG_Functional_f_T *localDW)
  102   {
  103     /* Graphical Function 'checkIfPrescriptionAvailable': '<S1>:4573' */
  104     /* Transition: '<S1>:4584' */
  105     if (!localDW->New_Configuration) {
  106       /* Transition: '<S1>:4581' */
  107       if ((localB->CONFIG_OUT_Patient_ID > 0) && (localB->CONFIG_OUT_Drug_Name > 0)
  108           && (localB->CONFIG_OUT_Drug_Concentration > 0) &&
  109           (localB->CONFIG_OUT_Vtbi_Total > 0) &&
  110           (localB->CONFIG_OUT_Infusion_Total_Duration > 0) &&
  111           (localB->CONFIG_OUT_Flow_Rate_Basal > 0)) {
  112         /* Transition: '<S1>:4575' */
  113         localB->CONFIG_OUT_Configured = 3U;
  114       } else {
  115         /* Transition: '<S1>:4582' */
  116         localB->CONFIG_OUT_Configured = 0U;
  117       }
  118     } else {
  119       /* Transition: '<S1>:4586' */
  120       localDW->New_Configuration = FALSE;
  121     }
  122   }
  123   
  124   /* Function for Chart: '<Root>/Config  Sub-System' */
  125   static void CONFIG_Functional_saveConfigValues(B_CONFIG_Functional_c_T *localB,
  126     DW_CONFIG_Functional_f_T *localDW)
  127   {
  128     /* Graphical Function 'saveConfigValues': '<S1>:4519' */
  129     /* Transition: '<S1>:4521' */
  130     localB->CONFIG_OUT_Patient_ID = localDW->t_PatientID;
  131     localB->CONFIG_OUT_Drug_Name = localDW->t_DrugName;
  132     localB->CONFIG_OUT_Drug_Concentration = localDW->t_DrugConcentration;
  133     localB->CONFIG_OUT_Entered_Reservoir_Volume =
  134       localDW->t_EnteredReservoirVolume;
  135     localB->CONFIG_OUT_Vtbi_Total = localDW->t_VTBI_total;
  136     localB->CONFIG_OUT_Infusion_Total_Duration = localDW->t_Duration_total;
  137     localB->CONFIG_OUT_Flow_Rate_Basal = localDW->t_FlowRate_basal;
  138     localB->CONFIG_OUT_Flow_Rate_Intermittent_bolus = localDW->t_FlowRate_sbolus;
  139     localB->CONFIG_OUT_Flow_Rate_Patient_bolus = localDW->t_FlowRate_pbolus;
  140     localB->CONFIG_OUT_Flow_Rate_KVO = localDW->t_FlowRate_kvo;
  141     localB->CONFIG_OUT_Intermittent_Bolus_Duration = localDW->t_Duration_sbolus;
  142     localB->CONFIG_OUT_Patient_bolus_Duration = localDW->t_Duration_pbolus;
  143     localB->CONFIG_OUT_Lock_Out_Duration = localDW->t_LockOutPeriod_pbolus;
  144     localB->CONFIG_OUT_Max_Patient_bolus = localDW->t_NumberMax_pbolus;
  145     localB->CONFIG_OUT_Interval_Intermittent_bolus = localDW->t_Interval_sbolus;
  146     localB->CONFIG_OUT_Reservoir_Volume =
  147       localB->CONFIG_OUT_Entered_Reservoir_Volume;
  148     localB->CONFIG_OUT_Configured = localDW->Selected_Config_Type;
  149     localDW->New_Configuration = TRUE;
  150     CONFIG_Functional_cancelConfigValues(localB, localDW);
  151     CONFIG_Functional_writeLog(1U, localB);
  152   }
  153   
  154   /* Function for Chart: '<Root>/Config  Sub-System' */
  155   static void CONFIG_Functional_copyCurrentValuesToTemp(B_CONFIG_Functional_c_T
  156     *localB, DW_CONFIG_Functional_f_T *localDW)
  157   {
  158     /* Graphical Function 'copyCurrentValuesToTemp': '<S1>:4592' */
  159     /* Transition: '<S1>:4594' */
  160     localDW->t_PatientID = localB->CONFIG_OUT_Patient_ID;
  161     localDW->t_DrugName = localB->CONFIG_OUT_Drug_Name;
  162     localDW->t_DrugConcentration = localB->CONFIG_OUT_Drug_Concentration;
  163     localDW->t_VTBI_total = localB->CONFIG_OUT_Vtbi_Total;
  164     localDW->t_Duration_total = localB->CONFIG_OUT_Infusion_Total_Duration;
  165     localDW->t_FlowRate_basal = localB->CONFIG_OUT_Flow_Rate_Basal;
  166     localDW->t_FlowRate_sbolus = localB->CONFIG_OUT_Flow_Rate_Intermittent_bolus;
  167     localDW->t_FlowRate_pbolus = localB->CONFIG_OUT_Flow_Rate_Patient_bolus;
  168     localDW->t_FlowRate_kvo = localB->CONFIG_OUT_Flow_Rate_KVO;
  169     localDW->t_Duration_sbolus = localB->CONFIG_OUT_Intermittent_Bolus_Duration;
  170     localDW->t_Duration_pbolus = localB->CONFIG_OUT_Patient_bolus_Duration;
  171     localDW->t_LockOutPeriod_pbolus = localB->CONFIG_OUT_Lock_Out_Duration;
  172     localDW->t_NumberMax_pbolus = localB->CONFIG_OUT_Max_Patient_bolus;
  173     localDW->t_Interval_sbolus = localB->CONFIG_OUT_Interval_Intermittent_bolus;
  174     localDW->t_EnteredReservoirVolume =
  175       localB->CONFIG_OUT_Entered_Reservoir_Volume;
  176   }
  177   
  178   /* Function for Chart: '<Root>/Config  Sub-System' */
  179   static void CONFIG_Functional_setReservoirVolume(B_CONFIG_Functional_c_T *localB,
  180     DW_CONFIG_Functional_f_T *localDW)
  181   {
  182     /* Graphical Function 'setReservoirVolume': '<S1>:4596' */
  183     if (!localDW->New_Configuration) {
  184       /* Transition: '<S1>:4603' */
  185       localB->CONFIG_OUT_Reservoir_Volume = localB->Reservoir_Volume;
  186     }
  187   }
  188   
  189   /* Function for Chart: '<Root>/Config  Sub-System' */
  190   static real_T CONFIG_Functional_checkPatient_DrugParam(B_CONFIG_Functional_c_T
  191     *localB, DW_CONFIG_Functional_f_T *localDW)
  192   {
  193     real_T v;
  194   
  195     /* Graphical Function 'checkPatient_DrugParam': '<S1>:4472' */
  196     /* Transition: '<S1>:4476' */
  197     v = 1.0;
  198     if ((localDW->t_DrugConcentration < localB->Drug_Concentration_Low) ||
  199         (localDW->t_DrugConcentration > localB->Drug_Concentration_High)) {
  200       /* Transition: '<S1>:4477' */
  201       v = 0.0;
  202     } else {
  203       if (localDW->t_EnteredReservoirVolume < localB->Empty_Reservoir) {
  204         /* Transition: '<S1>:4478' */
  205         v = 0.0;
  206       }
  207     }
  208   
  209     return v;
  210   }
  211   
  212   /* Function for Chart: '<Root>/Config  Sub-System' */
  213   static real_T CONFIG_Functional_checkInfusionParam(B_CONFIG_Functional_c_T
  214     *localB, DW_CONFIG_Functional_f_T *localDW)
  215   {
  216     real_T vi;
  217   
  218     /* Graphical Function 'checkInfusionParam': '<S1>:4498' */
  219     /* Transition: '<S1>:4508' */
  220     vi = 1.0;
  221     if ((localDW->t_VTBI_total > localB->VTBI_High) || (localDW->t_VTBI_total <
  222          localB->VTBI_Low)) {
  223       /* Transition: '<S1>:4509' */
  224       vi = 0.0;
  225     } else if ((localDW->t_FlowRate_basal < localB->Flow_Rate_Low) ||
  226                (localDW->t_FlowRate_basal > localB->Flow_Rate_High)) {
  227       /* Transition: '<S1>:4510' */
  228       vi = 0.0;
  229     } else if ((localDW->t_FlowRate_sbolus < localB->Flow_Rate_Low) ||
  230                (localDW->t_FlowRate_sbolus > localB->Flow_Rate_High)) {
  231       /* Transition: '<S1>:4511' */
  232       vi = 0.0;
  233     } else if ((localDW->t_FlowRate_pbolus < localB->Flow_Rate_Low) ||
  234                (localDW->t_FlowRate_pbolus > localB->Flow_Rate_High)) {
  235       /* Transition: '<S1>:4512' */
  236       vi = 0.0;
  237     } else if (localDW->t_Duration_sbolus > localDW->t_Interval_sbolus) {
  238       /* Transition: '<S1>:4513' */
  239       vi = 0.0;
  240     } else if (localDW->t_NumberMax_pbolus > localB->Number_Max_Patient_Bolus) {
  241       /* Transition: '<S1>:4515' */
  242       vi = 0.0;
  243     } else {
  244       if ((localDW->t_FlowRate_pbolus < localDW->t_FlowRate_basal) ||
  245           (localDW->t_FlowRate_sbolus < localDW->t_FlowRate_basal)) {
  246         /* Transition: '<S1>:4514' */
  247         vi = 0.0;
  248       }
  249     }
  250   
  251     return vi;
  252   }
  253   
  254   /* Function for Chart: '<Root>/Config  Sub-System' */
  255   static real_T CONFIG_Functional_CheckDrugName(real_T z, B_CONFIG_Functional_c_T *
  256     localB)
  257   {
  258     real_T y;
  259   
  260     /* Graphical Function 'CheckDrugName': '<S1>:4481' */
  261     /* Transition: '<S1>:4484' */
  262     y = 1.0;
  263     if (z != localB->Drug_Name_d) {
  264       /* Transition: '<S1>:4485' */
  265       y = 0.0;
  266     }
  267   
  268     return y;
  269   }
  270   
  271   /* Function for Chart: '<Root>/Config  Sub-System' */
  272   static void CONFIG_Functional_Prescription_Config(B_CONFIG_Functional_c_T
  273     *localB, DW_CONFIG_Functional_f_T *localDW)
  274   {
  275     /* During 'Prescription_Config': '<S1>:4445' */
  276     if (((real_T)localB->CONFIG_OUT_Config_Timer >
  277          CONFIG_Functional_Step_Scaling_Factor(localB->Max_Config_Duration)) ||
  278         localB->Cancel) {
  279       /* Transition: '<S1>:4443' */
  280       CONFIG_Functional_cancelConfigValues(localB, localDW);
  281   
  282       /* Exit Internal 'Prescription_Config': '<S1>:4445' */
  283       switch (localDW->is_Prescription_Config) {
  284        case CONFIG_Functional_IN_Infusion_info:
  285         /* Exit Internal 'Infusion_info': '<S1>:4487' */
  286         localDW->is_Infusion_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  287   
  288         /* Exit 'Infusion_info': '<S1>:4487' */
  289         localB->CONFIG_OUT_Config_Mode = 4U;
  290         localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  291         break;
  292   
  293        case CONFIG_Functional_IN_Patient_Drug_info:
  294         /* Exit Internal 'Patient_Drug_info': '<S1>:4456' */
  295         localDW->is_Patient_Drug_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  296   
  297         /* Exit 'Patient_Drug_info': '<S1>:4456' */
  298         localB->CONFIG_OUT_Config_Mode = 3U;
  299         localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  300         break;
  301   
  302        default:
  303         localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  304         break;
  305       }
  306   
  307       /* Exit 'Prescription_Config': '<S1>:4445' */
  308       localDW->is_Configuration = CONFIG_Functional_IN_MAIN;
  309   
  310       /* Entry 'MAIN': '<S1>:4518' */
  311       localB->CONFIG_OUT_Config_Mode = 1U;
  312       localB->CONFIG_OUT_Config_Timer = 0U;
  313       CONFIG_Functional_setReservoirVolume(localB, localDW);
  314       CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  315     } else {
  316       localB->CONFIG_OUT_Config_Timer++;
  317       localB->CONFIG_OUT_Reservoir_Volume = localB->Reservoir_Volume;
  318       CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  319       switch (localDW->is_Prescription_Config) {
  320        case CONFIG_Functional_IN_ConfirmInfusionInitation:
  321         /* During 'ConfirmInfusionInitation': '<S1>:4517' */
  322         if (localB->Infusion_Initiate) {
  323           /* Transition: '<S1>:4444' */
  324           localB->CONFIG_OUT_Request_Confirm_Infusion_Initiate = FALSE;
  325           CONFIG_Functional_saveConfigValues(localB, localDW);
  326           localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  327   
  328           /* Exit 'Prescription_Config': '<S1>:4445' */
  329           localDW->is_Configuration = CONFIG_Functional_IN_MAIN;
  330   
  331           /* Entry 'MAIN': '<S1>:4518' */
  332           localB->CONFIG_OUT_Config_Mode = 1U;
  333           localB->CONFIG_OUT_Config_Timer = 0U;
  334           CONFIG_Functional_setReservoirVolume(localB, localDW);
  335           CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  336         } else {
  337           localB->CONFIG_OUT_Request_Confirm_Infusion_Initiate = TRUE;
  338         }
  339         break;
  340   
  341        case CONFIG_Functional_IN_Infusion_info:
  342         /* During 'Infusion_info': '<S1>:4487' */
  343         if (localB->Back && (!localB->In_Therapy)) {
  344           /* Transition: '<S1>:4450' */
  345           /* Exit Internal 'Infusion_info': '<S1>:4487' */
  346           localDW->is_Infusion_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  347   
  348           /* Exit 'Infusion_info': '<S1>:4487' */
  349           localDW->is_Prescription_Config = CONFIG_Functional_IN_Patient_Drug_info;
  350   
  351           /* Entry 'Patient_Drug_info': '<S1>:4456' */
  352           localB->CONFIG_OUT_Config_Mode = 3U;
  353   
  354           /* Entry Internal 'Patient_Drug_info': '<S1>:4456' */
  355           /* Transition: '<S1>:4459' */
  356           localDW->is_Patient_Drug_info = CONFIG_Functional_IN_DisplayParam;
  357   
  358           /* Entry 'DisplayParam': '<S1>:4466' */
  359           localB->CONFIG_OUT_Request_Patient_Drug_Info = TRUE;
  360           localDW->validate = 0U;
  361         } else {
  362           localB->CONFIG_OUT_Config_Mode = 4U;
  363           switch (localDW->is_Infusion_info) {
  364            case CONFIG_Functional_IN_GetInfusionParam:
  365             /* During 'GetInfusionParam': '<S1>:4495' */
  366             if (localB->Next == 1) {
  367               /* Transition: '<S1>:4491' */
  368               localDW->is_Infusion_info =
  369                 CONFIG_Functional_IN_ValidateInfusionParam;
  370   
  371               /* Entry 'ValidateInfusionParam': '<S1>:4496' */
  372               localDW->validate = (uint8_T)CONFIG_Functional_checkInfusionParam
  373                 (localB, localDW);
  374             }
  375             break;
  376   
  377            case CONFIG_Functional_IN_RequestInfusionParam:
  378             /* During 'RequestInfusionParam': '<S1>:4494' */
  379             if (localB->Next == 1) {
  380               /* Transition: '<S1>:4488' */
  381               localDW->is_Infusion_info = CONFIG_Functional_IN_GetInfusionParam;
  382   
  383               /* Entry 'GetInfusionParam': '<S1>:4495' */
  384               localDW->t_VTBI_total = localB->VTBI_Total;
  385               localDW->t_Duration_total = localB->Total_Duration;
  386               localDW->t_FlowRate_basal = localB->Flow_Rate_Basal;
  387               localDW->t_FlowRate_sbolus = localB->Flow_Rate_Intermittent_Bolus;
  388               localDW->t_FlowRate_pbolus = localB->Flow_Rate_Patient_Bolus;
  389               localDW->t_Duration_sbolus = localB->Duration_Intermittent_Bolus;
  390               localDW->t_Duration_pbolus = localB->Duration_Patient_Bolus;
  391               localDW->t_LockOutPeriod_pbolus =
  392                 localB->Lockout_Period_Patient_Bolus;
  393               localDW->t_NumberMax_pbolus = localB->Max_Number_of_Patient_Bolus;
  394               localDW->t_Interval_sbolus = localB->Interval_Intermittent_Bolus;
  395               localDW->t_FlowRate_kvo = localB->Flow_Rate_KVO;
  396               localB->CONFIG_OUT_Request_Infusion_Info = FALSE;
  397             } else {
  398               if (localB->Next == 1) {
  399                 /* Transition: '<S1>:4490' */
  400                 localDW->is_Infusion_info =
  401                   CONFIG_Functional_IN_ValidateInfusionParam;
  402   
  403                 /* Entry 'ValidateInfusionParam': '<S1>:4496' */
  404                 localDW->validate = (uint8_T)CONFIG_Functional_checkInfusionParam
  405                   (localB, localDW);
  406               }
  407             }
  408             break;
  409   
  410            default:
  411             /* During 'ValidateInfusionParam': '<S1>:4496' */
  412             if (!(localDW->validate != 0)) {
  413               /* Transition: '<S1>:4492' */
  414               localDW->is_Infusion_info =
  415                 CONFIG_Functional_IN_RequestInfusionParam;
  416   
  417               /* Entry 'RequestInfusionParam': '<S1>:4494' */
  418               localB->CONFIG_OUT_Request_Infusion_Info = TRUE;
  419               localDW->validate = 0U;
  420             } else {
  421               /* Transition: '<S1>:4493' */
  422               localDW->is_Infusion_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  423   
  424               /* Exit 'Infusion_info': '<S1>:4487' */
  425               localB->CONFIG_OUT_Config_Mode = 4U;
  426               localDW->is_Prescription_Config =
  427                 CONFIG_Functional_IN_ConfirmInfusionInitation;
  428   
  429               /* Entry 'ConfirmInfusionInitation': '<S1>:4517' */
  430               localB->CONFIG_OUT_Request_Confirm_Infusion_Initiate = TRUE;
  431             }
  432             break;
  433           }
  434         }
  435         break;
  436   
  437        case CONFIG_Functional_IN_Patient_Drug_info:
  438         /* During 'Patient_Drug_info': '<S1>:4456' */
  439         localB->CONFIG_OUT_Config_Mode = 3U;
  440         switch (localDW->is_Patient_Drug_info) {
  441          case CONFIG_Functional_IN_DisplayErrorMessage:
  442           /* During 'DisplayErrorMessage': '<S1>:4468' */
  443           /* Transition: '<S1>:4460' */
  444           localDW->is_Patient_Drug_info = CONFIG_Functional_IN_DisplayParam;
  445   
  446           /* Entry 'DisplayParam': '<S1>:4466' */
  447           localB->CONFIG_OUT_Request_Patient_Drug_Info = TRUE;
  448           localDW->validate = 0U;
  449           break;
  450   
  451          case CONFIG_Functional_IN_DisplayParam:
  452           /* During 'DisplayParam': '<S1>:4466' */
  453           if (localB->Next == 1) {
  454             /* Transition: '<S1>:4457' */
  455             localDW->is_Patient_Drug_info = CONFIG_Functional_IN_GetParam;
  456   
  457             /* Entry 'GetParam': '<S1>:4467' */
  458             localDW->t_PatientID = localB->Patient_ID;
  459             localDW->t_DrugName = localB->Drug_Name;
  460             localDW->t_DrugConcentration = localB->Drug_Concentration;
  461             localDW->t_EnteredReservoirVolume = localB->Entered_Reservoir_Volume;
  462             localB->CONFIG_OUT_Request_Patient_Drug_Info = FALSE;
  463           } else {
  464             if (localB->Next == 1) {
  465               /* Transition: '<S1>:4461' */
  466               localDW->is_Patient_Drug_info = CONFIG_Functional_IN_ValidateParam;
  467   
  468               /* Entry 'ValidateParam': '<S1>:4470' */
  469               localDW->validate = (uint8_T)
  470                 CONFIG_Functional_checkPatient_DrugParam(localB, localDW);
  471               localB->CONFIG_OUT_Request_Patient_Drug_Info = FALSE;
  472               localDW->value = 0U;
  473             }
  474           }
  475           break;
  476   
  477          case CONFIG_Functional_IN_GetDrugSafeValues:
  478           /* During 'GetDrugSafeValues': '<S1>:4469' */
  479           if (localDW->value != 0) {
  480             /* Transition: '<S1>:4464' */
  481             localDW->is_Patient_Drug_info = CONFIG_Functional_IN_ValidateParam;
  482   
  483             /* Entry 'ValidateParam': '<S1>:4470' */
  484             localDW->validate = (uint8_T)CONFIG_Functional_checkPatient_DrugParam
  485               (localB, localDW);
  486             localB->CONFIG_OUT_Request_Patient_Drug_Info = FALSE;
  487             localDW->value = 0U;
  488           } else {
  489             /* Transition: '<S1>:4462' */
  490             localDW->is_Patient_Drug_info =
  491               CONFIG_Functional_IN_DisplayErrorMessage;
  492   
  493             /* Entry 'DisplayErrorMessage': '<S1>:4468' */
  494             localB->CONFIG_OUT_Error_Message_ID = 5U;
  495           }
  496           break;
  497   
  498          case CONFIG_Functional_IN_GetParam:
  499           /* During 'GetParam': '<S1>:4467' */
  500           if (localB->Next == 1) {
  501             /* Transition: '<S1>:4458' */
  502             localDW->value = 0U;
  503             localDW->is_Patient_Drug_info = CONFIG_Functional_IN_GetDrugSafeValues;
  504   
  505             /* Entry 'GetDrugSafeValues': '<S1>:4469' */
  506             localB->CONFIG_OUT_Drug_Name = localDW->t_DrugName;
  507             localDW->value = (uint8_T)CONFIG_Functional_CheckDrugName((real_T)
  508               localDW->t_DrugName, localB);
  509           }
  510           break;
  511   
  512          default:
  513           /* During 'ValidateParam': '<S1>:4470' */
  514           if (!(localDW->validate != 0)) {
  515             /* Transition: '<S1>:4463' */
  516             localDW->is_Patient_Drug_info =
  517               CONFIG_Functional_IN_DisplayErrorMessage;
  518   
  519             /* Entry 'DisplayErrorMessage': '<S1>:4468' */
  520             localB->CONFIG_OUT_Error_Message_ID = 5U;
  521           } else {
  522             /* Transition: '<S1>:4465' */
  523             localDW->is_Patient_Drug_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  524   
  525             /* Exit 'Patient_Drug_info': '<S1>:4456' */
  526             localDW->is_Prescription_Config = CONFIG_Functional_IN_Infusion_info;
  527   
  528             /* Entry 'Infusion_info': '<S1>:4487' */
  529             localB->CONFIG_OUT_Config_Mode = 4U;
  530   
  531             /* Entry Internal 'Infusion_info': '<S1>:4487' */
  532             /* Transition: '<S1>:4489' */
  533             localDW->is_Infusion_info = CONFIG_Functional_IN_RequestInfusionParam;
  534   
  535             /* Entry 'RequestInfusionParam': '<S1>:4494' */
  536             localB->CONFIG_OUT_Request_Infusion_Info = TRUE;
  537             localDW->validate = 0U;
  538           }
  539           break;
  540         }
  541         break;
  542   
  543        default:
  544         /* During 'SelectType': '<S1>:4486' */
  545         if (localB->Configuration_Type > 0) {
  546           /* Transition: '<S1>:4451' */
  547           localB->CONFIG_OUT_Request_Configuration_Type = FALSE;
  548           localDW->Selected_Config_Type = localB->Configuration_Type;
  549           CONFIG_Functional_copyCurrentValuesToTemp(localB, localDW);
  550           if (localB->In_Therapy) {
  551             /* Transition: '<S1>:4452' */
  552             localDW->is_Prescription_Config = CONFIG_Functional_IN_Infusion_info;
  553   
  554             /* Entry 'Infusion_info': '<S1>:4487' */
  555             localB->CONFIG_OUT_Config_Mode = 4U;
  556   
  557             /* Entry Internal 'Infusion_info': '<S1>:4487' */
  558             /* Transition: '<S1>:4489' */
  559             localDW->is_Infusion_info = CONFIG_Functional_IN_RequestInfusionParam;
  560   
  561             /* Entry 'RequestInfusionParam': '<S1>:4494' */
  562             localB->CONFIG_OUT_Request_Infusion_Info = TRUE;
  563             localDW->validate = 0U;
  564           } else {
  565             /* Transition: '<S1>:4447' */
  566             localDW->is_Prescription_Config =
  567               CONFIG_Functional_IN_Patient_Drug_info;
  568   
  569             /* Entry 'Patient_Drug_info': '<S1>:4456' */
  570             localB->CONFIG_OUT_Config_Mode = 3U;
  571   
  572             /* Entry Internal 'Patient_Drug_info': '<S1>:4456' */
  573             /* Transition: '<S1>:4459' */
  574             localDW->is_Patient_Drug_info = CONFIG_Functional_IN_DisplayParam;
  575   
  576             /* Entry 'DisplayParam': '<S1>:4466' */
  577             localB->CONFIG_OUT_Request_Patient_Drug_Info = TRUE;
  578             localDW->validate = 0U;
  579           }
  580         }
  581         break;
  582       }
  583     }
  584   }
  585   
  586   /* Initial conditions for referenced model: 'CONFIG_Functional' */
  587   void CONFIG_Functional_Init(B_CONFIG_Functional_c_T *localB,
  588     DW_CONFIG_Functional_f_T *localDW)
  589   {
  590     /* InitializeConditions for Chart: '<Root>/Config  Sub-System' */
  591     localDW->is_Configuration = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  592     localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  593     localDW->is_Infusion_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  594     localDW->is_Patient_Drug_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  595     localDW->is_active_c2_CONFIG_Functional = 0U;
  596     localDW->is_c2_CONFIG_Functional = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  597     localDW->t_DrugConcentration = 0U;
  598     localDW->t_DrugName = 0U;
  599     localDW->t_Duration_pbolus = 0U;
  600     localDW->t_Duration_sbolus = 0U;
  601     localDW->t_Duration_total = 0U;
  602     localDW->t_FlowRate_basal = 0U;
  603     localDW->t_FlowRate_kvo = 0U;
  604     localDW->t_FlowRate_pbolus = 0U;
  605     localDW->t_FlowRate_sbolus = 0U;
  606     localDW->t_Interval_sbolus = 0U;
  607     localDW->t_LockOutPeriod_pbolus = 0U;
  608     localDW->t_NumberMax_pbolus = 0U;
  609     localDW->t_PatientID = 0U;
  610     localDW->t_EnteredReservoirVolume = 0U;
  611     localDW->t_VTBI_total = 0U;
  612     localDW->validate = 0U;
  613     localDW->value = 0U;
  614     localDW->New_Configuration = FALSE;
  615     localDW->Selected_Config_Type = 0U;
  616     localB->CONFIG_OUT_Patient_ID = 0U;
  617     localB->CONFIG_OUT_Drug_Name = 0U;
  618     localB->CONFIG_OUT_Drug_Concentration = 0U;
  619     localB->CONFIG_OUT_Infusion_Total_Duration = 0U;
  620     localB->CONFIG_OUT_Vtbi_Total = 0U;
  621     localB->CONFIG_OUT_Flow_Rate_Basal = 0U;
  622     localB->CONFIG_OUT_Flow_Rate_Intermittent_bolus = 0U;
  623     localB->CONFIG_OUT_Intermittent_Bolus_Duration = 0U;
  624     localB->CONFIG_OUT_Interval_Intermittent_bolus = 0U;
  625     localB->CONFIG_OUT_Flow_Rate_Patient_bolus = 0U;
  626     localB->CONFIG_OUT_Patient_bolus_Duration = 0U;
  627     localB->CONFIG_OUT_Lock_Out_Duration = 0U;
  628     localB->CONFIG_OUT_Max_Patient_bolus = 0U;
  629     localB->CONFIG_OUT_Flow_Rate_KVO = 0U;
  630     localB->CONFIG_OUT_Entered_Reservoir_Volume = 0U;
  631     localB->CONFIG_OUT_Reservoir_Volume = 0U;
  632     localB->CONFIG_OUT_Configured = 0U;
  633     localB->CONFIG_OUT_Error_Message_ID = 0U;
  634     localB->CONFIG_OUT_Request_Configuration_Type = FALSE;
  635     localB->CONFIG_OUT_Request_Confirm_Infusion_Initiate = FALSE;
  636     localB->CONFIG_OUT_Request_Patient_Drug_Info = FALSE;
  637     localB->CONFIG_OUT_Request_Infusion_Info = FALSE;
  638     localB->CONFIG_OUT_Log_Message_ID = 0U;
  639     localB->CONFIG_OUT_Config_Timer = 0U;
  640     localB->CONFIG_OUT_Config_Mode = 0U;
  641   }
  642   
  643   /* Output and update for referenced model: 'CONFIG_Functional' */
  644   void CONFIG_Functional(const Top_Level_Mode_Outputs *rtu_TLM_MODE_IN, const
  645     Prescription_Inputs *rtu_PRES_IN, const Operator_Commands *rtu_OP_CMD_IN,
  646     const Drug_Database_Inputs *rtu_DB_IN, const Device_Configuration_Inputs
  647     *rtu_CONST_IN, const System_Status_Outputs *rtu_SYS_STAT_IN, Config_Outputs
  648     *rty_CONFIG_OUT, B_CONFIG_Functional_c_T *localB, DW_CONFIG_Functional_f_T
  649     *localDW)
  650   {
  651     /* BusSelector: '<Root>/BusConversion_InsertedFor_PRES_IN_at_outport_0' */
  652     localB->Patient_ID = rtu_PRES_IN->Patient_ID;
  653     localB->Drug_Name = rtu_PRES_IN->Drug_Name;
  654     localB->Drug_Concentration = rtu_PRES_IN->Drug_Concentration;
  655     localB->VTBI_Total = rtu_PRES_IN->VTBI_Total;
  656     localB->Total_Duration = rtu_PRES_IN->Total_Duration;
  657     localB->Flow_Rate_Basal = rtu_PRES_IN->Flow_Rate_Basal;
  658     localB->Flow_Rate_Intermittent_Bolus =
  659       rtu_PRES_IN->Flow_Rate_Intermittent_Bolus;
  660     localB->Duration_Intermittent_Bolus = rtu_PRES_IN->Duration_Intermittent_Bolus;
  661     localB->Interval_Intermittent_Bolus = rtu_PRES_IN->Interval_Intermittent_Bolus;
  662     localB->Flow_Rate_Patient_Bolus = rtu_PRES_IN->Flow_Rate_Patient_Bolus;
  663     localB->Duration_Patient_Bolus = rtu_PRES_IN->Duration_Patient_Bolus;
  664     localB->Lockout_Period_Patient_Bolus =
  665       rtu_PRES_IN->Lockout_Period_Patient_Bolus;
  666     localB->Max_Number_of_Patient_Bolus = rtu_PRES_IN->Max_Number_of_Patient_Bolus;
  667     localB->Entered_Reservoir_Volume = rtu_PRES_IN->Entered_Reservoir_Volume;
  668   
  669     /* BusSelector: '<Root>/BusConversion_InsertedFor_OP_CMD_IN_at_outport_0' */
  670     localB->Infusion_Initiate = rtu_OP_CMD_IN->Infusion_Initiate;
  671     localB->Next = rtu_OP_CMD_IN->Next;
  672     localB->Back = rtu_OP_CMD_IN->Back;
  673     localB->Cancel = rtu_OP_CMD_IN->Cancel;
  674     localB->Configuration_Type = rtu_OP_CMD_IN->Configuration_Type;
  675   
  676     /* BusSelector: '<Root>/BusConversion_InsertedFor_DB_IN_at_outport_0' */
  677     localB->Drug_Name_d = rtu_DB_IN->Drug_Name;
  678     localB->Drug_Concentration_High = rtu_DB_IN->Drug_Concentration_High;
  679     localB->Drug_Concentration_Low = rtu_DB_IN->Drug_Concentration_Low;
  680     localB->VTBI_High = rtu_DB_IN->VTBI_High;
  681     localB->VTBI_Low = rtu_DB_IN->VTBI_Low;
  682     localB->Number_Max_Patient_Bolus = rtu_DB_IN->Number_Max_Patient_Bolus;
  683     localB->Flow_Rate_KVO = rtu_DB_IN->Flow_Rate_KVO;
  684     localB->Flow_Rate_High = rtu_DB_IN->Flow_Rate_High;
  685     localB->Flow_Rate_Low = rtu_DB_IN->Flow_Rate_Low;
  686   
  687     /* BusSelector: '<Root>/BusConversion_InsertedFor_CONST_IN_at_outport_0' */
  688     localB->Empty_Reservoir = rtu_CONST_IN->Empty_Reservoir;
  689     localB->Max_Config_Duration = rtu_CONST_IN->Max_Config_Duration;
  690   
  691     /* BusSelector: '<Root>/BusConversion_InsertedFor_SYS_STAT_IN_at_outport_0' */
  692     localB->Reservoir_Volume = rtu_SYS_STAT_IN->Reservoir_Volume;
  693     localB->In_Therapy = rtu_SYS_STAT_IN->In_Therapy;
  694   
  695     /* Chart: '<Root>/Config  Sub-System' incorporates:
  696      *  BusSelector: '<Root>/BusConversion_InsertedFor_OP_CMD_IN_at_outport_0'
  697      *  BusSelector: '<Root>/BusConversion_InsertedFor_TLM_MODE_IN_at_outport_0'
  698      */
  699     /* Gateway: Config  Sub-System */
  700     /* During: Config  Sub-System */
  701     if (localDW->is_active_c2_CONFIG_Functional == 0U) {
  702       /* Entry: Config  Sub-System */
  703       localDW->is_active_c2_CONFIG_Functional = 1U;
  704   
  705       /* Entry Internal: Config  Sub-System */
  706       if (rtu_TLM_MODE_IN->System_On) {
  707         /* Transition: '<S1>:4535' */
  708         localDW->is_c2_CONFIG_Functional = CONFIG_Functional_IN_Configuration;
  709   
  710         /* Entry Internal 'Configuration': '<S1>:4440' */
  711         /* Transition: '<S1>:4441' */
  712         localDW->is_Configuration = CONFIG_Functional_IN_MAIN;
  713   
  714         /* Entry 'MAIN': '<S1>:4518' */
  715         localB->CONFIG_OUT_Config_Mode = 1U;
  716         localB->CONFIG_OUT_Config_Timer = 0U;
  717         CONFIG_Functional_setReservoirVolume(localB, localDW);
  718         CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  719       } else {
  720         /* Transition: '<S1>:4534' */
  721         localDW->is_c2_CONFIG_Functional = CONFIG_Functional_IN_NOT_ON;
  722       }
  723     } else if (localDW->is_c2_CONFIG_Functional ==
  724                CONFIG_Functional_IN_Configuration) {
  725       /* During 'Configuration': '<S1>:4440' */
  726       if (!rtu_TLM_MODE_IN->System_On) {
  727         /* Transition: '<S1>:4531' */
  728         /* Exit Internal 'Configuration': '<S1>:4440' */
  729         switch (localDW->is_Configuration) {
  730          case CONFIG_Functional_IN_MAIN:
  731           /* Exit 'MAIN': '<S1>:4518' */
  732           localB->CONFIG_OUT_Config_Mode = 1U;
  733           localB->CONFIG_OUT_Config_Timer = 0U;
  734           CONFIG_Functional_setReservoirVolume(localB, localDW);
  735           CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  736           localDW->is_Configuration = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  737           break;
  738   
  739          case CONFIG_Functional_IN_Prescription_Config:
  740           /* Exit Internal 'Prescription_Config': '<S1>:4445' */
  741           switch (localDW->is_Prescription_Config) {
  742            case CONFIG_Functional_IN_Infusion_info:
  743             /* Exit Internal 'Infusion_info': '<S1>:4487' */
  744             localDW->is_Infusion_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  745   
  746             /* Exit 'Infusion_info': '<S1>:4487' */
  747             localB->CONFIG_OUT_Config_Mode = 4U;
  748             localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  749             break;
  750   
  751            case CONFIG_Functional_IN_Patient_Drug_info:
  752             /* Exit Internal 'Patient_Drug_info': '<S1>:4456' */
  753             localDW->is_Patient_Drug_info = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  754   
  755             /* Exit 'Patient_Drug_info': '<S1>:4456' */
  756             localB->CONFIG_OUT_Config_Mode = 3U;
  757             localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  758             break;
  759   
  760            default:
  761             localDW->is_Prescription_Config = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  762             break;
  763           }
  764   
  765           /* Exit 'Prescription_Config': '<S1>:4445' */
  766           localB->CONFIG_OUT_Config_Timer++;
  767           localDW->is_Configuration = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  768           break;
  769   
  770          default:
  771           localDW->is_Configuration = CONFIG_Functional_IN_NO_ACTIVE_CHILD;
  772           break;
  773         }
  774   
  775         localDW->is_c2_CONFIG_Functional = CONFIG_Functional_IN_NOT_ON;
  776       } else if (localDW->is_Configuration == CONFIG_Functional_IN_MAIN) {
  777         /* During 'MAIN': '<S1>:4518' */
  778         if (rtu_OP_CMD_IN->Data_Config || (localB->Infusion_Initiate &&
  779              (localB->CONFIG_OUT_Configured == 0))) {
  780           /* Transition: '<S1>:4442' */
  781           /* Exit 'MAIN': '<S1>:4518' */
  782           localB->CONFIG_OUT_Config_Mode = 1U;
  783           localB->CONFIG_OUT_Config_Timer = 0U;
  784           CONFIG_Functional_setReservoirVolume(localB, localDW);
  785           CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  786           localDW->is_Configuration = CONFIG_Functional_IN_Prescription_Config;
  787   
  788           /* Entry 'Prescription_Config': '<S1>:4445' */
  789           localB->CONFIG_OUT_Config_Timer++;
  790           localB->CONFIG_OUT_Reservoir_Volume = localB->Reservoir_Volume;
  791           localB->CONFIG_OUT_Config_Mode = 2U;
  792           CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  793   
  794           /* Entry Internal 'Prescription_Config': '<S1>:4445' */
  795           /* Transition: '<S1>:4449' */
  796           localDW->is_Prescription_Config = CONFIG_Functional_IN_SelectType;
  797   
  798           /* Entry 'SelectType': '<S1>:4486' */
  799           localB->CONFIG_OUT_Request_Configuration_Type = TRUE;
  800         } else {
  801           localB->CONFIG_OUT_Config_Mode = 1U;
  802           localB->CONFIG_OUT_Config_Timer = 0U;
  803           CONFIG_Functional_setReservoirVolume(localB, localDW);
  804           CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  805         }
  806       } else {
  807         CONFIG_Functional_Prescription_Config(localB, localDW);
  808       }
  809     } else {
  810       /* During 'NOT_ON': '<S1>:4532' */
  811       if (rtu_TLM_MODE_IN->System_On) {
  812         /* Transition: '<S1>:4533' */
  813         localDW->is_c2_CONFIG_Functional = CONFIG_Functional_IN_Configuration;
  814   
  815         /* Entry Internal 'Configuration': '<S1>:4440' */
  816         /* Transition: '<S1>:4441' */
  817         localDW->is_Configuration = CONFIG_Functional_IN_MAIN;
  818   
  819         /* Entry 'MAIN': '<S1>:4518' */
  820         localB->CONFIG_OUT_Config_Mode = 1U;
  821         localB->CONFIG_OUT_Config_Timer = 0U;
  822         CONFIG_Functional_setReservoirVolume(localB, localDW);
  823         CONFIG_Functional_checkIfPrescriptionAvailable(localB, localDW);
  824       }
  825     }
  826   
  827     /* End of Chart: '<Root>/Config  Sub-System' */
  828   
  829     /* BusCreator: '<Root>/BusConversion_InsertedFor_CONFIG_OUT_at_inport_0' */
  830     rty_CONFIG_OUT->Patient_ID = localB->CONFIG_OUT_Patient_ID;
  831     rty_CONFIG_OUT->Drug_Name = localB->CONFIG_OUT_Drug_Name;
  832     rty_CONFIG_OUT->Drug_Concentration = localB->CONFIG_OUT_Drug_Concentration;
  833     rty_CONFIG_OUT->Infusion_Total_Duration =
  834       localB->CONFIG_OUT_Infusion_Total_Duration;
  835     rty_CONFIG_OUT->VTBI_Total = localB->CONFIG_OUT_Vtbi_Total;
  836     rty_CONFIG_OUT->Flow_Rate_Basal = localB->CONFIG_OUT_Flow_Rate_Basal;
  837     rty_CONFIG_OUT->Flow_Rate_Intermittent_Bolus =
  838       localB->CONFIG_OUT_Flow_Rate_Intermittent_bolus;
  839     rty_CONFIG_OUT->Duration_Intermittent_Bolus =
  840       localB->CONFIG_OUT_Intermittent_Bolus_Duration;
  841     rty_CONFIG_OUT->Interval_Intermittent_Bolus =
  842       localB->CONFIG_OUT_Interval_Intermittent_bolus;
  843     rty_CONFIG_OUT->Flow_Rate_Patient_Bolus =
  844       localB->CONFIG_OUT_Flow_Rate_Patient_bolus;
  845     rty_CONFIG_OUT->Duration_Patient_Bolus =
  846       localB->CONFIG_OUT_Patient_bolus_Duration;
  847     rty_CONFIG_OUT->Lockout_Period_Patient_Bolus =
  848       localB->CONFIG_OUT_Lock_Out_Duration;
  849     rty_CONFIG_OUT->Max_Number_of_Patient_Bolus =
  850       localB->CONFIG_OUT_Max_Patient_bolus;
  851     rty_CONFIG_OUT->Flow_Rate_KVO = localB->CONFIG_OUT_Flow_Rate_KVO;
  852     rty_CONFIG_OUT->Entered_Reservoir_Volume =
  853       localB->CONFIG_OUT_Entered_Reservoir_Volume;
  854     rty_CONFIG_OUT->Reservoir_Volume = localB->CONFIG_OUT_Reservoir_Volume;
  855     rty_CONFIG_OUT->Configured = localB->CONFIG_OUT_Configured;
  856     rty_CONFIG_OUT->Error_Message_ID = localB->CONFIG_OUT_Error_Message_ID;
  857     rty_CONFIG_OUT->Request_Config_Type =
  858       localB->CONFIG_OUT_Request_Configuration_Type;
  859     rty_CONFIG_OUT->Request_Confirm_Infusion_Initiate =
  860       localB->CONFIG_OUT_Request_Confirm_Infusion_Initiate;
  861     rty_CONFIG_OUT->Request_Patient_Drug_Info =
  862       localB->CONFIG_OUT_Request_Patient_Drug_Info;
  863     rty_CONFIG_OUT->Request_Infusion_Info =
  864       localB->CONFIG_OUT_Request_Infusion_Info;
  865     rty_CONFIG_OUT->Log_Message_ID = localB->CONFIG_OUT_Log_Message_ID;
  866     rty_CONFIG_OUT->Config_Timer = localB->CONFIG_OUT_Config_Timer;
  867     rty_CONFIG_OUT->Config_Mode = localB->CONFIG_OUT_Config_Mode;
  868   }
  869   
  870   /* Model initialize function */
  871   void CONFIG_Functional_initialize(const char_T **rt_errorStatus,
  872     RT_MODEL_CONFIG_Functional_T *const CONFIG_Functional_M,
  873     B_CONFIG_Functional_c_T *localB, DW_CONFIG_Functional_f_T *localDW)
  874   {
  875     /* Registration code */
  876   
  877     /* initialize error status */
  878     rtmSetErrorStatusPointer(CONFIG_Functional_M, rt_errorStatus);
  879   
  880     /* block I/O */
  881     (void) memset(((void *) localB), 0,
  882                   sizeof(B_CONFIG_Functional_c_T));
  883   
  884     /* states (dwork) */
  885     (void) memset((void *)localDW, 0,
  886                   sizeof(DW_CONFIG_Functional_f_T));
  887   }
  888