## 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
# I2C protocol decoder
#
-#
# The Inter-Integrated Circuit (I2C) bus is a bidirectional, multi-master
# bus using two signals (SCL = serial clock line, SDA = serial data line).
#
# TODO: Handle multiple different I2C devices on same bus
# -> we need to decode multiple protocols at the same time.
-#
-# Protocol output format:
-#
-# I2C packet:
-# [<i2c_command>, <data>, <ack_bit>]
-#
-# <i2c_command> 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)
-# - 'STOP' (STOP condition)
-#
-# <data> is the data or address byte associated with the 'ADDRESS*' and 'DATA*'
-# command. For 'START', 'START REPEAT' and 'STOP', this is None.
-#
-# <ack_bit> is either 'ACK' or 'NACK', but may also be None.
-#
+"""
+I2C protocol output format:
+
+The protocol output consists of a (Python) list of I2C "packets", each of
+which is of the form
+
+ [ _i2c_command_, _data_, _ack_bit_ ]
+
+_i2c_command_ is one of:
+ - 'START' (START condition)
+ - 'START_REPEAT' (Repeated START)
+ - 'ADDRESS_READ' (Address, read)
+ - 'ADDRESS_WRITE' (Address, write)
+ - 'DATA_READ' (Data, read)
+ - 'DATA_WRITE' (Data, write)
+ - 'STOP' (STOP condition)
+
+_data_ is the data or address byte associated with the ADDRESS_* and DATA_*
+command. For START, START_REPEAT and STOP, this is None.
+
+_ack_bit_ is either 'ACK' or 'NACK', but may also be None.
+"""
import sigrokdecode as srd