HFCC-01 Low-Level Software (LLSW) Rel_6802_HFCC-01-RP-CSAR-CB
Loading...
Searching...
No Matches
modDiscreteOut.h File Reference
#include "commonDataTypes.h"
#include "modStatus.h"
#include "modConfig.h"
Include dependency graph for modDiscreteOut.h:
modDiscreteOut.h Node1 modDiscreteOut.h Node2 commonDataTypes.h Node1->Node2 Node3 modStatus.h Node1->Node3 Node4 modConfig.h Node1->Node4 Node4->Node3 Node5 INTEGRITY.h Node4->Node5 Node6 modInfo.h Node4->Node6 Node6->Node2 Node6->Node3
This graph shows which files directly or indirectly include this file:
modDiscreteOut.h Node1 modDiscreteOut.h Node2 deviceLibModule.h Node1->Node2 Node3 modDiscreteOut.c Node1->Node3

Go to the source code of this file.

Enumerations

enum  DOutLogic {
  DOUT_OG_GND = (1U) , DOUT_OG_OPEN = (2U) , DOUT_SO_SPLY = (3U) , DOUT_SO_OPEN = (4U) ,
  DOUT_SG_SPLY = (5U) , DOUT_SG_GND = (6U)
}
 This is enum definition for the state logic discrete output. More...
enum  DOutOvervoltageLockout { DOUT_OVL_DISABLE = 0U , DOUT_OVL_ENABLE = 1U }
 Discrete Output Overvoltage Lockout (OVL) Protection Control State. More...
enum  DOutUnderloadShutdown { DOUT_ULD_DISABLE = 0U , DOUT_ULD_ENABLE = 1U }
 Discrete Output Underload Shutdown (ULD) Protection Control State. More...
enum  DOutChannelType { DOUT_GND_OPEN = 1U , DOUT_SUPPLY_OPEN = 2U , DOUT_SUPPLY_GND = 3U }
 This is enum definition for the type of mode discrete output. More...

Functions

ModStatus modDiscreteOut_devicesConfig (const DOutChannelBankDOutChannelBank DOutChannelBankDOutChannelBank, const DOutOvervoltageLockout overVoltage, const DOutUnderloadShutdown underLoad)
 modDiscreteOut_devicesConfig.
ModStatus modDiscreteOut_write (const DOutChannelNum channelNum, const DOutLogic dOutLogic)
 modDiscreteOut_write.

Detailed Description

Author
Ramza Anuar ramza.nosp@m..anu.nosp@m.ar@tu.nosp@m.sas..nosp@m.my

Discrete Output Module

Enumeration Type Documentation

◆ DOutChannelType

This is enum definition for the type of mode discrete output.

Enumerator
DOUT_GND_OPEN 

Discrete Output Mode Channel Type for GROUND/OPEN.

DOUT_SUPPLY_OPEN 

Discrete Output Mode Channel Type for SUPPLY/OPEN.

DOUT_SUPPLY_GND 

Discrete Output Mode Channel Type for SUPPLY/GROUND.

◆ DOutLogic

enum DOutLogic

This is enum definition for the state logic discrete output.

Enumerator
DOUT_OG_GND 

Ground in GROUND/OPEN.

DOUT_OG_OPEN 

Open in GROUND/OPEN.

DOUT_SO_SPLY 

Supply in SUPPLY/OPEN.

DOUT_SO_OPEN 

Open in SUPPLY/OPEN.

DOUT_SG_SPLY 

Supply in SUPPLY/GROUND.

DOUT_SG_GND 

Ground in SUPPLY/GROUND.

Ground state in Supply/Ground discrete output channel mode.

◆ DOutOvervoltageLockout

Discrete Output Overvoltage Lockout (OVL) Protection Control State.

Enumerator
DOUT_OVL_DISABLE 

Overvoltage Lockout Disable.

DOUT_OVL_ENABLE 

Overvoltage Lockout Enable.

Overvoltage Lockout Enable

◆ DOutUnderloadShutdown

Discrete Output Underload Shutdown (ULD) Protection Control State.

Enumerator
DOUT_ULD_DISABLE 

Underload Shutdown Disable.

DOUT_ULD_ENABLE 

Underload Shutdown Enable.

Underload Shutdown Enable

Function Documentation

◆ modDiscreteOut_devicesConfig()

ModStatus modDiscreteOut_devicesConfig ( const DOutChannelBank DOutChannelBank,
const DOutOvervoltageLockout overVoltage,
const DOutUnderloadShutdown underLoad )

modDiscreteOut_devicesConfig.

Set the discrete output device configuration. Overvoltage detection : Typical 36V Underload detection : Typical 2.5mA

Parameters
[in]DOutChannelBankThe module bank channel.
[in]overVoltageThe overvoltage lockout configuration. (ENABLE / DISABLE)
[in]underLoadThe underload shutdown configuration. (ENABLE / DISABLE) Does not supported for below devices: DOUT_DEV1_BANK, DOUT_DEV2_BANK, DOUT_DEV3_BANK, DOUT_DEV4_BANK, DOUT_DEV9_BANK, DOUT_DEV10_BANK.
Returns
ModStatus - Module status return code, If no error occurs during the operation of the function, it returns MD_SUCCESS. Otherwise related error message is returned.
Return values
MD_SUCCESS: Success.
MD_INVALID_CHANNEL: The bank channel number is invalid.
MD_INVALID_INIT: The module has not been initialized.
MD_INVALID_CONFIG: The overvoltage or underload configuration parameter is invalid.
Returns
MD_INVALID_VALUE : The underload configuration of the selected bank channel is not supported.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: modDiscreteOut_devicesConfig

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_01 HLR_DOUT_39816 WHEN bank validation fails (validateChannelBank() returns FALSE), the modDiscreteOut_devicesConfig() function SHALL abort processing and return MD_INVALID_CHANNEL. modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_02 HLR_DOUT_39816 WHEN the target card module state is not INIT, the modDiscreteOut_devicesConfig() function SHALL abort processing and return MD_INVALID_INIT. modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_03 HLR_DOUT_39816 WHEN overVoltage is DOUT_OVL_ENABLE, the modDiscreteOut_devicesConfig() function SHALL configure the overvoltage lockout bank flag to TRUE. modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_04 HLR_DOUT_39816 WHEN overVoltage is DOUT_OVL_DISABLE, the modDiscreteOut_devicesConfig() function SHALL configure the overvoltage lockout bank flag to FALSE. modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_05 HLR_DOUT_39816 WHEN underLoad is DOUT_ULD_ENABLE, the modDiscreteOut_devicesConfig() function SHALL configure the underload shutdown bank flag to TRUE. modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_06 HLR_DOUT_39816 WHEN underLoad is DOUT_ULD_DISABLE, the modDiscreteOut_devicesConfig() function SHALL configure the underload shutdown bank flag to FALSE. modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_07 HLR_DOUT_39816 WHEN bank configuration flags are resolved, the modDiscreteOut_devicesConfig() function SHALL program the target hardware device via discreteOut_devicesConfig(). modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_DEVICESCONFIG_08 HLR_DOUT_39816 WHEN all operational processing completes successfully, the modDiscreteOut_devicesConfig() function SHALL return MD_SUCCESS. modDiscreteOut.c:modDiscreteOut_devicesConfig() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller modDiscreteOut_devicesConfig() [Device Library Modules] Target discreteOut_devicesConfig() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   DOutChannelBank (Flag) l_t1->l_b1   overVoltage (Flag) l_t2->l_b2   underLoad (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller modDiscreteOut_devicesConfig() [Device Library Modules] Target discreteOut_devicesConfig() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   DOutChannelBank (Payload) l_t1->l_b1   overVoltage (Payload) l_t2->l_b2   underLoad (Payload) r_b0->r_t0   stateTelemetry (Internal State)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_modDiscreteOut_devicesConfig start Entry: modDiscreteOut_devicesConfig() guard_1 LLR_01: Guard Check Is the channel bank validation check returns FALSE (invalid bank)? start->guard_1 err_exit_1 LLR_01 Error Exit abort processing and return `MD_INVALID_CHANNEL` guard_1->err_exit_1 YES (TRUE) guard_2 LLR_02: Guard Check Is the module initialization state is not initialized (INIT)? guard_1->guard_2 err_exit_2 LLR_02 Error Exit abort processing and return `MD_INVALID_INIT` guard_2->err_exit_2 YES (TRUE) guard_3 LLR_03: Guard Check Is `overVoltage` is equal to `DOUT_OVL_ENABLE`? guard_2->guard_3 err_exit_3 LLR_03 Error Exit execute conditional operational branch guard_3->err_exit_3 YES (TRUE) guard_4 LLR_04: Guard Check Is `overVoltage` is equal to `DOUT_OVL_DISABLE`? guard_3->guard_4 err_exit_4 LLR_04 Error Exit execute conditional operational branch guard_4->err_exit_4 YES (TRUE) guard_5 LLR_05: Guard Check Is `underLoad` is equal to `DOUT_ULD_ENABLE`? guard_4->guard_5 err_exit_5 LLR_05 Error Exit execute conditional operational branch guard_5->err_exit_5 YES (TRUE) guard_6 LLR_06: Guard Check Is `underLoad` is equal to `DOUT_ULD_DISABLE`? guard_5->guard_6 err_exit_6 LLR_06 Error Exit execute conditional operational branch guard_6->err_exit_6 YES (TRUE) guard_7 LLR_07: Guard Check Is (`DOUT_DEV1_BANK` is equal to `DOutChannelBank`) or (`DOUT_DEV2_BANK` is equal to `DOutChannelBank`) or (`DOUT_DEV3_BANK` is equal to `DOutChannelBank`) or (`DOUT_DEV4_BANK` is equal to `DOutChannelBank`) or (`DOUT_DEV9_BANK` is equal to `DOutChannelBank`) or (`DOUT_DEV10_BANK` is equal to `DOutChannelBank`)? guard_6->guard_7 err_exit_7 LLR_07 Error Exit abort processing and return `MD_INVALID_VALUE` guard_7->err_exit_7 YES (TRUE) guard_8 LLR_08: Guard Check Is a driver operation reports a failure status other than DRV_SUCCESS? guard_7->guard_8 err_exit_8 LLR_08 Error Exit abort processing and return the module error code produced by errCheck(retStatus) guard_8->err_exit_8 YES (TRUE) act_9 LLR_09: Action Step invoke routine `discreteOut_devicesConfig()` to execute target subsystem hardware operation guard_8->act_9 NO (FALSE) act_10 LLR_10: Action Step evaluate the driver return status using `errCheck()` act_9->act_10 success_exit LLR_11: Final Exit return `MD_SUCCESS` act_10->success_exit
Control Flow Diagram

Data Flow Diagram (DFD)

dfd_modDiscreteOut_devicesConfig in_store Input Data Sources & Parameters • DOutChannelBank (const DOutChannelBank) • overVoltage (const DOutOvervoltageLockout) • underLoad (const DOutUnderloadShutdown) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: validateChannelBank in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Validation Check • Evaluate Parameter / State: discreteOutModHdl proc_1->proc_2 Validated Input Data proc_3 LLR_03: Data Validation Check • Evaluate Parameter / State: overVoltage proc_2->proc_3 Validated Input Data proc_4 LLR_04: Data Validation Check • Evaluate Parameter / State: overVoltage proc_3->proc_4 Validated Input Data proc_5 LLR_05: Data Validation Check • Evaluate Parameter / State: underLoad proc_4->proc_5 Validated Input Data proc_6 LLR_06: Data Validation Check • Evaluate Parameter / State: underLoad proc_5->proc_6 Validated Input Data proc_7 LLR_07: Data Validation Check • Evaluate Parameter / State: DOUT_DEV1_BANK proc_6->proc_7 Validated Input Data proc_8 LLR_08: Data Validation Check • Evaluate Parameter / State: retStatus proc_7->proc_8 Validated Input Data proc_9 LLR_09: Data Payload Transformation • Process payload via discreteOut_devicesConfig() proc_8->proc_9 Data Payload (discreteOut_devicesConfig) proc_10 LLR_10: Data Payload Transformation • Process payload via errCheck() proc_9->proc_10 Data Payload (errCheck) proc_11 LLR_11: Status Output Packaging • Format Return Payload: ModStatus proc_10->proc_11 Final Output Data out_sink Output Data Sinks & Status Return • Status Payload (ModStatus) proc_11->out_sink Output Data & Status Code
Data Flow Diagram
Here is the call graph for this function:
modDiscreteOut_devicesConfig Node1 modDiscreteOut_devicesConfig Node1->Node1 Node2 discreteOut_devicesConfig Node1->Node2 Node10 errCheck Node1->Node10 Node11 validateChannelBank Node1->Node11 Node2->Node2 Node3 readDiscreteOutReg Node2->Node3 Node7 writeDiscreteOutReg Node2->Node7 Node3->Node3 Node4 interDrv_Read32 Node3->Node4 Node4->Node4 Node5 interDrv_isAddressValid Node4->Node5 Node6 memoryMap_Read32 Node4->Node6 Node5->Node5 Node6->Node6 Node7->Node7 Node8 interDrv_Write32 Node7->Node8 Node8->Node5 Node8->Node8 Node9 memoryMap_Write32 Node8->Node9 Node9->Node9 Node10->Node10 Node11->Node11
Here is the caller graph for this function:
modDiscreteOut_devicesConfig Node1 modDiscreteOut_devicesConfig Node1->Node1

◆ modDiscreteOut_write()

ModStatus modDiscreteOut_write ( const DOutChannelNum channelNum,
const DOutLogic dOutLogic )

modDiscreteOut_write.

Write the discrete output channel state.

Parameters
[in]channelNumThe channel number.
[in]dOutLogicWrite the discrete output channel state
Returns
ModStatus - Module status return code, If no error occurs during the operation of the function, it returns MD_SUCCESS. Otherwise related error message is returned.
Return values
MD_SUCCESS: Success.
MD_INVALID_CHANNEL: The channel number is invalid.
MD_INVALID_INIT: The module has not been initialized.
MD_INVALID_CONFIG: The configuration parameter is invalid.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: modDiscreteOut_write

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_01 HLR_DOUT_234 WHEN channel validation fails (validateChannel() returns FALSE), the modDiscreteOut_write() function SHALL abort processing and return MD_INVALID_CHANNEL. modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_02 HLR_DOUT_234 WHEN the target card module state is not INIT, the modDiscreteOut_write() function SHALL abort processing and return MD_INVALID_INIT. modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_03 HLR_DOUT_234 WHEN the channel type is Ground/Open (DOUT_GND_OPEN) and dOutLogic is DOUT_OG_GND, the modDiscreteOut_write() function SHALL set hardware output state to TRUE. modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_04 HLR_DOUT_234 WHEN the channel type is Ground/Open (DOUT_GND_OPEN) and dOutLogic is DOUT_OG_OPEN, the modDiscreteOut_write() function SHALL set hardware output state to FALSE. modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_05 HLR_DOUT_234 WHEN the channel type is Supply/Open (DOUT_SUPPLY_OPEN) and dOutLogic is DOUT_SG_SPLY, the modDiscreteOut_write() function SHALL set hardware output state to TRUE. modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_06 HLR_DOUT_234 WHEN the channel type is Supply/Open (DOUT_SUPPLY_OPEN) and dOutLogic is DOUT_SG_GND or DOUT_SG_OPEN, the modDiscreteOut_write() function SHALL set hardware output state to FALSE. modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_07 HLR_DOUT_234 WHEN dOutLogic is invalid for the specified channel type, the modDiscreteOut_write() function SHALL abort processing and return MD_INVALID_VALUE. modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_08 HLR_DOUT_234 WHEN state resolution succeeds, the modDiscreteOut_write() function SHALL write the physical discrete output line via discreteOut_writeChState(). modDiscreteOut.c:modDiscreteOut_write() Test Closed
LLR_DISCRETEOUT_MODDISCRETEOUT_WRITE_09 HLR_DOUT_234 WHEN all operational processing completes successfully, the modDiscreteOut_write() function SHALL return MD_SUCCESS. modDiscreteOut.c:modDiscreteOut_write() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller modDiscreteOut_write() [Device Library Modules] Target discreteOut_writeChState() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   channelNum (Flag) l_t1->l_b1   dOutLogic (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller modDiscreteOut_write() [Device Library Modules] Target discreteOut_writeChState() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   channelNum (Payload) l_t1->l_b1   dOutLogic (Payload) r_b0->r_t0   stateTelemetry (Internal State)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_modDiscreteOut_write start Entry: modDiscreteOut_write() guard_1 LLR_01: Guard Check Is the channel validation check returns FALSE (invalid channel)? start->guard_1 err_exit_1 LLR_01 Error Exit abort processing and return `MD_INVALID_CHANNEL` guard_1->err_exit_1 YES (TRUE) guard_2 LLR_02: Guard Check Is the module initialization state is not initialized (INIT)? guard_1->guard_2 err_exit_2 LLR_02 Error Exit abort processing and return `MD_INVALID_INIT` guard_2->err_exit_2 YES (TRUE) guard_3 LLR_03: Guard Check Is `channelType` is equal to `DOUT_GND_OPEN`? guard_2->guard_3 err_exit_3 LLR_03 Error Exit abort processing and return `MD_INVALID_CONFIG` guard_3->err_exit_3 YES (TRUE) guard_4 LLR_04: Guard Check Is `channelType` is equal to `DOUT_SUPPLY_OPEN`? guard_3->guard_4 err_exit_4 LLR_04 Error Exit abort processing and return `MD_INVALID_CONFIG` guard_4->err_exit_4 YES (TRUE) guard_5 LLR_05: Guard Check Is `dOutLogic` is equal to `DOUT_SG_SPLY`? guard_4->guard_5 err_exit_5 LLR_05 Error Exit execute conditional operational branch guard_5->err_exit_5 YES (TRUE) guard_6 LLR_06: Guard Check Is `dOutLogic` is equal to `DOUT_SG_GND`? guard_5->guard_6 err_exit_6 LLR_06 Error Exit execute conditional operational branch guard_6->err_exit_6 YES (TRUE) guard_7 LLR_07: Guard Check Is a driver operation reports a failure status other than DRV_SUCCESS? guard_6->guard_7 err_exit_7 LLR_07 Error Exit abort processing and return the module error code produced by errCheck(retStatus) guard_7->err_exit_7 YES (TRUE) act_8 LLR_08: Action Step invoke routine `discreteOut_writeChState()` to execute target subsystem hardware operation guard_7->act_8 NO (FALSE) act_9 LLR_09: Action Step evaluate the driver return status using `errCheck()` act_8->act_9 success_exit LLR_10: Final Exit return `MD_SUCCESS` act_9->success_exit
Control Flow Diagram

Data Flow Diagram (DFD)

dfd_modDiscreteOut_write in_store Input Data Sources & Parameters • channelNum (const DOutChannelNum) • dOutLogic (const DOutLogic) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: validateChannel in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Validation Check • Evaluate Parameter / State: discreteOutModHdl proc_1->proc_2 Validated Input Data proc_3 LLR_03: Data Validation Check • Evaluate Parameter / State: channelType proc_2->proc_3 Validated Input Data proc_4 LLR_04: Data Validation Check • Evaluate Parameter / State: channelType proc_3->proc_4 Validated Input Data proc_5 LLR_05: Data Validation Check • Evaluate Parameter / State: dOutLogic proc_4->proc_5 Validated Input Data proc_6 LLR_06: Data Validation Check • Evaluate Parameter / State: dOutLogic proc_5->proc_6 Validated Input Data proc_7 LLR_07: Data Validation Check • Evaluate Parameter / State: retStatus proc_6->proc_7 Validated Input Data proc_8 LLR_08: Data Payload Transformation • Process payload via discreteOut_writeChState() proc_7->proc_8 Data Payload (discreteOut_writeChState) proc_9 LLR_09: Data Payload Transformation • Process payload via errCheck() proc_8->proc_9 Data Payload (errCheck) proc_10 LLR_10: Status Output Packaging • Format Return Payload: ModStatus proc_9->proc_10 Final Output Data out_sink Output Data Sinks & Status Return • Status Payload (ModStatus) proc_10->out_sink Output Data & Status Code
Data Flow Diagram
Here is the call graph for this function:
modDiscreteOut_write Node1 modDiscreteOut_write Node1->Node1 Node2 discreteOut_writeChState Node1->Node2 Node10 errCheck Node1->Node10 Node11 validateChannel Node1->Node11 Node2->Node2 Node3 readDiscreteOutReg Node2->Node3 Node7 writeDiscreteOutReg Node2->Node7 Node3->Node3 Node4 interDrv_Read32 Node3->Node4 Node4->Node4 Node5 interDrv_isAddressValid Node4->Node5 Node6 memoryMap_Read32 Node4->Node6 Node5->Node5 Node6->Node6 Node7->Node7 Node8 interDrv_Write32 Node7->Node8 Node8->Node5 Node8->Node8 Node9 memoryMap_Write32 Node8->Node9 Node9->Node9 Node10->Node10 Node11->Node11
Here is the caller graph for this function:
modDiscreteOut_write Node1 modDiscreteOut_write Node1->Node1 Node2 modDiscreteOut_initReset Node1->Node2 Node2->Node2 Node3 modConfig_init Node2->Node3 Node4 modConfig_reset Node2->Node4 Node3->Node3 Node4->Node4 Node5 modConfig_close Node4->Node5 Node5->Node5