States_And_Modes_MDD

Module --

High-Level Description

This module handles the EPS system state transitions and is used to determine the operating system state based on knowledge of customer and internal inputs. The System State is used in turn by the Scheduler to determine the task list to be executed in a particular state.

Figures

Component Diagram

None, files are generated by Configurator.


Variable Data Dictionary

Module InputsModule Outputs
CTerm_Cnt_lgcCloseCheck_Cnt_u32
ATerm_Cnt_lgcTypeHData_Cnt_u08[D_TYPEHDATASIZE_CNT_U16]
FTerm_Cnt_lgc
RampStatusComplete_Cnt_lgc
ControlledDampStatusComplete_Cnt_lgc
TMFTestComplete_Cnt_lgc

Module Internal Variables

Variable NameDataTypeResolution

Legal Range

(min)

Legal Range

(max)

MultiplicitySoftware Segment
StTrnsVctr_Cnt_D_b08Refer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_CLEARED_8
WarmInitMilestoneRqst_Cnt_M_u32Refer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_CLEARED_32
WarmInitMilestoneRqst#_Cnt_M_u32Refer *Refer *Refer *Refer *0:nSTAMD#_START_SEC_VAR_CLEARED_32
EcuResetActive_Cnt_M_lgcRefer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_CLEARED_BOOLEAN
FinalNvMWriteInProgress_Cnt_M_lgcRefer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_CLEARED_BOOLEAN
StopTODPerOperation_Cnt_M_lgcRefer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_CLEARED_BOOLEAN
TODState_Cnt_M_lgcRefer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_CLEARED_BOOLEAN
TransitionComplete_Cnt_M_lgcRefer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_CLEARED_BOOLEAN
SystemState_Cnt_M_enumRefer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_INIT_UNSPECIFIED
SystemState#_Cnt_M_enumRefer *Refer *Refer *Refer *0:nSTAMD#_START_SEC_VAR_INIT_UNSPECIFIED
SysCSystemState_Cnt_M_enumRefer *Refer *Refer *Refer *1:1STAMD#_START_SEC_VAR_INIT_UNSPECIFIED
Lnk_TypeH#_StartRefer *Refer *Refer *Refer *0:nAP_STAMD_CONST
Lnk_TypeH#_SizeRefer *Refer *Refer *Refer *0:nAP_STAMD_CONST

Note: “ Refer *” - Refer to States_And_Modes_GeneratedCfg_MDD

Note “#” denotes application number(1 to n) which varies across projects. Check project configuration files Under UTP/ Contract folder for number of applications

User defined typedef definition/declaration

Typedef NameElement NameUser Defined Type

Legal Range

(min)

Legal Range

(max)

TypeHInfoType_StrStartConst uint8 pointer0Full
SizeUint320Full
Rte_ModeType_StaMd_Mode

RTE_MODE_StaMd_Mode_DISABLE

RTE_MODE_StaMd_Mode_OFF

RTE_MODE_StaMd_Mode_OPERATE

RTE_MODE_StaMd_Mode_WARMINIT

RTE_TRANSITION_StaMd_Mode

N/AN/AN/A

Constant Data Dictionary

Calibration Constants

Constant Name
k_StaMdsSysCDiag_Cnt_str

Program(fixed) Constants

Embedded Constants

Local

Constant NameResolutionUnitsValue
D_STATELKPVCTRS_CNT_U161Counts16
D_STATELKPSTATES_CNT_U161Counts4
D_TVBITF_CNT_U161Counts0x01
D_TVBITC_CNT_U161Counts0x02
D_TVBITM_CNT_U161Counts0x04
D_TVBITA_CNT_U161Counts0x08
D_CLOSECHECKVALUE_CNT_U321Counts0 x00FF00FF
D_CLOSECHECKGARBAGE_CNT_U321Counts0x5555AAAA

Global

Constant Name
*D_STAMD_DIAGMGR_CLIENTSERVER_CALL
*D_TYPEHDATASIZE_CNT_U16
*D_DIAGMGR_SHUTDOWN_TASK
*BC_STAMD_TODSTEADYSTATE
*BC_STAMD_TOD2MSTOGGLE
*BC_STAMD_SYSCHKINCOREAPP

Note: * Values of these Global data constants tend to change based on project configuration. Check Project configuration files under UTP/Contract folder

Module specific Lookup Tables Constants

Constant NameResolutionValueSoftware Segment
Rte_ModeType_StaMd_Mode t_StateLkpTbl_Cnt_u8 [D_STATELKPSTATES_CNT_U16] [D_STATELKPVCTRS_CNT_U16]N/A

{ {RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_ DISABLE,

RTE_MODE_StaMd_Mode_ DISABLE,

RTE_MODE_StaMd_Mode_ WARMINIT,

RTE_MODE_StaMd_Mode_ DISABLE },

{RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_OFF,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_WARMINIT},

{RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE},

{RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_WARMINIT,

RTE_MODE_StaMd_Mode_DISABLE,

RTE_MODE_StaMd_Mode_OPERATE,

RTE_MODE_StaMd_Mode_DISABLE}

}

CONST_UNSPECIFIED
T_CurrentSystemState_Ptr_enum[ *SIZE]N/ARefer *AP_STAMD_CONST
T_TypeHInfo_Cnt_Str[ *SIZE]TypeHInfoType_StrRefer *AP_STAMD_CONST
T_WarmInitMilestoneRqst_Ptr_enum[*SIZE]N/ARefer *AP_STAMD_CONST

Note: The entries in the state lookup table rely on the fact that generated values for the system state are maintained. If the generated values are changed then the entries have to re arranged.

Note: * SIZE for above tables varies across projects.Check Project configuration files for size and elements of tables..

Note: Refer * : Refer to States_And_Modes_GeneratedCfg_MDD

Functions/Macros used by the Sub-Modules

Library Functions / Macros

The library functions / Macros that are called by the various sub modules are identified below,

Data Hiding Functions

None

Global Functions/Macros Defined by this Module

Process WarmInit Milestone Complete

Function NameMilestoneRqst_WarmInitMilestoneCompleteTypeMinMax
Arguments PasseduserStaMd_Users031
Return ValueNone

Description

Process WarmInit Milestone Not Complete

Function NameMilestoneRqst_WarmInitMilestoneNotCompleteTypeMinMax
Arguments PasseduserStaMd_Users031
Return ValueNone

Description

States and Modes ECU Reset

Function NameStaMd_SCom_EcuResetTypeMinMax
Arguments Passednone
Return ValueNone

Description

EcuResetActive_Cnt_M_lgc = TRUE

States and Modes Transition Function

Function NameStaMd_Trns1TypeMinMax
Arguments Passednone
Return ValueNone

Description

WriteTypeH()

#if(D_STAMD_DIAGMGR_CLIENTSERVER_CALL == STD_ON)

Rte_Call_DiagMgr_StaCtrl_Shutdown();

#else

ActivateTask(D_DIAGMGR_SHUTDOWN_TASK);

#endif

NVMWRITEALLFUNC()

FinalNvMWriteInProgress_Cnt_M_lgc = TRUE

Note: D_STAMD_DIAGMGR_CLIENTSERVER_CALL is generated as STD_ON or STD_OFF based on the configuration of the program.

States and Modes Initialization

Function NameStaMd_Init1TypeMinMax
Arguments Passednone
Return ValueNone

Description

States and Modes Periodic

Function NameStaMd_Per1TypeMinMax
Arguments Passednone
Return ValueNone

Description

System State Check

Function NameSystemStateCheckTypeMinMax
Arguments PassedFTermActive_Cnt_T_lgcbooleanFALSETRUE
CTermActive_Cnt_T_lgcbooleanFALSETRUE
ATermActive_Cnt_T_lgcbooleanFALSETRUE
RampStatusCmp_Cnt_T_lgcbooleanFALSETRUE
CtrldDmpStsCmp_Cnt_T_lgcbooleanFALSETRUE
TMFTestComplete_Cnt_T_lgcbooleanFALSETRUE
SysCFltCntr_Ptr_T_u16uint16 *0255
Return ValueFaultStatus_Cnt_T_enumNxtrDiagMgrStatus

NTC_STATUS_PASSED

NTC_STATUS_FAILED

NTC_STATUS_PREPASSED

NTC_STATUS_PREFAILED

Description

Local Functions/Macros Used by this MDD only

Macro Function #1

SetBits_m(var, mask) : var = var | mask

Macro Function #2

ClrBits_m(var, mask) : var = var & mask

Local Function #1

Function NameBldTranVctrTypeMinMax
Arguments PassedSysState_Cnt_T_EnumRte_ModeType_StaMd_Mode

RTE_MODE_StaMd_Mode_DISABLE

RTE_MODE_StaMd_Mode_OFF

RTE_MODE_StaMd_Mode_OPERATE

RTE_MODE_StaMd_Mode_WARMINIT

RTE_TRANSITION_StaMd_Mode

FTermActive_Cnt_T_lgcbooleanFALSETRUE
CTermActive_Cnt_T_lgcbooleanFALSETRUE
ATermActive_Cnt_T_lgcbooleanFALSETRUE
RampStatusCmp_Cnt_T_lgcbooleanFALSETRUE
CtrldDmpStsCmp_Cnt_T_lgcbooleanFALSETRUE
Return ValueTransVec_Cnt_T_u8uint8FULLFULL

Design Rationale

NvM_GetErrorStatus has been used instead of an RTE_Call_GetErrorStatus in order to specify the blockID and also to prevent the integrator map it to a wrong port interface.

Description

Local Function #2

Function NameReadTypeHTypeMinMax
Arguments PassedNone
Return Valuenone

Design Rationale

ReadTypeH functions call has been added to this module although the FDD doesn’t call them out as this module performs the system NvH memory read after system power up.

Description

Local Function #3

Function NameWriteTypeHTypeMinMax
Arguments Passednone
Return Valuenone

Design Rationale

WriteTypeH functions call has been added to this module although the FDD doesn’t call them out as this module performs the system NvH memory write before system shutdown.

Description

Local Function #4

Function NameCheckWarmInitCompleteTypeMinMax
Arguments PassedNone
Return ValueWarmInitMilestoneComp_Cnt_T_lgcBooleanFALSETRUE

Description


Software Module Implementation

Initial Data Values

DataValue
CTerm_Cnt_lgcD_FALSE_CNT_LGC
ATerm_Cnt_lgcD_TRUE_CNT_LGC
FTerm_Cnt_lgcD_FALSE_CNT_LGC

Initialization Functions

Init:

Periodic Functions

Fault Recovery Functions

None

Shutdown Functions

None

Interrupt Functions

None

Serial Communication Functions

Execution Requirements

Execution Sequence of the Module

_Init1 needs to RUN prior to any function that requires the use of TypeH data.Execution Rates for sub-modules called by the Scheduler

Function NameCalling FrequencySystem State(s) in which the function is called

Execution Requirements for Serial Communication Functions

Function NameSub-Module called by (Serial Comm Function Name)


Memory Map Definition Requirements

Sub Modules (Functions)

This table identifies the software segments for functions identified in this module.

Name of Sub ModuleSoftware Segment

Global and Local Functions

This table identifies the software segments for global and local functions identified in this module.

Name of Sub ModuleSoftware Segment
BldTranVctrRTE_AP_STAMD_APPL_CODE
MilestoneRqst_WarmInitMilestoneCompleteRTE_AP_STAMD_APPL_CODE
MilestoneRqst_WarmInitMilestoneNotCompleteRTE_AP_STAMD_APPL_CODE
ReadTypeHRTE_AP_STAMD_APPL_CODE
WriteTypeHRTE_AP_STAMD_APPL_CODE
CheckWarmInitCompleteRTE_AP_STAMD_APPL_CODE
SystemStateCheckRTE_AP_STAMD_APPL_CODE
StaMd_SCom_EcuResetRTE_AP_STAMD_APPL_CODE
StaMd_Trns1RTE_AP_STAMD_APPL_CODE
StaMd_Per1RTE_AP_STAMD_APPL_CODE
StaMd_Init1RTE_AP_STAMD_APPL_CODE


Known Issues / Limitations With Design

  1. .FDD does not currently support “Transition” state required for RTE runnables triggered on state transitions. Current design simply does nothing if in “Transition” state.

  2. FDD requirement state that an off state milestone is considered as complete when all the NVM writes are complete. This milestone is currently performed internally by querying the NVM write status in this module.

  3. FDD calls out for the F Term input to this module as a Boolean type diagnostic flag that is used to indicate a fault requesting removal of assist and currently there is no requirement for a component to send out this flag(according to FDD data dictionary version 86 dated 16th Mar 2012). However, it has been implemented in Diagnostic manager version FDD37B_001.6


Revision Control Log

Item #Rev #Change DescriptionDateAuthor Initials
11Initial EA3.0 version.11-Apr-11LWW
22Updated range errors found during UTP13-Apr-11LWW
33Added RampStatusCmp_Cnt_T_lgc05-Jan-12M. Story
44Updated for issues found at Unit Test30-Jan-12M. Story
55Updates to meet FDD 10C v00620-Mar-12VK
66Updates to fix anomaly 314309-Apr-12VK
77Added SCom function and logic to perform ECU Reset26-Apr-12LWW
88Updated to fix Anom 3158 for LookUpTable7-May-12NRAR
99Added EEPROM Failed to Close check27-Jul-12OT
1010Changed write complete check on Close Check diagnostic03-Aug-12LWW
1111Added checkpoints, removed call to end operation cycle, added a MemMap section for const table21-Sep-12LWW
1212Updated to the latest src(v16)15-Feb-13VK
1313Moved state transition complete logic ahead of the switch case statement to always be performed05-Jun-13KJS
1414Applied final changes to A5108 correction in Per105-Jun-13KJS
1515Changes made to MDD to be more generic for all projects18-June-13NRAR
1616MDD version updated to match synergy version27-June-13NRAR
1717Fixed anomaly 5205, added logic to force TOD low in toggle mode during powerdown.27-June-13LWW
Last modified October 12, 2025: Initial commit (0347a62)