/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define LOG_TAG "GnssMeasurementCorrections" #include "v2_1/GnssMeasurementCorrections.h" #include namespace android::hardware::gnss::measurement_corrections::V1_1::implementation { GnssMeasurementCorrections::GnssMeasurementCorrections() {} GnssMeasurementCorrections::~GnssMeasurementCorrections() {} // Methods from V1_0::IMeasurementCorrections follow. Return GnssMeasurementCorrections::setCorrections( const V1_0::MeasurementCorrections& corrections) { ALOGD("setCorrections"); ALOGD("corrections = lat: %f, lng: %f, alt: %f, hUnc: %f, vUnc: %f, toa: %llu, " "satCorrections.size: %d", corrections.latitudeDegrees, corrections.longitudeDegrees, corrections.altitudeMeters, corrections.horizontalPositionUncertaintyMeters, corrections.verticalPositionUncertaintyMeters, static_cast(corrections.toaGpsNanosecondsOfWeek), static_cast(corrections.satCorrections.size())); for (auto singleSatCorrection : corrections.satCorrections) { ALOGD("singleSatCorrection = flags: %d, constellation: %d, svid: %d, cfHz: %f, probLos: %f," " epl: %f, eplUnc: %f", static_cast(singleSatCorrection.singleSatCorrectionFlags), static_cast(singleSatCorrection.constellation), static_cast(singleSatCorrection.svid), singleSatCorrection.carrierFrequencyHz, singleSatCorrection.probSatIsLos, singleSatCorrection.excessPathLengthMeters, singleSatCorrection.excessPathLengthUncertaintyMeters); ALOGD("reflecting plane = lat: %f, lng: %f, alt: %f, azm: %f", singleSatCorrection.reflectingPlane.latitudeDegrees, singleSatCorrection.reflectingPlane.longitudeDegrees, singleSatCorrection.reflectingPlane.altitudeMeters, singleSatCorrection.reflectingPlane.azimuthDegrees); } return true; } Return GnssMeasurementCorrections::setCallback( const sp& callback) { using Capabilities = V1_0::IMeasurementCorrectionsCallback::Capabilities; auto ret = callback->setCapabilitiesCb(Capabilities::LOS_SATS | Capabilities::EXCESS_PATH_LENGTH | Capabilities::REFLECTING_PLANE); if (!ret.isOk()) { ALOGE("%s: Unable to invoke callback", __func__); return false; } return true; } // Methods from V1_1::IMeasurementCorrections follow. Return GnssMeasurementCorrections::setCorrections_1_1( const V1_1::MeasurementCorrections& corrections) { ALOGD("setCorrections_1_1"); ALOGD("corrections = lat: %f, lng: %f, alt: %f, hUnc: %f, vUnc: %f, toa: %llu," "satCorrections.size: %d, hasEnvironmentBearing: %d, environmentBearingDeg: %f," "environmentBearingUncDeg: %f", corrections.v1_0.latitudeDegrees, corrections.v1_0.longitudeDegrees, corrections.v1_0.altitudeMeters, corrections.v1_0.horizontalPositionUncertaintyMeters, corrections.v1_0.verticalPositionUncertaintyMeters, static_cast(corrections.v1_0.toaGpsNanosecondsOfWeek), static_cast(corrections.v1_0.satCorrections.size()), corrections.hasEnvironmentBearing, corrections.environmentBearingDegrees, corrections.environmentBearingUncertaintyDegrees); for (auto singleSatCorrection : corrections.satCorrections) { ALOGD("singleSatCorrection = flags: %d, constellation: %d, svid: %d, cfHz: %f, probLos: %f," " epl: %f, eplUnc: %f", static_cast(singleSatCorrection.v1_0.singleSatCorrectionFlags), static_cast(singleSatCorrection.constellation), static_cast(singleSatCorrection.v1_0.svid), singleSatCorrection.v1_0.carrierFrequencyHz, singleSatCorrection.v1_0.probSatIsLos, singleSatCorrection.v1_0.excessPathLengthMeters, singleSatCorrection.v1_0.excessPathLengthUncertaintyMeters); ALOGD("reflecting plane = lat: %f, lng: %f, alt: %f, azm: %f", singleSatCorrection.v1_0.reflectingPlane.latitudeDegrees, singleSatCorrection.v1_0.reflectingPlane.longitudeDegrees, singleSatCorrection.v1_0.reflectingPlane.altitudeMeters, singleSatCorrection.v1_0.reflectingPlane.azimuthDegrees); } return true; } } // namespace android::hardware::gnss::measurement_corrections::V1_1::implementation