def apply(cls, ws): package = ws.getConstantPackage() if package.find(cls.__name__) is None: ws.apply(cls.dataTypeTemplate) if(cls.default is None): cls.default = cls.dataTypeTemplate.maxValue package.createConstant(cls.__name__, cls.dataTypeTemplate.__name__, cls.default)
def apply(cls, ws): package = ws.getDataTypePackage() if package.find(cls.__name__) is None: package.createIntegerDataType(cls.__name__, min=cls.minValue, max=cls.maxValue, offset=0, scaling=1, unit='1')
def apply(cls, ws): package = ws.getPortInterfacePackage() if package.find(name) is None: ws.apply(cls.dataTypeTemplate) if (cls.dataName is None): cls.dataName = name package.createSenderReceiverInterface( name, autosar.DataElement(cls.dataName, cls.dataTypeTemplate.__name__))
def createSenderReceiverInterfaceTemplate(name, dataTypeTemplate, dataName=None): @classmethod def apply(cls, ws): package = ws.getPortInterfacePackage() if package.find(name) is None: if(cls.dataName is None): cls.dataName = name if(type(cls.dataTypeTemplate) == list): dataElements = [] for dataTypeTemplate in cls.dataTypeTemplate: dataElements.append(ws.apply(dataTypeTemplate)) package.createSenderReceiverInterface(name, dataElements) else:
def loadXML(self, package, xmlRoot): """ Loads an XML package by repeatedly invoking its registered element parsers """ assert (self.switcher is not None) if xmlRoot.find('ELEMENTS'): elementNames = set([x.name for x in package.elements]) for xmlElement in xmlRoot.findall('./ELEMENTS/*'): parserObject = self.switcher.get(xmlElement.tag) if parserObject is not None: element = parserObject.parseElement(xmlElement, package) if element is None: print("[PackageParser] No return value: %s" % xmlElement.tag) continue element.parent = package if isinstance(element, autosar.element.Element): if element.name not in elementNames: #ignore duplicated items package.append(element) elementNames.add(element.name) else: #raise ValueError("parse error: %s"%type(element)) raise ValueError("parse error: %s" % xmlElement.tag) else: package.unhandledParser.add(xmlElement.tag) if self.version >= 3.0 and self.version < 4.0: if xmlRoot.find('SUB-PACKAGES'): for xmlPackage in xmlRoot.findall('./SUB-PACKAGES/AR-PACKAGE'): name = xmlPackage.find("./SHORT-NAME").text subPackage = autosar.package.Package(name) package.append(subPackage) self.loadXML(subPackage, xmlPackage) elif self.version >= 4.0: for subPackageXML in xmlRoot.findall('./AR-PACKAGES/AR-PACKAGE'): name = parseTextNode(subPackageXML.find("./SHORT-NAME")) subPackage = package.find(name) if subPackage is None: subPackage = autosar.package.Package(name) package.append(subPackage) self.loadXML(subPackage, subPackageXML) elif self.version >= 2.0 and self.version < 3.0: if xmlRoot.find('SUB-PACKAGES'): for xmlPackage in xmlRoot.findall('./SUB-PACKAGES/AR-PACKAGE'): name = xmlPackage.find("./SHORT-NAME").text subPackage = autosar.package.Package(name) self.loadXML(subPackage, xmlPackage) package.append(subPackage)
def apply(cls, ws): package = ws.getDataTypePackage() if package.find(cls.__name__) is None: typeDef = package.find(typeRef.__name__) package.createArrayDataType(cls.__name__, typeDef.ref, arraySize)
def apply(cls, ws): package = ws.getConstantPackage() if package.find(cls.__name__) is None: ws.apply(cls.dataTypeTemplate) package.createConstant(cls.__name__, cls.dataTypeTemplate.__name__, len(cls.dataTypeTemplate.valueTable) - 1)