DiagcMgr_MDD

Module Design Document

For

Diagnostic Manager

VERSION: 11.0

DATE: 14-DEC-2017

Prepared By:

Shruthi Raghavan

Location: The official version of this document is stored in the Nexteer Configuration Management System.

Revision History

DescriptionAuthorVersionDate
Initial VersionSB1.023-Apr-2015
Added to Design Limitations sectionKMC2.003-Jun-2015
ES101A_DiagcMgr_Design version 2 implementationSB3.011-Mar-2016
ES101A_DiagcMgr_Design version 3 implementationSB4.019-Apr-2016
ES101A_DiagcMgr_Design version 4 implementationSB5.022-Jun-2016
Added DETs to “SetNtcStsCore_Oper” server runnablesSB6.026-Sep-2016
Updated to fix anomalies EA4#8118 and EA4#8115SB7.002-Dec-2016
Updated the graphical representation. Added server runnables CnvSnpshtData_*, noted design limitations and design rationales and added local functionsSR8.021-Apr-2017
Updated Unit Test considerations as per EA4#9649SR9.029-Jun-2017
Updated Unit Test considerations for new process to handle configuration parameters for PIL testing. Also updated design limitations per latest design baseline.SR10.026-Sep-2017
Removed Static analysis explanation from DiagcMgr PwrDwn function’s rationale because it is no longer applicable. Also removed design limitation that was corrected in the current design version (5.3.0)SR11.014-Dec-2017

Table of Contents

1 Abbrevations And Acronyms 6

2 References 7

3 DiagcMgr & High-Level Description 8

4 Design details of software module 9

Graphical representation of Diagcmgr 9

4.1 9

4.2 Data Flow Diagram 9

4.2.1 Module level DFD 9

4.2.2 Sub-Module level DFD 9

4.3 COMPONENT FLOW DIAGRAM 9

5 Variable Data Dictionary 10

5.1 User defined typedef definition/declaration 10

5.2 Variable definition for enumerated types 10

5.3 Global Variable definition 10

6 Constant Data Dictionary 11

6.1 Program(fixed) Constants 11

6.1.1 Embedded Constants 11

6.1.1.1 Local 11

6.1.1.2 Global 11

Module specific Lookup Tables Constants 11

6.1.2 11

7 Software Module Implementation 12

7.1 Sub-Module Functions 12

7.1.1 Initialization Functions 12

7.1.2 PERIODIC FUNCTIONS 12

7.1.2.1 Per: diagcmgrPer1 12

7.1.2.1.1 Design Rationale 12

7.1.2.2 Per: diagcmgrPer2 12

7.1.2.2.1 Design Rationale 12

7.1.3 Interrupt Functions 12

Server Runnable Functions 13

7.1.4 13

7.1.4.1 ClrAllDiagc_Oper 13

7.1.4.2 ClrSnpshtData_Oper 13

7.1.4.2.1 Design Rationale 13

7.1.4.3 DiagcMgrIninCore_Oper 13

7.1.4.4 DiagcMgrPwrDwN 14

7.1.4.4.1 Design Rationale 14

7.1.4.5 UpdDtcEnaCdn 14

7.1.4.5.1 Design Rationale 15

7.1.4.6 GetNtcActvCORE_Oper 15

7.1.4.7 GetNtcQlfrStsCORE_Oper 15

7.1.4.8 GetNtcStsCORE_Oper 15

7.1.4.9 ReadNtcFltAry_Oper 15

7.1.4.9.1 Design Rationale 15

7.1.4.10 ReadNtcInfoAndDebCntr_Oper 15

7.1.4.10.1 Design Rationale 15

7.1.4.11 ReadSnpshtData_Oper 15

7.1.4.12 CnvSnpshtData_f32_Oper 15

7.1.4.13 CnvSnpshtData_logl_Oper 15

7.1.4.14 CnvSnpshtData_s08_Oper 15

7.1.4.15 CnvSnpshtData_s16_Oper 15

7.1.4.16 CnvSnpshtData_s32_Oper 15

7.1.4.17 CnvSnpshtData_u08_Oper 16

7.1.4.18 CnvSnpshtData_u16_Oper 16

7.1.4.19 SetNtcStsCore_Oper 16

7.1.4.19.1 Design Rationale 16

7.1.4.20 ClrLtchCntrData_Oper 16

7.1.4.21 ReadLtchCntrData_Oper 16

7.1.4.22 RestoreDiagcMgrLtchCntrAryDft 17

7.1.4.23 RestoreNtcFltAryDft 17

7.1.4.24 RestoreSnpshtAryDft 17

7.1.5 Local Function/Macro Definitions 17

7.1.5.1 Local Function #1 17

7.1.5.1.1 Description 17

7.1.5.2 Local Function #2 17

7.1.5.3 Description 17

7.1.5.3.1 Design Rationale 18

7.1.5.4 Local Function #3 18

7.1.5.4.1 Design Rationale 18

7.1.5.5 Local Function #4 18

7.1.5.5.1 Design Rationale 18

7.1.5.6 Local Function #5 18

7.1.5.6.1 Design Rationale 18

7.1.5.7 Local Function #6 18

7.1.5.7.1 Design Rationale 19

7.1.5.8 Local Function #7 19

7.1.5.8.1 Design Rationale 19

7.1.5.9 Local Function #8 19

7.1.5.9.1 Design Rationale 19

7.1.6 GLObAL Function/Macro Definitions 19

7.1.6.1 GLObAL Function #1 19

7.1.6.1.1 Description 20

GLObAL Function #2 20

7.1.6.2 20

7.1.6.2.1 Description 20

GLObAL Function #3 20

7.1.6.3 20

7.1.6.3.1 Description 20

GLObAL Function #4 20

7.1.6.4 20

7.1.6.4.1 Description 20

GLObAL Function #5 20

7.1.6.5 20

7.1.6.5.1 Description 20

7.1.6.6 GLObAL Function #6 20

7.1.6.6.1 Description 20

7.1.7 TRANSIENT FUNCTIONS 21

8 Known Limitations With Design 22

9 UNIT TEST CONSIDERATION 23

10 Appendix 24

Abbrevations And Acronyms

AbbreviationDescription
DFDDesign functional diagram
MDDModule design Document
<ADD more to the table if applicable>

References

This section lists the title & version of all the documents that are referred for development of this document

#TitleVersion
1MDD Guideline EA41.02
2EA4 Software Naming Conventions1.02
3Software Design and Coding standards2.01
4ES101A_DiagcMgr_DesignSee Synergy Subproject version

DiagcMgr & High-Level Description

This function is responsible for handling all the NTCs that are used by different FDDs. The Diagnostic Manager sets the Ntc called by any component and requests the system to either ramp down to Disable or take no action. It also handles latched Ntcs & owns the associated NTCNR_0x0A Ntc.

Design details of software module

Graphical representation of Diagcmgr

Data Flow Diagram

Module level DFD

N/A

Sub-Module level DFD

N/A

COMPONENT FLOW DIAGRAM

N/A

Variable Data Dictionary

User defined typedef definition/declaration

<This section documents any user types uniquely used for the module.>

Typedef NameElement NameUser Defined Type

Legal Range

(min)

Legal Range

(max)

NtcMapRec1ApplIdxUint8010
NtcInfoIdxuint80255
DebCntrIdxUint80255
NtcInfoRec4NtcStInfoUint80255
StsUint80255
AgiCntrUint80255
Ary1D_NtcInfoRec4NtcInfoRec4[]1
Ary1D_NtcInfoRec4_DiagcMgrProxyApplX3NtcInfoRec4[]1
Ary1D_s16_DiagcMgrProxyApplX3Sint16[]2

1 – Array of NtcInfoRec4

2 – Array of sint16

3 – One for each Application configured with NTCs
For example – Application 6 and 10 have NTCs then - Ary1D_NtcInfoRec4_DiagcMgrProxyAppl6, Ary1D_NtcInfoRec4_DiagcMgrProxyAppl10, Ary1D_s16_DiagcMgrProxyAppl6, Ary1D_s16_DiagcMgrProxyAppl10 would exist with configured sizes.

Variable definition for enumerated types

Enum NameElement NameValue
See DataDict.m file

Global Variable definition

NameType
SnpshtDataAry_M[8]1SnpshtDataRec2
NameElement NameTypeMinMax
SnpshtDataRec2SpclSnpshtData0uint3204294967295
SpclSnpshtData1uint3204294967295
SpclSnpshtData2uint3204294967295
MicroDiagcDatauint3204294967295
IgnCntruint3204294967295
HwTqsint16-1010
MotTqCmdMrfScadsint16-8.88.8
BrdgVltguint16626.5
EcuTFildsint16-50150
NtcNrNtcNr1NTCNR_0X001NTCNR_0X1FF
NtcStInfouint80255
SysStSysSt1SYSST_DISYSST_WRMININ

Notes:

1- This variable is mapped to MemMap – “GlobalShared_START_SEC_VAR_NOINIT_UNSPECIFIED”

Constant Data Dictionary

Program(fixed) Constants

Embedded Constants

Local

Constant NameResolutionUnitsValue
See DataDict.m fileN/AN/AN/A
IMDTSHTDWNFLT_CNT_U161Counts5U
CTRLDSHTDWNFLT_CNT_U161Counts6U
INFOONLYFLT_CNT_U161Counts7U
TOTNROFDTC_CNT_U0841CountsConfigured
PimSnpshtDataAry_recN/AN/ASnpshtDataAry_M
D_MAXNUMBEROFNTCS_CNT_U161CNT512U

4 - Number of DTCs for that program.

Global

Constant NameValue
See DataDict.m fileN/A

Module specific Lookup Tables Constants

Constant NameResolutionValueSoftware Segment
DIAGCMGRNTCMAP_CNT_REC [512]NtcMapRec1ConfiguredDiagcMgr_START_SEC_CODE
NTCNRARYAPPLX_CNT_U16 [Configured]51ConfiguredDiagcMgr_START_SEC_CODE
DTCENAMASK [Configured]61ConfiguredDiagcMgr_START_SEC_CODE
DEMDTCEVEIDMAP [Configured]61ConfiguredDiagcMgr_START_SEC_CODE
FLTRESPRAMPTBL_ULS_F32 [5]Single Precision Float{0.1F,0.125F,0.2F,1.0F,10.0F}DiagcMgr_START_SEC_CODE
DIAGCMGRNTCPPTYARY_CNT_U08[512]1ConfiguredDiagcMgr_START_SEC_CODE
DIAGCMGRLISTOFLTCHGNTC_CNT_ENUM[207]1ConfiguredDiagcMgr_START_SEC_CODE
DIAGCMGRNTCLTCHCNTRTHD_CNT_U08[207]1ConfiguredDiagcMgr_START_SEC_CODE

5 - One for each Application configured with NTCs.

6 - Variable Length (TOTNROFDTC_CNT_U08 + 1) for each build/program depending on the Number of DTCs

for that program.

7 – The length of this array depends on MaximumNumberOfLatching Ntcs the software is designed to handle – currently it is 20.

Software Module Implementation

Sub-Module Functions

None

Initialization Functions

None

PERIODIC FUNCTIONS

Per: diagcmgrPer1

This function exists in “DiagcMgr.c” file. Refer Simulink model for details

Design Rationale

“Rte_Call_GetDiagcDataApplX_Oper” for each application(X) is called based on conditional compile using constants generated in DiagcMgr_Cfg.h

Per: diagcmgrPer2

This function exists in “DiagcMgr.c” file. Refer Simulink model for details

Design Rationale

“Rte_Call_GetDiagcDataApplX_Oper” for each application(X) is called based on conditional compile using constants generated in DiagcMgr_Cfg.h

Interrupt Functions

None

Server Runnable Functions

ClrAllDiagc_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

ClrSnpshtData_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

Design Rationale

“NvMConf_NvMBlockDescriptor_Rte_NvmBlock_DiagcMgr_SnpshtDataAry” is used instead of BlockID Number in “NvMProxy_SetRamBlockStatus” call so that the Integrator doesn’t have to configure the DiagcMgr to know about the Nvm block Ids.

DiagcMgrIninCore_Oper

See DataDict.m file and modelThis function exists in “DiagcMgr.c” file.

DiagcMgrPwrDwN

See DataDict.m file and model

This function exists in “DiagcMgrNonRte.c” file.

Design Rationale

“GetNtcInfoApplX_Oper” for each application(X) is called based on conditional compile using constants generated in DiagcMgr_Cfg.h.

“NvMConf_NvMBlockDescriptor_Rte_NvmBlock_DiagcMgr_DiagcMgrNtcFltAry” is used instead of BlockID Number in “NvMProxy_SetRamBlockStatus” call so that the Integrator doesn’t have to configure the DiagcMgr to know about the Nvm block Ids.

UpdDtcEnaCdn

See DataDict.m file and model. This function exists in “DiagcMgrNonRte.c” file.

Design Rationale

“GetNtcInfoApplX_Oper” for each application(X) is called based on conditional compile using constants generated in DiagcMgr_Cfg.h.

GetNtcActvCORE_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

GetNtcQlfrStsCORE_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

GetNtcStsCORE_Oper

See DataDict.m file and model

This function exists in “DiagcMgr.c” file.

ReadNtcFltAry_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

Design Rationale

“GetNtcInfoApplX_Oper” for each application(X) is called based on conditional compile using constants generated in DiagcMgr_Cfg.h
QAC flags MISRA Rule 9.1 for HistNtcFltAry_T_rec being used to write to PIM before initialization but it isn’t actually an issue because the logic only uses the elements of the array that have been written to.

ReadNtcInfoAndDebCntr_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

Design Rationale

“GetNtcDebCntrApplX” and “GetNtcInfoApplX_Oper” for each application(X) is called based on conditional compile using constants generated in DiagcMgr_Cfg.h

ReadSnpshtData_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

CnvSnpshtData_f32_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

CnvSnpshtData_logl_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

CnvSnpshtData_s08_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

CnvSnpshtData_s16_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

CnvSnpshtData_s32_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

CnvSnpshtData_u08_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

CnvSnpshtData_u16_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

SetNtcStsCore_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

Design Rationale

The array DTCENAMASK is indexed by DtctempIdx_Cnt_T_u08 which corresponds to the lower 8-bits of the FltRespTbl. So the index can range from [0,255].

However the calibration PrmDiagcMgrFltResp_u16 is checked (using DET) at init functions of each ApplProxy such that the value of the lower 8-bits of each of its elements are in the range of [0,sizeof(DTCENAMASK)]. So there will never be an out-of-bounds array access scenario on the DTCENAMASK array.

Note: Lower 8-bits corresponds to FLTRESPDTCIDX_CNT_U16 mask being 0xFF.

ClrLtchCntrData_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

ReadLtchCntrData_Oper

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

RestoreDiagcMgrLtchCntrAryDft

See DataDict.m file and model. This function exists in “DiagcMgr.c” file.

RestoreNtcFltAryDft

See DataDict.m file and model. This function exists in “DiagcMgrNonRte.c” file.

RestoreSnpshtAryDft

See DataDict.m file and model. This function exists in “DiagcMgrNonRte.c” file.

Local Function/Macro Definitions

Local Function #1

Function NameProcRampRespTypeMinMax
Arguments PassedNtcNr_Cnt_T_u16uint160511
DiagcData_T_recDiagcDataRec2
DiagcData_T_rec .DiagcSts0255
DiagcData_T_rec .ActvRampRate0.1500
DiagcData_T_rec ActvMotTqCmdSca01
ProxySetNtcData_T_recDiagcDataRec2
ProxySetNtcData_T_rec .DiagcSts0255
ProxySetNtcData_T_rec .ActvRampRate0.1500
ProxySetNtcData_T_rec ActvMotTqCmdSca01
Return ValueN/A

Description

Refer ‘ProcessRampResponse and DiagcSts’ block in Simulink model for DiagcMgr

This function exists in “DiagcMgr.c” file.

Local Function #2

Function NameUpdSnpshtDataTypeMinMax
Arguments PassedSpclSnpshtData0_Cnt_T_u32uint3204294967295
SpclSnpshtData1_Cnt_T_u32uint3204294967295
SpclSnpshtData2_Cnt_T_u32uint3204294967295
McuDiagcSpplData_Cnt_T_u32uint3204294967295
IgnCntr_Cnt_T_u32uint3204294967295
HwTq_Cnt_T_s5p10sint16-1010
MotTqCmdMrfScad_Cnt_T_s5p10sint16-8.88.8
BrdgVltg_Cnt_T_u6p10uint16626.5
EcuTFild_Cnt_T_s8p7sint16-50150
NtcNr_Cnt_T_u16NtcNr1NTCNR_0X001NTCNR_0X1FF
NtcStInfo_Cnt_T_u08uint80255
SysSt_Cnt_T_enumSysSt1SYSST_DISYSST_WRMININ
Return ValueN/A

Description

Refer ‘UpdSnpshtData’ block in Simulink model for DiagcMgr. This function exists in “DiagcMgr.c” file

Design Rationale

“NvMConf_NvMBlockDescriptor_Rte_NvmBlock_DiagcMgr_SnpshtDataAry” is used instead of BlockID Number in “NvMProxy_SetRamBlockStatus” call so that the Integrator doesn’t have to configure the DiagcMgr to know about the Nvm block Ids.

Local Function #3

Function NameGetNtcInfoApplXTypeMinMax
Arguments PassedApplIdx_Cnt_T_u08uint80255
NtcInfoIdx_Cnt_T_u08uint80255
*NtcInfoPtr_Cnt_T_recNtcInfoRec4See DT defSee DT def
Return ValueApplIDValid_Cnt_T_loglbooleanFALSETRUE

Design Rationale

The function is a switch case that calls the GetNtcInfo of correct application to modify the value of NtcInfo at the address passed as an argument. It should be used in Non-RTE context only.

Local Function #4

Function NameGetNtcInfoApplXRteTypeMinMax
Arguments PassedApplIdx_Cnt_T_u08uint80255
NtcInfoIdx_Cnt_T_u08uint80255
*NtcInfoPtr_Cnt_T_recNtcInfoRec4See DT defSee DT def
Return ValueApplIDValid_Cnt_T_loglbooleanFALSETRUE

Design Rationale

The function is a switch case that calls the GetNtcInfo of correct application to modify the value of NtcInfo at the address passed as an argument. It should be used in RTE context only.

Local Function #5

Function NameUpdDtcStsTypeMinMax
Arguments PassedNtcMapIdx_Cnt_T_u16Uint160511
NtcInfoRecSts_Cnt_T_u08uint80255
DtctempIdx_Cnt_T_u08Uint80TOTNROFDTC_CNT_U08?
* DtcIdxCurrSts_Cnt_T_u08Uint0255
Return ValueNoneN/AN/AN/A

? – This is a configurable constant.

Design Rationale

Implement "Update DTC Status" subblock from Per2 in the FDD. Note that it is called inside a while loop. Created for complexity metrics compliance with design and coding standards.

Local Function #6

Function NameProcNtcStsPassdTypeMinMax
Arguments PassedNtcNr_Cnt_T_enumNtcNr11511
*NtcInfo_Cnt_T_recNtcInfoRec4See DT defSee DT def
*NtcInfoDebCntr_Cnt_T_s16Sint16-3276832767
Return ValueNoneN/AN/AN/A

Design Rationale

Implements 'NTCSTS_PASSD' inside SetNtcStsCore block of the DiagcMgr simulink model in the FDD. Created to reduce the cyclomatic complexity of SetNtcStsCore_Oper() server runnable.

Local Function #7

Function NameProcNtcStsPrePassdTypeMinMax
Arguments PassedNtcNr_Cnt_T_enumNtcNr11511
DebStep_Cnt_T_u16Uint16065535
*NtcInfo_Cnt_T_recNtcInfoRec4See DT defSee DT def
*NtcInfoDebCntr_Cnt_T_s16Sint16-3276832767
Return ValueNoneN/AN/AN/A

Design Rationale

Implements 'NTCSTS_PREPASSD' inside SetNtcStsCore block of the DiagcMgr simulink model in the FDD. Created to reduce the cyclomatic complexity of SetNtcStsCore_Oper() server runnable.

Local Function #8

Function NameChkAgiCntrTypeMinMax
Arguments PassedAgiCntr_Cnt_T_u08uint80255
Sts_Cnt_T_u08uint80255
NtcMapIdx_Cnt_T_u16uint160511
*NtcFltAryIdx_Cnt_T_u16uint16020
*HistFltAryIdx_Cnt_T_u16uint16020
HistNtcFltAry_T_recNtcFltInfoRec2--
HistNtcFltAry_T_rec.NtcNrNtcNrWithResd10511
HistNtcFltAry_T_rec.AgiCntruint80255
HistNtcFltAry_T_rec.Stsuint80255
Return ValueNoneN/AN/AN/A

Design Rationale

Implements the 'Check Aging Counter' in DiagcMgrPwr block of DiagcMgr simulink model in FDD. Created to reduce the static path count of DiagMgrPwrDwn() server runnable.

GLObAL Function/Macro Definitions

All the global functions described below are declared in DiagcMgr_private.h and are intended to be used only by DiagcMgr and the DiagcMgrProxyApplX components. These functions exist in “DiagcMgr_private.c” file.

GLObAL Function #1

Function NameProcProxyRampRespAndDiagcStsTypeMinMax
Arguments PassedNtcNr_Cnt_T_u16uint160511
ProxyDiagcData_T_recDiagcDataRec2
ProxyDiagcData_T_rec .DiagcSts0255
ProxyDiagcData_T_rec .ActvRampRate0.1500
ProxyDiagcData_T_rec ActvMotTqCmdSca01
Return ValueN/A

Description

Refer ‘ProcessRampResponse and DiagcSts’ block in Simulink path ” ES101A_DiagcMgrProxyX/DiagcMgrProxyApplX/DiagcMgrProxyApplXPer1/Update the DiagcSts/For Number of NTCs/Update DiagcSts and Ramp Response/Update Latest Values/ProcessRampResponse”

GLObAL Function #2

Function NameDiagcMgrSetBits_u16TypeMinMax
Arguments PassedDatauint160511
BitMaskUint160511
Return ValueDataUint160511

Description

This function will set bits based on the passed BitMask for a uint16 datatype.

GLObAL Function #3

Function NameDiagcMgrSetBits_u08TypeMinMax
Arguments PassedDataUint80255
BitMaskUint80255
Return ValueDataUint80255

Description

This function will set bits based on the passed BitMask for a uint8 datatype

GLObAL Function #4

Function NameDiagcMgrClrBits_u08TypeMinMax
Arguments PassedDataUint80255
BitMaskUint80255
Return ValueDataUint80255

Description

This function will clear bits based on the passed BitMask for a uint8 datatype

GLObAL Function #5

Function NameDiagcMgrReadBit_u08TypeMinMax
Arguments PassedDataUint80255
BitMaskUint80255
Return ValueDataUint80255

Description

This function will return TRUE if any bits are set based on the passed BitMask for a uint8 datatype

GLObAL Function #6

Function NameDiagcMgrReadBit_u16TypeMinMax
Arguments PassedDatauint160511
BitMaskUint160511
Return ValueDataUint160511

Description

This function will return TRUE if any bits are set based on the passed BitMask for a uint16 datatype

TRANSIENT FUNCTIONS

None

Known Limitations With Design

  1. Per the FDD author, safety critical data is protected in an exclusive area but there is a possibility of corruption of non critical data.

  2. Refer to Design Rationale section on the top level of DiagcMgr Simulink model.

  3. GetErrorStatus() for NVM block isnt used in the FDD because

    1. Default block is used that resets appln crc to zero, so the latch counter array will get reset as it will enter the condition swapplcrc!=nvmapplcrc

    2. Above point assumed that a valid swapplncrc will never be zero

    3. It is known and noted that if there is an nvm read problem while ntcs are set we clear the ntcs as well

  4. This design does not support having multiple Flash application CRC regions being allowed to set latching ntcs [Note: As of today, no programs have more than 1 Flash application crc region]

  5. DiagcMgr_Cfg.c and DiagcMgr_Cfg.h files define the NTC arrays as uint16 (base type of NtcNrwithResd1) arrays instead of the NtcNrResd1 type arrays because they do not have visibility to Rte types. [Not actually a design limitation : noted here for future reference]

  6. In v3.0.0 of the implementation it was found that the DiagcMgr_Cfg_Private.h file was being included in the integration project’s Rte_UserTypes.h file because of the need for visibility to the Ary Types that are defined as typedefs in there. At that point it was decided that it was better to rename it as DiagcMgr_Cfg.h file instead. [Not actually a design limitation : noted here for future reference]

UNIT TEST CONSIDERATION

  1. For SetNtcStsCore_Oper: The input value of the lower 8 bits of each element of PrmDiagcMgrFltResp_u16 calibration while unit testing this runnable should be such that its maximum is [sizeof(DTCENAMASK)-1] and minimum is 0.

Appendix

None

Last modified October 12, 2025: Initial commit (af72ad2)