// 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(); }
bool AP_OpticalFlow::init() { _orientation = ROTATION_NONE; update_conversion_factors(); return true; // just return true by default }