static int8_t _mwii_read_sensors(fc_board_t self, struct fc_data *data){ (void)(self); data->flags = 0xffff; // all mpu6050_readRawAcc(&_brd.mpu, &data->raw_acc.x, &data->raw_acc.y, &data->raw_acc.z); mpu6050_readRawGyr(&_brd.mpu, &data->raw_gyr.x, &data->raw_gyr.y, &data->raw_gyr.z ); mpu6050_convertAcc(&_brd.mpu, data->raw_acc.x, data->raw_acc.y, data->raw_acc.z, &data->acc_g.x, &data->acc_g.y, &data->acc_g.z ); mpu6050_convertAcc(&_brd.mpu, data->raw_gyr.x, data->raw_gyr.y, data->raw_gyr.z, &data->gyr_deg.x, &data->gyr_deg.y, &data->gyr_deg.z ); hmc5883l_readRawMag(&_brd.hmc, &data->raw_mag.x, &data->raw_mag.y, &data->raw_mag.z ); hmc5883l_convertMag(&_brd.hmc, data->raw_mag.x, data->raw_mag.y, data->raw_mag.z, &data->mag.x, &data->mag.y, &data->mag.z ); int16_t sonar = hcsr04_read_distance_in_cm(&brd->hcsr); data->atmospheric_altitude = bmp085_read_altitude(&brd->bmp); data->sonar_altitude = (sonar > 0)?((float)sonar / 100.0):-1; data->temperature = bmp085_read_temperature(&brd->bmp); data->pressure = bmp085_read_pressure(&brd->bmp); data->vbat = (adc0_read_cached(2) / 65535.0); return 0; }
/// reads last measured magnetic field in ? void mwii_read_magnetic_field(float *mx, float *my, float *mz){ int16_t x, y, z; hmc5883l_readRawMag(&_brd.hmc, &x, &y, &z); hmc5883l_convertMag(&_brd.hmc, x, y, z, mx, my, mz); }