pylibfdt: add Property.as_stringlist()
Add a new method for decoding a string list property, useful for e.g. the "reg-names" property. Also add a test for the new method. Signed-off-by: Luca Weiss <luca@z3ntu.xyz> Message-Id: <20211225132558.167123-2-luca@z3ntu.xyz> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
d152126bb0
commit
83102717d7
2 changed files with 15 additions and 0 deletions
|
@ -724,6 +724,13 @@ class Property(bytearray):
|
|||
raise ValueError('Property contains embedded nul characters')
|
||||
return self[:-1].decode('utf-8')
|
||||
|
||||
def as_stringlist(self):
|
||||
"""Unicode is supported by decoding from UTF-8"""
|
||||
if self[-1] != 0:
|
||||
raise ValueError('Property lacks nul termination')
|
||||
parts = self[:-1].split(b'\x00')
|
||||
return list(map(lambda x: x.decode('utf-8'), parts))
|
||||
|
||||
|
||||
class FdtSw(FdtRo):
|
||||
"""Software interface to create a device tree from scratch
|
||||
|
|
|
@ -382,6 +382,14 @@ class PyLibfdtBasicTests(unittest.TestCase):
|
|||
self.get_prop("prop-uint64").as_uint64())
|
||||
self.assertEqual(-2, self.get_prop("prop-int64").as_int64())
|
||||
|
||||
def testGetStringlistProperties(self):
|
||||
"""Test that we can access properties as string list"""
|
||||
node = self.fdt.path_offset('/subnode@1/subsubnode')
|
||||
self.assertEqual(["subsubnode1", "subsubnode"],
|
||||
self.fdt.getprop(node, "compatible").as_stringlist())
|
||||
self.assertEqual(["this is a placeholder string", "string2"],
|
||||
self.fdt.getprop(node, "placeholder").as_stringlist())
|
||||
|
||||
def testReserveMap(self):
|
||||
"""Test that we can access the memory reserve map"""
|
||||
self.assertEqual(2, self.fdt.num_mem_rsv())
|
||||
|
|
Loading…
Reference in a new issue