X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fuart%2Fpd.py;h=0fa0e7ff442b8e307a883cbd9711b646be9372cd;hb=ea36c1988829b9f8e9385ff6e5e506e3cab46877;hp=af773b477e37493b10ea1ca5c40a458eb0d438cc;hpb=6ffd71c169f0562134b5e7548ea0a36f93604d86;p=libsigrokdecode.git diff --git a/decoders/uart/pd.py b/decoders/uart/pd.py index af773b4..0fa0e7f 100644 --- a/decoders/uart/pd.py +++ b/decoders/uart/pd.py @@ -102,7 +102,7 @@ class Decoder(srd.Decoder): 'values': (0.0, 0.5, 1.0, 1.5)}, {'id': 'bit_order', 'desc': 'Bit order', 'default': 'lsb-first', 'values': ('lsb-first', 'msb-first')}, - {'id': 'format', 'desc': 'Data format', 'default': 'ascii', + {'id': 'format', 'desc': 'Data format', 'default': 'hex', 'values': ('ascii', 'dec', 'hex', 'oct', 'bin')}, {'id': 'invert_rx', 'desc': 'Invert RX?', 'default': 'no', 'values': ('yes', 'no')}, @@ -179,6 +179,7 @@ class Decoder(srd.Decoder): self.out_python = self.register(srd.OUTPUT_PYTHON) self.out_binary = self.register(srd.OUTPUT_BINARY) self.out_ann = self.register(srd.OUTPUT_ANN) + self.bw = (self.options['num_data_bits'] + 7) // 8 def metadata(self, key, value): if key == srd.SRD_CONF_SAMPLERATE: @@ -223,11 +224,13 @@ class Decoder(srd.Decoder): self.startbit[rxtx] = signal - # The startbit must be 0. If not, we report an error. + # The startbit must be 0. If not, we report an error and wait + # for the next start bit (assuming this one was spurious). if self.startbit[rxtx] != 0: self.putp(['INVALID STARTBIT', rxtx, self.startbit[rxtx]]) self.putg([rxtx + 10, ['Frame error', 'Frame err', 'FE']]) - # TODO: Abort? Ignore rest of the frame? + self.state[rxtx] = 'WAIT FOR START BIT' + return self.cur_data_bit[rxtx] = 0 self.datavalue[rxtx] = 0 @@ -277,8 +280,9 @@ class Decoder(srd.Decoder): if formatted is not None: self.putx(rxtx, [rxtx, [formatted]]) - self.putbin(rxtx, [rxtx, bytes([b])]) - self.putbin(rxtx, [2, bytes([b])]) + bdata = b.to_bytes(self.bw, byteorder='big') + self.putbin(rxtx, [rxtx, bdata]) + self.putbin(rxtx, [2, bdata]) self.databits[rxtx] = []