3
from hwtest.reports.data import DataReport
6
class HalReport(DataReport):
7
"""Report for HAL related data types."""
9
def register_dumps(self):
10
for (dt, dh) in [(dbus.Boolean, self.dumps_bool),
11
(dbus.Int32, self.dumps_int),
12
(dbus.UInt64, self.dumps_uint64),
13
(dbus.Double, self.dumps_double),
14
(dbus.String, self.dumps_str),
15
(dbus.Array, self.dumps_list),
16
(dbus.Dictionary, self.dumps_dict),
17
("hal", self.dumps_hal)]:
18
self._manager.handle_dumps(dt, dh)
20
def register_loads(self):
21
for (lt, lh) in [("hal", self.loads_hal),
22
("uint64", self.loads_int),
23
("double", self.loads_float)]:
24
self._manager.handle_loads(lt, lh)
26
def dumps_uint64(self, obj, parent):
27
self._dumps_text(str(obj), parent, "uint64")
29
def dumps_double(self, obj, parent):
30
self._dumps_text(str(obj), parent, "double")
32
def dumps_hal(self, obj, parent):
33
parent.setAttribute("version", obj["version"])
35
for device in obj["devices"]:
36
element = self._create_element("device", parent)
37
properties = self._create_element("properties", element)
38
element.setAttribute("id", str(id)); id += 1
39
element.setAttribute("udi", device["info.udi"])
40
self._manager.call_dumps(device, properties)
42
def loads_hal(self, node):
44
hal["version"] = node.getAttribute("version")
46
for device in (d for d in node.childNodes if d.localName == "device"):
47
properties = device.getElementsByTagName("properties")[0]
48
value = self._manager.call_loads(properties)
49
hal["devices"].append(value)