1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport @1.0::IGnssMeasurementCallback; 20*4d7e907cSAndroid Build Coastguard Worker 21*4d7e907cSAndroid Build Coastguard Worker/** The callback interface to report measurements from the HAL. */ 22*4d7e907cSAndroid Build Coastguard Workerinterface IGnssMeasurementCallback extends @1.0::IGnssMeasurementCallback { 23*4d7e907cSAndroid Build Coastguard Worker /** 24*4d7e907cSAndroid Build Coastguard Worker * Flags indicating the Accumulated Delta Range's states. 25*4d7e907cSAndroid Build Coastguard Worker * 26*4d7e907cSAndroid Build Coastguard Worker * See the table below for a detailed interpretation of each state. This is 27*4d7e907cSAndroid Build Coastguard Worker * a continuation of the table from 1.0/IGnssMeasurementCallback.hal. 28*4d7e907cSAndroid Build Coastguard Worker * 29*4d7e907cSAndroid Build Coastguard Worker * +---------------------+-------------------+-----------------------------+ 30*4d7e907cSAndroid Build Coastguard Worker * | ADR_STATE | Time of relevance | Interpretation | 31*4d7e907cSAndroid Build Coastguard Worker * +---------------------+-------------------+-----------------------------+ 32*4d7e907cSAndroid Build Coastguard Worker * | HALF_CYCLE_RESOLVED | ADR(t) | Half cycle ambiguity is | 33*4d7e907cSAndroid Build Coastguard Worker * | | | resolved at time t. | 34*4d7e907cSAndroid Build Coastguard Worker * | | | | 35*4d7e907cSAndroid Build Coastguard Worker * | | | For signals that have | 36*4d7e907cSAndroid Build Coastguard Worker * | | | databits, the carrier phase | 37*4d7e907cSAndroid Build Coastguard Worker * | | | tracking loops typically | 38*4d7e907cSAndroid Build Coastguard Worker * | | | use a costas loop | 39*4d7e907cSAndroid Build Coastguard Worker * | | | discriminator. This type of | 40*4d7e907cSAndroid Build Coastguard Worker * | | | tracking loop introduces a | 41*4d7e907cSAndroid Build Coastguard Worker * | | | half-cycle ambiguity that | 42*4d7e907cSAndroid Build Coastguard Worker * | | | is resolved by searching | 43*4d7e907cSAndroid Build Coastguard Worker * | | | through the received data | 44*4d7e907cSAndroid Build Coastguard Worker * | | | for known patterns of | 45*4d7e907cSAndroid Build Coastguard Worker * | | | databits (e.g. GPS uses the | 46*4d7e907cSAndroid Build Coastguard Worker * | | | TLM word) which then | 47*4d7e907cSAndroid Build Coastguard Worker * | | | determines the polarity of | 48*4d7e907cSAndroid Build Coastguard Worker * | | | the incoming data and | 49*4d7e907cSAndroid Build Coastguard Worker * | | | resolves the half-cycle | 50*4d7e907cSAndroid Build Coastguard Worker * | | | ambiguity. | 51*4d7e907cSAndroid Build Coastguard Worker * | | | | 52*4d7e907cSAndroid Build Coastguard Worker * | | | Before the half-cycle | 53*4d7e907cSAndroid Build Coastguard Worker * | | | ambiguity has been resolved | 54*4d7e907cSAndroid Build Coastguard Worker * | | | it is possible that the | 55*4d7e907cSAndroid Build Coastguard Worker * | | | ADR_STATE_VALID flag is | 56*4d7e907cSAndroid Build Coastguard Worker * | | | set, but the ADR_STATE_ | 57*4d7e907cSAndroid Build Coastguard Worker * | | | HALF_CYCLE_RESOLVED flag is | 58*4d7e907cSAndroid Build Coastguard Worker * | | | not set. | 59*4d7e907cSAndroid Build Coastguard Worker * +---------------------+-------------------+-----------------------------+ 60*4d7e907cSAndroid Build Coastguard Worker */ 61*4d7e907cSAndroid Build Coastguard Worker enum GnssAccumulatedDeltaRangeState 62*4d7e907cSAndroid Build Coastguard Worker : @1.0::IGnssMeasurementCallback.GnssAccumulatedDeltaRangeState { 63*4d7e907cSAndroid Build Coastguard Worker ADR_STATE_HALF_CYCLE_RESOLVED = 1 << 3, // Carrier-phase half-cycle ambiguity resolved 64*4d7e907cSAndroid Build Coastguard Worker }; 65*4d7e907cSAndroid Build Coastguard Worker 66*4d7e907cSAndroid Build Coastguard Worker /** 67*4d7e907cSAndroid Build Coastguard Worker * Extends a GNSS Measurement, adding the new enum. 68*4d7e907cSAndroid Build Coastguard Worker */ 69*4d7e907cSAndroid Build Coastguard Worker struct GnssMeasurement { 70*4d7e907cSAndroid Build Coastguard Worker /** 71*4d7e907cSAndroid Build Coastguard Worker * GNSS measurement information for a single satellite and frequency, as in the 1.0 72*4d7e907cSAndroid Build Coastguard Worker * version of the HAL. 73*4d7e907cSAndroid Build Coastguard Worker * 74*4d7e907cSAndroid Build Coastguard Worker * In this version of the HAL, these fields of the 75*4d7e907cSAndroid Build Coastguard Worker * @1.0::IGnssMeasurementCallback.GnssMeasurement v1_0 struct are deprecated, and 76*4d7e907cSAndroid Build Coastguard Worker * are no longer used by the framework: 77*4d7e907cSAndroid Build Coastguard Worker * carrierCycles 78*4d7e907cSAndroid Build Coastguard Worker * carrierPhase 79*4d7e907cSAndroid Build Coastguard Worker * carrierPhaseUncertainty 80*4d7e907cSAndroid Build Coastguard Worker * 81*4d7e907cSAndroid Build Coastguard Worker * Similar information about carrier phase signal tracking is still reported in these 82*4d7e907cSAndroid Build Coastguard Worker * fields of @1.0::IGnssMeasurementCallback.GnssMeasurement v1_0: 83*4d7e907cSAndroid Build Coastguard Worker * accumulatedDeltaRangeM 84*4d7e907cSAndroid Build Coastguard Worker * accumulatedDeltaRangeUncertaintyM 85*4d7e907cSAndroid Build Coastguard Worker */ 86*4d7e907cSAndroid Build Coastguard Worker @1.0::IGnssMeasurementCallback.GnssMeasurement v1_0; 87*4d7e907cSAndroid Build Coastguard Worker 88*4d7e907cSAndroid Build Coastguard Worker /** 89*4d7e907cSAndroid Build Coastguard Worker * Provides the state of Accumulated Delta Range values, including additional information 90*4d7e907cSAndroid Build Coastguard Worker * beyond version 1.0 of the HAL. See GnssAccumulatedDeltaRangeState. 91*4d7e907cSAndroid Build Coastguard Worker * 92*4d7e907cSAndroid Build Coastguard Worker * In this (1.1) version of the HAL, this value is used by the framework, not the 93*4d7e907cSAndroid Build Coastguard Worker * value provided by v1_0.accumulatedDeltaRangeState. 94*4d7e907cSAndroid Build Coastguard Worker */ 95*4d7e907cSAndroid Build Coastguard Worker bitfield<GnssAccumulatedDeltaRangeState> accumulatedDeltaRangeState; 96*4d7e907cSAndroid Build Coastguard Worker }; 97*4d7e907cSAndroid Build Coastguard Worker 98*4d7e907cSAndroid Build Coastguard Worker /** 99*4d7e907cSAndroid Build Coastguard Worker * Complete set of GNSS Measurement data, same as 1.0 with additional enum in measurements. 100*4d7e907cSAndroid Build Coastguard Worker */ 101*4d7e907cSAndroid Build Coastguard Worker struct GnssData { 102*4d7e907cSAndroid Build Coastguard Worker /** The full set of satellite measurement observations. */ 103*4d7e907cSAndroid Build Coastguard Worker vec<GnssMeasurement> measurements; 104*4d7e907cSAndroid Build Coastguard Worker 105*4d7e907cSAndroid Build Coastguard Worker /** The GNSS clock time reading. */ 106*4d7e907cSAndroid Build Coastguard Worker GnssClock clock; 107*4d7e907cSAndroid Build Coastguard Worker }; 108*4d7e907cSAndroid Build Coastguard Worker 109*4d7e907cSAndroid Build Coastguard Worker /** 110*4d7e907cSAndroid Build Coastguard Worker * Callback for the hal to pass a GnssData structure back to the client. 111*4d7e907cSAndroid Build Coastguard Worker * 112*4d7e907cSAndroid Build Coastguard Worker * @param data Contains a reading of GNSS measurements. 113*4d7e907cSAndroid Build Coastguard Worker */ 114*4d7e907cSAndroid Build Coastguard Worker gnssMeasurementCb(GnssData data); 115*4d7e907cSAndroid Build Coastguard Worker}; 116