HFCC-01 Low-Level Software (LLSW) Rel_6802_HFCC-01-RP-CSAR-CB
Loading...
Searching...
No Matches
modHeartbeat.c File Reference
#include "modHeartbeat.h"
#include "core.h"
#include "mmapCore.h"
#include "utilHelper.h"
Include dependency graph for modHeartbeat.c:
modHeartbeat.c Node1 modHeartbeat.c Node2 modHeartbeat.h Node1->Node2 Node8 core.h Node1->Node8 Node12 mmapCore.h Node1->Node12 Node13 utilHelper.h Node1->Node13 Node3 commonDataTypes.h Node2->Node3 Node4 modStatus.h Node2->Node4 Node5 modConfig.h Node2->Node5 Node7 modInfo.h Node2->Node7 Node5->Node4 Node6 INTEGRITY.h Node5->Node6 Node5->Node7 Node7->Node3 Node7->Node4 Node8->Node3 Node9 driverStatus.h Node8->Node9 Node10 interDrv.h Node8->Node10 Node10->Node3 Node11 interStatus.h Node10->Node11 Node13->Node6

Data Structures

struct  ModHeartbeatHandler
 Heartbeat Watchdog Module Configuration and Operational Status Handler Structure. More...

Macros

#define MOD_HEARTBEAT_MAX_CARD   (2U)
#define MOD_HEARTBEAT_TIMEOUT_LIMIT_USEC   (3000000U)

Functions

ModStatus errCheck (const DriverStatus status)
 errCheck.
ModStatus modHeartbeat_setTimeout (const CardType cardType, const UInt32 timeout)
 modHeartbeat_setTimeout.
ModStatus modHeartbeat_enableHeartbeat (const CardType cardType)
 modHeartbeat_enableHeartbeat.
ModStatus modHeartbeat_disableHeartbeat (const CardType cardType)
 modHeartbeat_disableHeartbeat.
ModStatus modHeartbeat_getElapsedTime (const CardType cardType, UInt32 *elapsedTime)
 modHeartbeat_getElapsedTime.
ModStatus modHeartbeat_feedHeartbeat (const CardType cardType)
 modHeartbeat_feedHeartbeat.

Variables

CardInfo globalCard [MOD_INFO_MAX_CARD]
static ModHeartbeatHandler heartbeatModHdl [(2U)] = { 0 }
static Bool feedingState [MOD_INFO_MAX_CARD] = { TRUE, TRUE }

Detailed Description

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

Heartbeat module

Macro Definition Documentation

◆ MOD_HEARTBEAT_MAX_CARD

#define MOD_HEARTBEAT_MAX_CARD   (2U)

◆ MOD_HEARTBEAT_TIMEOUT_LIMIT_USEC

#define MOD_HEARTBEAT_TIMEOUT_LIMIT_USEC   (3000000U)

Function Documentation

◆ errCheck()

ModStatus errCheck ( const DriverStatus status)
extern

errCheck.

Check the driver status and convert it to the module status.

Parameters
[in]statusStatus from driver.
Returns
ModStatus - Module status return code. If no error occurs during the operation of the function, it returns MD_SUCCESS. Otherwise, a related error message is returned.
Return values
MD_SUCCESS: The module operation is successful.
MD_INVALID_ADDRESS: The module base memory address is not valid.
MD_INVALID_CHANNEL: The passing argument for channel number is not valid.
MD_READ_ERR: The module is unable to read from a certain register.
MD_WRITE_ERR: The module is unable to write to a certain register.
MD_FIFO_EMPTY: The module FIFO is empty.
MD_FIFO_FULL: The module FIFO is full.
MD_INVALID_PARAM: The provided address pointer is invalid.
MD_INVALID_VALUE: The passing argument is invalid or not within range.
MD_INVALID_CONFIG: The module is not yet configured.
MD_INVALID_INIT: The module is not initialized.
MD_OP_ALREADY_PERFORMED: The module operation has already been performed.
MD_OPEN_FAILED: The module is unable to open.
MD_FAILED: The module operation has failed.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: errCheck

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_STATUS_ERRCHECK_01 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_SUCCESS, the errCheck() function SHALL return MD_SUCCESS. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_02 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_INVALID_ADDRESS, the errCheck() function SHALL return MD_INVALID_ADDRESS. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_03 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_INVALID_CHANNEL, the errCheck() function SHALL return MD_INVALID_CHANNEL. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_04 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_INVALID_DEVICE, the errCheck() function SHALL return MD_INVALID_DEVICE. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_05 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_READ_FAILED, the errCheck() function SHALL return MD_READ_ERR. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_06 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_WRITE_FAILED, the errCheck() function SHALL return MD_WRITE_ERR. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_07 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_FIFO_EMPTY, the errCheck() function SHALL return MD_FIFO_EMPTY. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_08 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_FIFO_FULL, the errCheck() function SHALL return MD_FIFO_FULL. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_09 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_INVALID_PARAM, the errCheck() function SHALL return MD_INVALID_PARAM. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_10 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_INVALID_VALUE, the errCheck() function SHALL return MD_INVALID_VALUE. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_11 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_INVALID_CONFIG, the errCheck() function SHALL return MD_INVALID_CONFIG. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_12 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_NOT_INITIALIZED, the errCheck() function SHALL return MD_INVALID_INIT. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_13 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_OP_ALREADY_PERFORMED, the errCheck() function SHALL return MD_OP_ALREADY_PERFORMED. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_14 HLR_HM_79450 WHEN the driver status parameter is equal to DRV_OPEN_FAILED, the errCheck() function SHALL return MD_OPEN_FAILED. modStatus.c:errCheck() Test Closed
LLR_STATUS_ERRCHECK_15 HLR_HM_79450 WHEN the driver status parameter does not match any recognized driver error condition, the errCheck() function SHALL return MD_FAILED. modStatus.c:errCheck() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller errCheck() [Low-Level Device Drivers] Target interDrv_Write32() / MMIO [Hardware Abstraction Layer] Caller:s->Target:n l_t0->l_b0   status (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller errCheck() [Low-Level Device Drivers] Target interDrv_Write32() / MMIO [Hardware Abstraction Layer] Caller:s->Target:n l_t0->l_b0   status (Payload) r_b0->r_t0   stateTelemetry (Internal State)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_errCheck start Entry: errCheck() guard_1 LLR_01: Guard Check Is `status` is not equal to `DRV_SUCCESS`? start->guard_1 err_exit_1 LLR_01 Error Exit execute conditional operational branch guard_1->err_exit_1 YES (TRUE) act_2 LLR_02: Action Step execute operational data processing and state transformations guard_1->act_2 NO (FALSE) success_exit LLR_03: Final Exit return `MD_SUCCESS` act_2->success_exit
Control Flow Diagram

Data Flow Diagram (DFD)

dfd_errCheck in_store Input Data Sources & Parameters • status (const DriverStatus) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: status in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Mutation & Processing • Transformed Entity: errCheck proc_1->proc_2 Transformed Data (errCheck) proc_3 LLR_03: Status Output Packaging • Format Return Payload: ModStatus proc_2->proc_3 Final Output Data out_sink Output Data Sinks & Status Return • Status Payload (ModStatus) proc_3->out_sink Output Data & Status Code
Data Flow Diagram

◆ modHeartbeat_disableHeartbeat()

ModStatus modHeartbeat_disableHeartbeat ( const CardType cardType)

modHeartbeat_disableHeartbeat.

Disable the heartbeat.

Parameters
[in]cardTypeThe card type. (MFB1_CARD or MFB2_CARD)
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_CARD: Invalid card type.
MD_OPEN_FAILED: Card is not opened.
MD_CARD_NOT_READY: MFB Card is not ready for operation.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: modHeartbeat_disableHeartbeat

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_HEARTBEAT_MODHEARTBEAT_DISABLEHEARTBEAT_01 HLR_HBT_43821 WHEN cardType is equal to MFB1_CARD, the modHeartbeat_disableHeartbeat() function SHALL select processor card MFB1 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_disableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_DISABLEHEARTBEAT_02 HLR_HBT_43821 WHEN cardType is equal to MFB2_CARD, the modHeartbeat_disableHeartbeat() function SHALL select processor card MFB2 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_disableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_DISABLEHEARTBEAT_03 HLR_HBT_43821 WHEN cardType is neither MFB1_CARD nor MFB2_CARD, the modHeartbeat_disableHeartbeat() function SHALL abort processing and return MD_INVALID_CARD. modHeartbeat.c:modHeartbeat_disableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_DISABLEHEARTBEAT_04 HLR_HBT_43821 WHEN the target processor card is not in the OPEN operating state, the modHeartbeat_disableHeartbeat() function SHALL abort processing and return MD_INVALID_STATE. modHeartbeat.c:modHeartbeat_disableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_DISABLEHEARTBEAT_05 HLR_HBT_43821 WHEN target card preconditions are satisfied, the modHeartbeat_disableHeartbeat() function SHALL disable the hardware heartbeat timer via heartbeat_disableHeartbeat(). modHeartbeat.c:modHeartbeat_disableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_DISABLEHEARTBEAT_06 HLR_HBT_43821 WHEN the heartbeat driver returns an error status (not equal to DRV_SUCCESS), the modHeartbeat_disableHeartbeat() function SHALL abort processing and return the module error code produced by errCheck(). modHeartbeat.c:modHeartbeat_disableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_DISABLEHEARTBEAT_07 HLR_HBT_43821 WHEN all operational processing completes successfully, the modHeartbeat_disableHeartbeat() function SHALL return MD_SUCCESS. modHeartbeat.c:modHeartbeat_disableHeartbeat() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller modHeartbeat_disableHeartbeat() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller modHeartbeat_disableHeartbeat() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Payload) r_b0->r_t0   stateTelemetry (Internal State)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_modHeartbeat_disableHeartbeat start Entry: modHeartbeat_disableHeartbeat() guard_1 LLR_01: Guard Check Is `MFB1_CARD` is equal to `cardType`? start->guard_1 err_exit_1 LLR_01 Error Exit execute conditional operational branch guard_1->err_exit_1 YES (TRUE) guard_2 LLR_02: Guard Check Is `MFB2_CARD` is equal to `cardType`? guard_1->guard_2 err_exit_2 LLR_02 Error Exit execute conditional operational branch guard_2->err_exit_2 YES (TRUE) guard_3 LLR_03: Guard Check Is `OPEN` is not equal to `modState`? guard_2->guard_3 err_exit_3 LLR_03 Error Exit abort processing and return `MD_OPEN_FAILED` guard_3->err_exit_3 YES (TRUE) guard_4 LLR_04: Guard Check Is `DRV_SUCCESS` is not equal to `drvStatus`? guard_3->guard_4 err_exit_4 LLR_04 Error Exit abort processing and return `errCheck(drvStatus)` guard_4->err_exit_4 YES (TRUE) guard_5 LLR_05: Guard Check Is `MFB_READY` is not equal to `mfbStatus`? guard_4->guard_5 err_exit_5 LLR_05 Error Exit abort processing and return `MD_CARD_NOT_READY` guard_5->err_exit_5 YES (TRUE) act_6 LLR_06: Action Step invoke routine `core_getMfbReadyStatus()` to execute target subsystem hardware operation guard_5->act_6 NO (FALSE) act_7 LLR_07: Action Step evaluate the driver return status using `errCheck()` act_6->act_7 act_8 LLR_08: Action Step invoke routine `core_enableDisableHeartbeat()` to execute target subsystem hardware operation act_7->act_8 success_exit LLR_09: Final Exit return `MD_SUCCESS` act_8->success_exit
Control Flow Diagram

Data Flow Diagram (DFD)

dfd_modHeartbeat_disableHeartbeat in_store Input Data Sources & Parameters • cardType (const CardType) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: MFB1_CARD in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Validation Check • Evaluate Parameter / State: MFB2_CARD proc_1->proc_2 Validated Input Data proc_3 LLR_03: Data Validation Check • Evaluate Parameter / State: OPEN proc_2->proc_3 Validated Input Data proc_4 LLR_04: Data Validation Check • Evaluate Parameter / State: drvStatus proc_3->proc_4 Validated Input Data proc_5 LLR_05: Data Validation Check • Evaluate Parameter / State: MFB_READY proc_4->proc_5 Validated Input Data proc_6 LLR_06: Data Payload Transformation • Process payload via core_getMfbReadyStatus() proc_5->proc_6 Data Payload (core_getMfbReadyStatus) proc_7 LLR_07: Data Payload Transformation • Process payload via errCheck() proc_6->proc_7 Data Payload (errCheck) proc_8 LLR_08: Data Payload Transformation • Process payload via core_enableDisableHeartbeat() proc_7->proc_8 Data Payload (core_enableDisableHeartbeat) proc_9 LLR_09: Status Output Packaging • Format Return Payload: ModStatus proc_8->proc_9 Final Output Data out_sink Output Data Sinks & Status Return • Status Payload (ModStatus) proc_9->out_sink Output Data & Status Code
Data Flow Diagram
Here is the call graph for this function:
modHeartbeat_disableHeartbeat Node1 modHeartbeat_disableHeartbeat Node1->Node1 Node2 core_enableDisableHeartbeat Node1->Node2 Node7 core_getMfbReadyStatus Node1->Node7 Node8 errCheck Node1->Node8 Node2->Node2 Node3 writeCoreReg Node2->Node3 Node3->Node3 Node4 interDrv_Write32 Node3->Node4 Node4->Node4 Node5 interDrv_isAddressValid Node4->Node5 Node6 memoryMap_Write32 Node4->Node6 Node5->Node5 Node6->Node6 Node7->Node7 Node8->Node8
Here is the caller graph for this function:
modHeartbeat_disableHeartbeat Node1 modHeartbeat_disableHeartbeat Node1->Node1 Node2 modConfig_close Node1->Node2 Node2->Node2

◆ modHeartbeat_enableHeartbeat()

ModStatus modHeartbeat_enableHeartbeat ( const CardType cardType)

modHeartbeat_enableHeartbeat.

Enable the heartbeat.

Parameters
[in]cardTypeThe card type. (MFB1_CARD or MFB2_CARD)
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_CARD: Invalid card type.
MD_OPEN_FAILED: Card is not opened.
MD_INVALID_CONFIG: Heartbeat timeout not configured.
MD_CARD_NOT_READY: MFB Card is not ready for operation.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: modHeartbeat_enableHeartbeat

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_01 HLR_HBT_43820 WHEN cardType is equal to MFB1_CARD, the modHeartbeat_enableHeartbeat() function SHALL select processor card MFB1 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_02 HLR_HBT_43820 WHEN cardType is equal to MFB2_CARD, the modHeartbeat_enableHeartbeat() function SHALL select processor card MFB2 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_03 HLR_HBT_43820 WHEN cardType is neither MFB1_CARD nor MFB2_CARD, the modHeartbeat_enableHeartbeat() function SHALL abort processing and return MD_INVALID_CARD. modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_04 HLR_HBT_43820 WHEN the target processor card is not in the OPEN operating state, the modHeartbeat_enableHeartbeat() function SHALL abort processing and return MD_INVALID_STATE. modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_05 HLR_HBT_43820 WHEN the target processor card GPIO ready status is not MFB_READY, the modHeartbeat_enableHeartbeat() function SHALL abort processing and return MD_HARDWARE_NOT_READY. modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_06 HLR_HBT_43820 WHEN target card preconditions are satisfied, the modHeartbeat_enableHeartbeat() function SHALL enable the hardware heartbeat timer via heartbeat_enableHeartbeat(). modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_07 HLR_HBT_43820 WHEN the heartbeat driver returns an error status (not equal to DRV_SUCCESS), the modHeartbeat_enableHeartbeat() function SHALL abort processing and return the module error code produced by errCheck(). modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_ENABLEHEARTBEAT_08 HLR_HBT_43820 WHEN all operational processing completes successfully, the modHeartbeat_enableHeartbeat() function SHALL return MD_SUCCESS. modHeartbeat.c:modHeartbeat_enableHeartbeat() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller modHeartbeat_enableHeartbeat() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller modHeartbeat_enableHeartbeat() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Payload) r_b0->r_t0   stateTelemetry (Internal State)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_modHeartbeat_enableHeartbeat start Entry: modHeartbeat_enableHeartbeat() guard_1 LLR_01: Guard Check Is `MFB1_CARD` is equal to `cardType`? start->guard_1 err_exit_1 LLR_01 Error Exit execute conditional operational branch guard_1->err_exit_1 YES (TRUE) guard_2 LLR_02: Guard Check Is `MFB2_CARD` is equal to `cardType`? guard_1->guard_2 err_exit_2 LLR_02 Error Exit execute conditional operational branch guard_2->err_exit_2 YES (TRUE) guard_3 LLR_03: Guard Check Is `OPEN` is not equal to `modState`? guard_2->guard_3 err_exit_3 LLR_03 Error Exit abort processing and return `MD_OPEN_FAILED` guard_3->err_exit_3 YES (TRUE) guard_4 LLR_04: Guard Check Is `FALSE` is equal to `heartbeatModHdl`[cardIndex].timeoutConfigFlag? 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 `DRV_SUCCESS` is not equal to `drvStatus`? guard_4->guard_5 err_exit_5 LLR_05 Error Exit abort processing and return `errCheck(drvStatus)` guard_5->err_exit_5 YES (TRUE) guard_6 LLR_06: Guard Check Is `MFB_READY` is not equal to `mfbStatus`? guard_5->guard_6 err_exit_6 LLR_06 Error Exit abort processing and return `MD_CARD_NOT_READY` guard_6->err_exit_6 YES (TRUE) act_7 LLR_07: Action Step invoke routine `core_getMfbReadyStatus()` to execute target subsystem hardware operation guard_6->act_7 NO (FALSE) act_8 LLR_08: Action Step evaluate the driver return status using `errCheck()` act_7->act_8 act_9 LLR_09: Action Step invoke routine `core_enableDisableHeartbeat()` to execute target subsystem hardware operation 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_modHeartbeat_enableHeartbeat in_store Input Data Sources & Parameters • cardType (const CardType) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: MFB1_CARD in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Validation Check • Evaluate Parameter / State: MFB2_CARD proc_1->proc_2 Validated Input Data proc_3 LLR_03: Data Validation Check • Evaluate Parameter / State: OPEN proc_2->proc_3 Validated Input Data proc_4 LLR_04: Data Validation Check • Evaluate Parameter / State: heartbeatModHdl proc_3->proc_4 Validated Input Data proc_5 LLR_05: Data Validation Check • Evaluate Parameter / State: drvStatus proc_4->proc_5 Validated Input Data proc_6 LLR_06: Data Validation Check • Evaluate Parameter / State: MFB_READY proc_5->proc_6 Validated Input Data proc_7 LLR_07: Data Payload Transformation • Process payload via core_getMfbReadyStatus() proc_6->proc_7 Data Payload (core_getMfbReadyStatus) proc_8 LLR_08: Data Payload Transformation • Process payload via errCheck() proc_7->proc_8 Data Payload (errCheck) proc_9 LLR_09: Data Payload Transformation • Process payload via core_enableDisableHeartbeat() proc_8->proc_9 Data Payload (core_enableDisableHeartbeat) 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:
modHeartbeat_enableHeartbeat Node1 modHeartbeat_enableHeartbeat Node1->Node1 Node2 core_enableDisableHeartbeat Node1->Node2 Node7 core_getMfbReadyStatus Node1->Node7 Node8 errCheck Node1->Node8 Node2->Node2 Node3 writeCoreReg Node2->Node3 Node3->Node3 Node4 interDrv_Write32 Node3->Node4 Node4->Node4 Node5 interDrv_isAddressValid Node4->Node5 Node6 memoryMap_Write32 Node4->Node6 Node5->Node5 Node6->Node6 Node7->Node7 Node8->Node8
Here is the caller graph for this function:
modHeartbeat_enableHeartbeat Node1 modHeartbeat_enableHeartbeat Node1->Node1

◆ modHeartbeat_feedHeartbeat()

ModStatus modHeartbeat_feedHeartbeat ( const CardType cardType)

modHeartbeat_feedHeartbeat.

Feed the heartbeat to prevent timeout.

Parameters
[in]cardTypeThe card type. (MFB1_CARD or MFB2_CARD)
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_CARD: Invalid card type.
MD_OPEN_FAILED: Card is not opened.
MD_INVALID_CONFIG: Heartbeat not enabled.
MD_CARD_NOT_READY: MFB Card is not ready for operation.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: modHeartbeat_feedHeartbeat

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_01 HLR_HBT_43823 WHEN cardType is equal to MFB1_CARD, the modHeartbeat_feedHeartbeat() function SHALL select processor card MFB1 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_02 HLR_HBT_43823 WHEN cardType is equal to MFB2_CARD, the modHeartbeat_feedHeartbeat() function SHALL select processor card MFB2 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_03 HLR_HBT_43823 WHEN cardType is neither MFB1_CARD nor MFB2_CARD, the modHeartbeat_feedHeartbeat() function SHALL abort processing and return MD_INVALID_CARD. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_04 HLR_HBT_43823 WHEN the target processor card is not in the OPEN operating state, the modHeartbeat_feedHeartbeat() function SHALL abort processing and return MD_INVALID_STATE. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_05 HLR_HBT_43823 WHEN the target processor card GPIO ready status is not MFB_READY, the modHeartbeat_feedHeartbeat() function SHALL abort processing and return MD_HARDWARE_NOT_READY. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_06 HLR_HBT_43823 WHEN the current card watchdog toggle state is TRUE, the modHeartbeat_feedHeartbeat() function SHALL assign the feed pattern to MOD_HEARTBEAT_FEED_HIGH and toggle the state to FALSE. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_07 HLR_HBT_43823 WHEN the current card watchdog toggle state is FALSE, the modHeartbeat_feedHeartbeat() function SHALL assign the feed pattern to MOD_HEARTBEAT_FEED_LOW and toggle the state to TRUE. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_08 HLR_HBT_43823 WHEN the feed pattern is determined, the modHeartbeat_feedHeartbeat() function SHALL write the watchdog toggle pattern to hardware via heartbeat_feedHeartbeat(). modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_09 HLR_HBT_43823 WHEN the heartbeat driver returns an error status (not equal to DRV_SUCCESS), the modHeartbeat_feedHeartbeat() function SHALL abort processing and return the module error code produced by errCheck(). modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_FEEDHEARTBEAT_10 HLR_HBT_43823 WHEN all operational processing completes successfully, the modHeartbeat_feedHeartbeat() function SHALL return MD_SUCCESS. modHeartbeat.c:modHeartbeat_feedHeartbeat() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller modHeartbeat_feedHeartbeat() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller modHeartbeat_feedHeartbeat() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Payload) r_b0->r_t0   stateTelemetry (Internal State)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_modHeartbeat_feedHeartbeat start Entry: modHeartbeat_feedHeartbeat() guard_1 LLR_01: Guard Check Is `MFB1_CARD` is equal to `cardType`? start->guard_1 err_exit_1 LLR_01 Error Exit execute conditional operational branch guard_1->err_exit_1 YES (TRUE) guard_2 LLR_02: Guard Check Is `MFB2_CARD` is equal to `cardType`? guard_1->guard_2 err_exit_2 LLR_02 Error Exit execute conditional operational branch guard_2->err_exit_2 YES (TRUE) guard_3 LLR_03: Guard Check Is `OPEN` is not equal to `modState`? guard_2->guard_3 err_exit_3 LLR_03 Error Exit abort processing and return `MD_OPEN_FAILED` guard_3->err_exit_3 YES (TRUE) guard_4 LLR_04: Guard Check Is `FALSE` is equal to `heartbeatModHdl`[cardIndex].heartbeatEnFlag? 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 `DRV_SUCCESS` is not equal to `drvStatus`? guard_4->guard_5 err_exit_5 LLR_05 Error Exit abort processing and return `errCheck(drvStatus)` guard_5->err_exit_5 YES (TRUE) guard_6 LLR_06: Guard Check Is `MFB_READY` is not equal to `mfbStatus`? guard_5->guard_6 err_exit_6 LLR_06 Error Exit abort processing and return `MD_CARD_NOT_READY` guard_6->err_exit_6 YES (TRUE) guard_7 LLR_07: Guard Check Is `TRUE` is equal to `feedingState`[cardIndex]? guard_6->guard_7 err_exit_7 LLR_07 Error Exit execute conditional operational branch guard_7->err_exit_7 YES (TRUE) act_8 LLR_08: Action Step invoke routine `core_getMfbReadyStatus()` 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 act_10 LLR_10: Action Step invoke routine `core_feedHeartbeat()` to execute target subsystem hardware operation 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_modHeartbeat_feedHeartbeat in_store Input Data Sources & Parameters • cardType (const CardType) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: MFB1_CARD in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Validation Check • Evaluate Parameter / State: MFB2_CARD proc_1->proc_2 Validated Input Data proc_3 LLR_03: Data Validation Check • Evaluate Parameter / State: OPEN proc_2->proc_3 Validated Input Data proc_4 LLR_04: Data Validation Check • Evaluate Parameter / State: heartbeatModHdl proc_3->proc_4 Validated Input Data proc_5 LLR_05: Data Validation Check • Evaluate Parameter / State: drvStatus proc_4->proc_5 Validated Input Data proc_6 LLR_06: Data Validation Check • Evaluate Parameter / State: MFB_READY proc_5->proc_6 Validated Input Data proc_7 LLR_07: Data Validation Check • Evaluate Parameter / State: feedingState proc_6->proc_7 Validated Input Data proc_8 LLR_08: Data Payload Transformation • Process payload via core_getMfbReadyStatus() proc_7->proc_8 Data Payload (core_getMfbReadyStatus) proc_9 LLR_09: Data Payload Transformation • Process payload via errCheck() proc_8->proc_9 Data Payload (errCheck) proc_10 LLR_10: Data Payload Transformation • Process payload via core_feedHeartbeat() proc_9->proc_10 Data Payload (core_feedHeartbeat) 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:
modHeartbeat_feedHeartbeat Node1 modHeartbeat_feedHeartbeat Node1->Node1 Node2 core_feedHeartbeat Node1->Node2 Node7 core_getMfbReadyStatus Node1->Node7 Node8 errCheck Node1->Node8 Node2->Node2 Node3 writeCoreReg Node2->Node3 Node3->Node3 Node4 interDrv_Write32 Node3->Node4 Node4->Node4 Node5 interDrv_isAddressValid Node4->Node5 Node6 memoryMap_Write32 Node4->Node6 Node5->Node5 Node6->Node6 Node7->Node7 Node8->Node8
Here is the caller graph for this function:
modHeartbeat_feedHeartbeat Node1 modHeartbeat_feedHeartbeat Node1->Node1

◆ modHeartbeat_getElapsedTime()

ModStatus modHeartbeat_getElapsedTime ( const CardType cardType,
UInt32 * elapsedTime )

modHeartbeat_getElapsedTime.

Get the elapsed time since the last heartbeat enabled or feed.

Parameters
[in]cardTypeThe card type. (MFB1_CARD or MFB2_CARD)
[out]elapsedTimePointer to store the elapsed time in microseconds.
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_PARAM: The provided address pointer is invalid.
MD_INVALID_CARD: Invalid card type.
MD_OPEN_FAILED: Card is not opened.
MD_INVALID_CONFIG: Heartbeat not enabled.
MD_CARD_NOT_READY: MFB Card is not ready for operation.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: modHeartbeat_getElapsedTime

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_01 HLR_HBT_43822 WHEN the pointer elapsedTime is NULL (invalid), the modHeartbeat_getElapsedTime() function SHALL abort processing and return MD_INVALID_PARAM. modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_02 HLR_HBT_43822 WHEN cardType is equal to MFB1_CARD, the modHeartbeat_getElapsedTime() function SHALL select processor card MFB1 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_03 HLR_HBT_43822 WHEN cardType is equal to MFB2_CARD, the modHeartbeat_getElapsedTime() function SHALL select processor card MFB2 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_04 HLR_HBT_43822 WHEN cardType is neither MFB1_CARD nor MFB2_CARD, the modHeartbeat_getElapsedTime() function SHALL abort processing and return MD_INVALID_CARD. modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_05 HLR_HBT_43822 WHEN the target processor card is not in the OPEN operating state, the modHeartbeat_getElapsedTime() function SHALL abort processing and return MD_INVALID_STATE. modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_06 HLR_HBT_43822 WHEN target card preconditions are satisfied, the modHeartbeat_getElapsedTime() function SHALL read the elapsed timer ticks from hardware via heartbeat_getElapsedTime(). modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_07 HLR_HBT_43822 WHEN hardware timer read succeeds, the modHeartbeat_getElapsedTime() function SHALL convert elapsed ticks to microseconds using timer resolution and store into *elapsedTime. modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_GETELAPSEDTIME_08 HLR_HBT_43822 WHEN all operational processing completes successfully, the modHeartbeat_getElapsedTime() function SHALL return MD_SUCCESS. modHeartbeat.c:modHeartbeat_getElapsedTime() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller modHeartbeat_getElapsedTime() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller modHeartbeat_getElapsedTime() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Payload) r_b0->r_t0   *elapsedTime (Output Data)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_modHeartbeat_getElapsedTime start Entry: modHeartbeat_getElapsedTime() guard_1 LLR_01: Guard Check Is the pointer `elapsedTime` is NULL (invalid)? start->guard_1 err_exit_1 LLR_01 Error Exit abort processing and return `MD_INVALID_PARAM` guard_1->err_exit_1 YES (TRUE) guard_2 LLR_02: Guard Check Is `MFB1_CARD` is equal to `cardType`? guard_1->guard_2 err_exit_2 LLR_02 Error Exit execute conditional operational branch guard_2->err_exit_2 YES (TRUE) guard_3 LLR_03: Guard Check Is `MFB2_CARD` is equal to `cardType`? 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 `OPEN` is not equal to `modState`? guard_3->guard_4 err_exit_4 LLR_04 Error Exit abort processing and return `MD_OPEN_FAILED` guard_4->err_exit_4 YES (TRUE) guard_5 LLR_05: Guard Check Is `FALSE` is equal to `heartbeatModHdl`[cardIndex].heartbeatEnFlag? guard_4->guard_5 err_exit_5 LLR_05 Error Exit abort processing and return `MD_INVALID_CONFIG` guard_5->err_exit_5 YES (TRUE) guard_6 LLR_06: Guard Check Is `DRV_SUCCESS` is not equal to `drvStatus`? guard_5->guard_6 err_exit_6 LLR_06 Error Exit abort processing and return `errCheck(drvStatus)` guard_6->err_exit_6 YES (TRUE) guard_7 LLR_07: Guard Check Is `MFB_READY` is not equal to `mfbStatus`? guard_6->guard_7 err_exit_7 LLR_07 Error Exit abort processing and return `MD_CARD_NOT_READY` guard_7->err_exit_7 YES (TRUE) act_8 LLR_08: Action Step invoke routine `core_getMfbReadyStatus()` 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 act_10 LLR_10: Action Step invoke routine `core_getHeartbeatElapsedCount()` to execute target subsystem hardware operation act_9->act_10 act_11 LLR_11: Action Step invoke routine `USEC_()` to execute target subsystem hardware operation act_10->act_11 success_exit LLR_12: Final Exit return `MD_SUCCESS` act_11->success_exit
Control Flow Diagram

Data Flow Diagram (DFD)

dfd_modHeartbeat_getElapsedTime in_store Input Data Sources & Parameters • cardType (const CardType) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: elapsedTime in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Validation Check • Evaluate Parameter / State: MFB1_CARD proc_1->proc_2 Validated Input Data proc_3 LLR_03: Data Validation Check • Evaluate Parameter / State: MFB2_CARD proc_2->proc_3 Validated Input Data proc_4 LLR_04: Data Validation Check • Evaluate Parameter / State: OPEN proc_3->proc_4 Validated Input Data proc_5 LLR_05: Data Validation Check • Evaluate Parameter / State: heartbeatModHdl proc_4->proc_5 Validated Input Data proc_6 LLR_06: Data Validation Check • Evaluate Parameter / State: drvStatus proc_5->proc_6 Validated Input Data proc_7 LLR_07: Data Validation Check • Evaluate Parameter / State: MFB_READY proc_6->proc_7 Validated Input Data proc_8 LLR_08: Data Payload Transformation • Process payload via core_getMfbReadyStatus() proc_7->proc_8 Data Payload (core_getMfbReadyStatus) proc_9 LLR_09: Data Payload Transformation • Process payload via errCheck() proc_8->proc_9 Data Payload (errCheck) proc_10 LLR_10: Data Payload Transformation • Process payload via core_getHeartbeatElapsedCount() proc_9->proc_10 Data Payload (core_getHeartbeatElapsedCount) proc_11 LLR_11: Data Payload Transformation • Process payload via USEC_() proc_10->proc_11 Data Payload (USEC_) proc_12 LLR_12: Status Output Packaging • Format Return Payload: ModStatus proc_11->proc_12 Final Output Data out_sink Output Data Sinks & Status Return • elapsedTime (UInt32) proc_12->out_sink Output Data & Status Code
Data Flow Diagram
Here is the call graph for this function:
modHeartbeat_getElapsedTime Node1 modHeartbeat_getElapsedTime Node1->Node1 Node2 core_getHeartbeatElapsed Count Node1->Node2 Node7 core_getMfbReadyStatus Node1->Node7 Node8 errCheck Node1->Node8 Node2->Node2 Node3 readCoreReg Node2->Node3 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->Node8
Here is the caller graph for this function:
modHeartbeat_getElapsedTime Node1 modHeartbeat_getElapsedTime Node1->Node1

◆ modHeartbeat_setTimeout()

ModStatus modHeartbeat_setTimeout ( const CardType cardType,
const UInt32 timeout )

modHeartbeat_setTimeout.

Set the heartbeat timeout value based on hardware counter resolution.

Parameters
[in]cardTypeThe card type. (MFB1_CARD or MFB2_CARD)
[in]timeoutThe timeout value in microseconds. Maximum value is 3000000 usec (3 seconds).
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_CARD: Invalid card type.
MD_OPEN_FAILED: Card is not opened.
MD_INVALID_VALUE: Invalid timeout value or hardware resolution is invalid.
MD_CARD_NOT_READY: MFB Card is not ready for operation.

Low-Level Software Requirements (LLR)

Low-Level Requirement Specification: modHeartbeat_setTimeout

Requirement ID Parent HLR ID Detailed Low-Level Requirement Statement (EARS Format) Software Unit Reference Verification Method Status
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_01 HLR_HBT_43819 WHEN timeout exceeds MOD_HEARTBEAT_TIMEOUT_LIMIT_USEC, the modHeartbeat_setTimeout() function SHALL abort processing and return MD_INVALID_VALUE. modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_02 HLR_HBT_43819 WHEN cardType is equal to MFB1_CARD, the modHeartbeat_setTimeout() function SHALL select processor card MFB1 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_03 HLR_HBT_43819 WHEN cardType is equal to MFB2_CARD, the modHeartbeat_setTimeout() function SHALL select processor card MFB2 as the heartbeat hardware target. modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_04 HLR_HBT_43819 WHEN cardType is neither MFB1_CARD nor MFB2_CARD, the modHeartbeat_setTimeout() function SHALL abort processing and return MD_INVALID_CARD. modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_05 HLR_HBT_43819 WHEN the target processor card is not in the OPEN operating state, the modHeartbeat_setTimeout() function SHALL abort processing and return MD_INVALID_STATE. modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_06 HLR_HBT_43819 WHEN target card preconditions are satisfied, the modHeartbeat_setTimeout() function SHALL query timer tick resolution from hardware via heartbeat_getResolution(). modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_07 HLR_HBT_43819 WHEN the commanded timeout period has a non-zero remainder against timer tick resolution (timeoutNsec % resolutionNsec != 0), the modHeartbeat_setTimeout() function SHALL increment the calculated tick count by 1 to round up. modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_08 HLR_HBT_43819 WHEN timeout ticks are computed, the modHeartbeat_setTimeout() function SHALL configure the hardware timeout register via heartbeat_setTimeout(). modHeartbeat.c:modHeartbeat_setTimeout() Test Closed
LLR_HEARTBEAT_MODHEARTBEAT_SETTIMEOUT_09 HLR_HBT_43819 WHEN all operational processing completes successfully, the modHeartbeat_setTimeout() function SHALL return MD_SUCCESS. modHeartbeat.c:modHeartbeat_setTimeout() Test Closed

Control Coupling Diagram (CCD)

ControlCouplingStructureChart Caller modHeartbeat_setTimeout() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Flag) l_t1->l_b1   timeout (Flag) r_b0->r_t0   statusCode (ModStatus)
Control Coupling Structure Chart

Data Coupling Diagram (DCD)

DataCouplingStructureChart Caller modHeartbeat_setTimeout() [Device Library Modules] Target core_getMfbReadyStatus() [Subordinate Routine] Caller:s->Target:n l_t0->l_b0   cardType (Payload) l_t1->l_b1   timeout (Payload) r_b0->r_t0   stateTelemetry (Internal State)
Data Coupling Structure Chart

Control Flow Diagram (CFD)

cfd_modHeartbeat_setTimeout start Entry: modHeartbeat_setTimeout() guard_1 LLR_01: Guard Check Is `MOD_HEARTBEAT_TIMEOUT_LIMIT_USEC` is less than `timeout`? start->guard_1 err_exit_1 LLR_01 Error Exit abort processing and return `MD_INVALID_VALUE` guard_1->err_exit_1 YES (TRUE) guard_2 LLR_02: Guard Check Is `MFB1_CARD` is equal to `cardType`? guard_1->guard_2 err_exit_2 LLR_02 Error Exit execute conditional operational branch guard_2->err_exit_2 YES (TRUE) guard_3 LLR_03: Guard Check Is `MFB2_CARD` is equal to `cardType`? 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 `OPEN` is not equal to `modState`? guard_3->guard_4 err_exit_4 LLR_04 Error Exit abort processing and return `MD_OPEN_FAILED` guard_4->err_exit_4 YES (TRUE) guard_5 LLR_05: Guard Check Is `DRV_SUCCESS` is not equal to `drvStatus`? guard_4->guard_5 err_exit_5 LLR_05 Error Exit abort processing and return `errCheck(drvStatus)` guard_5->err_exit_5 YES (TRUE) guard_6 LLR_06: Guard Check Is `MFB_READY` is not equal to `mfbStatus`? guard_5->guard_6 err_exit_6 LLR_06 Error Exit abort processing and return `MD_CARD_NOT_READY` guard_6->err_exit_6 YES (TRUE) guard_7 LLR_07: Guard Check Is `0` is equal to `resolutionNsec`? 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 timeoutNsec % resolutionNsec? guard_7->guard_8 err_exit_8 LLR_08 Error Exit execute conditional operational branch guard_8->err_exit_8 YES (TRUE) act_9 LLR_09: Action Step invoke routine `core_getMfbReadyStatus()` 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 act_11 LLR_11: Action Step invoke routine `core_getHeartbeatResolution()` to execute target subsystem hardware operation act_10->act_11 act_12 LLR_12: Action Step invoke routine `USEC_()` to execute target subsystem hardware operation act_11->act_12 act_13 LLR_13: Action Step invoke routine `core_setHeartbeatTimeoutCount()` to execute target subsystem hardware operation act_12->act_13 success_exit LLR_14: Final Exit return `MD_SUCCESS` act_13->success_exit
Control Flow Diagram

Data Flow Diagram (DFD)

dfd_modHeartbeat_setTimeout in_store Input Data Sources & Parameters • cardType (const CardType) • timeout (const UInt32) proc_1 LLR_01: Data Validation Check • Evaluate Parameter / State: MOD_HEARTBEAT_TIMEOUT_LIMIT_USEC in_store->proc_1 Validated Input Data proc_2 LLR_02: Data Validation Check • Evaluate Parameter / State: MFB1_CARD proc_1->proc_2 Validated Input Data proc_3 LLR_03: Data Validation Check • Evaluate Parameter / State: MFB2_CARD proc_2->proc_3 Validated Input Data proc_4 LLR_04: Data Validation Check • Evaluate Parameter / State: OPEN proc_3->proc_4 Validated Input Data proc_5 LLR_05: Data Validation Check • Evaluate Parameter / State: drvStatus proc_4->proc_5 Validated Input Data proc_6 LLR_06: Data Validation Check • Evaluate Parameter / State: MFB_READY proc_5->proc_6 Validated Input Data proc_7 LLR_07: Data Validation Check • Evaluate Parameter / State: resolutionNsec proc_6->proc_7 Validated Input Data proc_8 LLR_08: Data Validation Check • Evaluate Parameter / State: timeoutNsec proc_7->proc_8 Validated Input Data proc_9 LLR_09: Data Payload Transformation • Process payload via core_getMfbReadyStatus() proc_8->proc_9 Data Payload (core_getMfbReadyStatus) proc_10 LLR_10: Data Payload Transformation • Process payload via errCheck() proc_9->proc_10 Data Payload (errCheck) proc_11 LLR_11: Data Payload Transformation • Process payload via core_getHeartbeatResolution() proc_10->proc_11 Data Payload (core_getHeartbeatResolution) proc_12 LLR_12: Data Payload Transformation • Process payload via USEC_() proc_11->proc_12 Data Payload (USEC_) proc_13 LLR_13: Data Payload Transformation • Process payload via core_setHeartbeatTimeoutCount() proc_12->proc_13 Data Payload (core_setHeartbeatTimeoutCount) proc_14 LLR_14: Status Output Packaging • Format Return Payload: ModStatus proc_13->proc_14 Final Output Data out_sink Output Data Sinks & Status Return • Status Payload (ModStatus) proc_14->out_sink Output Data & Status Code
Data Flow Diagram
Here is the call graph for this function:
modHeartbeat_setTimeout Node1 modHeartbeat_setTimeout Node1->Node1 Node2 core_getHeartbeatResolution Node1->Node2 Node7 core_getMfbReadyStatus Node1->Node7 Node8 core_setHeartbeatTimeout Count Node1->Node8 Node12 errCheck Node1->Node12 Node2->Node2 Node3 readCoreReg Node2->Node3 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->Node8 Node9 writeCoreReg Node8->Node9 Node9->Node9 Node10 interDrv_Write32 Node9->Node10 Node10->Node5 Node10->Node10 Node11 memoryMap_Write32 Node10->Node11 Node11->Node11 Node12->Node12
Here is the caller graph for this function:
modHeartbeat_setTimeout Node1 modHeartbeat_setTimeout Node1->Node1

Variable Documentation

◆ feedingState

Bool feedingState[MOD_INFO_MAX_CARD] = { TRUE, TRUE }
static

◆ globalCard

CardInfo globalCard[MOD_INFO_MAX_CARD]
extern

◆ heartbeatModHdl

ModHeartbeatHandler heartbeatModHdl[(2U)] = { 0 }
static