static int mraa_ftdi_ft4222_i2c_read_internal(FT_HANDLE handle, uint8_t addr, uint8_t* data, int length) { uint16 bytesRead = 0; uint8 controllerStatus; // syslog(LOG_NOTICE, "FT4222_I2CMaster_Read(%#02X, %#02X)", addr, length); FT4222_STATUS ft4222Status = FT4222_I2CMaster_Read(handle, addr, data, length, &bytesRead); ft4222Status = FT4222_I2CMaster_GetStatus(ftHandle, &controllerStatus); if (FT4222_OK != ft4222Status || I2CM_ERROR(controllerStatus)) { syslog(LOG_ERR, "FT4222_I2CMaster_Read failed (error %d)\n", (int) ft4222Status); return 0; } return bytesRead; }
static int mraa_ftdi_ft4222_i2c_read_internal(FT_HANDLE handle, uint8_t addr, uint8_t* data, int length) { uint16 bytesRead = 0; uint8 controllerStatus; // syslog(LOG_NOTICE, "FT4222_I2CMaster_Read(%#02X, %#02X)", addr, length); mraa_ftdi_ft4222_sleep_ms(1); pthread_mutex_lock(&ft4222_lock); FT4222_STATUS ft4222Status = FT4222_I2CMaster_Read(handle, addr, data, length, &bytesRead); ft4222Status = FT4222_I2CMaster_GetStatus(ftHandleI2c, &controllerStatus); if (FT4222_OK != ft4222Status || I2CM_ERROR(controllerStatus)) { syslog(LOG_ERR, "FT4222_I2CMaster_Read failed for address %#02x\n", addr); FT4222_I2CMaster_Reset(handle); pthread_mutex_unlock(&ft4222_lock); return 0; } // syslog(LOG_NOTICE, "FT4222_I2CMaster_Read completed"); pthread_mutex_unlock(&ft4222_lock); return bytesRead; }