## You should have received a copy of the GNU General Public License
## along with this program; if not, If not, see <http://www.gnu.org/licenses/>.
##
+"""
+This decoder extracts a DDC stream from an I2C session between a computer
+and a display device. The stream is output as plain bytes.
-#
-# 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
-#
+Details:
+https://en.wikipedia.org/wiki/Display_Data_Channel
+"""
import sigrokdecode as srd
longname = 'Display Data Channel'
desc = 'A protocol for communication between computers and displays.'
longdesc = ''
- author = 'Bert Vermeulen <bert@biot.com>'
- email = '<bert@biot.com>'
+ author = 'Bert Vermeulen'
+ email = 'bert@biot.com'
license = 'gplv3+'
inputs = ['i2c']
outputs = ['ddc']
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'
# 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(ss, es, self.out_ann, [0, ['0x%.2x' % data]])