When 50+ ECU variants share a BSW stack, duplicating full DaVinci configurations per variant is unmaintainable. Named parameter profiles provide a semantic abstraction: each profile is a named set of variant-independent parameter values that any variant can reference.
# OEM configuration layer: profiles hide DaVinci parameter details
# behind semantic names shared across all variants
BSW_PROFILES = {
"CAN_500K_8MHZ": {
"CanBaudRate": 500,
"CanOscFreq": 8,
"CanSJW": 1,
"CanPropSeg": 4,
"CanSeg1": 7,
"CanSeg2": 2,
},
"NVM_SAFE_STORAGE": {
"NvMBlockCrcType": "NVM_CRC32",
"NvMBlockManagementType": "NVM_BLOCK_REDUNDANT",
"NvMUseCrc": True,
"NvMDevErrorDetect": False,
},
"DCM_EXTENDED_SESSION": {
"DcmDslProtocolS3Server": 5000,
"DcmTimStrP2ServerMax": 50,
"DcmTimStrP2StarServerMax": 5000,
},
}
# Usage in variant definition:
VARIANT_ECU_A = {
"CAN_PROFILE": "CAN_500K_8MHZ",
"NVM_PROFILE": "NVM_SAFE_STORAGE",
"ENABLED_PDUS": ["EngineStatus", "WheelSpeed", "BrakeStatus"],
}