2 Replies Latest reply on Feb 1, 2011 3:20 PM by sax

    Using ADL_Display_WriteAndReadI2C in ADL_SDK to access the EDID of monitor


      I want to use the function ADL_Display_WriteAndReadI2C in ADL_SDK to read the EDID of monitor.

      Can anyone explain me the parameter settings, especially for
         objI2C.iLine =
         objI2C.iSpeed =
         objI2C.pcData =


        • Using ADL_Display_WriteAndReadI2C in ADL_SDK to access the EDID of monitor

          Be aware that  ADL_Display_WriteAndReadI2C can be used only for following I2C lines


          // Values for ADL_Display_WriteAndReadI2C()

          #define ADL_DL_I2C_LINE_OEM                0x00000001

          #define ADL_DL_I2C_LINE_OD_CONTROL         0x00000002

          #define ADL_DL_I2C_LINE_OEM2               0x00000003

           For all other’s can be used ADL_Display_DDCBlockAccess_Get.

           ///\brief Function to get Display DDC block access.


          /// This function provides means for applications to send/receive data in the DDC information block via the 12C bus.

          /// \platform

          /// \ALL

          /// \param[in]  iAdapterIndex The ADL index handle of the desired adapter.

          /// \param[in]  iDisplayIndex The desired display index. It can be retrieved from the ADLDisplayInfo data structure.

          /// \param[in]  iOption Combination of \ref ADL_DDC_OPTION_SWITCHDDC2 and \ref ADL_DDC_OPTION_RESTORECOMMAND 

          /// \param[in]  iCommandIndex The index of the command to be saved in the registry.

          /// This parameter is used only when \ref ADL_DDC_OPTION_RESTORECOMMAND of \b iOption is specified. Otherwize set this parameter to 0.

          /// \param[in]  iSendMsgLen The size of the send message buffer.

          /// \param[in]  lpucSendMsgBuf The pointer to the send message buffer.

          /// \param[out] lpulRecvMsgLen The pointer to the size of the receive message buffer.

          /// \param[out] lpucRecvMsgBuf The pointer to the retrieved receive message buffer.

          /// \return If the function succeeds, the return value is \ref ADL_OK. Otherwise the return value is an ADL error code. \ref define_adl_results


          /// \remarks To send data without receiving anything back, specify non-zero send message size and non-NULL buffer,

          /// then set the receive message size to 0 and buffer to NULL.\n

          /// To receive data, you have to send a command defined by the I2C protocol to the display, so you will always have to send

          /// some sequence of bytes to the display, even if you only want to read from the display.\n

          /// To send and receive data at the same time, specify non-zero send and receive message size and non-NULL send and receive

          /// message buffers. You will have to worry about sending proper commands to the display, as defined by the I2C protocol.

          int EXPOSED ADL_Display_DDCBlockAccess_Get(int iAdapterIndex, int iDisplayIndex, int iOption, int iCommandIndex,int iSendMsgLen, char *lpucSendMsgBuf, int *lpulRecvMsgLen, char *lpucRecvMsgBuf);