]> sigrok.org Git - libsigrokdecode.git/commitdiff
srd: uart: Use strings for packet types.
authorUwe Hermann <redacted>
Wed, 1 Feb 2012 17:59:18 +0000 (18:59 +0100)
committerUwe Hermann <redacted>
Wed, 1 Feb 2012 22:18:23 +0000 (23:18 +0100)
While this has a (small) performance penalty compared to using integers,
it has the advantage of not requiring the use of magic numbers which
need to be declared in both the UART decoder and all decoders which
stack on top of UART.

decoders/pan1321/pan1321.py
decoders/uart/uart.py

index 9c22637d1709b81a1a564ae02cf70853b195b3a8..e89b6a0f8097b9440de071891466a61dc0dbe508 100644 (file)
@@ -29,9 +29,6 @@ import sigrokdecode as srd
 # Annotation feed formats
 ANN_ASCII = 0
 
-# UART 'data' packet type.
-T_DATA = 1
-
 # ...
 RX = 0
 TX = 1
@@ -97,7 +94,7 @@ class Decoder(srd.Decoder):
         ptype, rxtx, pdata = data
 
         # For now, ignore all UART packets except the actual data packets.
-        if ptype != T_DATA:
+        if ptype != 'DATA':
             return
 
         # Append a new (ASCII) byte to the currently built/parsed command.
index b70496fc650e14e30494327e4e00af84a8342553..f0f40c92289bc2c59f7d5a1dd68050ba19e2744a 100644 (file)
 # [<packet-type>, <rxtx>, <packet-data>]
 #
 # This is the list of <packet-types>s and their respective <packet-data>:
-#  - T_START: The data is the (integer) value of the start bit (0 or 1).
-#  - T_DATA: The data is the (integer) value of the UART data. Valid values
+#  - 'STARTBIT': The data is the (integer) value of the start bit (0 or 1).
+#  - 'DATA': The data is the (integer) value of the UART data. Valid values
 #    range from 0 to 512 (as the data can be up to 9 bits in size).
-#  - T_PARITY: The data is the (integer) value of the parity bit (0 or 1).
-#  - T_STOP: The data is the (integer) value of the stop bit (0 or 1).
-#  - T_INVALID_START: The data is the (integer) value of the start bit (0 or 1).
-#  - T_INVALID_STOP: The data is the (integer) value of the stop bit (0 or 1).
-#  - T_PARITY_ERROR: The data is a tuple with two entries. The first one is
+#  - 'PARITYBIT': The data is the (integer) value of the parity bit (0 or 1).
+#  - 'STOPBIT': The data is the (integer) value of the stop bit (0 or 1).
+#  - 'INVALID STARTBIT': The data is the (integer) value of the start bit
+#    (0 or 1).
+#  - 'INVALID STOPBIT': The data is the (integer) value of the stop bit
+#    (0 or 1).
+#  - 'PARITY ERROR': The data is a tuple with two entries. The first one is
 #    the expected parity value, the second is the actual parity value.
+#  - TODO: Frame error?
 #
 # The <rxtx> field is 0 for RX packets, 1 for TX packets.
 #
@@ -151,15 +154,6 @@ ANN_HEX = 2
 ANN_OCT = 3
 ANN_BITS = 4
 
-# Protocol output packet types
-T_START = 0
-T_DATA = 1
-T_PARITY = 2
-T_STOP = 3
-T_INVALID_START = 4
-T_INVALID_STOP = 5
-T_PARITY_ERROR = 6
-
 # Given a parity type to check (odd, even, zero, one), the value of the
 # parity bit, the value of the data, and the length of the data (5-9 bits,
 # usually 8 bits) return True if the parity is correct, False otherwise.
@@ -284,7 +278,7 @@ class Decoder(srd.Decoder):
         # The startbit must be 0. If not, we report an error.
         if self.startbit[rxtx] != 0:
             self.put(self.frame_start[rxtx], self.samplenum, self.out_proto,
-                     [T_INVALID_START, rxtx, self.startbit[rxtx]])
+                     ['INVALID STARTBIT', rxtx, self.startbit[rxtx]])
             # TODO: Abort? Ignore rest of the frame?
 
         self.cur_data_bit[rxtx] = 0
@@ -294,7 +288,7 @@ class Decoder(srd.Decoder):
         self.state[rxtx] = GET_DATA_BITS
 
         self.put(self.frame_start[rxtx], self.samplenum, self.out_proto,
-                 [T_START, rxtx, self.startbit[rxtx]])
+                 ['STARTBIT', rxtx, self.startbit[rxtx]])
         self.put(self.frame_start[rxtx], self.samplenum, self.out_ann,
                  [ANN_ASCII, ['Start bit', 'Start', 'S']])
 
@@ -328,7 +322,7 @@ class Decoder(srd.Decoder):
         self.state[rxtx] = GET_PARITY_BIT
 
         self.put(self.startsample[rxtx], self.samplenum - 1, self.out_proto,
-                 [T_DATA, rxtx, self.databyte[rxtx]])
+                 ['DATA', rxtx, self.databyte[rxtx]])
 
         s = 'RX: ' if (rxtx == RX) else 'TX: '
         self.putx(rxtx, [ANN_ASCII, [s + chr(self.databyte[rxtx])]])
@@ -358,14 +352,14 @@ class Decoder(srd.Decoder):
                      self.databyte[rxtx], self.options['num_data_bits']):
             # TODO: Fix range.
             self.put(self.samplenum, self.samplenum, self.out_proto,
-                     [T_PARITY_BIT, rxtx, self.paritybit[rxtx]])
+                     ['PARITYBIT', rxtx, self.paritybit[rxtx]])
             self.put(self.samplenum, self.samplenum, self.out_ann,
                      [ANN_ASCII, ['Parity bit', 'Parity', 'P']])
         else:
             # TODO: Fix range.
             # TODO: Return expected/actual parity values.
             self.put(self.samplenum, self.samplenum, self.out_proto,
-                     [T_PARITY_ERROR, rxtx, (0, 1)]) # FIXME: Dummy tuple...
+                     ['PARITY ERROR', rxtx, (0, 1)]) # FIXME: Dummy tuple...
             self.put(self.samplenum, self.samplenum, self.out_ann,
                      [ANN_ASCII, ['Parity error', 'Parity err', 'PE']])
 
@@ -382,14 +376,14 @@ class Decoder(srd.Decoder):
         # Stop bits must be 1. If not, we report an error.
         if self.stopbit1[rxtx] != 1:
             self.put(self.frame_start[rxtx], self.samplenum, self.out_proto,
-                     [T_INVALID_STOP, rxtx, self.stopbit1[rxtx]])
+                     ['INVALID STOPBIT', rxtx, self.stopbit1[rxtx]])
             # TODO: Abort? Ignore the frame? Other?
 
         self.state[rxtx] = WAIT_FOR_START_BIT
 
         # TODO: Fix range.
         self.put(self.samplenum, self.samplenum, self.out_proto,
-                 [T_STOP, rxtx, self.stopbit1[rxtx]])
+                 ['STOPBIT', rxtx, self.stopbit1[rxtx]])
         self.put(self.samplenum, self.samplenum, self.out_ann,
                  [ANN_ASCII, ['Stop bit', 'Stop', 'P']])