Exemple #1
0
 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)
Exemple #2
0
 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')
Exemple #3
0
 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__))
Exemple #4
0
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:
Exemple #5
0
    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)
Exemple #6
0
 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)
Exemple #7
0
 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)