On Sat, Dec 25, 2021 at 02:25:56PM +0100, Luca Weiss wrote: > Add new methods to handle decoding of int32, uint32, int64 and uint64 > arrays. > > Also add tests for the new methods. > > Signed-off-by: Luca Weiss <luca@xxxxxxxxx> Applied, thanks. > --- > pylibfdt/libfdt.i | 15 +++++++++++++++ > tests/pylibfdt_tests.py | 11 +++++++++++ > tests/test_props.dts | 4 ++++ > 3 files changed, 30 insertions(+) > > diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i > index c81b504..ac70762 100644 > --- a/pylibfdt/libfdt.i > +++ b/pylibfdt/libfdt.i > @@ -716,6 +716,21 @@ class Property(bytearray): > def as_int64(self): > return self.as_cell('q') > > + def as_list(self, fmt): > + return list(map(lambda x: x[0], struct.iter_unpack('>' + fmt, self))) > + > + def as_uint32_list(self): > + return self.as_list('L') > + > + def as_int32_list(self): > + return self.as_list('l') > + > + def as_uint64_list(self): > + return self.as_list('Q') > + > + def as_int64_list(self): > + return self.as_list('q') > + > def as_str(self): > """Unicode is supported by decoding from UTF-8""" > if self[-1] != 0: > diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py > index 7e3cc4c..5479363 100644 > --- a/tests/pylibfdt_tests.py > +++ b/tests/pylibfdt_tests.py > @@ -382,6 +382,17 @@ class PyLibfdtBasicTests(unittest.TestCase): > self.get_prop("prop-uint64").as_uint64()) > self.assertEqual(-2, self.get_prop("prop-int64").as_int64()) > > + def testGetIntListProperties(self): > + """Test that we can access properties as integer lists""" > + self.assertEqual([128, -16, -2], > + self.get_prop("prop-int32-array").as_int32_list()) > + self.assertEqual([0x1, 0x98765432, 0xdeadbeef], > + self.get_prop("prop-uint32-array").as_uint32_list()) > + self.assertEqual([0x100000000, -2], > + self.get_prop("prop-int64-array").as_int64_list()) > + self.assertEqual([0x100000000, 0x1], > + self.get_prop("prop-uint64-array").as_uint64_list()) > + > def testGetStringlistProperties(self): > """Test that we can access properties as string list""" > node = self.fdt.path_offset('/subnode@1/subsubnode') > diff --git a/tests/test_props.dts b/tests/test_props.dts > index 7e59bd1..5089023 100644 > --- a/tests/test_props.dts > +++ b/tests/test_props.dts > @@ -8,4 +8,8 @@ > prop-hex64 = /bits/ 64 <0xdeadbeef01abcdef>; > prop-uint64 = /bits/ 64 <9223372036854775807>; > prop-int64 = /bits/ 64 <0xfffffffffffffffe>; > + prop-int32-array = <128>, <(-16)>, <0xfffffffe>; > + prop-uint32-array = <0x1>, <0x98765432>, <0xdeadbeef>; > + prop-int64-array = /bits/ 64 <0x100000000 0xfffffffffffffffe>; > + prop-uint64-array = /bits/ 64 <0x100000000 0x1>; > }; -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature