Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

Journeyman III

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 =


2 Replies

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);



Thanks for the reply.
I want to turn off the monitor and set the monitor speaker volume to a minimum.
Can you give me an example how to do this?