示例#1
0
//------------------------------------------------------------------------------
//
//  Function:  I2C_Close
//
//  This function closes the device context.
//
BOOL
I2C_Close(
    DWORD context
    )
{
    RETAILMSG(ZONE_FUNCTION, (L"+I2C_Close(0x%08x)\r\n", 
        context
        ));

    BOOL rc = FALSE;
    Instance_t *pInstance = (Instance_t*)context;
    if ((pInstance == NULL) || (pInstance->cookie != I2C_INSTANCE_COOKIE))
        {
        RETAILMSG (ZONE_ERROR, (L"TLD: !ERROR(I2C_Close) - "
            L"Incorrect context parameter\r\n"
            ));
        goto cleanUp;
        }

    I2CClose(pInstance->hI2C);
    LocalFree(pInstance);
    rc = TRUE;

cleanUp:
    RETAILMSG(ZONE_FUNCTION, (L"-I2C_Close(0x%08x)=%d\r\n", 
        context, rc
        ));

    return rc;
}
示例#2
0
//-----------------------------------------------------------------------------
BOOL bq27410_init()
{
	BOOL rc = FALSE;
	USHORT volt = 0;
	
	if((hI2C = I2COpen(OMAP_DEVICE_I2C3)) == NULL) 
	{
        RETAILMSG(1,(L"ERROR: bq27410_init Failed open I2C device driver\r\n"));
        goto cleanUp;
	}
	
	if( I2CSetSlaveAddress(hI2C,  BQ27410_SLAVE_ADDRESS) == FALSE )
		RETAILMSG(1,(L"ERROR: bq27410_init - I2CSetSlaveAddress Failed\r\n"));
	
	I2CSetSubAddressMode(hI2C, I2C_SUBADDRESS_MODE_8);
	I2CSetBaudIndex(hI2C, FULLSPEED_MODE);
	
	if( BQ27410_WriteReg(bq27410CMD_CNTL_LSB,  0x0C) == FALSE ) // send battery insert
		RETAILMSG(1,(L"ERROR: BatteryPDDInitialize: Battery insert Failed\r\n"));
	
	if( BQ27410_ReadReg(bq27410CMD_VOLT_LSB, &volt) )
		RETAILMSG(1,(L"bq27410_init: volt = %d\r\n", volt));
	
	I2CClose(hI2C);
	rc = TRUE;
cleanUp:

	return rc;
}
示例#3
0
bool RTIMUSettings::discoverIMU(int& imuType, unsigned char& slaveAddress)
{
    unsigned char result;
    unsigned char altResult;

    setI2CBus(m_I2CBus);
    if (!I2COpen()) {
        HAL_ERROR1("Failed to open I2C bus %d\n", m_I2CBus);
        return false;
    }

    if (I2CRead(MPU6050_ADDRESS0, MPU6050_WHO_AM_I, 1, &result, "")) {
        if (result == MPU6050_ID) {
            imuType = RTIMU_TYPE_MPU6050;
            slaveAddress = MPU6050_ADDRESS0;
            I2CClose();
            HAL_INFO("Detected MPU6050 at standard address\n");
            return true;
        }
    }

    if (I2CRead(MPU6050_ADDRESS1, MPU6050_WHO_AM_I, 1, &result, "")) {
        if (result == MPU6050_ID) {
            imuType = RTIMU_TYPE_MPU6050;
            slaveAddress = MPU6050_ADDRESS1;
            I2CClose();
            HAL_INFO("Detected MPU6050 at option address\n");
            return true;
        }
    }

    I2CClose();

    HAL_ERROR("No IMU detected\n");
    return false;
}
示例#4
0
VOID
TWLClose(
    HANDLE hContext
    )
{
    Device_t * pDevice = (Device_t *) hContext;
    pDevice->refCount--;
    if (pDevice->refCount == 0)
    {
        if (pDevice->hI2C) 
        {
            I2CClose(pDevice->hI2C);
            pDevice->hI2C = 0;
        }
    }
    
}
示例#5
0
void RTIMUHal::HALClose()
{
    I2CClose();
    SPIClose();
}
示例#6
0
bool RTIMUSettings::discoverIMU(int& imuType, unsigned char& slaveAddress)
{
    unsigned char result;
    unsigned char altResult;

    setI2CBus(m_I2CBus);
    if (!I2COpen()) {
        HAL_ERROR1("Failed to open I2C bus %d\n", m_I2CBus);
        return false;
    }

    if (I2CRead(MPU9150_ADDRESS0, MPU9150_WHO_AM_I, 1, &result, "")) {
        if (result == MPU9150_ID) {
            imuType = RTIMU_TYPE_MPU9150;
            slaveAddress = MPU9150_ADDRESS0;
            I2CClose();
            HAL_INFO("Detected MPU9150 at standard address\n");
            return true;
        }
    }

    if (I2CRead(MPU9150_ADDRESS1, MPU9150_WHO_AM_I, 1, &result, "")) {
        if (result == MPU9150_ID) {
            imuType = RTIMU_TYPE_MPU9150;
            slaveAddress = MPU9150_ADDRESS1;
            I2CClose();
            HAL_INFO("Detected MPU9150 at option address\n");
            return true;
        }
    }

    if (I2CRead(L3GD20H_ADDRESS0, L3GD20H_WHO_AM_I, 1, &result, "")) {
        if (result == L3GD20H_ID) {
            imuType = RTIMU_TYPE_GD20HM303D;
            slaveAddress = L3GD20H_ADDRESS0;
            I2CClose();
            HAL_INFO("Detected L3GD20H at standard address\n");
            return true;
        } else if (result == LSM9DS0_GYRO_ID) {
            if (I2CRead(LSM9DS0_ACCELMAG_ADDRESS0, LSM9DS0_WHO_AM_I, 1, &altResult, "")) {
                if (altResult == LSM9DS0_ACCELMAG_ID) {
                    imuType = RTIMU_TYPE_LSM9DS0;
                    slaveAddress = LSM9DS0_GYRO_ADDRESS0;
                    I2CClose();
                    HAL_INFO("Detected LSM9DS0 at standard address\n");
                    return true;
                }
            }
        }
    }

    if (I2CRead(L3GD20H_ADDRESS1, L3GD20H_WHO_AM_I, 1, &result, "")) {
        if (result == L3GD20H_ID) {
            imuType = RTIMU_TYPE_GD20HM303D;
            slaveAddress = L3GD20H_ADDRESS1;
            I2CClose();
            HAL_INFO("Detected L3GD20H at option address\n");
            return true;
        } else if (result == LSM9DS0_GYRO_ID) {
            if (I2CRead(LSM9DS0_ACCELMAG_ADDRESS1, LSM9DS0_WHO_AM_I, 1, &altResult, "")) {
                if (altResult == LSM9DS0_ACCELMAG_ID) {
                    imuType = RTIMU_TYPE_LSM9DS0;
                    slaveAddress = LSM9DS0_GYRO_ADDRESS1;
                    I2CClose();
                    HAL_INFO("Detected LSM9DS0 at standard address\n");
                    return true;
                }
            }
        }
    }

    if (I2CRead(L3GD20_ADDRESS0, L3GD20_WHO_AM_I, 1, &result, "")) {
        if (result == L3GD20_ID) {
            imuType = RTIMU_TYPE_GD20M303DLHC;
            slaveAddress = L3GD20_ADDRESS0;
            I2CClose();
            HAL_INFO("Detected L3GD20 at standard address\n");
            return true;
        }
    }

    if (I2CRead(L3GD20_ADDRESS1, L3GD20_WHO_AM_I, 1, &result, "")) {
        if (result == L3GD20_ID) {
            imuType = RTIMU_TYPE_GD20M303DLHC;
            slaveAddress = L3GD20_ADDRESS1;
            I2CClose();
            HAL_INFO("Detected L3GD20 at option address\n");
            return true;
        }
    }

   I2CClose();

    HAL_ERROR("No IMU detected\n");
    return false;
}