10065905eSRatan Gupta ## This file is a template. The comment below is emitted 20065905eSRatan Gupta ## into the rendered file; feel free to edit this file. 30065905eSRatan Gupta // !!! WARNING: This is a GENERATED Code..Please do NOT Edit !!! 4e0af7209SDhruvaraj Subhashchandran <% 51bb0d387SDeepak Kodihalli interfaceDict = {} 6be4ffa87SJeremy Kerr sensorNameMaxLength = 16 7e0af7209SDhruvaraj Subhashchandran %>\ 831eed5c5STom Joseph %for key in sensorDict.keys(): 9e0af7209SDhruvaraj Subhashchandran <% 10e0af7209SDhruvaraj Subhashchandran sensor = sensorDict[key] 11e0af7209SDhruvaraj Subhashchandran serviceInterface = sensor["serviceInterface"] 12e0af7209SDhruvaraj Subhashchandran if serviceInterface == "org.freedesktop.DBus.Properties": 131bb0d387SDeepak Kodihalli updateFunc = "set::" 149f9a9a4dSTom Joseph getFunc = "get::" 15e0af7209SDhruvaraj Subhashchandran elif serviceInterface == "xyz.openbmc_project.Inventory.Manager": 161bb0d387SDeepak Kodihalli updateFunc = "notify::" 179f9a9a4dSTom Joseph getFunc = "inventory::get::" 18e0af7209SDhruvaraj Subhashchandran else: 191bb0d387SDeepak Kodihalli assert "Un-supported interface: " + serviceInterface 20e0af7209SDhruvaraj Subhashchandran endif 211bb0d387SDeepak Kodihalli if serviceInterface not in interfaceDict: 221bb0d387SDeepak Kodihalli interfaceDict[serviceInterface] = {} 231bb0d387SDeepak Kodihalli interfaceDict[serviceInterface]["updateFunc"] = updateFunc 249f9a9a4dSTom Joseph interfaceDict[serviceInterface]["getFunc"] = getFunc 25e0af7209SDhruvaraj Subhashchandran %>\ 26e0af7209SDhruvaraj Subhashchandran % endfor 271bb0d387SDeepak Kodihalli 28e0af7209SDhruvaraj Subhashchandran #include "sensordatahandler.hpp" 290065905eSRatan Gupta 3033250240SVernon Mauery #include <ipmid/types.hpp> 31db0cbe64SPatrick Venture 32db0cbe64SPatrick Venture namespace ipmi { 33db0cbe64SPatrick Venture namespace sensor { 341bb0d387SDeepak Kodihalli 35*a23af120SJian Zhang extern const IdInfoMap __attribute__((init_priority(101))) sensors = { 3631eed5c5STom Joseph % for key in sensorDict.keys(): 370065905eSRatan Gupta % if key: 380065905eSRatan Gupta {${key},{ 390065905eSRatan Gupta <% 400065905eSRatan Gupta sensor = sensorDict[key] 410065905eSRatan Gupta interfaces = sensor["interfaces"] 420065905eSRatan Gupta path = sensor["path"] 431bb0d387SDeepak Kodihalli serviceInterface = sensor["serviceInterface"] 440065905eSRatan Gupta sensorType = sensor["sensorType"] 4531ff6e6fSTom Joseph entityID = sensor.get("entityID", 0) 4631ff6e6fSTom Joseph instance = sensor.get("entityInstance", 0) 470065905eSRatan Gupta readingType = sensor["sensorReadingType"] 4810f4959aSEmily Shaffer multiplier = sensor.get("multiplierM", 1) 49b673ff6aSTom Joseph offsetB = sensor.get("offsetB", 0) 504d1a5dd4SKirill Pakhomov bExp = sensor.get("bExp", 0) 510a1301c1STom Joseph rExp = sensor.get("rExp", 0) 52c5324251STony Lee sensorUnits1 = sensor.get("sensorUnits1", 0) 5362235618SEmily Shaffer unit = sensor.get("unit", "") 5462235618SEmily Shaffer scale = sensor.get("scale", 0) 5562235618SEmily Shaffer hasScale = "true" if "scale" in sensor.keys() else "false" 56e0af7209SDhruvaraj Subhashchandran valueReadingType = sensor["readingType"] 571bb0d387SDeepak Kodihalli updateFunc = interfaceDict[serviceInterface]["updateFunc"] 581bb0d387SDeepak Kodihalli updateFunc += sensor["readingType"] 599f9a9a4dSTom Joseph getFunc = interfaceDict[serviceInterface]["getFunc"] 609f9a9a4dSTom Joseph getFunc += sensor["readingType"] 61be4ffa87SJeremy Kerr sensorName = sensor.get("sensorName", None) 62be4ffa87SJeremy Kerr if sensorName: 63be4ffa87SJeremy Kerr assert len(sensorName) <= sensorNameMaxLength, \ 64be4ffa87SJeremy Kerr "sensor name '%s' is too long (%d bytes max)" % \ 65be4ffa87SJeremy Kerr (sensorName, sensorNameMaxLength) 66be4ffa87SJeremy Kerr else: 67be4ffa87SJeremy Kerr sensorNameFunc = "get::" + sensor.get("sensorNamePattern", 68be4ffa87SJeremy Kerr "nameLeaf") 69be4ffa87SJeremy Kerr 70580af36bSTom Joseph if "readingAssertion" == valueReadingType or "readingData" == valueReadingType: 71580af36bSTom Joseph for interface,properties in interfaces.items(): 72580af36bSTom Joseph for dbus_property,property_value in properties.items(): 73e245e4e9SDhruvaraj Subhashchandran for offset,values in property_value["Offsets"].items(): 74580af36bSTom Joseph valueType = values["type"] 75580af36bSTom Joseph updateFunc = "set::" + valueReadingType + "<" + valueType + ">" 76580af36bSTom Joseph getFunc = "get::" + valueReadingType + "<" + valueType + ">" 771bb0d387SDeepak Kodihalli sensorInterface = serviceInterface 781bb0d387SDeepak Kodihalli if serviceInterface == "org.freedesktop.DBus.Properties": 791bb0d387SDeepak Kodihalli sensorInterface = next(iter(interfaces)) 80cc941e15SEmily Shaffer mutability = sensor.get("mutability", "Mutability::Read") 810065905eSRatan Gupta %> 828deea358SJeremy Kerr .entityType = ${entityID}, 838deea358SJeremy Kerr .instance = ${instance}, 848deea358SJeremy Kerr .sensorType = ${sensorType}, 858deea358SJeremy Kerr .sensorPath = "${path}", 868deea358SJeremy Kerr .sensorInterface = "${sensorInterface}", 878deea358SJeremy Kerr .sensorReadingType = ${readingType}, 888deea358SJeremy Kerr .coefficientM = ${multiplier}, 898deea358SJeremy Kerr .coefficientB = ${offsetB}, 908deea358SJeremy Kerr .exponentB = ${bExp}, 918deea358SJeremy Kerr .scaledOffset = ${offsetB * pow(10,bExp)}, 928deea358SJeremy Kerr .exponentR = ${rExp}, 938deea358SJeremy Kerr .hasScale = ${hasScale}, 948deea358SJeremy Kerr .scale = ${scale}, 95c5324251STony Lee .sensorUnits1 = ${sensorUnits1}, 968deea358SJeremy Kerr .unit = "${unit}", 978deea358SJeremy Kerr .updateFunc = ${updateFunc}, 988deea358SJeremy Kerr .getFunc = ${getFunc}, 998deea358SJeremy Kerr .mutability = Mutability(${mutability}), 100be4ffa87SJeremy Kerr % if sensorName: 101be4ffa87SJeremy Kerr .sensorName = "${sensorName}", 10211d68897SWilly Tu .sensorNameFunc = nullptr, 103be4ffa87SJeremy Kerr % else: 10411d68897SWilly Tu .sensorName = "", 1058deea358SJeremy Kerr .sensorNameFunc = ${sensorNameFunc}, 106be4ffa87SJeremy Kerr % endif 1078deea358SJeremy Kerr .propertyInterfaces = { 1081bb0d387SDeepak Kodihalli % for interface,properties in interfaces.items(): 1090065905eSRatan Gupta {"${interface}",{ 110bbf8bd6cSSantosh Puranik % if properties: 1111bb0d387SDeepak Kodihalli % for dbus_property,property_value in properties.items(): 1120065905eSRatan Gupta {"${dbus_property}",{ 113e245e4e9SDhruvaraj Subhashchandran <% 114e245e4e9SDhruvaraj Subhashchandran try: 115e245e4e9SDhruvaraj Subhashchandran preReq = property_value["Prereqs"] 11631eed5c5STom Joseph except KeyError: 117e245e4e9SDhruvaraj Subhashchandran preReq = dict() 118e245e4e9SDhruvaraj Subhashchandran %>\ 119e245e4e9SDhruvaraj Subhashchandran { 120e245e4e9SDhruvaraj Subhashchandran % for preOffset,preValues in preReq.items(): 121e245e4e9SDhruvaraj Subhashchandran { ${preOffset},{ 122e245e4e9SDhruvaraj Subhashchandran % for name,value in preValues.items(): 123e245e4e9SDhruvaraj Subhashchandran % if name == "type": 124e245e4e9SDhruvaraj Subhashchandran <% continue %>\ 125e245e4e9SDhruvaraj Subhashchandran % endif 126e245e4e9SDhruvaraj Subhashchandran <% value = str(value).lower() %>\ 127e245e4e9SDhruvaraj Subhashchandran ${value}, 128e245e4e9SDhruvaraj Subhashchandran % endfor 129e245e4e9SDhruvaraj Subhashchandran } 130e245e4e9SDhruvaraj Subhashchandran }, 131e245e4e9SDhruvaraj Subhashchandran % endfor 132e245e4e9SDhruvaraj Subhashchandran }, 133e245e4e9SDhruvaraj Subhashchandran { 134e245e4e9SDhruvaraj Subhashchandran % for offset,values in property_value["Offsets"].items(): 1350065905eSRatan Gupta { ${offset},{ 136e0af7209SDhruvaraj Subhashchandran % if offset == 0xFF: 137e0af7209SDhruvaraj Subhashchandran }}, 138e0af7209SDhruvaraj Subhashchandran <% continue %>\ 139e0af7209SDhruvaraj Subhashchandran % endif 140ca4c4467SRatan Gupta <% valueType = values["type"] %>\ 141e84841ceSDhruvaraj Subhashchandran <% 142e84841ceSDhruvaraj Subhashchandran try: 143e84841ceSDhruvaraj Subhashchandran skip = values["skipOn"] 144e84841ceSDhruvaraj Subhashchandran if skip == "assert": 145e84841ceSDhruvaraj Subhashchandran skipVal = "SkipAssertion::ASSERT" 146e84841ceSDhruvaraj Subhashchandran elif skip == "deassert": 147e84841ceSDhruvaraj Subhashchandran skipVal = "SkipAssertion::DEASSERT" 148e84841ceSDhruvaraj Subhashchandran else: 149e84841ceSDhruvaraj Subhashchandran assert "Unknown skip value " + str(skip) 15031eed5c5STom Joseph except KeyError: 151e84841ceSDhruvaraj Subhashchandran skipVal = "SkipAssertion::NONE" 152e84841ceSDhruvaraj Subhashchandran %>\ 153e84841ceSDhruvaraj Subhashchandran ${skipVal}, 1541bb0d387SDeepak Kodihalli % for name,value in values.items(): 155e84841ceSDhruvaraj Subhashchandran % if name == "type" or name == "skipOn": 156ca4c4467SRatan Gupta <% continue %>\ 1570065905eSRatan Gupta % endif 1580065905eSRatan Gupta % if valueType == "string": 1590065905eSRatan Gupta std::string("${value}"), 160ca4c4467SRatan Gupta % elif valueType == "bool": 161ca4c4467SRatan Gupta <% value = str(value).lower() %>\ 162ca4c4467SRatan Gupta ${value}, 1630065905eSRatan Gupta % else: 1640065905eSRatan Gupta ${value}, 1650065905eSRatan Gupta % endif 1660065905eSRatan Gupta % endfor 1670065905eSRatan Gupta } 1680065905eSRatan Gupta }, 1690065905eSRatan Gupta % endfor 170e245e4e9SDhruvaraj Subhashchandran }}}, 1710065905eSRatan Gupta % endfor 172bbf8bd6cSSantosh Puranik % endif 1730065905eSRatan Gupta }}, 1740065905eSRatan Gupta % endfor 17562235618SEmily Shaffer }, 1760065905eSRatan Gupta }}, 1770065905eSRatan Gupta % endif 1780065905eSRatan Gupta % endfor 1790065905eSRatan Gupta }; 1800065905eSRatan Gupta 181db0cbe64SPatrick Venture } // namespace sensor 182db0cbe64SPatrick Venture } // namespace ipmi 183