// init - initCommAPI parameter controls whether I2C/SPI interface is initialised (set to false if other devices are on the I2C/SPI bus and have already initialised the interface)
bool
AP_OpticalFlow::init(bool initCommAPI)
{
    _orientation_matrix = Matrix3f(1,0,0,0,1,0,0,0,1);
    update_conversion_factors();
    return true;  // just return true by default
}
// set parameter to 400 or 1600 counts per inch
void AP_OpticalFlow_ADNS3080::set_resolution(uint16_t resolution)
{
    uint8_t regVal = read_register(ADNS3080_CONFIGURATION_BITS);

    if( resolution == ADNS3080_RESOLUTION_400 ) {
        regVal &= ~0x10;
        scaler = AP_OPTICALFLOW_ADNS3080_SCALER;
    }else if( resolution == ADNS3080_RESOLUTION_1600) {
        regVal |= 0x10;
        scaler = AP_OPTICALFLOW_ADNS3080_SCALER * 4;
    }

    hal.scheduler->delay_microseconds(50);
    write_register(ADNS3080_CONFIGURATION_BITS, regVal);

    // this will affect conversion factors so update them
    update_conversion_factors();
}
// set parameter to 400 or 1600 counts per inch
void
AP_OpticalFlow_ADNS3080_APM2::set_resolution(int resolution)
{
    byte regVal = read_register(ADNS3080_CONFIGURATION_BITS);

    if( resolution == ADNS3080_RESOLUTION_400 )	{
	    regVal &= ~0x10;
		scaler = AP_OPTICALFLOW_ADNS3080_SCALER;
	}else if( resolution == ADNS3080_RESOLUTION_1600) {
	    regVal |= 0x10;
		scaler = AP_OPTICALFLOW_ADNS3080_SCALER * 4;
	}

	delayMicroseconds(SPI3_DELAY);  // small delay
	write_register(ADNS3080_CONFIGURATION_BITS, regVal);

	// this will affect conversion factors so update them
	update_conversion_factors();
}
Example #4
0
bool AP_OpticalFlow::init()
{
    _orientation = ROTATION_NONE;
    update_conversion_factors();
    return true;      // just return true by default
}