X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fi2c.py;h=0044190a9f9fde656a81890458c16cf8ba6dcbb6;hb=ba24aaf7608bc5f26705b2747a2f7c05c52a7820;hp=cfaacb0f86864b916fffe7778f4a922b6560afc6;hpb=2b9837d9fc5f9b4eca52327527e18db4bfb730ff;p=libsigrokdecode.git diff --git a/decoders/i2c.py b/decoders/i2c.py index cfaacb0..0044190 100644 --- a/decoders/i2c.py +++ b/decoders/i2c.py @@ -70,24 +70,22 @@ # -> we need to decode multiple protocols at the same time. # -# I2C protocol output format: +# Protocol output format: # -# The protocol output consists of a (Python) list of I2C "packets", each of -# which is of the form -# -# [, , ] +# I2C packet: +# [, , ] # # is one of: # - 'START' (START condition) -# - 'START_REPEAT' (Repeated START) -# - 'ADDRESS_READ' (Slave address, read) -# - 'ADDRESS_WRITE' (Slave address, write) -# - 'DATA_READ' (Data, read) -# - 'DATA_WRITE' (Data, write) +# - 'START REPEAT' (Repeated START) +# - 'ADDRESS READ' (Slave address, read) +# - 'ADDRESS WRITE' (Slave address, write) +# - 'DATA READ' (Data, read) +# - 'DATA WRITE' (Data, write) # - 'STOP' (STOP condition) # -# is the data or address byte associated with the ADDRESS_* and DATA_* -# command. For START, START_REPEAT and STOP, this is None. +# is the data or address byte associated with the 'ADDRESS*' and 'DATA*' +# command. For 'START', 'START REPEAT' and 'STOP', this is None. # # is either 'ACK' or 'NACK', but may also be None. # @@ -102,14 +100,14 @@ ANN_RAW = 2 # Values are verbose and short annotation, respectively. protocol = { 'START': ['START', 'S'], - 'START_REPEAT': ['START REPEAT', 'Sr'], + 'START REPEAT': ['START REPEAT', 'Sr'], 'STOP': ['STOP', 'P'], 'ACK': ['ACK', 'A'], 'NACK': ['NACK', 'N'], - 'ADDRESS_READ': ['ADDRESS READ', 'AR'], - 'ADDRESS_WRITE': ['ADDRESS WRITE', 'AW'], - 'DATA_READ': ['DATA READ', 'DR'], - 'DATA_WRITE': ['DATA WRITE', 'DW'], + 'ADDRESS READ': ['ADDRESS READ', 'AR'], + 'ADDRESS WRITE': ['ADDRESS WRITE', 'AW'], + 'DATA READ': ['DATA READ', 'DR'], + 'DATA WRITE': ['DATA WRITE', 'DW'], } # States @@ -133,7 +131,7 @@ class Decoder(srd.Decoder): {'id': 'sda', 'name': 'SDA', 'desc': 'Serial data line'}, ] options = { - 'address-space': ['Address space (in bits)', 7], + 'addressing': ['Slave addressing (in bits)', 7], # 7 or 10 } annotations = [ # ANN_SHIFTED @@ -157,6 +155,9 @@ class Decoder(srd.Decoder): self.oldscl = None self.oldsda = None + # Set protocol decoder option defaults. + self.addressing = Decoder.options['addressing'][1] + def start(self, metadata): self.out_proto = self.add(srd.OUTPUT_PROTO, 'i2c') self.out_ann = self.add(srd.OUTPUT_ANN, 'i2c') @@ -183,7 +184,7 @@ class Decoder(srd.Decoder): return False def found_start(self, scl, sda): - cmd = 'START_REPEAT' if (self.is_repeat_start == 1) else 'START' + cmd = 'START REPEAT' if (self.is_repeat_start == 1) else 'START' self.put(self.out_proto, [cmd, None, None]) self.put(self.out_ann, [ANN_SHIFTED, [protocol[cmd][0]]]) @@ -231,13 +232,13 @@ class Decoder(srd.Decoder): ack_bit = 'NACK' if (sda == 1) else 'ACK' if self.state == FIND_ADDRESS and self.wr == 1: - cmd = 'ADDRESS_WRITE' + cmd = 'ADDRESS WRITE' elif self.state == FIND_ADDRESS and self.wr == 0: - cmd = 'ADDRESS_READ' + cmd = 'ADDRESS READ' elif self.state == FIND_DATA and self.wr == 1: - cmd = 'DATA_WRITE' + cmd = 'DATA WRITE' elif self.state == FIND_DATA and self.wr == 0: - cmd = 'DATA_READ' + cmd = 'DATA READ' self.put(self.out_proto, [cmd, d, ack_bit]) self.put(self.out_ann, [ANN_SHIFTED,