static void settingsUpdatedCb(UAVObjEvent * ev) { if (ev == NULL || ev->obj == RevoCalibrationHandle()) { RevoCalibrationGet(&revoCalibration); /* When the revo calibration is updated, update the GyroBias object */ GyrosBiasData gyrosBias; GyrosBiasGet(&gyrosBias); gyrosBias.x = revoCalibration.gyro_bias[REVOCALIBRATION_GYRO_BIAS_X]; gyrosBias.y = revoCalibration.gyro_bias[REVOCALIBRATION_GYRO_BIAS_Y]; gyrosBias.z = revoCalibration.gyro_bias[REVOCALIBRATION_GYRO_BIAS_Z]; GyrosBiasSet(&gyrosBias); gyroBiasSettingsUpdated = true; // In case INS currently running INSSetMagVar(revoCalibration.mag_var); INSSetAccelVar(revoCalibration.accel_var); INSSetGyroVar(revoCalibration.gyro_var); INSSetBaroVar(revoCalibration.baro_var); } if(ev == NULL || ev->obj == HomeLocationHandle()) { HomeLocationGet(&homeLocation); // Compute matrix to convert deltaLLA to NED float lat, alt; lat = homeLocation.Latitude / 10.0e6f * DEG2RAD; alt = homeLocation.Altitude; T[0] = alt+6.378137E6f; T[1] = cosf(lat)*(alt+6.378137E6f); T[2] = -1.0f; } if (ev == NULL || ev->obj == AttitudeSettingsHandle()) AttitudeSettingsGet(&attitudeSettings); if (ev == NULL || ev->obj == RevoSettingsHandle()) RevoSettingsGet(&revoSettings); }
void RevoCalibrationMagScaleGet( float *NewMagScale ) { UAVObjGetDataField(RevoCalibrationHandle(), (void*)NewMagScale, offsetof( RevoCalibrationData, MagScale), 3*sizeof(float)); }
/** * Get/Set object Functions */ void RevoCalibrationMagBiasSet( float *NewMagBias ) { UAVObjSetDataField(RevoCalibrationHandle(), (void*)NewMagBias, offsetof( RevoCalibrationData, MagBias), 3*sizeof(float)); }