X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fsle44xx%2Fpd.py;h=866ebd56c168d54bb74e32e88970d83fbcd34467;hp=775ee3c8a8fb78c9d29aa826a683e480e5da1885;hb=1dfaf1e8a7df8e4cc251aeea4afb35cfa3fa219c;hpb=e4f70391abbb153364a534d45a59026961ce1b1f diff --git a/decoders/sle44xx/pd.py b/decoders/sle44xx/pd.py index 775ee3c..866ebd5 100644 --- a/decoders/sle44xx/pd.py +++ b/decoders/sle44xx/pd.py @@ -81,7 +81,6 @@ class Decoder(srd.Decoder): self.reset() def reset(self): - self.ss = self.es = self.ss_byte = -1 self.bits = [] self.cmd = None @@ -93,24 +92,22 @@ class Decoder(srd.Decoder): self.out_ann = self.register(srd.OUTPUT_ANN) self.out_binary = self.register(srd.OUTPUT_BINARY) - def putx(self, data): - self.put(self.ss, self.es, self.out_ann, data) + def putx(self, ss, es, cls, data): + self.put(ss, es, self.out_ann, [cls, data,]) - def putb(self, data): - self.put(self.ss, self.es, self.out_binary, data) + def putb(self, ss, es, cls , data): + self.put(ss, es, self.out_binary, [cls, data,]) def handle_reset(self, pins): - self.ss, self.es = self.samplenum, self.samplenum self.cmd = 'RESET' cls, texts = lookup_proto_ann_txt(self.cmd, {}) - self.putx([cls, texts]) + self.putx(self.samplenum, self.samplenum, cls, texts) self.bits = [] # Next data bytes will be Answer To Reset. self.cmd = 'ATR' def handle_command(self, pins): rst, clk, io = pins - self.ss, self.es = self.samplenum, self.samplenum # XXX Is the comment inverted? # If I/O is rising -> command START # if I/O is falling -> command STOP and response data incoming @@ -128,8 +125,6 @@ class Decoder(srd.Decoder): # slightly stretched clock period throws off the following bit # annotation. Better look for more reliable conditions. Available # documentation suggests bit values are valid during high CLK. - if not self.bits: - self.ss_byte = self.samplenum bit_val = io bit_ss = self.samplenum bit_es = bit_ss # self.bitwidth is not known yet. @@ -143,20 +138,19 @@ class Decoder(srd.Decoder): # Get the data byte value, and byte's ss/es. databyte = bitpack_lsb(self.bits, 0) - self.ss_byte = self.bits[0][1] - self.es_byte = self.bits[-1][2] + byte_ss = self.bits[0][1] + byte_es = self.bits[-1][2] - self.ss, self.es = self.ss_byte, self.es_byte - self.putb([Bin.SEND_DATA, bytes([databyte])]) + self.putb(byte_ss, byte_es, Bin.SEND_DATA, bytes([databyte])) # TODO Present bit values earlier. As soon as their es is known. for bit_val, bit_ss, bit_es in self.bits: cls, texts = lookup_proto_ann_txt('BIT', {'bit': bit_val}) - self.put(bit_ss, bit_es, self.out_ann, [cls, texts]) + self.putx(bit_ss, bit_es, cls, texts) cls, texts = lookup_proto_ann_txt(self.cmd, {'data': databyte}) if cls: - self.putx([cls, texts]) + self.putx(byte_ss, byte_es, cls, texts) # Done with this packet. self.bits = []