I2C_Result I2C__Read_FullPage (unsigned char I2c_Address,
unsigned char * Reg_Address,
unsigned char Reg_Address_Len,
unsigned char * pBuffer,
unsigned char pBufferSize)
{
I2C_Result Result = I2C__Start();
if (Result) return Result;
Result = I2C_ADD_NOT_EXIST;
if (I2C__Write(I2c_Address & 0xFE) == ACK)
{
Result = (I2C_Result)ACK;
while(Reg_Address_Len-- && Result == ACK)
Result = (I2C_Result)I2C__Write(* Reg_Address++);
I2C__ReStart();
if (I2C__Write(I2c_Address | 0x01) == ACK)
{
while (pBufferSize--)
*pBuffer++ = I2C__Read(pBufferSize ? 1 : 0);
Result = I2C_SUCCESS;
}
}
I2C__Stop();
return Result;
}