/* * 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. */ package android.hardware.gnss@2.1; import @1.0::IGnssMeasurementCallback; import @2.0::IGnssMeasurementCallback; import @2.0::ElapsedRealtime; import GnssSignalType; /** * The callback interface to report measurements from the HAL. */ interface IGnssMeasurementCallback extends @2.0::IGnssMeasurementCallback { /** * Flags to indicate what fields in GnssMeasurement are valid. */ enum GnssMeasurementFlags : @1.0::IGnssMeasurementCallback.GnssMeasurementFlags { /** * A valid full inter-signal bias is stored in the data structure. */ HAS_FULL_ISB = 1 << 16, /** * A valid full inter-signal bias uncertainty is stored in the data structure. */ HAS_FULL_ISB_UNCERTAINTY = 1 << 17, /** * A valid satellite inter-signal bias is stored in the data structure. */ HAS_SATELLITE_ISB = 1 << 18, /** * A valid satellite inter-signal bias uncertainty is stored in the data structure. */ HAS_SATELLITE_ISB_UNCERTAINTY = 1 << 19, }; /** * Extends a GNSS Measurement, adding basebandCN0DbHz, GnssMeasurementFlags, * receiverInterSignalBiasNs, receiverInterSignalBiasUncertaintyNs, satelliteInterSignalBiasNs * and satelliteInterSignalBiasUncertaintyNs. */ struct GnssMeasurement { /** * GNSS measurement information for a single satellite and frequency, as in the 2.0 version * of the HAL. * * In this version of the HAL, the field 'flags' in the v2_0.v1_1.v1_0 struct is deprecated, * and is no longer used by the framework. The GNSS measurement flags are instead reported * in @2.1::IGnssMeasurementCallback.GnssMeasurement.flags. * */ @2.0::IGnssMeasurementCallback.GnssMeasurement v2_0; /** * A set of flags indicating the validity of the fields in this data * structure. * * Fields for which there is no corresponding flag must be filled in * with a valid value. For convenience, these are marked as mandatory. * * Others fields may have invalid information in them, if not marked as * valid by the corresponding bit in flags. */ bitfield flags; /** * The full inter-signal bias (ISB) in nanoseconds. * * This value is the sum of the estimated receiver-side and the space-segment-side * inter-system bias, inter-frequency bias and inter-code bias, including * * - Receiver inter-constellation bias (with respect to the constellation in * GnssClock.referenceSignalTypeForIsb) * - Receiver inter-frequency bias (with respect to the carrier frequency in * GnssClock.referenceSignalTypeForIsb) * - Receiver inter-code bias (with respect to the code type in * GnssClock.referenceSignalTypeForIsb) * - Master clock bias (e.g., GPS-GAL Time Offset (GGTO), GPS-UTC Time Offset * (TauGps), BDS-GLO Time Offset (BGTO)) (with respect to the constellation in * GnssClock.referenceSignalTypeForIsb) * - Group delay (e.g., Total Group Delay (TGD)) * - Satellite inter-frequency bias (GLO only) (with respect to the carrier frequency in * GnssClock.referenceSignalTypeForIsb) * - Satellite inter-code bias (e.g., Differential Code Bias (DCB)) (with respect to the * code type in GnssClock.referenceSignalTypeForIsb) * * If a component of the above is already compensated in the provided * GnssMeasurement.receivedSvTimeInNs, then it must not be included in the reported full * ISB. * * The value does not include the inter-frequency Ionospheric bias. * * The sign of the value is defined by the following equation: * corrected pseudorange = raw pseudorange - fullInterSignalBias * * The full ISB of GnssClock.referenceSignalTypeForIsb is defined to be 0.0 nanoseconds. */ double fullInterSignalBiasNs; /** * 1-sigma uncertainty associated with the full inter-signal bias in nanoseconds. */ double fullInterSignalBiasUncertaintyNs; /** * The satellite inter-signal bias in nanoseconds. * * This value is the sum of the space-segment-side inter-system bias, inter-frequency bias * and inter-code bias, including * * - Master clock bias (e.g., GPS-GAL Time Offset (GGTO), GPS-UTC Time Offset * (TauGps), BDS-GLO Time Offset (BGTO)) (with respect to the constellation in * GnssClock.referenceSignalTypeForIsb) * - Group delay (e.g., Total Group Delay (TGD)) * - Satellite inter-frequency bias (GLO only) (with respect to the carrier frequency in * GnssClock.referenceSignalTypeForIsb) * - Satellite inter-code bias (e.g., Differential Code Bias (DCB)) (with respect to the * code type in GnssClock.referenceSignalTypeForIsb) * * The sign of the value is defined by the following equation: * corrected pseudorange = raw pseudorange - satelliteInterSignalBias * * The satellite ISB of GnssClock.referenceSignalTypeForIsb is defined to be 0.0 * nanoseconds. */ double satelliteInterSignalBiasNs; /** * 1-sigma uncertainty associated with the satellite inter-signal bias in nanoseconds. */ double satelliteInterSignalBiasUncertaintyNs; /** * Baseband Carrier-to-noise density in dB-Hz, typically in the range [0, 63]. It contains * the measured C/N0 value for the signal measured at the baseband. * * This is typically a few dB weaker than the value estimated for C/N0 at the antenna port, * which is reported in cN0DbHz. * * If a signal has separate components (e.g. Pilot and Data channels) and the receiver only * processes one of the components, then the reported basebandCN0DbHz reflects only the * component that is processed. * * This value is mandatory. */ double basebandCN0DbHz; }; /** * Extends a GNSS clock time, adding a referenceSignalTypeForIsb. */ struct GnssClock { /** * GNSS clock time information, as in the 1.0 version of the HAL. */ @1.0::IGnssMeasurementCallback.GnssClock v1_0; /** * Reference GNSS signal type for inter-signal bias. */ GnssSignalType referenceSignalTypeForIsb; }; /** * Complete set of GNSS Measurement data, same as 2.0 with additional fields in measurements. */ struct GnssData { /** * The full set of satellite measurement observations. */ vec measurements; /** * The GNSS clock time reading. */ GnssClock clock; /** * Timing information of the GNSS data synchronized with SystemClock.elapsedRealtimeNanos() * clock. */ ElapsedRealtime elapsedRealtime; }; /** * Callback for the hal to pass a GnssData structure back to the client. * * @param data Contains a reading of GNSS measurements. */ gnssMeasurementCb_2_1(GnssData data); };