X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fddc.py;h=53244c3e0aa84dcb8e2dd0d83367fb86325b2b9d;hp=cdeae6dafcee752827a5fd6c2fc4e5fb44e4b948;hb=9e587cc9d4db0da9bdfffbc023d848dd59df74b4;hpb=9a12a6e7af3d7091d8e35dd1c731402cb80a01b0 diff --git a/decoders/ddc.py b/decoders/ddc.py index cdeae6d..53244c3 100644 --- a/decoders/ddc.py +++ b/decoders/ddc.py @@ -17,15 +17,13 @@ ## along with this program; if not, If not, see . ## -# -# DDC protocol decoder -# -# This decoder extracts a DDC stream from an I2C session between a computer -# and a display device. The stream is output as plain bytes. -# -# Details: -# https://en.wikipedia.org/wiki/Display_Data_Channel -# +''' +This decoder extracts a DDC stream from an I2C session between a computer +and a display device. The stream is output as plain bytes. + +Details: +https://en.wikipedia.org/wiki/Display_Data_Channel +''' import sigrokdecode as srd @@ -35,8 +33,8 @@ class Decoder(srd.Decoder): longname = 'Display Data Channel' desc = 'A protocol for communication between computers and displays.' longdesc = '' - author = 'Bert Vermeulen ' - email = '' + author = 'Bert Vermeulen' + email = 'bert@biot.com' license = 'gplv3+' inputs = ['i2c'] outputs = ['ddc'] @@ -52,18 +50,18 @@ class Decoder(srd.Decoder): def start(self, metadata): self.out_ann = self.add(srd.OUTPUT_ANN, 'ddc') - def decode(self, start_sample, end_sample, i2c_data): + def decode(self, ss, es, data): try: - cmd, data, ack_bit = i2c_data + cmd, data, ack_bit = data except Exception as e: raise Exception('malformed I2C input: %s' % str(e)) from e if self.state is None: # Wait for the DDC session to start. - if cmd in ('START', 'START_REPEAT'): + if cmd in ('START', 'START REPEAT'): self.state = 'start' elif self.state == 'start': - if cmd == 'ADDRESS_READ' and data == 80: + if cmd == 'ADDRESS READ' and data == 80: # 80 is the I2C slave address of a connected display, # so this marks the start of the DDC data transfer. self.state = 'transfer' @@ -71,9 +69,8 @@ class Decoder(srd.Decoder): # Got back to the idle state. self.state = None elif self.state == 'transfer': - if cmd == 'DATA_READ': + if cmd == 'DATA READ': # There shouldn't be anything but data reads on this # address, so ignore everything else. - self.put(start_sample, end_sample, self.out_ann, - [0, ['0x%.2x' % data]]) + self.put(ss, es, self.out_ann, [0, ['0x%.2x' % data]])