1 ## This file is a template. The comment below is emitted 2 ## into the rendered file; feel free to edit this file. 3 // !!! WARNING: This is a GENERATED Code..Please do NOT Edit !!! 4 <% 5 interfaceDict = {} 6 %>\ 7 %for key in sensorDict.iterkeys(): 8 <% 9 sensor = sensorDict[key] 10 serviceInterface = sensor["serviceInterface"] 11 if serviceInterface == "org.freedesktop.DBus.Properties": 12 updateFunc = "set::" 13 getFunc = "get::" 14 elif serviceInterface == "xyz.openbmc_project.Inventory.Manager": 15 updateFunc = "notify::" 16 getFunc = "inventory::get::" 17 else: 18 assert "Un-supported interface: " + serviceInterface 19 endif 20 if serviceInterface not in interfaceDict: 21 interfaceDict[serviceInterface] = {} 22 interfaceDict[serviceInterface]["updateFunc"] = updateFunc 23 interfaceDict[serviceInterface]["getFunc"] = getFunc 24 %>\ 25 % endfor 26 27 #include "sensordatahandler.hpp" 28 29 #include <ipmid/types.hpp> 30 31 namespace ipmi { 32 namespace sensor { 33 34 extern const IdInfoMap sensors = { 35 % for key in sensorDict.iterkeys(): 36 % if key: 37 {${key},{ 38 <% 39 sensor = sensorDict[key] 40 interfaces = sensor["interfaces"] 41 path = sensor["path"] 42 serviceInterface = sensor["serviceInterface"] 43 sensorType = sensor["sensorType"] 44 entityID = sensor.get("entityID", 0) 45 instance = sensor.get("entityInstance", 0) 46 readingType = sensor["sensorReadingType"] 47 multiplier = sensor.get("multiplierM", 1) 48 offsetB = sensor.get("offsetB", 0) 49 bExp = sensor.get("bExp", 0) 50 rExp = sensor.get("rExp", 0) 51 unit = sensor.get("unit", "") 52 scale = sensor.get("scale", 0) 53 hasScale = "true" if "scale" in sensor.keys() else "false" 54 valueReadingType = sensor["readingType"] 55 sensorNamePattern = sensor.get("sensorNamePattern", "nameLeaf") 56 sensorNameFunc = "get::" + sensorNamePattern 57 updateFunc = interfaceDict[serviceInterface]["updateFunc"] 58 updateFunc += sensor["readingType"] 59 getFunc = interfaceDict[serviceInterface]["getFunc"] 60 getFunc += sensor["readingType"] 61 if "readingAssertion" == valueReadingType or "readingData" == valueReadingType: 62 for interface,properties in interfaces.items(): 63 for dbus_property,property_value in properties.items(): 64 for offset,values in property_value["Offsets"].items(): 65 valueType = values["type"] 66 updateFunc = "set::" + valueReadingType + "<" + valueType + ">" 67 getFunc = "get::" + valueReadingType + "<" + valueType + ">" 68 sensorInterface = serviceInterface 69 if serviceInterface == "org.freedesktop.DBus.Properties": 70 sensorInterface = next(iter(interfaces)) 71 mutability = sensor.get("mutability", "Mutability::Read") 72 %> 73 ${entityID},${instance},${sensorType},"${path}","${sensorInterface}", 74 ${readingType},${multiplier},${offsetB},${bExp}, 75 ${offsetB * pow(10,bExp)}, ${rExp}, ${hasScale},${scale},"${unit}", 76 ${updateFunc},${getFunc},Mutability(${mutability}),${sensorNameFunc},{ 77 % for interface,properties in interfaces.items(): 78 {"${interface}",{ 79 % if properties: 80 % for dbus_property,property_value in properties.items(): 81 {"${dbus_property}",{ 82 <% 83 try: 84 preReq = property_value["Prereqs"] 85 except KeyError, e: 86 preReq = dict() 87 %>\ 88 { 89 % for preOffset,preValues in preReq.items(): 90 { ${preOffset},{ 91 % for name,value in preValues.items(): 92 % if name == "type": 93 <% continue %>\ 94 % endif 95 <% value = str(value).lower() %>\ 96 ${value}, 97 % endfor 98 } 99 }, 100 % endfor 101 }, 102 { 103 % for offset,values in property_value["Offsets"].items(): 104 { ${offset},{ 105 % if offset == 0xFF: 106 }}, 107 <% continue %>\ 108 % endif 109 <% valueType = values["type"] %>\ 110 <% 111 try: 112 skip = values["skipOn"] 113 if skip == "assert": 114 skipVal = "SkipAssertion::ASSERT" 115 elif skip == "deassert": 116 skipVal = "SkipAssertion::DEASSERT" 117 else: 118 assert "Unknown skip value " + str(skip) 119 except KeyError, e: 120 skipVal = "SkipAssertion::NONE" 121 %>\ 122 ${skipVal}, 123 % for name,value in values.items(): 124 % if name == "type" or name == "skipOn": 125 <% continue %>\ 126 % endif 127 % if valueType == "string": 128 std::string("${value}"), 129 % elif valueType == "bool": 130 <% value = str(value).lower() %>\ 131 ${value}, 132 % else: 133 ${value}, 134 % endif 135 % endfor 136 } 137 }, 138 % endfor 139 }}}, 140 % endfor 141 % endif 142 }}, 143 % endfor 144 }, 145 }}, 146 % endif 147 % endfor 148 }; 149 150 } // namespace sensor 151 } // namespace ipmi 152