示例#1
0
 def createSpecificEnumHistorizer(xmlDataFieldNode, xmlTypeNode):
     enumValues = xmlHelper.getEnumValues(
         xmlDataFieldNode.find("enum"), "item", "description",
         "value")
     for enumValue in enumValues:
         enumValue[1] = re.split(":|<", enumValue[1])[0]
     cppHistorizerClassName = "C" + cppHelper.toCppName(
         xmlTypeNode.find(
             "title").text) + "_" + cppHelper.toCppName(
                 xmlDataFieldNode.find("data").text) + "Historizer"
     historizerEnumName = "E" + cppHelper.toCppName(
         xmlTypeNode.find(
             "title").text) + "_" + cppHelper.toCppName(
                 xmlDataFieldNode.find(
                     "data").text) + "_" + cppHelper.toCppName(
                         xmlDataFieldNode.find("data").text)
     cppHistorizerClass = cppClass.CppClass(cppHistorizerClassName,
                                            createDefaultCtor=False)
     cppHistorizerClass.inheritFrom(
         "yApi::historization::CSingleHistorizableData<" +
         historizerEnumName + ">", cppClass.PUBLIC)
     cppHistorizerClass.addConstructor(cppClass.CppClassConstructor("const std::string& keywordName", \
        "CSingleHistorizableData<" + historizerEnumName + ">(keywordName, yApi::CStandardCapacity(\"" + historizerEnumName + "\", yApi::CStandardUnits::NoUnit(), yApi::EKeywordDataType::kNoData), yApi::EKeywordAccessMode::kGet)"))
     cppHistorizerClass.addDependency(
         cppClass.CppExtendedEnumType(historizerEnumName,
                                      enumValues))
     return cppHistorizerClass
示例#2
0
 def getETypeIdsEnumValues(xmlRorgNode, xmlFuncNode):
     # Add types found in XML file
     enumValues = xmlHelper.getEnumValues(inNode=xmlFuncNode,
                                          foreachSubNode="type",
                                          enumValueNameTag="number",
                                          enumValueTag="number")
     # Add hard-coded types not present in XML file
     profilePattern = profileHelper.profileFuncPattern(
         xmlRorgNode, xmlFuncNode)
     hardCodedProfilesNotInXml = list(
         filter(lambda p: re.match(profilePattern, p),
                hardCodedProfiles.getProfilesNotInXml()))
     for profile in hardCodedProfilesNotInXml:
         enumValues.append([
             "0x" + profileHelper.getType(profile),
             "0x" + profileHelper.getType(profile)
         ])
     return enumValues
示例#3
0
supportedProfiles = copy.deepcopy(hardCodedProfiles.getProfilesHardCoded())

#-------------------------------------------------------------------------------
xmlRootNode = xml.etree.ElementTree.parse(xmlInputFilePath).getroot()
if xmlRootNode.tag != "eep":
    raise Exception("getAllNodes : Invalid root \"" + xmlRootNode.tag +
                    "\", \"eep\" expected")
xmlProfileNode = xmlRootNode.find("profile")

util.info("Hard-coded profiles are : " +
          str(hardCodedProfiles.getProfilesHardCoded()))

# CRorgs : Main Rorgs class, listing Rorg messages
rorgsClass = cppClass.CppClass("CRorgs")
rorgsItems = xmlHelper.getEnumValues(inNode=xmlProfileNode,
                                     foreachSubNode="rorg",
                                     enumValueNameTag="title",
                                     enumValueTag="number")
# Add 0xD4 (Universal Teach-in message) to RORG list as it doesn't not appear in eepXX.xml file
rorgsItems.append(['UTE Telegram ', '0xD4'])
rorgsClass.addSubType(
    cppClass.CppEnumType("ERorgIds", rorgsItems, cppClass.PUBLIC))
rorgsClass.addMember(cppClass.CppMember("RorgMap", "std::map<unsigned int, std::string>", cppClass.PRIVATE, cppClass.STATIC | cppClass.CONST, \
   cppHelper.getMapInitCode(rorgsItems)))
rorgsClass.addMethod(cppClass.CppMethod("toRorgId", "CRorgs::ERorgIds", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   if (RorgMap.find(id) == RorgMap.end())\n" \
   "      throw std::out_of_range(\"Unknown rorg \" + CProfileHelper::byteToHexString(id));\n" \
   "   return static_cast<ERorgIds>(id);\n"))
rorgsClass.addMethod(cppClass.CppMethod("name", "const std::string&", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   try {\n" \
   "      return RorgMap.at(id);\n" \
   "   } catch(std::out_of_range&) {\n" \
示例#4
0
# Input parameters
xmlInputFilePath = sys.argv[1]
headerPath = sys.argv[2]
sourcePath = sys.argv[3]

#-------------------------------------------------------------------------------

xmlRootNode = xml.etree.ElementTree.parse(xmlInputFilePath).getroot()
if xmlRootNode.tag != "manufacturers":
    raise Exception("getAllNodes : Invalid root \"" + xmlRootNode.tag +
                    "\", \"manufacturers\" expected")

manufacturersClassName = "CManufacturers"
manufacturersClass = cppClass.CppClass(manufacturersClassName)
manufacturersClass.addSubType(cppClass.CppEnumType("EManufacturerIds", \
   xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode="manufacturer", enumValueNameTag="name", enumValueTag="id"), cppClass.PUBLIC))
manufacturersClass.addMember(cppClass.CppMember("ManufacturersMap", "std::map<unsigned int, std::string>", cppClass.PRIVATE, cppClass.STATIC | cppClass.CONST, \
   cppHelper.getMapInitCode(xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode="manufacturer", enumValueNameTag="name"))))
manufacturersClass.addMethod(cppClass.CppMethod("toManufacturerId", manufacturersClassName + "::EManufacturerIds", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   if (ManufacturersMap.find(id) == ManufacturersMap.end())\n" \
   "      throw std::out_of_range(\"Unknown manufacturer\");\n" \
   "   return static_cast<EManufacturerIds>(id);\n"))
manufacturersClass.addMethod(cppClass.CppMethod("name", "const std::string&", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   try {\n" \
   "      return ManufacturersMap.at(id);\n" \
   "   } catch(std::out_of_range&) {\n" \
   "      static const std::string UnknownManufacturer(\"Unknown manufacturer\");\n" \
   "      return UnknownManufacturer;\n" \
   "   }"))
manufacturersClass.addMethod(cppClass.CppMethod("name", "const std::string&", "EManufacturerIds id", cppClass.PUBLIC, cppClass.STATIC, \
   "   return name(static_cast<unsigned int>(id));"))
outputPath = sys.argv[2]




#-------------------------------------------------------------------------------


xmlRootNode = xml.etree.ElementTree.parse(xmlInputFilePath).getroot()
if xmlRootNode.tag != 'manufacturers':
   raise Exception('getAllNodes : Invalid root "' + xmlRootNode.tag + '", "manufacturers" expected')

manufacturersClassName = 'CManufacturers'
manufacturersClass = cppClass.CppClass(manufacturersClassName)
manufacturersClass.addSubType(cppClass.CppEnumType('EManufacturerIds', \
   xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode='manufacturer', enumValueNameTag='name', enumValueTag='id'), cppClass.PUBLIC))
manufacturersClass.addMember(cppClass.CppMember('ManufacturersMap', 'std::map<unsigned int, std::string>', cppClass.PRIVATE, cppClass.STATIC | cppClass.CONST, \
   cppHelper.getMapInitCode(xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode='manufacturer', enumValueNameTag='name'))))
manufacturersClass.addMethod(cppClass.CppMethod('toManufacturerId', manufacturersClassName + '::EManufacturerIds', 'unsigned int id', cppClass.PUBLIC, cppClass.STATIC, \
   '   if (ManufacturersMap.find(id) == ManufacturersMap.end())\n' \
   '      throw std::out_of_range("Unknown manufacturer");\n' \
   '   return static_cast<EManufacturerIds>(id);\n'))
manufacturersClass.addMethod(cppClass.CppMethod('name', 'const std::string&', 'unsigned int id', cppClass.PUBLIC, cppClass.STATIC, \
   '   try {\n' \
   '      return ManufacturersMap.at(id);\n' \
   '   } catch(std::out_of_range&) {\n' \
   '      static const std::string UnknownManufacturer("Unknown manufacturer");\n' \
   '      return UnknownManufacturer;\n' \
   '   }'))
manufacturersClass.addMethod(cppClass.CppMethod('name', 'const std::string&', 'EManufacturerIds id', cppClass.PUBLIC, cppClass.STATIC, \
   '   return name(static_cast<unsigned int>(id));'))
示例#6
0
supportedProfiles = copy.deepcopy(hardCodedProfiles.getProfilesHardCoded())


#-------------------------------------------------------------------------------
xmlRootNode = xml.etree.ElementTree.parse(xmlInputFilePath).getroot()
if xmlRootNode.tag != "eep":
   raise Exception("getAllNodes : Invalid root \"" + xmlRootNode.tag + "\", \"eep\" expected")
xmlProfileNode = xmlRootNode.find("profile")

util.info("Hard-coded profiles are : " + str(hardCodedProfiles.getProfilesHardCoded()))



# CRorgs : Main Rorgs class, listing Rorg messages
rorgsClass = cppClass.CppClass("CRorgs")
rorgsItems = xmlHelper.getEnumValues(inNode=xmlProfileNode, foreachSubNode="rorg", enumValueNameTag="title", enumValueTag="number")
# Add 0xD4 (Universal Teach-in message) to RORG list as it doesn't not appear in eepXX.xml file
rorgsItems.append(['UTE Telegram ', '0xD4'])
rorgsClass.addSubType(cppClass.CppEnumType("ERorgIds", rorgsItems, cppClass.PUBLIC))
rorgsClass.addMember(cppClass.CppMember("RorgMap", "std::map<unsigned int, std::string>", cppClass.PRIVATE, cppClass.STATIC | cppClass.CONST, \
   cppHelper.getMapInitCode(rorgsItems)))
rorgsClass.addMethod(cppClass.CppMethod("toRorgId", "CRorgs::ERorgIds", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   if (RorgMap.find(id) == RorgMap.end())\n" \
   "      throw std::out_of_range(\"Unknown rorg \" + CProfileHelper::byteToHexString(id));\n" \
   "   return static_cast<ERorgIds>(id);\n"))
rorgsClass.addMethod(cppClass.CppMethod("name", "const std::string&", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   try {\n" \
   "      return RorgMap.at(id);\n" \
   "   } catch(std::out_of_range&) {\n" \
   "      static const std::string UnknownRorg(\"Unknown rorg\");\n" \
   "      return UnknownRorg;\n" \