blob: 9bc6786b80a7275ae21f4c88a3ddd6e02f05453a [file] [log] [blame]
Yu-Han Yanga5098612019-02-08 16:22:07 -08001/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <Constants.h>
Enrico Granata3ba5d222020-10-21 17:20:00 -060018#include <MockLocation.h>
Yu-Han Yanga5098612019-02-08 16:22:07 -080019#include <Utils.h>
Yu-Han Yang04832302020-11-20 09:51:18 -080020#include <aidl/android/hardware/gnss/BnGnss.h>
Yu-Han Yangc06b5362019-10-25 14:14:35 -070021#include <utils/SystemClock.h>
Yu-Han Yanga5098612019-02-08 16:22:07 -080022
23namespace android {
24namespace hardware {
25namespace gnss {
26namespace common {
27
Yu-Han Yangcfca8a72020-12-12 09:36:28 -080028using aidl::android::hardware::gnss::ElapsedRealtime;
29using aidl::android::hardware::gnss::GnssClock;
30using aidl::android::hardware::gnss::GnssData;
31using aidl::android::hardware::gnss::GnssMeasurement;
32using aidl::android::hardware::gnss::IGnss;
33using aidl::android::hardware::gnss::IGnssMeasurementCallback;
34
Yu-Han Yanga5098612019-02-08 16:22:07 -080035using GnssSvFlags = V1_0::IGnssCallback::GnssSvFlags;
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080036using GnssMeasurementFlagsV1_0 = V1_0::IGnssMeasurementCallback::GnssMeasurementFlags;
37using GnssMeasurementFlagsV2_1 = V2_1::IGnssMeasurementCallback::GnssMeasurementFlags;
Yu-Han Yangc06b5362019-10-25 14:14:35 -070038using GnssMeasurementStateV2_0 = V2_0::IGnssMeasurementCallback::GnssMeasurementState;
Yu-Han Yangc06b5362019-10-25 14:14:35 -070039using ElapsedRealtimeFlags = V2_0::ElapsedRealtimeFlags;
40using GnssConstellationTypeV2_0 = V2_0::GnssConstellationType;
41using IGnssMeasurementCallbackV2_0 = V2_0::IGnssMeasurementCallback;
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080042using GnssSignalType = V2_1::GnssSignalType;
Yu-Han Yanga5098612019-02-08 16:22:07 -080043
Yu-Han Yang04832302020-11-20 09:51:18 -080044using GnssDataV2_0 = V2_0::IGnssMeasurementCallback::GnssData;
45using GnssDataV2_1 = V2_1::IGnssMeasurementCallback::GnssData;
46using GnssSvInfoV1_0 = V1_0::IGnssCallback::GnssSvInfo;
47using GnssSvInfoV2_0 = V2_0::IGnssCallback::GnssSvInfo;
48using GnssSvInfoV2_1 = V2_1::IGnssCallback::GnssSvInfo;
49using GnssAntennaInfo = ::android::hardware::gnss::V2_1::IGnssAntennaInfoCallback::GnssAntennaInfo;
50using Row = V2_1::IGnssAntennaInfoCallback::Row;
51using Coord = V2_1::IGnssAntennaInfoCallback::Coord;
52
Yu-Han Yangc06b5362019-10-25 14:14:35 -070053GnssDataV2_1 Utils::getMockMeasurementV2_1() {
54 GnssDataV2_0 gnssDataV2_0 = Utils::getMockMeasurementV2_0();
55 V2_1::IGnssMeasurementCallback::GnssMeasurement gnssMeasurementV2_1 = {
56 .v2_0 = gnssDataV2_0.measurements[0],
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080057 .flags = (uint32_t)(GnssMeasurementFlagsV2_1::HAS_CARRIER_FREQUENCY |
58 GnssMeasurementFlagsV2_1::HAS_CARRIER_PHASE |
Yu-Han Yang6668eab2020-03-03 15:23:50 -080059 GnssMeasurementFlagsV2_1::HAS_FULL_ISB |
60 GnssMeasurementFlagsV2_1::HAS_FULL_ISB_UNCERTAINTY |
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080061 GnssMeasurementFlagsV2_1::HAS_SATELLITE_ISB |
62 GnssMeasurementFlagsV2_1::HAS_SATELLITE_ISB_UNCERTAINTY),
Yu-Han Yang6668eab2020-03-03 15:23:50 -080063 .fullInterSignalBiasNs = 30.0,
64 .fullInterSignalBiasUncertaintyNs = 250.0,
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080065 .satelliteInterSignalBiasNs = 20.0,
66 .satelliteInterSignalBiasUncertaintyNs = 150.0,
Yu-Han Yangc06b5362019-10-25 14:14:35 -070067 .basebandCN0DbHz = 25.0,
68 };
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080069 GnssSignalType referenceSignalTypeForIsb = {
70 .constellation = GnssConstellationTypeV2_0::GPS,
71 .carrierFrequencyHz = 1.59975e+09,
72 .codeType = "C",
73 };
74 V2_1::IGnssMeasurementCallback::GnssClock gnssClockV2_1 = {
75 .v1_0 = gnssDataV2_0.clock,
76 .referenceSignalTypeForIsb = referenceSignalTypeForIsb,
77 };
Yu-Han Yangc06b5362019-10-25 14:14:35 -070078 hidl_vec<V2_1::IGnssMeasurementCallback::GnssMeasurement> measurements(1);
79 measurements[0] = gnssMeasurementV2_1;
80 GnssDataV2_1 gnssDataV2_1 = {
81 .measurements = measurements,
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080082 .clock = gnssClockV2_1,
Yu-Han Yangc06b5362019-10-25 14:14:35 -070083 .elapsedRealtime = gnssDataV2_0.elapsedRealtime,
84 };
85 return gnssDataV2_1;
86}
87
88GnssDataV2_0 Utils::getMockMeasurementV2_0() {
89 V1_0::IGnssMeasurementCallback::GnssMeasurement measurement_1_0 = {
Yu-Han Yang5fe14fa2019-12-03 20:54:53 -080090 .flags = (uint32_t)GnssMeasurementFlagsV1_0::HAS_CARRIER_FREQUENCY,
Yu-Han Yangc06b5362019-10-25 14:14:35 -070091 .svid = (int16_t)6,
92 .constellation = V1_0::GnssConstellationType::UNKNOWN,
93 .timeOffsetNs = 0.0,
94 .receivedSvTimeInNs = 8195997131077,
95 .receivedSvTimeUncertaintyInNs = 15,
96 .cN0DbHz = 30.0,
97 .pseudorangeRateMps = -484.13739013671875,
98 .pseudorangeRateUncertaintyMps = 1.0379999876022339,
99 .accumulatedDeltaRangeState = (uint32_t)V1_0::IGnssMeasurementCallback::
100 GnssAccumulatedDeltaRangeState::ADR_STATE_UNKNOWN,
101 .accumulatedDeltaRangeM = 0.0,
102 .accumulatedDeltaRangeUncertaintyM = 0.0,
103 .carrierFrequencyHz = 1.59975e+09,
104 .multipathIndicator =
105 V1_0::IGnssMeasurementCallback::GnssMultipathIndicator::INDICATOR_UNKNOWN};
106 V1_1::IGnssMeasurementCallback::GnssMeasurement measurement_1_1 = {.v1_0 = measurement_1_0};
107 V2_0::IGnssMeasurementCallback::GnssMeasurement measurement_2_0 = {
108 .v1_1 = measurement_1_1,
109 .codeType = "C",
110 .state = GnssMeasurementStateV2_0::STATE_CODE_LOCK |
111 GnssMeasurementStateV2_0::STATE_BIT_SYNC |
112 GnssMeasurementStateV2_0::STATE_SUBFRAME_SYNC |
113 GnssMeasurementStateV2_0::STATE_TOW_DECODED |
114 GnssMeasurementStateV2_0::STATE_GLO_STRING_SYNC |
115 GnssMeasurementStateV2_0::STATE_GLO_TOD_DECODED,
116 .constellation = GnssConstellationTypeV2_0::GLONASS,
117 };
118
119 hidl_vec<IGnssMeasurementCallbackV2_0::GnssMeasurement> measurements(1);
120 measurements[0] = measurement_2_0;
121 V1_0::IGnssMeasurementCallback::GnssClock clock = {.timeNs = 2713545000000,
122 .fullBiasNs = -1226701900521857520,
123 .biasNs = 0.59689998626708984,
124 .biasUncertaintyNs = 47514.989972114563,
125 .driftNsps = -51.757811607455452,
126 .driftUncertaintyNsps = 310.64968328491528,
127 .hwClockDiscontinuityCount = 1};
128
Yu-Han Yang04832302020-11-20 09:51:18 -0800129 V2_0::ElapsedRealtime timestamp = {
Yu-Han Yangc06b5362019-10-25 14:14:35 -0700130 .flags = ElapsedRealtimeFlags::HAS_TIMESTAMP_NS |
131 ElapsedRealtimeFlags::HAS_TIME_UNCERTAINTY_NS,
132 .timestampNs = static_cast<uint64_t>(::android::elapsedRealtimeNano()),
133 // This is an hardcoded value indicating a 1ms of uncertainty between the two clocks.
134 // In an actual implementation provide an estimate of the synchronization uncertainty
135 // or don't set the field.
136 .timeUncertaintyNs = 1000000};
137
138 GnssDataV2_0 gnssData = {
139 .measurements = measurements, .clock = clock, .elapsedRealtime = timestamp};
140 return gnssData;
141}
142
Shinru Han4abab502020-12-09 15:07:18 +0800143GnssData Utils::getMockMeasurement(const bool enableCorrVecOutputs) {
Yu-Han Yang04832302020-11-20 09:51:18 -0800144 aidl::android::hardware::gnss::GnssSignalType signalType = {
145 .constellation = aidl::android::hardware::gnss::GnssConstellationType::GLONASS,
146 .carrierFrequencyHz = 1.59975e+09,
147 .codeType = aidl::android::hardware::gnss::GnssSignalType::CODE_TYPE_C,
148 };
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800149 GnssMeasurement measurement = {
150 .flags = GnssMeasurement::HAS_AUTOMATIC_GAIN_CONTROL |
151 GnssMeasurement::HAS_CARRIER_FREQUENCY | GnssMeasurement::HAS_CARRIER_PHASE |
152 GnssMeasurement::HAS_CARRIER_PHASE_UNCERTAINTY |
153 GnssMeasurement::HAS_FULL_ISB | GnssMeasurement::HAS_FULL_ISB_UNCERTAINTY |
154 GnssMeasurement::HAS_SATELLITE_ISB |
Joe Huang0d203ba2020-12-07 23:57:48 +0800155 GnssMeasurement::HAS_SATELLITE_ISB_UNCERTAINTY |
156 GnssMeasurement::HAS_SATELLITE_PVT,
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800157 .svid = 13,
Yu-Han Yang04832302020-11-20 09:51:18 -0800158 .signalType = signalType,
Yu-Han Yang04832302020-11-20 09:51:18 -0800159 .receivedSvTimeInNs = 8195997131077,
160 .receivedSvTimeUncertaintyInNs = 15,
161 .antennaCN0DbHz = 30.0,
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800162 .basebandCN0DbHz = 26.5,
163 .agcLevelDb = 2.3,
Yu-Han Yang04832302020-11-20 09:51:18 -0800164 .pseudorangeRateMps = -484.13739013671875,
165 .pseudorangeRateUncertaintyMps = 1.0379999876022339,
166 .accumulatedDeltaRangeState = GnssMeasurement::ADR_STATE_UNKNOWN,
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800167 .accumulatedDeltaRangeM = 1.52,
168 .accumulatedDeltaRangeUncertaintyM = 2.43,
Yu-Han Yang04832302020-11-20 09:51:18 -0800169 .multipathIndicator = aidl::android::hardware::gnss::GnssMultipathIndicator::UNKNOWN,
170 .state = GnssMeasurement::STATE_CODE_LOCK | GnssMeasurement::STATE_BIT_SYNC |
171 GnssMeasurement::STATE_SUBFRAME_SYNC | GnssMeasurement::STATE_TOW_DECODED |
172 GnssMeasurement::STATE_GLO_STRING_SYNC |
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800173 GnssMeasurement::STATE_GLO_TOD_DECODED,
174 .fullInterSignalBiasNs = 21.5,
175 .fullInterSignalBiasUncertaintyNs = 792.0,
176 .satelliteInterSignalBiasNs = 233.9,
177 .satelliteInterSignalBiasUncertaintyNs = 921.2,
Joe Huang0d203ba2020-12-07 23:57:48 +0800178 .satellitePvt = {.satPosEcef = {.posXMeters = 10442993.1153328,
179 .posYMeters = -19926932.8051666,
180 .posZMeters = -12034295.0216203,
181 .ureMeters = 1000.2345678},
182 .satVelEcef = {.velXMps = -478.667183715732,
183 .velYMps = 1580.68371984114,
184 .velZMps = -3030.52994449997,
185 .ureRateMps = 10.2345678},
186 .satClockInfo = {.satHardwareCodeBiasMeters = 1.396983861923e-09,
187 .satTimeCorrectionMeters = -7113.08964331,
188 .satClkDriftMps = 0},
189 .ionoDelayMeters = 3.069949602639317e-08,
Shinru Han4abab502020-12-09 15:07:18 +0800190 .tropoDelayMeters = 3.882265204404031},
191 .correlationVectors = {}};
Yu-Han Yang04832302020-11-20 09:51:18 -0800192
Yipeng Cao4e9b3b72021-01-23 00:29:52 +0000193 GnssClock clock = {.gnssClockFlags = GnssClock::HAS_FULL_BIAS | GnssClock::HAS_BIAS |
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800194 GnssClock::HAS_BIAS_UNCERTAINTY | GnssClock::HAS_DRIFT |
195 GnssClock::HAS_DRIFT_UNCERTAINTY,
196 .timeNs = 35854545000000,
197 .fullBiasNs = -234621900521857520,
198 .biasNs = 0.2352389998626708984,
199 .biasUncertaintyNs = 274.989972114563,
200 .driftNsps = -124.3742360,
201 .driftUncertaintyNsps = 239.6234285828,
202 .hwClockDiscontinuityCount = 999};
Yu-Han Yang04832302020-11-20 09:51:18 -0800203
204 ElapsedRealtime timestamp = {
205 .flags = ElapsedRealtime::HAS_TIMESTAMP_NS | ElapsedRealtime::HAS_TIME_UNCERTAINTY_NS,
206 .timestampNs = ::android::elapsedRealtimeNano(),
207 // This is an hardcoded value indicating a 1ms of uncertainty between the two clocks.
208 // In an actual implementation provide an estimate of the synchronization uncertainty
209 // or don't set the field.
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800210 .timeUncertaintyNs = 1020400};
Yu-Han Yang04832302020-11-20 09:51:18 -0800211
Shinru Han4abab502020-12-09 15:07:18 +0800212 if (enableCorrVecOutputs) {
213 aidl::android::hardware::gnss::CorrelationVector correlationVector1 = {
214 .frequencyOffsetMps = 10,
215 .samplingWidthM = 30,
216 .samplingStartM = 0,
217 .magnitude = {0, 5000, 10000, 5000, 0, 0, 3000, 0}};
218 aidl::android::hardware::gnss::CorrelationVector correlationVector2 = {
219 .frequencyOffsetMps = 20,
220 .samplingWidthM = 30,
221 .samplingStartM = 0,
222 .magnitude = {0, 3000, 5000, 3000, 0, 0, 1000, 0}};
223 measurement.correlationVectors = {correlationVector1, correlationVector2};
224 measurement.flags |= GnssMeasurement::HAS_CORRELATION_VECTOR;
225 }
226
Yu-Han Yangcfca8a72020-12-12 09:36:28 -0800227 GnssData gnssData = {
Yu-Han Yang04832302020-11-20 09:51:18 -0800228 .measurements = {measurement}, .clock = clock, .elapsedRealtime = timestamp};
229 return gnssData;
230}
231
Yu-Han Yangc06b5362019-10-25 14:14:35 -0700232V2_0::GnssLocation Utils::getMockLocationV2_0() {
233 const V2_0::ElapsedRealtime timestamp = {
234 .flags = V2_0::ElapsedRealtimeFlags::HAS_TIMESTAMP_NS |
235 V2_0::ElapsedRealtimeFlags::HAS_TIME_UNCERTAINTY_NS,
236 .timestampNs = static_cast<uint64_t>(::android::elapsedRealtimeNano()),
237 // This is an hardcoded value indicating a 1ms of uncertainty between the two clocks.
238 // In an actual implementation provide an estimate of the synchronization uncertainty
239 // or don't set the field.
240 .timeUncertaintyNs = 1000000};
241
242 V2_0::GnssLocation location = {.v1_0 = Utils::getMockLocationV1_0(),
243 .elapsedRealtime = timestamp};
Yu-Han Yanga5098612019-02-08 16:22:07 -0800244 return location;
245}
246
Yu-Han Yangc06b5362019-10-25 14:14:35 -0700247V1_0::GnssLocation Utils::getMockLocationV1_0() {
248 V1_0::GnssLocation location = {
249 .gnssLocationFlags = 0xFF,
Enrico Granata3ba5d222020-10-21 17:20:00 -0600250 .latitudeDegrees = gMockLatitudeDegrees,
251 .longitudeDegrees = gMockLongitudeDegrees,
252 .altitudeMeters = gMockAltitudeMeters,
Enrico Granata72a47a22020-11-13 12:52:07 -0700253 .speedMetersPerSec = gMockSpeedMetersPerSec,
254 .bearingDegrees = gMockBearingDegrees,
Yu-Han Yangc06b5362019-10-25 14:14:35 -0700255 .horizontalAccuracyMeters = kMockHorizontalAccuracyMeters,
256 .verticalAccuracyMeters = kMockVerticalAccuracyMeters,
257 .speedAccuracyMetersPerSecond = kMockSpeedAccuracyMetersPerSecond,
258 .bearingAccuracyDegrees = kMockBearingAccuracyDegrees,
Yu-Han Yangbcf3b222020-12-28 13:32:39 -0800259 .timestamp =
260 static_cast<int64_t>(kMockTimestamp + ::android::elapsedRealtimeNano() / 1e6)};
Yu-Han Yangc06b5362019-10-25 14:14:35 -0700261 return location;
262}
263
264hidl_vec<GnssSvInfoV2_1> Utils::getMockSvInfoListV2_1() {
265 GnssSvInfoV1_0 gnssSvInfoV1_0 =
266 Utils::getMockSvInfoV1_0(3, V1_0::GnssConstellationType::GPS, 32.5, 59.1, 166.5);
267 GnssSvInfoV2_0 gnssSvInfoV2_0 =
268 Utils::getMockSvInfoV2_0(gnssSvInfoV1_0, V2_0::GnssConstellationType::GPS);
269 hidl_vec<GnssSvInfoV2_1> gnssSvInfoList = {
270 Utils::getMockSvInfoV2_1(gnssSvInfoV2_0, 27.5),
271 getMockSvInfoV2_1(
272 getMockSvInfoV2_0(getMockSvInfoV1_0(5, V1_0::GnssConstellationType::GPS, 27.0,
273 29.0, 56.5),
274 V2_0::GnssConstellationType::GPS),
275 22.0),
276 getMockSvInfoV2_1(
277 getMockSvInfoV2_0(getMockSvInfoV1_0(17, V1_0::GnssConstellationType::GPS, 30.5,
278 71.0, 77.0),
279 V2_0::GnssConstellationType::GPS),
280 25.5),
281 getMockSvInfoV2_1(
282 getMockSvInfoV2_0(getMockSvInfoV1_0(26, V1_0::GnssConstellationType::GPS, 24.1,
283 28.0, 253.0),
284 V2_0::GnssConstellationType::GPS),
285 19.1),
286 getMockSvInfoV2_1(
287 getMockSvInfoV2_0(getMockSvInfoV1_0(5, V1_0::GnssConstellationType::GLONASS,
288 20.5, 11.5, 116.0),
289 V2_0::GnssConstellationType::GLONASS),
290 15.5),
291 getMockSvInfoV2_1(
292 getMockSvInfoV2_0(getMockSvInfoV1_0(17, V1_0::GnssConstellationType::GLONASS,
293 21.5, 28.5, 186.0),
294 V2_0::GnssConstellationType::GLONASS),
295 16.5),
296 getMockSvInfoV2_1(
297 getMockSvInfoV2_0(getMockSvInfoV1_0(18, V1_0::GnssConstellationType::GLONASS,
298 28.3, 38.8, 69.0),
299 V2_0::GnssConstellationType::GLONASS),
300 25.3),
301 getMockSvInfoV2_1(
302 getMockSvInfoV2_0(getMockSvInfoV1_0(10, V1_0::GnssConstellationType::GLONASS,
303 25.0, 66.0, 247.0),
304 V2_0::GnssConstellationType::GLONASS),
305 20.0),
Sasha Kuznetsov845f6d52019-12-04 12:17:50 -0800306 getMockSvInfoV2_1(
307 getMockSvInfoV2_0(getMockSvInfoV1_0(3, V1_0::GnssConstellationType::UNKNOWN,
308 22.0, 35.0, 112.0),
309 V2_0::GnssConstellationType::IRNSS),
310 19.7),
Yu-Han Yangc06b5362019-10-25 14:14:35 -0700311 };
312 return gnssSvInfoList;
313}
314
315GnssSvInfoV2_1 Utils::getMockSvInfoV2_1(GnssSvInfoV2_0 gnssSvInfoV2_0, float basebandCN0DbHz) {
316 GnssSvInfoV2_1 gnssSvInfoV2_1 = {
317 .v2_0 = gnssSvInfoV2_0,
318 .basebandCN0DbHz = basebandCN0DbHz,
319 };
320 return gnssSvInfoV2_1;
321}
322
323GnssSvInfoV2_0 Utils::getMockSvInfoV2_0(GnssSvInfoV1_0 gnssSvInfoV1_0,
324 V2_0::GnssConstellationType type) {
325 GnssSvInfoV2_0 gnssSvInfoV2_0 = {
326 .v1_0 = gnssSvInfoV1_0,
327 .constellation = type,
328 };
329 return gnssSvInfoV2_0;
330}
331
332GnssSvInfoV1_0 Utils::getMockSvInfoV1_0(int16_t svid, V1_0::GnssConstellationType type,
333 float cN0DbHz, float elevationDegrees,
334 float azimuthDegrees) {
335 GnssSvInfoV1_0 svInfo = {.svid = svid,
336 .constellation = type,
337 .cN0Dbhz = cN0DbHz,
338 .elevationDegrees = elevationDegrees,
339 .azimuthDegrees = azimuthDegrees,
340 .svFlag = GnssSvFlags::USED_IN_FIX | GnssSvFlags::HAS_EPHEMERIS_DATA |
341 GnssSvFlags::HAS_ALMANAC_DATA};
Yu-Han Yanga5098612019-02-08 16:22:07 -0800342 return svInfo;
343}
344
Sasha Kuznetsov768de572020-02-11 06:00:10 +0000345hidl_vec<GnssAntennaInfo> Utils::getMockAntennaInfos() {
346 GnssAntennaInfo mockAntennaInfo_1 = {
347 .carrierFrequencyMHz = 123412.12,
348 .phaseCenterOffsetCoordinateMillimeters = Coord{.x = 1,
349 .xUncertainty = 0.1,
350 .y = 2,
351 .yUncertainty = 0.1,
352 .z = 3,
353 .zUncertainty = 0.1},
354 .phaseCenterVariationCorrectionMillimeters =
355 {
356 Row{hidl_vec<double>{1, -1, 5, -2, 3, -1}},
357 Row{hidl_vec<double>{-2, 3, 2, 0, 1, 2}},
358 Row{hidl_vec<double>{1, 3, 2, -1, -3, 5}},
359 },
360 .phaseCenterVariationCorrectionUncertaintyMillimeters =
361 {
362 Row{hidl_vec<double>{0.1, 0.2, 0.4, 0.1, 0.2, 0.3}},
363 Row{hidl_vec<double>{0.3, 0.2, 0.3, 0.6, 0.1, 0.1}},
364 Row{hidl_vec<double>{0.1, 0.1, 0.4, 0.2, 0.5, 0.3}},
365 },
366 .signalGainCorrectionDbi =
367 {
368 Row{hidl_vec<double>{2, -3, 1, -3, 0, -4}},
369 Row{hidl_vec<double>{1, 0, -4, 1, 3, -2}},
370 Row{hidl_vec<double>{3, -2, 0, -2, 3, 0}},
371 },
372 .signalGainCorrectionUncertaintyDbi =
373 {
374 Row{hidl_vec<double>{0.3, 0.1, 0.2, 0.6, 0.1, 0.3}},
375 Row{hidl_vec<double>{0.1, 0.1, 0.5, 0.2, 0.3, 0.1}},
376 Row{hidl_vec<double>{0.2, 0.4, 0.2, 0.1, 0.1, 0.2}},
377 },
378 };
379
380 GnssAntennaInfo mockAntennaInfo_2 = {
381 .carrierFrequencyMHz = 532324.23,
382 .phaseCenterOffsetCoordinateMillimeters = Coord{.x = 5,
383 .xUncertainty = 0.1,
384 .y = 6,
385 .yUncertainty = 0.1,
386 .z = 7,
387 .zUncertainty = 0.1},
388 };
389
390 hidl_vec<GnssAntennaInfo> mockAntennaInfos = {
391 mockAntennaInfo_1,
392 mockAntennaInfo_2,
393 };
394 return mockAntennaInfos;
395}
396
Yu-Han Yanga5098612019-02-08 16:22:07 -0800397} // namespace common
398} // namespace gnss
399} // namespace hardware
400} // namespace android