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