usb_power_delivery: enforce numerical order of RDO/PDO flag annotations
authorGerhard Sittig <gerhard.sittig@gmx.net>
Fri, 22 Dec 2017 17:33:58 +0000 (18:33 +0100)
committerGerhard Sittig <gerhard.sittig@gmx.net>
Fri, 22 Dec 2017 17:57:14 +0000 (18:57 +0100)
Annotations of the USB power delivery decoder contain multiple text
fragments that correspond to several flags in bit fields. The Python
runtime did not guarantee an order of emission and made the test suite
fail.

Sort the order in which RDO and PDO flags related text fragments get
constructed and concatenated. Print text for higher bit positions first
as this might feel more intuitive to users.

This fixes part of bug #1090.

decoders/usb_power_delivery/pd.py

index a2d6b4da4d76693b1bbc739ed0707beffbd9c8d7..ef9a97c7e70ec7aa687db3857b3ff57a799a1c54 100644 (file)
@@ -228,7 +228,7 @@ class Decoder(srd.Decoder):
         op_ma = ((rdo >> 10) & 0x3ff) * 10
         max_ma = (rdo & 0x3ff) * 10
         flags = ''
-        for f in RDO_FLAGS.keys():
+        for f in sorted(RDO_FLAGS.keys(), reverse = True):
             if rdo & f:
                 flags += ' ' + RDO_FLAGS[f]
         return '[%d]%d/%d mA%s' % (pos, op_ma, max_ma, flags)
@@ -252,7 +252,7 @@ class Decoder(srd.Decoder):
         else:
             p = ''
         flags = ''
-        for f in PDO_FLAGS.keys():
+        for f in sorted(PDO_FLAGS.keys(), reverse = True):
             if pdo & f:
                 flags += ' ' + PDO_FLAGS[f]
         return '%s%s%s' % (PDO_TYPE[t], p, flags)
@@ -276,7 +276,7 @@ class Decoder(srd.Decoder):
         else:
             p = ''
         flags = ''
-        for f in PDO_FLAGS.keys():
+        for f in sorted(PDO_FLAGS.keys(), reverse = True):
             if pdo & f:
                 flags += ' ' + PDO_FLAGS[f]
         return '%s%s%s' % (PDO_TYPE[t], p, flags)