X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fuart%2Fuart.py;h=92c105ca0c0ff380f7e3c7a363063d2f75432069;hp=2bb61dd86ca546ad119360fedc589626f4f4ff85;hb=2fcd7c22852436c3226de9007e88cb305cce1b00;hpb=2b7160383cc189f721600c04be17a980e216dfd6 diff --git a/decoders/uart/uart.py b/decoders/uart/uart.py index 2bb61dd..92c105c 100644 --- a/decoders/uart/uart.py +++ b/decoders/uart/uart.py @@ -61,8 +61,7 @@ class Decoder(srd.Decoder): id = 'uart' name = 'UART' longname = 'Universal Asynchronous Receiver/Transmitter' - desc = 'Universal Asynchronous Receiver/Transmitter (UART)' - longdesc = 'TODO.' + desc = 'Asynchronous, serial bus.' license = 'gplv2+' inputs = ['logic'] outputs = ['uart'] @@ -102,11 +101,9 @@ class Decoder(srd.Decoder): self.paritybit = [-1, -1] self.stopbit1 = [-1, -1] self.startsample = [-1, -1] - - # Initial state. self.state = ['WAIT FOR START BIT', 'WAIT FOR START BIT'] - self.oldbit = [None, None] + self.oldpins = None def start(self, metadata): self.samplerate = metadata['samplerate'] @@ -269,10 +266,12 @@ class Decoder(srd.Decoder): def decode(self, ss, es, data): # TODO: Either RX or TX could be omitted (optional probe). - for (samplenum, (rx, tx)) in data: + for (self.samplenum, pins) in data: - # TODO: Start counting at 0 or 1? Increase before or after? - self.samplenum += 1 + # Ignore identical samples early on (for performance reasons). + if self.oldpins == pins: + continue + self.oldpins, (rx, tx) = pins, pins # First sample: Save RX/TX value. if self.oldbit[RX] == None: