import openpyxl
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
def tagname(Tag):
return '{http://autosar.org/schema/r4.0}' + Tag
def pretty_arxml(element, indent, newline, level = 0):
if element:
if element.text == None or element.text.isspace():
element.text = newline + indent * (level + 1)
else:
element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * (level + 1)
temp = list(element)
for subelement in temp:
if temp.index(subelement) < (len(temp) - 1):
subelement.tail = newline + indent * (level + 1)
else:
subelement.tail = newline + indent * level
pretty_arxml(subelement, indent, newline, level = level + 1)
class DcmModule_config():
def __init__(self,parent,number,status,length,level):
self.parent = parent
self.number = number
self.status = status
self.length = length
self.level = level
def createDcmDspDid_DataSublement(self):
ECUC_CONTAINER = ET.SubElement(self.parent,'ECUC-CONTAINER-VALUE')
shortname = ET.SubElement(ECUC_CONTAINER,'SHORT-NAME')
shortname.text = 'DcmDspData_DID_'+self.number
definitionref = ET.SubElement(ECUC_CONTAINER,'DEFINITION-REF')
definitionref.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspData'
definitionref.attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'}
parametervalues = ET.SubElement(ECUC_CONTAINER,'PARAMETER-VALUES')
ecucnumerical = ET.SubElement(parametervalues,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_size = ET.SubElement(ecucnumerical,'DEFINITION-REF')
definitionref_size.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataSize'
definitionref_size.attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'}
value = ET.SubElement(ecucnumerical,'VALUE')
value.text = str((int(self.length))*8)
ecuctextual_type = ET.SubElement(parametervalues,'ECUC-TEXTUAL-PARAM-VALUE')
definitionref_type = ET.SubElement(ecuctextual_type,'DEFINITION-REF')
definitionref_type.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataType'
definitionref_type.attrib = {'DEST':'ECUC-ENUMERATION-PARAM-DEF'}
value_type = ET.SubElement(ecuctextual_type,'VALUE')
if int(self.length)*8 == 8:
value_type.text = 'UINT8'
else:
value_type.text = 'UINT8_N'
ecuctextual_port = ET.SubElement(parametervalues,'ECUC-TEXTUAL-PARAM-VALUE')
definitionref_port = ET.SubElement(ecuctextual_port,'DEFINITION-REF')
definitionref_port.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataUsePort'
definitionref_port.attrib = {'DEST':'ECUC-ENUMERATION-PARAM-DEF'}
value_port = ET.SubElement(ecuctextual_port,'VALUE')
value_port.text = 'USE_DATA_SENDER_RECEIVER'
ecuctextual_readfnc = ET.SubElement(parametervalues,'ECUC-TEXTUAL-PARAM-VALUE')
definitionref_readfnc = ET.SubElement(ecuctextual_readfnc,'DEFINITION-REF')
definitionref_readfnc.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataReadFnc'
definitionref_readfnc.attrib = {'DEST':'ECUC-FUNCTION-NAME-DEF'}
value_readfnc = ET.SubElement(ecuctextual_readfnc,'VALUE')
value_readfnc.text = 'DcmDspDataReadFnc_DID_'+self.number
if self.status == 'R/W':
ecuctextual_writefnc = ET.SubElement(parametervalues,'ECUC-TEXTUAL-PARAM-VALUE')
definitionref_writefnc = ET.SubElement(ecuctextual_writefnc,'DEFINITION-REF')
definitionref_writefnc.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataWriteFnc'
definitionref_writefnc.attrib = {'DEST':'ECUC-FUNCTION-NAME-DEF'}
value_writefnc = ET.SubElement(ecuctextual_writefnc,'VALUE')
value_writefnc.text = 'DcmDspDataWriteFnc_DID_'+self.number
def createDcmDspDid_InfosSublement(self):
ECUC_CONTAINER = ET.SubElement(self.parent,'ECUC-CONTAINER-VALUE')
shortname = ET.SubElement(ECUC_CONTAINER,'SHORT-NAME')
shortname.text = 'DcmDspDidInfo_DID_'+self.number
definitionref = ET.SubElement(ECUC_CONTAINER,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo'
parametervalue = ET.SubElement(ECUC_CONTAINER,'PARAMETER-VALUES')
ecucnumrical = ET.SubElement(parametervalue,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_parameter = ET.SubElement(ecucnumrical,'DEFINITION-REF',attrib = {'DEST':'ECUC-BOOLEAN-PARAM-DEF'})
definitionref_parameter.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidDynamicallyDefined'
value_parameter = ET.SubElement(ecucnumrical,'VALUE')
value_parameter.text = '0'
subcontainers = ET.SubElement(ECUC_CONTAINER,'SUB-CONTAINERS')
if self.status == 'R/W':
ecuccontainer_read = ET.SubElement(subcontainers,'ECUC-CONTAINER-VALUE')
shortname_read = ET.SubElement(ecuccontainer_read,'SHORT-NAME')
shortname_read.text = 'DcmDspDidRead_DID_'+self.number
definitionref_read = ET.SubElement(ecuccontainer_read,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref_read.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead'
referencevalues_read = ET.SubElement(ecuccontainer_read,'REFERENCE-VALUES')
ecucreferencevalue_read = ET.SubElement(referencevalues_read,'ECUC-REFERENCE-VALUE')
definitionrefsession_read = ET.SubElement(ecucreferencevalue_read,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionrefsession_read.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead/DcmDspDidReadSessionRef'
valueref_read = ET.SubElement(ecucreferencevalue_read,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_read.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/DEFAULT_SESSION'
ecucreferencevalue_readext = ET.SubElement(referencevalues_read,'ECUC-REFERENCE-VALUE')
definitionrefsession_readext = ET.SubElement(ecucreferencevalue_readext,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionrefsession_readext.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead/DcmDspDidReadSessionRef'
valueref_readext = ET.SubElement(ecucreferencevalue_readext,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_readext.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/EXTENDED_DIAGNOSTIC_SESSION'
ecuccontainer_write = ET.SubElement(subcontainers,'ECUC-CONTAINER-VALUE')
shortname_write = ET.SubElement(ecuccontainer_write,'SHORT-NAME')
shortname_write.text = 'DcmDspDidWrite_DID_'+self.number
definitionref_write = ET.SubElement(ecuccontainer_write,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref_write.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidWrite'
referencevalues_write = ET.SubElement(ecuccontainer_write,'REFERENCE-VALUES')
ecucreferencevalue_write = ET.SubElement(referencevalues_write,'ECUC-REFERENCE-VALUE')
definitionrefsession_write = ET.SubElement(ecucreferencevalue_write,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionrefsession_write.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidWrite/DcmDspDidWriteSessionRef'
valueref_write = ET.SubElement(ecucreferencevalue_write,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_write.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/DEFAULT_SESSION'
ecucreferencevalue_writext = ET.SubElement(referencevalues_write,'ECUC-REFERENCE-VALUE')
definitionrefsession_writext = ET.SubElement(ecucreferencevalue_writext,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionrefsession_writext.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidWrite/DcmDspDidWriteSessionRef'
valueref_writext = ET.SubElement(ecucreferencevalue_writext,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_writext.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/EXTENDED_DIAGNOSTIC_SESSION'
elif self.status == 'R':
ecuccontainer_read = ET.SubElement(subcontainers,'ECUC-CONTAINER-VALUE')
shortname_read = ET.SubElement(ecuccontainer_read,'SHORT-NAME')
shortname_read.text = 'DcmDspDidRead_DID_'+self.number
definitionref_read = ET.SubElement(ecuccontainer_read,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref_read.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead'
referencevalues_read = ET.SubElement(ecuccontainer_read,'REFERENCE-VALUES')
ecucreferencevalue_read = ET.SubElement(referencevalues_read,'ECUC-REFERENCE-VALUE')
definitionrefsession_read = ET.SubElement(ecucreferencevalue_read,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionrefsession_read.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead/DcmDspDidReadSessionRef'
valueref_read = ET.SubElement(ecucreferencevalue_read,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_read.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/DEFAULT_SESSION'
ecucreferencevalue_readext = ET.SubElement(referencevalues_read,'ECUC-REFERENCE-VALUE')
definitionrefsession_readext = ET.SubElement(ecucreferencevalue_readext,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionrefsession_readext.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead/DcmDspDidReadSessionRef'
valueref_readext = ET.SubElement(ecucreferencevalue_readext,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_readext.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/EXTENDED_DIAGNOSTIC_SESSION'
def createDcmDspdids_Sublement(self):
ECUC_CONTAINER = ET.SubElement(self.parent,'ECUC-CONTAINER-VALUE')
shortname = ET.SubElement(ECUC_CONTAINER,'SHORT-NAME')
shortname.text = 'DcmDspDids_DID_'+self.number
definitionref = ET.SubElement(ECUC_CONTAINER,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDid'
parametervalues = ET.SubElement(ECUC_CONTAINER,'PARAMETER-VALUES')
ecucnumerical = ET.SubElement(parametervalues,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_para = ET.SubElement(ecucnumerical,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_para.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidIdentifier'
value_para = ET.SubElement(ecucnumerical,'VALUE')
value_para.text = str(int(self.number,16))
referencevalue_infos = ET.SubElement(ECUC_CONTAINER,'REFERENCE-VALUES')
ecucreference_infos = ET.SubElement(referencevalue_infos,'ECUC-REFERENCE-VALUE')
definitionref_infos = ET.SubElement(ecucreference_infos,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_infos.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef'
value_infos = ET.SubElement(ecucreference_infos,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
value_infos.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/'+'DcmDspDidInfo_DID_'+self.number
subcontainer = ET.SubElement(ECUC_CONTAINER,'SUB-CONTAINERS')
ecuccontainer = ET.SubElement(subcontainer,'ECUC-CONTAINER-VALUE')
shortname_signal = ET.SubElement(ecuccontainer,'SHORT-NAME')
shortname_signal.text = 'DcmDspDidSignal_DID_'+self.number
definitionref_signal = ET.SubElement(ecuccontainer,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref_signal.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidSignal'
parametervalue_signal = ET.SubElement(ecuccontainer,'PARAMETER-VALUES')
ecucnumerical_signal = ET.SubElement(parametervalue_signal,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_subsignal = ET.SubElement(ecucnumerical_signal,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_subsignal.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidSignal/DcmDspDidDataPos'
value_signal = ET.SubElement(ecucnumerical_signal,'VALUE')
value_signal.text = '0'
reference_data = ET.SubElement(ecuccontainer,'REFERENCE-VALUES')
ecucreference_data = ET.SubElement(reference_data,'ECUC-REFERENCE-VALUE')
definitionref_data = ET.SubElement(ecucreference_data,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_data.text = '/AUTOSAR_Dcm/EcucModuleDefs/Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidSignal/DcmDspDidDataRef'
valueref_data = ET.SubElement(ecucreference_data,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_data.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dcm/DcmConfigSet/DcmDsp/DcmDspData_DID_'+self.number
class DemModule_Config():
def __init__(self,parent,DTCname,DTCpriority,DTC):
self.parent = parent
self.DTCname = DTCname
self.DTCpriority = DTCpriority
self.DTC = DTC
def DemComponent_config(self):
ECUC_CONTAINER = ET.SubElement(self.parent,'ECUC-CONTAINER-VALUE')
shortname = ET.SubElement(ECUC_CONTAINER,'SHORT-NAME')
shortname.text = 'DemComponent_'+ self.DTCname
definitionref = ET.SubElement(ECUC_CONTAINER,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemComponent'
parametervalue_priority = ET.SubElement(ECUC_CONTAINER,'PARAMETER-VALUES')
ecucnumerical_priority = ET.SubElement(parametervalue_priority,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_priority = ET.SubElement(ecucnumerical_priority,'DEFINITION-REF',attrib = {'DEST':'ECUC-BOOLEAN-PARAM-DEF'})
definitionref_priority.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemComponent/DemComponentIgnoresPriority'
value_priority = ET.SubElement(ecucnumerical_priority,'VALUE')
value_priority.text = 'true'
ecucnumerical_allowed = ET.SubElement(parametervalue_priority,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_value = ET.SubElement(ecucnumerical_allowed,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_value.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemComponent/DemRbComponentAllowedRecoveries'
value = ET.SubElement(ecucnumerical_allowed,'VALUE')
value.text = '5'
def DemDTCAttributes_config(self):
ECUC_CONTAINER = ET.SubElement(self.parent,'ECUC-CONTAINER-VALUE')
shortname = ET.SubElement(ECUC_CONTAINER,'SHORT-NAME')
shortname.text = 'DemDTCAttributes_'+self.DTCname
definitionref = ET.SubElement(ECUC_CONTAINER,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes'
parametervalue = ET.SubElement(ECUC_CONTAINER,'PARAMETER-VALUES')
ecucnumerical_agingallowed = ET.SubElement(parametervalue,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_agingallowed = ET.SubElement(ecucnumerical_agingallowed,'DEFINITION-REF',attrib = {'DEST':'ECUC-BOOLEAN-PARAM-DEF'})
definitionref_agingallowed.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemAgingAllowed'
value_agingallowed = ET.SubElement(ecucnumerical_agingallowed,'VALUE')
value_agingallowed.text = 'true'
ecucnumerical_counterthreshold = ET.SubElement(parametervalue,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_counterthreshold = ET.SubElement(ecucnumerical_counterthreshold,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_counterthreshold.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemAgingCycleCounterThreshold'
value_counterthreshold = ET.SubElement(ecucnumerical_counterthreshold,'VALUE')
value_counterthreshold.text = '40'
ecucnumerical_DTCpriority = ET.SubElement(parametervalue,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_DTCpriority = ET.SubElement(ecucnumerical_DTCpriority,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_DTCpriority.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemDTCPriority'
value_DTCpriority = ET.SubElement(ecucnumerical_DTCpriority,'VALUE')
value_DTCpriority.text = self.DTCpriority
ecucnumerical_significance = ET.SubElement(parametervalue,'ECUC-TEXTUAL-PARAM-VALUE')
definitionref_significance = ET.SubElement(ecucnumerical_significance,'DEFINITION-REF',attrib = {'DEST':'ECUC-ENUMERATION-PARAM-DEF'})
definitionref_significance.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemDTCSignificance'
value_significance = ET.SubElement(ecucnumerical_significance,'VALUE')
value_significance.text = 'DEM_EVENT_SIGNIFICANCE_FAULT'
ecucnumerical_nvstorage = ET.SubElement(parametervalue,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_nvstorage = ET.SubElement(ecucnumerical_nvstorage,'DEFINITION-REF',attrib = {'DEST':'ECUC-BOOLEAN-PARAM-DEF'})
definitionref_nvstorage.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemImmediateNvStorage'
value_nvstorage = ET.SubElement(ecucnumerical_nvstorage,'VALUE')
value_nvstorage.text = 'true'
referencevalue = ET.SubElement(ECUC_CONTAINER,'REFERENCE-VALUES')
ecucrefrence_agingcycleref = ET.SubElement(referencevalue,'ECUC-REFERENCE-VALUE')
definitionref_agingcycleref = ET.SubElement(ecucrefrence_agingcycleref,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_agingcycleref.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemAgingCycleRef'
value_agingcycleref = ET.SubElement(ecucrefrence_agingcycleref,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
value_agingcycleref.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemGeneral/'+ 'DemOperationCycle_0'
ecucrefrence_freezeframe = ET.SubElement(referencevalue,'ECUC-REFERENCE-VALUE')
definitionref_freezeframe = ET.SubElement(ecucrefrence_freezeframe,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_freezeframe.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemFreezeFrameClassRef'
value_freezeframe = ET.SubElement(ecucrefrence_freezeframe,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
value_freezeframe.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemGeneral/'+ 'Set1_Freeze'
ecucrefrence_extendeddata = ET.SubElement(referencevalue,'ECUC-REFERENCE-VALUE')
definitionref_extendeddata = ET.SubElement(ecucrefrence_extendeddata,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_extendeddata.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemExtendedDataClassRef'
value_extendeddata = ET.SubElement(ecucrefrence_extendeddata,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
value_extendeddata.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemGeneral/'+ 'Set1_Extd'
ecucrefrence_freezeframerecnum = ET.SubElement(referencevalue,'ECUC-REFERENCE-VALUE')
definitionref_freezeframerecnum = ET.SubElement(ecucrefrence_freezeframerecnum,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_freezeframerecnum.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemFreezeFrameRecNumClassRef'
value_freezeframerecnum = ET.SubElement(ecucrefrence_freezeframerecnum,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
value_freezeframerecnum.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemGeneral/'+ 'DemFreezeFrameRecNumClass'
ecucrefrence_demmemory = ET.SubElement(referencevalue,'ECUC-REFERENCE-VALUE')
definitionref_demmemory = ET.SubElement(ecucrefrence_demmemory,'DEFINITION-REF',attrib = {'DEST':'ECUC-CHOICE-REFERENCE-DEF'})
definitionref_demmemory.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTCAttributes/DemMemoryDestinationRef'
value_demmemory = ET.SubElement(ecucrefrence_demmemory,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
value_demmemory.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemGeneral/'+ 'DemPrimaryMemory'
def DemDTCs_config(self):
ECUC_CONTAINER = ET.SubElement(self.parent,'ECUC-CONTAINER-VALUE')
shortname = ET.SubElement(ECUC_CONTAINER,'SHORT-NAME')
shortname.text = 'DemDTC_'+self.DTCname
definitionref = ET.SubElement(ECUC_CONTAINER,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC'
parametervalues = ET.SubElement(ECUC_CONTAINER,'PARAMETER-VALUES')
ecucdtcseverity = ET.SubElement(parametervalues,'ECUC-TEXTUAL-PARAM-VALUE')
definitionref_dtcseverity = ET.SubElement(ecucdtcseverity,'DEFINITION-REF',attrib = {'DEST':'ECUC-ENUMERATION-PARAM-DEF'})
definitionref_dtcseverity.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC/DemDTCSeverity'
value_dtcseverity = ET.SubElement(ecucdtcseverity,'VALUE')
value_dtcseverity.text = 'DEM_SEVERITY_CHECK_IMMEDIATELY'
ecucnumerical_dtcvalue = ET.SubElement(parametervalues,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_dtcvalue = ET.SubElement(ecucnumerical_dtcvalue,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_dtcvalue.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC/DemDtcValue'
dtcvalue = ET.SubElement(ecucnumerical_dtcvalue,'VALUE')
dtcvalue.text = str(int(self.DTC,16))
referencevalue = ET.SubElement(ECUC_CONTAINER,'REFERENCE-VALUES')
ecucreference_dtcattrib = ET.SubElement(referencevalue,'ECUC-REFERENCE-VALUE')
definitionref_dtcattrib = ET.SubElement(ecucreference_dtcattrib,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_dtcattrib.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC/DemDTCAttributesRef'
valueref_dtcattrib = ET.SubElement(ecucreference_dtcattrib,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_dtcattrib.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemConfigSet/DemDTCAttributes_'+self.DTCname
def DemEvent_config(self):
ECUC_CONTAINER = ET.SubElement(self.parent,'ECUC-CONTAINER-VALUE')
shortname = ET.SubElement(ECUC_CONTAINER,'SHORT-NAME')
shortname.text = 'Event_'+self.DTCname
definitionref = ET.SubElement(ECUC_CONTAINER,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter'
parametervalues = ET.SubElement(ECUC_CONTAINER,'PARAMETER-VALUES')
ecucnumerical_eventavailable = ET.SubElement(parametervalues,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_eventavailable = ET.SubElement(ecucnumerical_eventavailable,'DEFINITION-REF',attrib = {'DEST':'ECUC-BOOLEAN-PARAM-DEF'})
definitionref_eventavailable.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemEventAvailable'
value_eventavailable = ET.SubElement(ecucnumerical_eventavailable,'VALUE')
value_eventavailable.text = '1'
ecucnumerical = ET.SubElement(parametervalues,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_threshold = ET.SubElement(ecucnumerical,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_threshold.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemEventFailureCycleCounterThreshold'
value_threshold = ET.SubElement(ecucnumerical,'VALUE')
value_threshold.text = '1'
ecuctextual_eventkind = ET.SubElement(parametervalues,'ECUC-TEXTUAL-PARAM-VALUE')
definitionref_eventkind = ET.SubElement(ecuctextual_eventkind,'DEFINITION-REF',attrib = {'DEST':'ECUC-ENUMERATION-PARAM-DEF'})
definitionref_eventkind.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemEventKind'
value_eventkind = ET.SubElement(ecuctextual_eventkind,'VALUE')
value_eventkind.text = 'DEM_EVENT_KIND_SWC'
ecucumerical_prestore = ET.SubElement(parametervalues,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_prestore = ET.SubElement(ecucumerical_prestore,'DEFINITION-REF',attrib = {'DEST':'ECUC-BOOLEAN-PARAM-DEF'})
definitionref_prestore.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemFFPrestorageSupported'
value_prestore = ET.SubElement(ecucumerical_prestore,'VALUE')
value_prestore.text = '0'
referencevalues = ET.SubElement(ECUC_CONTAINER,'REFERENCE-VALUES')
ecucreference_component = ET.SubElement(referencevalues,'ECUC-REFERENCE-VALUE')
definitionref_component = ET.SubElement(ecucreference_component,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_component.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemComponentClassRef'
valueref_component = ET.SubElement(ecucreference_component,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_component.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemConfigSet/DemComponent_'+self.DTCname
ecucreference_dtcref = ET.SubElement(referencevalues,'ECUC-REFERENCE-VALUE')
definitionref_dtcref = ET.SubElement(ecucreference_dtcref,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_dtcref.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDTCRef'
value_dtcref = ET.SubElement(ecucreference_dtcref,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
value_dtcref.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemConfigSet/DemDTC_'+self.DTCname
ecucreference_cycle = ET.SubElement(referencevalues,'ECUC-REFERENCE-VALUE')
definitionref_cycle = ET.SubElement(ecucreference_cycle,'DEFINITION-REF',attrib = {'DEST':'ECUC-REFERENCE-DEF'})
definitionref_cycle.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemOperationCycleRef'
valueref_cycle = ET.SubElement(ecucreference_cycle,'VALUE-REF',attrib = {'DEST':'ECUC-CONTAINER-VALUE'})
valueref_cycle.text = '/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemGeneral/DemOperationCycle_0'
subcontaniners = ET.SubElement(ECUC_CONTAINER,'SUB-CONTAINERS')
ecuccontainer_debounce = ET.SubElement(subcontaniners,'ECUC-CONTAINER-VALUE')
shortname_debounce = ET.SubElement(ecuccontainer_debounce,'SHORT-NAME')
shortname_debounce.text = 'DemDebounceAlgorithmClass'
definitionref_debounce = ET.SubElement(ecuccontainer_debounce,'DEFINITION-REF',attrib = {'DEST':'ECUC-CHOICE-CONTAINER-DEF'})
definitionref_debounce.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass'
subcontaniners_intermonitor = ET.SubElement(ecuccontainer_debounce,'SUB-CONTAINERS')
ecuccontainer_intermonitor = ET.SubElement(subcontaniners_intermonitor,'ECUC-CONTAINER-VALUE')
shortname_intermonitor = ET.SubElement(ecuccontainer_intermonitor,'SHORT-NAME')
shortname_intermonitor.text = 'DemDebounceMonitorInternal'
definitionref_intermonitor = ET.SubElement(ecuccontainer_intermonitor,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref_intermonitor.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounceMonitorInternal'
subcontainers_callback = ET.SubElement(ecuccontainer_intermonitor,'SUB-CONTAINERS')
ecuccontainer_callback = ET.SubElement(subcontainers_callback,'ECUC-CONTAINER-VALUE')
shortname_callback = ET.SubElement(ecuccontainer_callback,'SHORT-NAME')
shortname_callback.text = 'DemCallbackGetFDC'
definitionref_callback = ET.SubElement(ecuccontainer_callback,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref_callback.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounceMonitorInternal/DemCallbackGetFDC'
parameter_bool = ET.SubElement(ecuccontainer_callback,'PARAMETER-VALUES')
ecucnumerical_bool = ET.SubElement(parameter_bool,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_bool = ET.SubElement(ecucnumerical_bool,'DEFINITION-REF',attrib = {'DEST':'ECUC-BOOLEAN-PARAM-DEF'})
definitionref_bool.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounceMonitorInternal/DemCallbackGetFDC/DemRbGeneralCallbackGetFDCFncUsed'
value_bool = ET.SubElement(ecucnumerical_bool,'VALUE')
value_bool.text = '0'
ecuccontainer_eventclass = ET.SubElement(subcontaniners,'ECUC-CONTAINER-VALUE')
shortname_eventcalss = ET.SubElement(ecuccontainer_eventclass,'SHORT-NAME')
shortname_eventcalss.text = 'DemEventClassRB'
definitionref_eventclass = ET.SubElement(ecuccontainer_eventclass,'DEFINITION-REF',attrib = {'DEST':'ECUC-PARAM-CONF-CONTAINER-DEF'})
definitionref_eventclass.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemRbEventClass'
parameter_eventclass = ET.SubElement(ecuccontainer_eventclass,'PARAMETER-VALUES')
ecucnumerical_buffertime = ET.SubElement(parameter_eventclass,'ECUC-NUMERICAL-PARAM-VALUE')
definitionref_buffertime = ET.SubElement(ecucnumerical_buffertime,'DEFINITION-REF',attrib = {'DEST':'ECUC-INTEGER-PARAM-DEF'})
definitionref_buffertime.text = '/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemRbEventClass/DemRbEventBufferTime'
value_buffertime = ET.SubElement(ecucnumerical_buffertime,'VALUE')
value_buffertime.text = '0'
if __name__ == '__main__':
Diagfile = "Diag_EcucValues.arxml"
did_number = []
did_status = []
did_length = []
dtc_number = []
dtc_name = []
flag = 0
Diagarxml = ET.parse(Diagfile)
input_root = Diagarxml.getroot()
wb = openpyxl.load_workbook(xlsfile)
DIDtable = wb.get_sheet_by_name('DID (0x22&0x2E)')
DTCtable = wb.get_sheet_by_name('DTCTable')
for SN in range(1,250):
DIDnumber = DIDtable.cell(row = SN,column = 1)
DIDstatus = DIDtable.cell(row = SN,column = 4)
DIDlength = DIDtable.cell(row = SN,column = 7)
DTC = DTCtable.cell(row = SN,column = 3)
DTCname = DTCtable.cell(row = SN,column = 7)
if DIDnumber.value != None:
if 'DID' in DIDnumber.value :
print('This is the first line')
else:
did_number.append(DIDnumber.value)
did_status.append(DIDstatus.value)
did_length.append(DIDlength.value)
if len(str(DTC.value)) == 6:
print(DTC.value)
dtc_number.append(DTC.value)
dtc_name.append(str(DTC.value)+'_'+DTCname.value.title().replace(' ','').replace('-',''))
for element in input_root.iter():
if element.tag == tagname('SUB-CONTAINERS'):
for subelement in element.iter():
for sn in range(len(subelement.getchildren())):
if subelement.getchildren()[sn].text == 'DcmDspSecurity':
dcmrootelement = element
for element in input_root.iter():
if element.tag == tagname('ECUC-CONTAINER-VALUE'):
for sn in range(len(element.getchildren())):
if element.getchildren()[sn].text == 'DemConfigSet':
demrootelement = element.getchildren()[sn+2]
print(demrootelement)
for cnt in range(len(did_number)):
did_obj = DcmModule_config(dcmrootelement,did_number[cnt].strip(),did_status[cnt].strip(),did_length[cnt],0)
did_obj.createDcmDspDid_DataSublement()
did_obj.createDcmDspDid_InfosSublement()
did_obj.createDcmDspdids_Sublement()
for cnt in range(len(dtc_number)):
dtc_obj = DemModule_Config(demrootelement,dtc_name[cnt].strip(),str(cnt+1),str(dtc_number[cnt]).strip())
dtc_obj.DemComponent_config()
dtc_obj.DemDTCs_config()
dtc_obj.DemEvent_config()
dtc_obj.DemDTCAttributes_config()
ET.register_namespace('', "http://autosar.org/schema/r4.0")
pretty_arxml(input_root,'\t','\n')
Diagarxml.write('Diag_EcucValues1.arxml',encoding="UTF-8",xml_declaration=True)