]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/uart/pd.py
uart: Display non-ASCII characters properly.
[libsigrokdecode.git] / decoders / uart / pd.py
index 32568da307a24b62f9f4d1d42f5c12fb98383643..d71fc23115760c06fd9e2eef56ab64ba1dc47770 100644 (file)
@@ -132,8 +132,8 @@ class Decoder(srd.Decoder):
         self.oldpins = [1, 1]
 
     def start(self):
-        self.out_proto = self.add(srd.OUTPUT_PYTHON, 'uart')
-        self.out_ann = self.add(srd.OUTPUT_ANN, 'uart')
+        self.out_proto = self.register(srd.OUTPUT_PYTHON)
+        self.out_ann = self.register(srd.OUTPUT_ANN)
 
     def metadata(self, key, value):
         if key == srd.SRD_CONF_SAMPLERATE:
@@ -141,9 +141,6 @@ class Decoder(srd.Decoder):
             # The width of one UART bit in number of samples.
             self.bit_width = float(self.samplerate) / float(self.options['baudrate'])
 
-    def report(self):
-        pass
-
     # Return true if we reached the middle of the desired bit, false otherwise.
     def reached_bit(self, rxtx, bitnum):
         # bitpos is the samplenumber which is in the middle of the
@@ -225,7 +222,8 @@ class Decoder(srd.Decoder):
 
         b, f = self.databyte[rxtx], self.options['format']
         if f == 'ascii':
-            self.putx(rxtx, [rxtx, [chr(b)]])
+            c = chr(b) if chr(b).isprintable() else '[%02X]' % b
+            self.putx(rxtx, [rxtx, [c]])
         elif f == 'dec':
             self.putx(rxtx, [rxtx, [str(b)]])
         elif f == 'hex':