File: CONFIG_Functional.c1 /* 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 |