blob: c6342bf31f61370f03cba7a428819a0fe4154497 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/******************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2013
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*******************************************************************************/
35
36/******************************************************************************
37 * Filename:
38 * --------------------------------------------------------
39 * gnss2lcsp_struct.h
40 *
41 * Project:
42 * --------------------------------------------------------
43 * A-GNSS project
44 *
45 * Description:
46 * --------------------------------------------------------
47 *
48 *
49 * Author:
50 * --------------------------------------------------------
51 * -------
52 *
53 * --------------------------------------------------------
54 * $Log$
55 *
56 * 11 29 2019 jie-yu.wang
57 * [MOLY00461947] [LPP] Patch back from 1001.DEV to VMOLY
58 * [MPD][VMOLY] LPP patch back.
59 *
60 * 07 01 2019 tzu-ying.chen
61 * [MOLY00416602] [LPP][GPS] Dual-frequency development
62 *
63 * .
64 *
65 * 07 30 2018 jie-yu.wang
66 * [MOLY00342988] [LPP] A-Galileo development
67 * [LPP] A-Galileo
68 *
69 * 12 14 2017 jl.hsiao
70 * [MOLY00296306] [Bianco][O1][6630][GPS] 4G FDD B1 AGNSS CP MA7.5 Sensitivity -130dB is Fail (Time out waiting for the 1st measurment)
71 *
72 * .
73 *
74 * 12 14 2017 jl.hsiao
75 * [MOLY00296306] [Bianco][O1][6630][GPS] 4G FDD B1 AGNSS CP MA7.5 Sensitivity -130dB is Fail (Time out waiting for the 1st measurment)
76 * .
77 *
78 * 10 16 2017 jl.hsiao
79 * [MOLY00282702] [LBS] Early fix and MDT battery level support
80 * .
81 *
82 * 10 16 2017 jl.hsiao
83 * [MOLY00282702] [LBS] Early fix and MDT battery level support
84 * .
85 *
86 * 07 07 2017 wynne.chu
87 * [MOLY00261827] [UMOYLA] LPPe development
88 *
89 * .
90 *
91 * 04 07 2017 jie-yu.wang
92 * [MOLY00240104] MDT feature change for Vodafone requirement
93 * [UMOLYA][LBS]MDT feature change for VDF.
94 *
95 * 04 07 2017 jie-yu.wang
96 * [MOLY00233110] [SBP] MDT feature change for CMCC requirement
97 * [LBS][Sync from 91/92][Header] MDT feature.
98 *
99 * 10 28 2016 wynne.chu
100 * [MOLY00206577] [Gen92] A-BeiDou feature development
101 *
102 * .
103 *
104 * 10 20 2016 wynne.chu
105 * [MOLY00208519] [MT6293][VzW]LTE SIB8/16 for AGPS fine time aiding (code sync from UMOLY)
106 *
107 * .
108 *
109 * 04 29 2015 roland.li
110 * [MOLY00109917] [6291][LBS]MDT check in to UMOLY TRUNK
111 * [MDT]LBS part.
112 *
113 * 04 28 2015 george.chang
114 * [MOLY00109714] [6291] MOB MDT check in to UMOLY TRUNK
115 * .
116 *
117 * 04 16 2015 roland.li
118 * [MOLY00087866] [Uni-Bin]AGNSS ubin change
119 * .
120 *
121 * 01 07 2015 roland.li
122 * [MOLY00089901] [UMOLY][LBS][LPP] new feaure check in
123 * backout gnss2lcsp change.
124 *
125 * 08 04 2014 doug.shih
126 * [MOLY00073990] [LPP CP] LPP code check-in for OTDOA feature
127 * .
128 *
129 * 04 13 2014 roland.li
130 * [MOLY00061982] [6595][6630][AGPS][Certification] 2G GSM1900 AGLO MSB70.16.5.1 & 70.16.6 ?????EE????????????????????
131 * TOD issue.
132 *
133 * 03 12 2014 roland.li
134 * [MOLY00058246] [ASOP] AGNSS LBS task, AGNSS TOD to TOW transfer.
135 *
136 *
137 *****************************************************************************/
138
139#ifndef _GNSS2LCSP_STRUCT_H
140#define _GNSS2LCSP_STRUCT_H
141
142#include "gnss2lcsp_enum.h"
143#include "gps2lcsp_enum.h"
144
145#include "mcd_l3_inc_struct.h" /* for PLMN id */
146#include "kal_public_api.h"
147#include "kal_general_types.h"
148
149#include "dlist.h"
150
151//#if defined(__AGNSS_SUPPORT__) || defined(__AGPS_SUPPORT__) /* should add a new compile option __AGNSS_SUPPORT__*/
152
153
154/*=== GNSS Common Assistance Data ===*/
155
156/* start for gnss reference time */
157typedef struct
158{
159 kal_uint8 svID; /* satellite PRN [1..64] */
160 kal_uint16 tlmWord; /* telemetry message [0..16383] */
161 kal_uint8 antiSpoof; /* anti spoof flag [0..1] */
162 kal_uint8 alert; /* alert flag [0..1] */
163 kal_uint8 tlmRsvdBits; /* 2 bit reserved bits [0..3] */
164} gnss_gps_tow_assist_struct;
165
166
167typedef struct
168{
169 gnss_id_enum gnssTimeID;
170 /**
171 * This field specifies the sequential number of days from the origin of the GNSS System Time as follows:
172 * GPS, QZSS, SBAS �V Days from January 6th 1980 00:00:00 UTC(USNO)
173 * Galileo �V TBD;
174 * GLONASS �V Days from January 1st 1996
175 */
176 kal_uint16 gnssDayNumber; /* [0..32767] */
177 kal_uint32 gnssTimeOfDay; /* [0..86399] in seconds */
178 kal_bool gnssTimeOfDayFracMsecValid;
179 kal_uint16 gnssTimeOfDayFracMsec; /* [0..999] in milli-seconds */
180 kal_bool notificationLeapSecondValid;
181 kal_uint8 notificationLeapSecond; /* only present when gnss=GLONASS */
182 kal_uint8 numGpsTowAssist; /* only present when gnss=GPS */
183 gnss_gps_tow_assist_struct gpsTowAssist[GNSS_MAX_REF_TIME_SAT_ELEMENT];
184} gnss_system_time_struct;
185
186
187typedef struct
188{
189 kal_uint16 physCellId; /* [0..503] */
190 kal_uint32 earfcn; /* [0..262143], 65535 is invalid to indicate ARFCN-ValueEUTRA-v9a0 present */
191 /* optional field */
192 kal_bool plmnIdValid;
193 plmn_id_struct plmnId;
194 kal_bool cellIdValid;
195 kal_uint32 cellId; /* eutra 28 bits */
196} gnss_eutra_cell_id_struct;
197
198
199typedef struct
200{
201 kal_uint16 physCellId; /* [0..511] */
202 kal_uint16 uarfcn; /* [0..16383] */
203 /* optional field */
204 kal_bool plmnIdValid;
205 plmn_id_struct plmnId;
206 kal_bool cellIdValid;
207 kal_uint32 cellId; /* utra 32 bits */
208} gnss_utra_cell_id_struct;
209
210
211typedef struct
212{
213 kal_uint16 bcchCarrier; /* [0..1023] */
214 kal_uint8 bsic; /* [0..63] */
215 /* optional field */
216 kal_bool plmnIdValid;
217 plmn_id_struct plmnId;
218 kal_bool cellIdValid; /* this validity flag indicate if lac and cellId are present or not */
219 kal_uint16 lac; /* lac 16 bits */
220 kal_uint16 cellId; /* gsm 16 bits */
221} gnss_gsm_cell_id_struct;
222
223
224typedef struct
225{
226 gnss_network_cell_type_enum type;
227
228 union
229 {
230 gnss_eutra_cell_id_struct eutra;
231 gnss_utra_cell_id_struct utra;
232 gnss_gsm_cell_id_struct gsm;
233 }
234 data;
235} gnss_network_cell_id_struct;
236
237
238typedef struct
239{
240 /* The total time since the particular frame structure start is secondsFromFrameStructureStart + fractionalSecondsFromFrameStructureStart */
241 kal_uint16 secondsFromFrameStructureStart; /* [0-12533] in seconds, this field specifies the number of seconds from the beginning of the longest frame structure in the corresponding air interface */
242 kal_uint32 fractionalSecondsFromFrameStructureStart; /* [0-3999999] in 250 nano-seconds, This field specifies the fractional part of the secondsFromFrameStructureStart in 250 ns resolution */
243 kal_bool framDriftValid;
244 kal_int8 frameDrift; /* [-64~63] in 2^(-30) seconds/second */
245 gnss_network_cell_id_struct cellID;
246} gnss_network_time_struct;
247
248
249typedef struct
250{
251 gnss_network_time_struct networkTime;
252 kal_bool referenceTimeUncValid;
253 kal_uint8 referenceTimeUnc; /* K = [0..127], uncertainty r (microseconds) = C*(((1+x)^K)-1), C=0.5, x=0.14 */
254 kal_bool bsAlignValid;
255 kal_bool bsAlign; /* indicate all cell with the same carrier freq. and TA/LA/RA are frame aligned */
256} gnss_ref_time_one_cell_struct;
257
258
259typedef struct
260{
261 gnss_system_time_struct systemTime;
262 kal_bool referenceTimeUncValid;
263 kal_uint8 referenceTimeUnc; /* K = [0..127], uncertainty r (microseconds) = C*(((1+x)^K)-1), C=0.5, x=0.14 */
264 kal_uint8 numGnssReferenceTimeForCells;
265 gnss_ref_time_one_cell_struct gnssReferenceTimeForCells[GNSS_MAX_REF_CELL_FTA_ELEMENT];
266} gnss_reference_time_struct;
267/* end for gnss reference time */
268
269
270/* start for gnss reference location */
271typedef struct
272{
273 kal_bool signOfLatitude; /* TRUE: SOUTH, FALSE: NORTH */
274 kal_uint32 degreesLatitude; /* [0..8388607] */
275 kal_int32 degreesLongitude; /* [-8388608..8388607] */
276 kal_bool signOfAltitude; /* TRUE: DEPTH, FALSE: HEIGHT */
277 kal_uint16 altitude; /* [0..32767] */
278 kal_uint8 uncertaintySemiMajor; /* K: [0..127], uncertainty r (meter) = C*((1+x)^K-1), C=10, x=0.1 */
279 kal_uint8 uncertaintySemiMinor; /* K: [0..127], uncertaintyr (meter) = C*((1+x)^K-1), C=10, x=0.1 */
280 kal_uint8 orientationMajorAxis; /* bearing angle degree: [0-179] */
281 kal_uint8 uncertaintyAltitude; /* K: [0..127], uncertainty h (meter) = C*((1+x)^K-1), C=45, x=0.025 */
282 kal_uint8 confidence; /* [0..100] */
283} gnss_reference_location_struct;
284/* end for gnss reference location */
285
286
287/* start for gnss ionospheric model */
288typedef struct
289{
290 kal_uint8 dataId; /* dataID, to indicate the klobuchar model parameter is apply for which GNSS, map to GNSS_ION_KLOBUCHAR_DATA_ID_VALUE_* */
291 kal_int8 alfa0; /* alpha0 [-128..127] (* 2^-30 seconds) */
292 kal_int8 alfa1; /* alpha1 [-128..127] (* 2^-27 seconds/semicircle) */
293 kal_int8 alfa2; /* alpha2 [-128..127] (* 2^-24 seconds/semicircle^2) */
294 kal_int8 alfa3; /* alpha3 [-128..127] (* 2^-24 seconds/semicircle^3) */
295 kal_int8 beta0; /* beta0 [-128..127] (* 2^11 seconds) */
296 kal_int8 beta1; /* beta1 [-128..127] (* 2^14 seconds/semicircle) */
297 kal_int8 beta2; /* beta2 [-128..127] (* 2^16 seconds/semicircle^2) */
298 kal_int8 beta3; /* beta3 [-128..127] (* 2^16 seconds/semicircle^3) */
299} gnss_klobuchar_model_paras_struct;
300
301
302typedef struct
303{
304 kal_uint16 ai0; /* [0..4095], to be changed to [0..2047] when A-Galileo is planed to support (because LPP ASN.1 is upgraded to Rel-12, but RRC and RRLP not) */
305 kal_int16 ai1; /* [0..4095], to be changed to kal_int16 [-1024..1023] when A-Galileo is planed to support (because LPP ASN.1 is upgraded to Rel-12, but RRC and RRLP not) */
306 kal_int16 ai2; /* [0..4095], to be changed to kal_int16 [-8192..8191] when A-Galileo is planed to support (because LPP ASN.1 is upgraded to Rel-12, but RRC and RRLP not) */
307
308 /* optional field */
309 /**
310 * iono storm flag represent five region: [value 0: no disturbance, value 1: disturbance]
311 * region 1: for the northern region (60�X<MODIP<90�X)
312 * region 2: for the northern middle region (30�X<MODIP<60�X)
313 * region 3: for the equatorial region (-30�X<MODIP<30�X)
314 * region 4: for the southern middle region (-60�X<MODIP<-30�X)
315 * region 5: for the southern region (-90�X<MODIP<-60�X)
316 */
317 kal_bool ionoStormFlag1Valid;
318 kal_bool ionoStormFlag1;
319 kal_bool ionoStormFlag2Valid;
320 kal_bool ionoStormFlag2;
321 kal_bool ionoStormFlag3Valid;
322 kal_bool ionoStormFlag3;
323 kal_bool ionoStormFlag4Valid;
324 kal_bool ionoStormFlag4;
325 kal_bool ionoStormFlag5Valid;
326 kal_bool ionoStormFlag5;
327} gnss_nequick_model_paras_struct;
328
329
330typedef struct
331{
332 kal_bool klobucharModelValid; /* for GPS, GLONASS, etc... */
333 gnss_klobuchar_model_paras_struct klobucharModel;
334 kal_bool neQuickModelValid; /* for Galileo */
335 gnss_nequick_model_paras_struct neQuickModel;
336} gnss_ionospheric_model_struct;
337/* end for gnss ionospheric model */
338
339
340/* start for gnss earth orientation parameters */
341typedef struct
342{
343 kal_uint16 teop; /* [0..65535], EOP data reference time in seconds, scale factor 2^4 seconds */
344 kal_int32 pmX; /* [-1048576..1048575], X-axis polar motion value at reference time in arc-seconds, scale factor 2^(-20) arc-seconds */
345 kal_int16 pmXdot; /* [-16384..16383], X-axis polar motion drift at reference time in arc-seconds/day, scale factor 2^(-21) arc-seconds/day */
346 kal_int32 pmY; /* [-1048576..1048575], Y-axis polar motion value at reference time in arc-seconds, scale factor 2^(-20) arc-seconds */
347 kal_int16 pmYdot; /* [-16384..16383] Y-axis polar motion drift at reference time in arc-seconds/day, scale factor 2^(-21) arc-seconds/day */
348 kal_int32 deltaUT1; /* [-1073741824..1073741823], UT1-UTC diff at reference time in seconds, scale factor 2^(-24) seconds */
349 kal_int32 deltaUT1dot; /* [-262144..262143], the rate of UT1-UTC diff at reference time in seconds/day, scale factor 2^(-25) seconds/day */
350} gnss_earth_orient_params_struct;
351/* end for gnss earth orientation parameters */
352
353
354/*=== GNSS Generic Assistance Data ===*/
355
356/* start for gnss time model */
357/**
358 * in LPP, location server could provide up to 15 GNSS-GNSS system time offset
359 * in RRC/RRLP, location server could provide up to 7 GNSS-GNSS system time offset
360 * i.e. generic assist data is for GPS, time model could provide GPS-GLONASS time offset
361 */
362typedef struct
363{
364 /* note that RRC/RRLP tA0, tA1 range is larger than LPP, although scale factor is the same */
365 kal_uint16 gnssTimeModelRefTime; /* [0..65535], the reference time of week, scale factor 2^4 seconds */
366 kal_int32 tA0; /* [-67108864..67108863] for LPP, [-2147483648 .. 2147483647] for RRC/RRLP, the bias coefficient, scale factor 2^(-35) seconds */
367 kal_bool tA1Valid;
368 kal_int32 tA1; /* [-4096..4095] for LPP, [-8388608 .. 8388607] for RRC/RRLP, the drift coefficient, scale factor 2^(-51) seconds/second */
369 kal_bool tA2Valid;
370 kal_int8 tA2; /* [-64..63], the drift rate correction coefficient, scale factor 2^(-68) seconds/second^2 */
371 gnss_to_id_enum gnssToId; /* GPS, Galileo, QZSS, GLOANSS, BDS */
372 /* optional field */
373 kal_bool weekNumberValid;
374 kal_uint16 weekNumber; /* [0..8191], the reference week */
375 kal_bool deltaTValid;
376 kal_int8 deltaT; /* [-128..127], the integer number of seconds of GNSS-GNSS time offset */
377} gnss_time_model_element_struct;
378
379
380typedef struct
381{
382 kal_uint8 numTimeModels;
383 gnss_time_model_element_struct gnssTimeModels[GNSS_MAX_TIME_MODEL_ELEMENT]; /* 6-15 is reserved */
384} gnss_time_model_list_struct;
385
386/* end for gnss time model */
387
388
389/* start for gnss dgnss correction */
390typedef struct
391{
392 kal_uint8 svID; /* [0..63] */
393 kal_uint16 iod; /* [11 bits], for issue of data field */
394 kal_uint8 udre; /* [0-3] */
395 kal_int16 pseudoRangeCor; /* [-2047..2047], the correction to the pseudorange for the particular satellite at dgnssRefTime, scale factor 0.32 meters */
396 kal_int8 rangeRateCor; /* [-127..127], the rate-of-change of the pseudorange correction for the particular satellite, scale factor 0.032 meters/sec */
397 /* optional field */
398 kal_bool udreGrowthRateValid;
399 kal_uint8 udreGrowthRate; /* [0-7], an estimate of the growth rate of uncertainty (1-�m) in the corrections for the particular satellite */
400 kal_bool udreValidityTimeValid;
401 kal_uint8 udreValidityTime; /* [0-7], the time when the udreGrowthRate field applies and is included if udreGrowthRate is included */
402} gnss_dgnss_corrections_element_struct;
403
404
405typedef struct
406{
407 kal_uint8 gnssSignalId; /* map to GNSS_SGN_ID_VALUE_* */
408 kal_uint8 gnssStatusHealth; /* [0-7], for UDRE scale factor */
409 kal_uint8 numCorrectionElements;
410 gnss_dgnss_corrections_element_struct correctionElements[GNSS_MAX_DGNSS_CORRECTION_INFO_ELEMENT];
411} gnss_dgnss_signal_type_element_struct;
412
413
414typedef struct
415{
416 kal_uint16 dgnssRefTime; /* [0..3599], the time for which the DGNSS corrections are valid, modulo 1 hour, scale factor 1 seconds */
417 kal_uint8 numSgnTypes;
418 gnss_dgnss_signal_type_element_struct sgnTypes[GNSS_MAX_DGNSS_SGN_TYPE_ELEMENT];
419} gnss_diff_correction_struct;
420/* end for gnss dgnss correction */
421
422
423/* start for gnss navigation model */
424typedef struct
425{
426 kal_uint16 stanClockToc; /* [0..16383] */
427 kal_int16 stanClockAF2; /* [-32..31] */
428 kal_int32 stanClockAF1; /* [-1048576..1048575] */
429 kal_int32 stanClockAF0; /* [-1073741824..1073741823] */
430 kal_uint8 sisa; /* [0..255] */
431 /* optional field */
432 kal_bool stanClockTgdValid;
433 kal_int16 stanClockTgd; /* [-512..511], scale factor 2^(-32) seconds */
434 kal_bool stanModelIdValid;
435 kal_uint8 stanModelID; /* [0..1], 0 for I/Nav, 1 for F/Nav Galileo clock clock */
436} gnss_std_clock_model_element_struct;
437
438
439typedef struct
440{
441 kal_uint8 numStdClkElement;
442 gnss_std_clock_model_element_struct stdClkElement[GNSS_MAX_NAV_STD_CLK_MODEL_ELEMENT];
443} gnss_standard_clock_model_struct;
444
445
446typedef struct
447{
448 kal_uint16 navToc; /* [0..37799], time of clock, scale factor 2^4 seconds */
449 kal_int8 navaf2; /* [-128..127], clock correction polynomial coefficient, scale factor 2^(-55) seconds/second^2 */
450 kal_int16 navaf1; /* [-32768..32767], clock correction polynomial coefficient, scale factor 2^(-43) seconds/second */
451 kal_int32 navaf0; /* [-2097152..2097151], clock correction polynomial coefficient, scale factor 2^(-31) seconds */
452 kal_int8 navTgd; /* [-128..127], group delay, scale factor 2^(-31) seconds */
453} gnss_nav_clock_model_struct;
454
455
456typedef struct
457{
458 kal_uint16 cnavToc; /* [0..2015], clock data reference time of week, scale factor 300 seconds */
459 kal_uint16 cnavTop; /* [0..2015], clock data predict time of week, scale factor 300 seconds */
460 kal_int8 cnavURA0; /* [-16..15], SV clock accuracy index */
461 kal_uint8 cnavURA1; /* [0..7], SV clock accuracy change index */
462 kal_uint8 cnavURA2; /* [0..7], SV clock accuracy change rate index */
463 kal_int16 cnavAf2; /* [-512..511], SV clock drift rate correction coefficient, scale factor 2^(-60) seconds/second^2 */
464 kal_int32 cnavAf1; /* [-524288..524287], SV clock drift correction coefficient, scale factor 2^(-48) seconds/second */
465 kal_int32 cnavAf0; /* [-33554432..33554431], SV clock bias correction coefficient, scale 2^(-35) seconds */
466 kal_int16 cnavTgd; /* [-4096..4095], group delay, scale factor 2^(-35) seconds */
467 kal_bool cnavISCl1cpValid;
468 kal_int16 cnavISCl1cp; /* [-4096..4095], inter signal group delay correction, scale factor 2^(-35) seconds */
469 kal_bool cnavISCl1cdValid;
470 kal_int16 cnavISCl1cd; /* [-4096..4095], inter signal group delay correction, scale factor 2^(-35) seconds */
471 kal_bool cnavISCl1caValid;
472 kal_int16 cnavISCl1ca; /* [-4096..4095], inter signal group delay correction, scale factor 2^(-35) seconds */
473 kal_bool cnavISCl2cValid;
474 kal_int16 cnavISCl2c; /* [-4096..4095], inter signal group delay correction, scale factor 2^(-35) seconds */
475 kal_bool cnavISCl5i5Valid;
476 kal_int16 cnavISCl5i5; /* [-4096..4095], inter signal group delay correction, scale factor 2^(-35) seconds */
477 kal_bool cnavISCl5q5Valid;
478 kal_int16 cnavISCl5q5; /* [-4096..4095], inter signal group delay correction, scale factor 2^(-35) seconds */
479} gnss_cnav_clock_model_struct;
480
481
482typedef struct
483{
484 kal_int32 gloTau; /* [-2097152..2097151], satellite clock offset, scale factor 2^(-30) seconds */
485 kal_int16 gloGamma; /* [-1024..1023], relative frequency offset from nominal value, scale factor 2^(-40) */
486 kal_bool gloDeltaTauValid;
487 kal_int8 gloDeltaTau; /* [-16..15], time difference between transmission in G2 and G1, scale factor 2^(-30) seconds */
488} gnss_glonass_clock_model_struct;
489
490
491typedef struct
492{
493 kal_uint16 sbasTo; /* [0..5399], scale factor 16 seconds */
494 kal_int16 sbasAgfo; /* [-2048..2047], scale factor 2^(-31) seconds */
495 kal_int8 sbasAgf1; /* [-128..127], scale factor 2^(-40) seconds/second */
496} gnss_sbas_clock_model_struct;
497
498
499typedef struct
500{
501 kal_uint8 bdsAODC; /* [0..31], age of data, clock (AODC) */
502 kal_uint32 bdsToc; /* [0..131071], time of clock, scale factor 2^3 seconds */
503 kal_int32 bdsA0; /* [-8388608..8388607], clock correction polynomial coefficient, scale factor 2^(-33) seconds */
504 kal_int32 bdsA1; /* [-2097152..2097151], clock correction polynomial coefficient, scale factor 2^(-50) sec/sec */
505 kal_int32 bdsA2; /* [-1024..1023], clock correction polynomial coefficient, scale factor 2^(-66) sec/sec2 */
506 kal_int32 bdsTgd1; /* [-512..511], equipment group delay differential, scale factor 0.1 nanosecond */
507} gnss_bds_clock_model_struct;
508
509
510typedef struct
511{
512 gnss_clock_model_type_enum type;
513
514 union
515 {
516 gnss_standard_clock_model_struct standardClockModelList; /* Model-1: usually used for Galileo */
517 gnss_nav_clock_model_struct navClockModel; /* Model-2: for GPS */
518 gnss_cnav_clock_model_struct cnavClockModel; /* Model-3: for modernized GPS */
519 gnss_glonass_clock_model_struct glonassClockModel; /* Model-4: for GLONASS */
520 gnss_sbas_clock_model_struct sbasClockModel; /* Model-5: for SBAS */
521 gnss_bds_clock_model_struct bdsClockModel; /* Model-6: for BDS */
522 } data;
523} gnss_clock_model_struct;
524
525typedef struct
526{
527 kal_uint16 keplerToe; /* [0 .. 16383], time-of-ephemeris, scale factor 60 seconds */
528 kal_int32 keplerW; /* [-2147483648..2147483647], argument of perigee, scale factor 2^(-31) semi-circles */
529 kal_int16 keplerDeltaN; /* [-32768..32767], mean motion difference from computed value, scale factor 2^(-43) semi-circles/second */
530 kal_int32 keplerM0; /* [-2147483648..2147483647], mean anomaly at reference time, scale factor 2^(-31) semi-circles */
531 kal_int32 keplerOmegaDot; /* [-8388608.. 8388607], longitude of ascending node of orbit plane at weekly epoch, scale factor 2^(-43) semi-circles/second */
532 kal_uint32 keplerE; /* [0..4294967295], eccentricity, scale factor 2^(-33) */
533 kal_int16 keplerIDot; /* [-8192..8191], rate of inclination angle, scale factor 2^(-43) semi-circles/second */
534 kal_uint32 keplerAPowerHalf; /* [0.. 4294967295], semi-major Axis, scale factor 2^(-19) meters^(0.5)*/
535 kal_int32 keplerI0; /* [-2147483648..2147483647], inclination angle at reference time, scale factor 2^(-31) semi-circles */
536 kal_int32 keplerOmega0; /* [-2147483648..2147483647], longitude of ascending node of orbit plane at weekly epoch, scale factor 2^(-31) semi-circles */
537 kal_int16 keplerCrs; /* [-32768..32767], amplitude of the sine harmonic correction term to the orbit radius, scale factor 2^(-5) meters */
538 kal_int16 keplerCis; /* [-32768..32767], amplitude of the sine harmonic correction term to the angle of inclination, scale factor 2^(-29) radians */
539 kal_int16 keplerCus; /* [-32768..32767], amplitude of the sine harmonic correction term to the argument of latitude, scale factor 2^(-29) radians */
540 kal_int16 keplerCrc; /* [-32768..32767], amplitude of the cosine harmonic correction term to the orbit radius, scale factor 2^(-5) meters */
541 kal_int16 keplerCic; /* [-32768..32767], amplitude of the cosine harmonic correction term to the angle of inclination, scale factor 2^(-29) radians */
542 kal_int16 keplerCuc; /* [-32768..32767], amplitude of the cosine harmonic correction term to the argument of latitude, scale factor 2^(-29) radians */
543} gnss_nav_model_keplerian_set_struct;
544
545typedef struct
546{
547 kal_uint32 reserved1; /* [0..8388607], 23 bit field */
548 kal_uint32 reserved2; /* [0..16777215], 24 bit field */
549 kal_uint32 reserved3; /* [0..16777215], 24 bit field */
550 kal_uint16 reserved4; /* [0..65535], 16 bit field */
551} gnss_nav_model_nav_keplerian_set_struct_add_nav_param_ephemSF1Rsvd_struct;
552
553
554typedef struct
555{
556 kal_uint8 ephemCodeOnL2; /* [0..3] */
557 kal_uint8 ephemL2Pflag; /* [0..1] */
558 gnss_nav_model_nav_keplerian_set_struct_add_nav_param_ephemSF1Rsvd_struct ephemSF1Rsvd;
559 kal_uint8 ephemAODA; /* [0..31] */
560} gnss_nav_model_nav_keplerian_set_struct_add_nav_param_struct;
561
562
563typedef struct
564{
565 kal_uint8 navURA; /* [0..15], SV accuracy */
566 kal_uint8 navFitFlag; /* [0..1], fit interval indication */
567 kal_uint16 navToe; /* [0..37799], time of ephemeris, scale factor 2^4 seconds */
568 kal_int32 navOmega; /* [-2147483648..2147483647], argument of perigee, scale factor 2^(-31) semi-circles */
569 kal_int16 navDeltaN; /* [-32768..32767], mean motion difference from computed value, scale factor 2^(-43) semi-circles/second */
570 kal_int32 navM0; /* [-2147483648..2147483647], mean anonmaly at reference time, scale factor 2^(-31) semi-circles */
571 kal_int32 navOmegaADot; /* [-8388608..8388607], rate of right ascension, scale factor 2^(-43) semi-circles/second */
572 kal_uint32 navE; /* [0..4294967295], eccentricity, scale factor 2^(-33) */
573 kal_int16 navIDot; /* [-8192..8191], rate of inclination angle, scale factor 2^(-43) semi-circles/second */
574 kal_uint32 navAPowerHalf; /* [0..4294967295], square root of semi-major axis, scale factor 2^(-19) meters^(0.5) */
575 kal_int32 navI0; /* [-2147483648..2147483647], inclination angle at reference time, scale factor 2^(-31) semi-circles */
576 kal_int32 navOmegaA0; /* [-2147483648..2147483647], longitude of ascending node of orbit plane at weekly epoch, scale factor 2^(-31) semi-circles*/
577 kal_int16 navCrs; /* [-32768..32767], amplitude of sine harmonic correction term to the orbit radius, scale factor 2^(-5) meters */
578 kal_int16 navCis; /* [-32768..32767], amplitude of the sine harmonic correction term to the angle of inclination, scale factor 2^(-29) radians */
579 kal_int16 navCus; /* [-32768..32767], amplitude of the sine harmonic correction term to the argument of latitude, scale factor 2^(-29) radians */
580 kal_int16 navCrc; /* [-32768..32767], amplitude of the cosine harmonic correction term to the orbit radius, scale factor 2^(-5) meters */
581 kal_int16 navCic; /* [-32768..32767], amplitude of the cosine harmonic correction term to the angle of inclination, scale factor 2^(-29) radians */
582 kal_int16 navCuc; /* [-32768..32767], amplitude of the cosine harmonic correction term to the argument of latitude, scale factor 2^(-29) radians */
583 /* optional field */
584 kal_bool addNavParamValid;
585 gnss_nav_model_nav_keplerian_set_struct_add_nav_param_struct addNAVparam; /* data and reserved bits in GPS NAV message */
586} gnss_nav_model_nav_keplerian_set_struct;
587
588
589typedef struct
590{
591 kal_uint16 cnavTop; /* [0..2015], data predict time of week, scale factor 300 seconds */
592 kal_int8 cnavURAindex; /* [-16..15], SV accuracy */
593 kal_int32 cnavDeltaA; /* [-33554432..33554431], semi-major axis difference at reference time, scale factor 2^(-9) meters */
594 kal_int32 cnavAdot; /* [-16777216..16777215], change rate in semi-major axis, scale factor 2^(-21) meters/sec */
595 kal_int32 cnavDeltaNo; /* [-65536..65535], mean motion difference from computed value at reference time, scale factor 2^(-44) semi-circles/second */
596 kal_int32 cnavDeltaNoDot; /* [-4194304..419430], rate of mean motion difference from computed value, scale factor 2^(-57) semi-circles/seconds */
597 kal_int64 cnavMo; /* [-4294967296..4294967295], mean anomaly at reference time, scale factor 2^(-32) semi-circles */
598 kal_uint64 cnavE; /* [0..8589934591], eccentricity, scale factor 2^(-34) */
599 kal_int64 cnavOmega; /* [-4294967296..4294967295], argument of perigee, scale factor 2^(-32) semi-circles */
600 kal_int64 cnavOMEGA0; /* [-4294967296..4294967295], reference right ascension angle, scale factor 2^(-32) semi-circles */
601 kal_int32 cnavDeltaOmegaDot; /* [-65536..65535], rate of right ascension difference, scale factor 2^(-44) semi-circles/second */
602 kal_int64 cnavIo; /* [-4294967296..4294967295], inclination angle at reference time, scale factor 2^(-32) semi-circles */
603 kal_int16 cnavIoDot; /* [-16384..16383], rate of inclination angle, scale factor 2^(-44) semi-circles/second */
604 kal_int16 cnavCis; /* [-32768..32767], amplitude of the sine harmonic correction term to the angle of inclination, scale factor 2^(-30) radians */
605 kal_int16 cnavCic; /* [-32768..32767], amplitude of the cosine harmonic correction term to the angle of inclination, scale factor 2^(-30) radians */
606 kal_int32 cnavCrs; /* [-8388608..8388607], amplitude of sine harmonic correction term to the orbit radius, scale factor 2^(-8) meters */
607 kal_int32 cnavCrc; /* [-8388608..8388607], amplitude of the cosine harmonic correction term to the orbit radius, scale factor 2^(-8) meters */
608 kal_int32 cnavCus; /* [-1048576..1048575], amplitude of the sine harmonic correction term to the argument of latitude, scale factor 2^(-30) radians */
609 kal_int32 cnavCuc; /* [-1048576..1048575], amplitude of the cosine harmonic correction term to the argument of latitude, scale factor 2^(-30) radians */
610} gnss_nav_model_cnav_keplerian_set_struct;
611
612
613typedef struct
614{
615 kal_uint8 gloEn; /* [0..31] */
616 kal_uint8 gloP1; /* 2 bit field, time interval between two adjacent values of tb */
617 kal_bool gloP2; /* change of tb flag */
618 kal_uint8 gloM; /* [0..3], type of satellite */
619 kal_int32 gloX; /* [-67108864..67108863], x-coordinate of satellite at time tb, scale factor 2^(-11) kilometers */
620 kal_int32 gloXdot; /* [-8388608..8388607], x-coordinate of satellite velocity at time tb, scale factor 2^(-20) kilometers/second */
621 kal_int8 gloXdotdot; /* [-16..15], x-coordinate of satellite acceleration at time tb, scale factor 2^(-30) kilometers/second^2 */
622 kal_int32 gloY; /* [-67108864..67108863], y-coordinate of satellite at time tb, scale factor 2^(-11) kilometers */
623 kal_int32 gloYdot; /* [-8388608..8388607], y-coordinate of satellite velocity at time tb, scale factor 2^(-20) kilometers/second */
624 kal_int8 gloYdotdot; /* [-16..15], y-coordinate of satellite acceleration at time tb, scale factor 2^(-30) kilometers/second^2 */
625 kal_int32 gloZ; /* [-67108864..67108863], z-coordinate of satellite at time tb, scale factor 2^(-11) kilometers */
626 kal_int32 gloZdot; /* [-8388608..8388607)], z-coordinate of satellite velocity at time tb, scale factor 2^(-20) kilometers/second */
627 kal_int8 gloZdotdot; /* [-16..15], z-coordinate of satellite acceleration at time tb, scale factor 2^(-30) kilometers/second^2 */
628} gnss_nav_model_glonass_ecef_struct;
629
630
631typedef struct
632{
633 kal_bool sbasToValid;
634 kal_uint16 sbasTo; /* [0..5399], time applicability, scale factor 16 seconds */
635 kal_uint8 sbasAccuracy; /* 4 bits field, accuracy */
636 kal_int32 sbasXg; /* [-536870912..536870911], scale factor 0.08 meters */
637 kal_int32 sbasYg; /* [-536870912..536870911], scale factor 0.08 meters */
638 kal_int32 sbasZg; /* [-16777216..16777215], 0.4 meters */
639 kal_int32 sbasXgDot; /* [-65536..65535], rate of change, scale factor 0.000625 meters/second */
640 kal_int32 sbasYgDot; /* [-65536..65535], rate of change, scale factor 0.000625 meters/second */
641 kal_int32 sbasZgDot; /* [-131072..131071], rate of change, scale factor 0.004 meters/second */
642 kal_int16 sbasXgDotDot; /* [-512..511], acceleration, scale factor 0.0000125 meters/second^2 */
643 kal_int16 sbagYgDotDot; /* [-512..511], acceleration, scale factor 0.0000125 meters/second^2 */
644 kal_int16 sbasZgDotDot; /* [-512..511], acceleration, scale factor 0.0000625 meters/second^2 */
645} gnss_nav_model_sbas_ecef_struct;
646
647typedef struct
648{
649 kal_uint8 bdsAODE; /* [0..31], age of data, ephemeris (AODE) */
650 kal_uint8 bdsURAI; /* [0..15], URA Index, URA is used to describe the signal-in-space accuracy in meters */
651 kal_uint32 bdsToe; /* [0..131071], ephemeris reference time, scale factor 2^3 seconds */
652 kal_uint32 bdsAPowerHalf; /* [0..4294967295], square root of semi-major axis, Scale factor 2^(-19) meters^(1/2) */
653 kal_uint32 bdsE; /* [0..4294967295], eccentricity, dimensionless, scale factor 2^(-33) */
654 kal_int32 bdsW; /* [-2147483648..2147483647], argument of perigee, scale factor 2^(-31) semi-circles */
655 kal_int16 bdsDeltaN; /* [-32768..32767], mean motion difference from computed value, scale factor 2-43 semi-circles/sec */
656 kal_int32 bdsM0; /* [-2147483648..2147483647], mean anomaly at reference time, scale factor 2^(-31) semi-circles */
657 kal_int32 bdsOmega0; /* [-2147483648..2147483647], longitude of ascending node of orbital of plane computed according to reference time, scale factor 2^(-31) semi-circles */
658 kal_int32 bdsOmegaDot; /* [-8388608..8388607], rate of right ascension, scale factor 2^(-43) semi-circles/sec */
659 kal_int32 bdsI0; /* [-2147483648..2147483647], inclination angle at reference time, scale factor 2^(-31) semi-circles */
660 kal_int16 bdsIDot; /* [-8192..8191], rate of inclination angle, scale factor 2^(-43) semi-circles/sec */
661 kal_int32 bdsCuc; /* [-131072..131071], amplitude of cosine harmonic correction term to the argument of latitude, scale factor 2^(-31) radians */
662 kal_int32 bdsCus; /* [-131072..131071], amplitude of sine harmonic correction term to the argument of latitude, scale factor 2^(-31) radians */
663 kal_int32 bdsCrc; /* [-131072..131071], amplitude of cosine harmonic correction term to the orbit radius, scale factor 2^(-6) meters */
664 kal_int32 bdsCrs; /* [-131072..131071], amplitude of sine harmonic correction term to the orbit radius, scale factor 2^(-6) meters */
665 kal_int32 bdsCic; /* [-131072..131071], amplitude of cosine harmonic correction term to the angle of inclination, scale factor 2^(-31) radians */
666 kal_int32 bdsCis; /* [-131072..131071], amplitude of sine harmonic correction term to the angle of inclination, scale factor 2^(-31) radians */
667} gnss_nav_model_bds_keplerian_set_struct;
668
669
670typedef struct
671{
672 gnss_orbit_model_type_enum type;
673
674 union
675 {
676 gnss_nav_model_keplerian_set_struct keplerianSet; /* Model-1: usually used for Galileo */
677 gnss_nav_model_nav_keplerian_set_struct navKeplerianSet; /* Model-2: for GPS series */
678 gnss_nav_model_cnav_keplerian_set_struct cnavKeplerianSet; /* Model-3: for modernized GPS series */
679 gnss_nav_model_glonass_ecef_struct glonassECEF; /* Model-4: for GLONASS */
680 gnss_nav_model_sbas_ecef_struct sbasECEF; /* Model-5: for SBAS */
681 gnss_nav_model_bds_keplerian_set_struct bdsKeplerianSet; /* Model-6: for BDS */
682 } data;
683} gnss_orbit_model_struct;
684
685
686typedef struct
687{
688 kal_uint8 svID; /* [0..63] */
689 kal_uint8 svHealth; /* 8 bits */
690 kal_uint16 iod; /* 11 bits */
691 gnss_clock_model_struct clockModel;
692 gnss_orbit_model_struct orbitModel;
693 /* Optional field */
694 kal_bool svHealthExt_v1240Valid;
695 kal_uint8 svHealthExt_v1240; /* 4 bits */
696} gnss_nav_model_satellite_element;
697
698
699typedef struct
700{
701 kal_bool nonBroadcastIndFlag; /* [0..1] value 0: navigation model data correspond to satellite broadcasted data;
702 value 1: navigation model data is not derived from satellite broadcasted data */
703 kal_uint8 numSatElement;
704 gnss_nav_model_satellite_element satElement[GNSS_MAX_NAV_SAT_ELEMENT];
705} gnss_navigation_model_struct;
706
707
708typedef struct
709{
710 kal_bool nonBroadcastIndFlag; /* [0..1] value 0: navigation model data correspond to satellite broadcasted data;
711 value 1: navigation model data is not derived from satellite broadcasted data */
712 kal_uint8 numSatElement;
713 DLIST_HANDLE navDynamicHandle;
714 DLIST_HEAD navDynamicList;
715} gnss_navigation_model_dynamic_struct;
716/* end for gnss navigation model */
717
718
719/* start for gnss real time integrity */
720typedef struct
721{
722 kal_uint8 badSVID; /* [0..63] */
723 kal_bool badSignalIDValid;
724 kal_uint8 badSignalID; /* identidy the bad signal or signals of a satellite, bit string representation, map to GNSS_SGN_ID_BITMAP_* */
725} gnss_bad_signal_element_struct;
726
727
728typedef struct
729{
730 kal_uint8 numBadSignalElement;
731 gnss_bad_signal_element_struct badSignalElement[GNSS_MAX_RTI_BAD_SAT_ELEMENT];
732} gnss_real_time_integrity_struct;
733/* end for gnss real time integrity */
734
735
736/* start for gnss data bit assistance */
737typedef struct
738{
739 kal_uint8 gnssSignalType; /* identify GNSS signal type, map to GNSS_SGN_ID_VALUE_* */
740 kal_uint8 numGnssDataBits;
741 kal_uint8 gnssDataBits[GNSS_MAX_DBA_BIT_LENGTH/8]; /* data bit original max is 1024 bits */
742} gnss_data_bit_signal_element_struct;
743
744
745typedef struct
746{
747 kal_uint8 svID; /* [0..63] */
748 kal_uint8 numGnssDataBitsSgnElement;
749 gnss_data_bit_signal_element_struct gnssDataBitsSgnElement[GNSS_MAX_DBA_SGN_TYPE_ELEMENT];
750} gnss_data_bit_satellite_element_struct;
751
752
753typedef struct
754{
755 kal_uint16 gnssTOD; /* [0..3599], reference time of the first bit of the data modulo 1 hour, scale factor 1 second */
756 kal_bool gnssTODfracValid;
757 kal_uint16 gnssTODfrac; /* [0..999], fractional part of gnssTD, scale factor 1 milli-second */
758 kal_uint8 numGnssDataBitsSatElement;
759 gnss_data_bit_satellite_element_struct gnssDataBitsSatElement[GNSS_MAX_DBA_SAT_ELEMENT];
760} gnss_data_bit_assistance_struct;
761/* end for gnss data bit assistance */
762
763
764/* start for gnss acquisition assistance */
765typedef struct
766{
767 kal_uint8 svID; /* [0..63] */
768 kal_int16 doppler0; /* [-2048..2047], Doppler (0th order term) value for velocity, scale factor 0.5 m/s in th range from -1024 m/s to +1023.5 m/s */
769 kal_uint8 doppler1; /* [0..63], Doppler (1th order term) value for acceleration, scale factor 1/210 m/s^2 in the range from -0.2 m/s^2 to +0.1 m/s^2 */
770 kal_uint8 dopplerUncertainty; /* [0..4], defined values: 2.5 m/s, 5 m/s, 10 m/s, 20 m/s, 40 m/s encoded as integer range 0-4 by 2^(-n)*40 m/s, n=0-4 */
771 kal_uint16 codePhase; /* [0..1022], scale factor 2^(-10) ms in the range from 0 to (1-2^(-10)) ms */
772 kal_uint8 intCodePhase; /* [0..127], integer codephase, scale factor 1ms */
773 kal_uint8 codePhaseSearchWindow; /* [0..31], map to value-to-searchwindow table (ms) */
774 kal_uint16 azimuth; /* [0..511], azimuth angle a, x-degrees of satellite x<=a<x+0.703125, scale factor 0.703125 degrees */
775 kal_uint8 elevation; /* [0..127], elevation angle e, y-degrees of satellite y>=e<y+0.703125, scale factr 0.703125 degrees */
776 /* optional field */
777 kal_bool codePhase1023Valid;
778 kal_bool codePhase1023; /* only use if codePhase is 1022, codePhase value is 1023*2^(-10) = (1-2^(-10)) ms */
779 /* if support dopplerUncertaintyExtR10, should ignore dopplerUncertainty field */
780 kal_bool dopplerUncertaintyExtR10Valid;
781 gnss_acq_assist_doppler_uncertainty_ext_enum dopplerUncertaintyExtR10; /* enumerated value map to 60 m/s, 80 m/s, 100 m/s, 120 ms, and No Information */
782} gnss_acquisition_assist_element_struct;
783
784
785/**
786 * please note that RRC/RRLP use alternative word to represent GNSS Acquisition Assistance:
787 * RRC: GANSS-ReferenceMeasurementInfo
788 * RRLP: ganssRefMeasurementAssist
789 */
790typedef struct
791{
792 kal_uint8 gnssSignalID; /* GNSS type, map to GNSS_SGN_ID_VALUE_* */
793 kal_uint8 numGnssAcqAssistElement;
794 gnss_acquisition_assist_element_struct gnssAcqAssistElement[GNSS_MAX_ACQ_ASSIST_SAT_ELEMENT];
795 kal_bool confidenceR10Valid;
796 kal_uint8 confidenceR10; /* only for LPP */
797} gnss_acquisition_assistance_struct;
798/* end for gnss acquisition assistance */
799
800
801/* start for gnss almanac */
802typedef struct
803{
804 kal_uint8 svID; /* [0..63] */
805 kal_uint16 kepAlmanacE; /* [0..2047], eccentricity, scale factor 2^(-16) */
806 kal_int16 kepAlmanacDeltaI; /* [-1024..1023], scale factor 2^(-14) semi-circles */
807 kal_int16 kepAlmanacOmegaDot; /* [-1024..1023], longitude of ascending node of orbit plane at weekly epoch, scale factor 2^(-33) semi-circles/seconds */
808 kal_uint8 kepSVStatusINAV; /* bit string (size(4)) */
809 kal_uint8 kepSVStatusFNAV; /* bit string (size(2)) */
810 kal_int32 kepAlmanacAPowerHalf; /* [-4096..4095], semi-major axis delta, scale factor 2^(-9) meters^0.5 */
811 kal_int16 kepAlmanacOmega0; /* [-32768..32767], longitude of ascending node of orbit plane at weekly epoch, scale factor 2^(-15) semi-circles */
812 kal_int16 kepAlmanacW; /* [-32768..32767], argument of perigee, scale factor 2^(-15) semi-circles */
813 kal_int16 kepAlmanacM0; /* [-32768..32767], mean anomaly at reference time, scale factor 2^(-15) semi-circles */
814 kal_int16 kepAlmanacAF0; /* [-32768..32767], scale factor 2^(-19) seconds */
815 kal_int16 kepAlmanacAF1; /* [-4096..4095], scale factor 2^(-38) seconds */
816} gnss_almanac_keplerian_set_struct;
817
818
819typedef struct
820{
821 kal_uint8 svID; /* [0..63] */
822 kal_uint16 navAlmE; /* [0..65535], eccentricity, scale factor 2^(-21) */
823 kal_int16 navAlmDeltaI; /* [-32768..32767], correction to inclination, scale factor 2^(-19) semi-circles */
824 kal_int16 navAlmOMEGADOT; /* [-32768..32767], rate of right ascension, scale factor 2^(-38) semi-circles/second */
825 kal_uint8 navAlmSVHealth; /* [0..255] */
826 kal_uint32 navAlmSqrtA; /* [0..16777215], square root of the semi-major axis, scale factor 2^(-11) meters^0.5 */
827 kal_int32 navAlmOMEGAo; /* [-8388608..8388607], longitude of ascending node of orbit plane at weekly epoch, scale factor 2^(-23) semi-circles */
828 kal_int32 navAlmOmega; /* [-8388608..8388607], argument of perigee, , scale factor 2^(-23) semi-circles */
829 kal_int32 navAlmMo; /* [-8388608..8388607], mean anomaly at reference time, scale factor 2^(-23) semi-circles */
830 kal_int16 navAlmaf0; /* [-1024..1023], apparent satellite clock correction, scale factor 2^(-20) seconds */
831 kal_int16 navAlmaf1; /* [-1024..1023], apparent satellite clock correction, scale factor 2^(-38) semi-circles seconds/second */
832} gnss_almanac_nav_keplerian_set_struct;
833
834
835typedef struct
836{
837 kal_uint8 svID; /* [0..63] */
838 kal_int8 redAlmDeltaA; /* [-128..127], scale factor 2^9 meters */
839 kal_int8 redAlmOmega0; /* [-64..63], scale factor 2^(-6) semi-circles */
840 kal_int8 redAlmPhi0; /* [-64..63], scale factor 2^(-6) semi-circles */
841 kal_bool redAlmL1Health; /* L1 health */
842 kal_bool redAlmL2Health; /* L2 health */
843 kal_bool redAlmL5Health; /* L5 health */
844} gnss_almanac_reduced_keplerian_set_struct;
845
846
847typedef struct
848{
849 kal_uint8 svID; /* [0..63] */
850 kal_uint16 midiAlmE; /* [0..2047], eccentricity, scale factor 2^(-16) */
851 kal_int16 midiAlmDeltaI; /* [-1024..1023], scale factor 2^(-14) semi-circles */
852 kal_int16 midiAlmOmegaDot; /* [-1024..1023], scale factor 2^(-33) semi-circles/second */
853 kal_uint32 midiAlmSqrtA; /* [0..131071], scale factor 2^(-4) meters^0.5 */
854 kal_int16 midiAlmOmega0; /* [-32768..32767], scale factor 2^(-15) semi-circles */
855 kal_int16 midiAlmOmega; /* [-32768..32767], scale factor 2^(-15) semi-circles */
856 kal_int16 midiAlmMo; /* [-32768..32767], scale factor 2^(-15) semi-circles */
857 kal_int16 midiAlmaf0; /* [-1024..1023], scale factor 2^(-20) seconds */
858 kal_int16 midiAlmaf1; /* [-512..511], scale factor 2^(-37) seconds/second */
859 kal_bool midiAlmL1Health; /* L1 health */
860 kal_bool midiAlmL2Health; /* L2 health */
861 kal_bool midiAlmL5Health; /* L5 health */
862} gnss_almanac_midi_keplerian_set_struct;
863
864
865typedef struct
866{
867 kal_uint16 gloAlmNA; /* [1..1461], N^A, scale factor 1 days */
868 kal_uint8 gloAlmnA; /* [1..24] */
869 kal_uint8 gloAlmHA; /* [0..31] */
870 kal_int32 gloAlmLambdaA; /* [-1048576..1048575], scale factor 2^(-20) semi-circles */
871 kal_uint32 gloAlmtlambdaA; /* [0..2097151], scale factor 2(^-5) seconds */
872 kal_int32 gloAlmDeltaIa; /* [-131072..131071], scale factor 2^(-20) semi-circles */
873 kal_int32 gloAlmDeltaTA; /* [-2097152..2097151], scale factor 2^(-9) seconds/orbit period */
874 kal_int8 gloAlmDeltaTdotA; /* [-64..63], scale factor 2^(-14) seconds/orbit period */
875 kal_uint16 gloAlmEpsilonA; /* [0..32767], scale factor 2^(-20) */
876 kal_int16 gloAlmOmegaA; /* [-32768..32767], scale factor 2^(-15) semi-circles */
877 kal_int16 gloAlmTauA; /* [-512..511], scale factor 2^(-18) seconds */
878 kal_uint8 gloAlmCA; /* [0..1] */
879 kal_bool gloAlmMAValid;
880 kal_uint8 gloAlmMA; /* 2 bit field */
881} gnss_almanac_glonass_set_struct;
882
883
884typedef struct
885{
886 kal_uint8 sbasAlmDataID; /* [0..3] */
887 kal_uint8 svID; /* [0..63] */
888 kal_uint8 sbasAlmHealth; /* 8 bit field */
889 kal_int16 sbasAlmXg; /* [-16384..16383], scale factor 2600 meters */
890 kal_int16 sbasAlmYg; /* [-16384..16383], scale factor 2600 meters */
891 kal_int16 sbasAlmZg; /* [-256..255], scale factor 26000 meters */
892 kal_int8 sbasAlmXgdot; /* [-4..3], rate of change, scale factor 10 meters/second */
893 kal_int8 sbasAlmYgDot; /* [-4..3], rate of change, scale factor 10 meters/second */
894 kal_int8 sbasAlmZgDot; /* [-8..7], rate of change, scale factor 40.96 meters/second */
895 kal_uint16 sbasAlmTo; /* [0..2047], scale factor 64 meters/seconds */
896} gnss_almanac_ecef_sbas_set_struct;
897
898typedef struct
899{
900 kal_uint8 svID; /* [0..63] */
901 kal_bool bdsAlmToaValid;
902 kal_uint8 bdsAlmToa; /* [0..255], almanac reference time, scale factor 2^12 seconds */
903 kal_uint32 bdsAlmSqrtA; /* [0..16777215], square root of semi-major axis, scale factor 2^(-11) meters^(1/2) */
904 kal_uint32 bdsAlmE; /* [0..131071], eccentricity, dimensionless, scale factor 2^(-21) */
905 kal_int32 bdsAlmW; /* [-8388608..8388607], argument of perigee, scale factor 2^(-23) semi-circles */
906 kal_int32 bdsAlmM0; /* [-8388608..8388607], mean anomaly at reference time, scale factor 2^(-23) semi-circles */
907 kal_int32 bdsAlmOmega0; /* [-8388608..8388607], longitude of ascending node of orbital plane computed according to reference time, scale factor 2^(-23) semi-circles */
908 kal_int32 bdsAlmOmegaDot; /* [-65536..65535], rate of right ascension, scale factor 2^(-38) semi-circles/sec */
909 kal_int16 bdsAlmDeltaI; /* [-32768..32767], correction of orbit reference inclination at reference time, scale factor 2^(-19) semi-circles */
910 kal_int16 bdsAlmA0; /* [-1024..1023], satellite clock bias, scale factor 2^(-20) seconds */
911 kal_int16 bdsAlmA1; /* [-1024..1023], satellite clock rate, scale factor 2^(-38) sec/sec */
912 kal_bool bdsSvHealthValid;
913 kal_uint16 bdsSvHealth; /* 9 bit field, indicate satellites health information as defined in BDS ICD v2.0 Table 5-15. The left most bit is the MSB */
914} gnss_almanac_bds_almanac_set_struct;
915
916typedef struct
917{
918 gnss_almanac_type_enum type;
919
920 union
921 {
922 gnss_almanac_keplerian_set_struct keplerianSet; /* for Galileo */
923 gnss_almanac_nav_keplerian_set_struct navKeplerianSet; /* for GPS, QZSS */
924 gnss_almanac_reduced_keplerian_set_struct reducedKeplerianSet; /* for GPS, Modernized GPS, QZSS */
925 gnss_almanac_midi_keplerian_set_struct midiKeplerianSet; /* for GPS, Modernized GPS, QZSS */
926 gnss_almanac_glonass_set_struct glonassSet; /* for GLONASS */
927 gnss_almanac_ecef_sbas_set_struct ecefSbasSet; /* for SBAS */
928 gnss_almanac_bds_almanac_set_struct bdsAlmanacSet; /* for BDS */
929 } data;
930} gnss_almanac_element_struct;
931
932
933typedef struct
934{
935 kal_bool weekNumberValid;
936 kal_uint8 weekNumber; /* [0..255], almanac reference week number for non-GLONASS system, modulo 256 weeks */
937 kal_bool toaValid;
938 kal_uint16 toa; /* [0.255], almanac reference time for non-GLONASS system, scale factor 2^12 seconds. For A-Galileo, the toa-ext-v1240 can be [256..1023]. */
939 kal_bool iodaValid;
940 kal_uint8 ioda; /* [0..3], issue of data, for Galileo system. For A-Galileo, the ioda-ext-v1240 can be [4..15] */
941 kal_bool completeAlmanacProvided; /* if almanac list contains complete GNSS constellation */
942 kal_uint8 numGnssAlmanacElement;
943 gnss_almanac_element_struct gnssAlmanacElement[GNSS_MAX_ALMANAC_SAT_ELEMENT];
944} gnss_almanac_struct;
945/* end for gnss almanac */
946
947
948/* start for gnss utc model */
949typedef struct
950{
951 kal_int32 gnssUtcA1; /* [-8388608..8388607], scale factor 2^(-50) seconds/second */
952 kal_int32 gnssUtcA0; /* [-2147483648..2147483647], scale factor 2^(-30) seconds */
953 kal_uint8 gnssUtcTot; /* [0..255], scale factor 2^12 seconds */
954 kal_uint8 gnssUtcWNt; /* [0..255], scale factor 1 week */
955 kal_int8 gnssUtcDeltaTls; /* [-128..127], scale factor 1 second */
956 kal_uint8 gnssUtcWNlsf; /* [0..255], scale factor 1 week */
957 kal_int8 gnssUtcDN; /* [-128..127], scale factor 1 day */
958 kal_int8 gnssUtcDeltaTlsf; /* [-128..127], scale factor 1 second */
959} gnss_utc_model_set1_struct;
960
961
962typedef struct
963{
964 kal_int16 utcA0; /* [-32768..32767], bias coefficient of GNSS time scale relative to UTC time scale, scale factor 2^(-35) seconds */
965 kal_int16 utcA1; /* [-4096..4095], drift coefficient of GNSS time scale relative to UTC time scale, scale factor 2^(-51) seconds/second */
966 kal_int8 utcA2; /* [-64..63], drift rate correction coefficient of GNSS time sacel relative to UTC time scale, scale factor 2^(-68) seconds/second^2 */
967 kal_int8 utcDeltaTls; /* [-128..127], current or past leap second count, scale factor 1 second */
968 kal_uint16 utcTot; /* [0..65535], time data reference time of week, scale factor 2^4 seconds */
969 kal_uint16 utcWNot; /* [0..8191], time data reference week number, scale factor 1 week */
970 kal_uint8 utcWNlsf; /* [0..255], leap second reference week number, scale factor 1 week */
971 kal_uint8 utcDN; /* 4 bits field, leap second reference day number, scale factor 1 day */
972 kal_int8 utcDeltaTlsf; /* [-128..127], current or future leap second count, scale factor 1 second */
973} gnss_utc_model_set2_struct;
974
975
976typedef struct
977{
978 kal_uint16 nA; /* [1..1461], callendar day number within four-year period beginning since the leap year, scale factor 1 day */
979 kal_int32 tauC; /* [-2147483648..2147483647], GLONASS time scale correction to UTC(SU), scale factor 2^(-31) seconds */
980 /* optional field, mandatory present if GLONASS-M satellites are presnet in the current GLONASS constellation */
981 kal_bool b1Valid;
982 kal_int16 b1; /* [-1024..1023], coefficient to determine delta UT1, scale factor 2^(-10) seconds */
983 kal_bool b2Valid;
984 kal_int16 b2; /* [-512..511], coefficient to determind delta UT1, scale factor 2^(-16) seconds/msd */
985 kal_bool kpValid;
986 kal_uint8 kp; /* 2 bits field, notification of expected leap second correction */
987} gnss_utc_model_set3_struct;
988
989
990typedef struct
991{
992 kal_int32 utcA1wnt; /* [-8388608..8388607], scale factor 2^(-50) seconds/second */
993 kal_int32 utcA0wnt; /* [-2147483648..2147483647], scale factor 2^(-30) seconds */
994 kal_uint8 utcTot; /* [0..255], scale factor 2^12 seconds */
995 kal_uint8 utcWNt; /* [0..255], scale factor 1 week */
996 kal_int8 utcDeltaTls; /* [-128..127], scale factor 1 second */
997 kal_uint8 utcWNlsf; /* [0..255], scale factor 1 week */
998 kal_int8 utcDN; /* [-128..127], scale factor 1 day */
999 kal_int8 utcDeltaTlsf; /* [-128..127], scale factor 1 second */
1000 kal_uint8 utcStandardID; /* [0..7], if GNSS-ID indicates SBAS, this field indicated the UTC stadard used for the SBAS network time indicated by SBAS-ID to UTC relation */
1001} gnss_utc_model_set4_struct;
1002
1003
1004typedef struct
1005{
1006 kal_int32 utcA0; /* [-2147483648..2147483647], BDS clock bias relative to UTC, scale factor 2^(-30) seconds */
1007 kal_int32 utcA1; /* [-8388608..8388607], BDS clock rate relative to UTC, scale factor 2^(-50) sec/sec */
1008 kal_int8 utcDeltaTls; /* [-128..127], delta time due to leap seconds before the new leap second effective, scale factor 1 second */
1009 kal_uint8 utcWNlsf; /* [0..255], week number of the new leap second, scale factor 1 week */
1010 kal_uint8 utcDN; /* [0..255], day number of week of the new leap second, scale factor 1 day */
1011 kal_int8 utcDeltaTlsf; /* [-128..127], delta time due to leap seconds after the new leap second effective, scale factor 1 second */
1012} gnss_utc_model_set5_struct;
1013
1014
1015typedef struct
1016{
1017 gnss_utc_model_type_enum type;
1018
1019 union
1020 {
1021 gnss_utc_model_set1_struct utcModel1; /* for GPS, Galileo, QZSS */
1022 gnss_utc_model_set2_struct utcModel2; /* for GPS, Galileo, QZSS */
1023 gnss_utc_model_set3_struct utcModel3; /* for GLONASS */
1024 gnss_utc_model_set4_struct utcModel4; /* for SBAS */
1025 gnss_utc_model_set5_struct utcModel5; /* for BDS */
1026 } data;
1027} gnss_utc_model_struct;
1028/* end for gnss utc model */
1029
1030
1031/* start for gnss aux info */
1032typedef struct
1033{
1034 kal_uint8 svID; /* [0..63] */
1035 kal_uint8 signalsAvailable; /* 8 bits field, indicate the ranging signals supported by the satellite indicated by svID, map to GNSS_SGN_ID_BITMAP_* */
1036} gnss_aux_gps_sat_element_struct;
1037
1038
1039typedef struct
1040{
1041 kal_uint8 numGpsElement;
1042 gnss_aux_gps_sat_element_struct gpsElement[GNSS_MAX_AUX_SAT_ELEMENT];
1043} gnss_aux_info_gps_struct;
1044
1045
1046typedef struct
1047{
1048 kal_uint8 svID; /* [0..63] */
1049 kal_uint8 signalsAvailable; /* 8 bits field, indicate the ranging signals supported by the satellite indicated by svID */
1050 /* optional field */
1051 kal_bool channelNumberValid;
1052 kal_int8 channelNumber; /* [-7..13] indicate the GLONASS carrier frequency number of the satellite identified by svID */
1053} gnss_aux_glonass_sat_element_struct;
1054
1055
1056typedef struct
1057{
1058 kal_uint8 numGlonassElement;
1059 gnss_aux_glonass_sat_element_struct glonassElement[GNSS_MAX_AUX_SAT_ELEMENT];
1060} gnss_aux_info_glonass_struct;
1061
1062
1063typedef struct
1064{
1065 gnss_aux_info_gnss_type_enum type;
1066
1067 union
1068 {
1069 gnss_aux_info_gps_struct gps;
1070 gnss_aux_info_glonass_struct glonass;
1071 } data;
1072} gnss_aux_info_struct;
1073/* end for gnss aux info */
1074
1075
1076/* start for gnss dbds correction */
1077typedef struct
1078{
1079 kal_uint8 svID; /* [0..63] */
1080 kal_uint8 bdsUDREI; /* [0..15], indicate user differential range error information by user differential range error index (UDREI) as defined in BDS ICD v2.0, sec 5.3.3.7.2 */
1081 kal_uint8 bdsRURAI; /* [0..15], indicate Regional User Range Accuracy (RURA) information by Regional User Range Accuracy Index (UDREI) as defined in BDS ICD v2.0, sec 5.3.3.6 */
1082 kal_int16 bdsECCDeltaT; /* [-4096..4095], indicate the BDS differential correction information which is expressed in equivalent clock correction (deltat).
1083 add the value of deltat to the observed pseudo-range to correct the effect caused by the satellite clock offset and ephemeris error.
1084 value -4096 means the deltat is not available, scale factor 0.1 meter */
1085} gnss_dbds_correction_element_struct;
1086
1087
1088typedef struct
1089{
1090 kal_uint8 numCorrectionElements;
1091 gnss_dbds_correction_element_struct correctionElements[GNSS_MAX_DBDS_CORRECTION_ELEMENT];
1092} gnss_dbds_correction_list_struct;
1093
1094
1095typedef struct
1096{
1097 kal_bool gnssSignalIdValid;
1098 kal_uint8 gnssSignalId; /* map to GNSS_SGN_ID_VALUE_* */
1099 gnss_dbds_correction_list_struct correctionList;
1100} gnss_dbds_correction_sgn_type_element_struct;
1101
1102
1103typedef struct
1104{
1105 kal_uint8 numSgnTypeElements;
1106 gnss_dbds_correction_sgn_type_element_struct sgnTypeElements[GNSS_MAX_DBDS_SGN_TYPE_ELEMENT];
1107} gnss_dbds_correction_sgn_type_list_struct;
1108
1109
1110typedef struct
1111{
1112 kal_uint16 dbdsRefTime; /* [0..3599], the time for which the differential corrections are valid, modulo 1 hour. dbds-RefTime is given in BDS system time, scale factor 1 second */
1113 gnss_dbds_correction_sgn_type_list_struct dbdsSgnTypeList;
1114} gnss_dbds_diff_corrections_struct;
1115/* end for gnss dbds correction */
1116
1117
1118/* start for gnss bds grid model */
1119typedef struct
1120{
1121 kal_uint16 igpID; /* indicate the ionospheric grid point (IGP) number as defined in BDS ICD v2.0, sec 5.3.3.8 */
1122 kal_uint16 dt; /* indicate dT as defined in BDS ICD v2.0, sec 5.3.3.8.1, i.e. the vertical delay at the corresponding IGP indicated by igp-ID, scale factor 0.125 meter */
1123 kal_uint8 givei; /* indicate the Grid Ionospheric Vertical Error Index (GIVEI) which is used to describe the delay correction accuracy at ionospheric grid point indicated by igp-ID, the mapping between GIVEI and GIVE is defined in BDS ICD v2.0, sec 5.3.3.8.2 */
1124} gnss_bds_grid_ion_element_struct;
1125
1126
1127typedef struct
1128{
1129 kal_uint16 numGridIonElement;
1130 gnss_bds_grid_ion_element_struct gridIonElement[GNSS_MAX_BDS_GRID_ION_ELEMENT]; /* a list that provides ionospheric grid point information for each grid point. Up to 16 instances are used in this version of the specification. The values 17 to 320 are reserved for future use */
1131} gnss_bds_grid_ion_list_struct;
1132
1133
1134typedef struct
1135{
1136 kal_uint16 bdsRefTime; /* [0..3599], the time for which the grid model parameters are valid, modulo 1 hour. bdsRefTime is given in BDS system time, scale factor 1 second */
1137 gnss_bds_grid_ion_list_struct gridIonList; /* a list that provides ionospheric grid point information for each grid point. Up to 16 instances are used in this version of the specification. The values 17 to 320 are reserved for future use */
1138} gnss_bds_grid_model_params_struct;
1139/* end for gnss bds grid model */
1140
1141
1142/* LCSP -> GNSS Task */
1143/* This structure for MSG_ID_LCSP_GNSS_OPEN_REQ */
1144typedef struct
1145{
1146 LOCAL_PARA_HDR
1147 //kal_uint8 gnssIdBitmap; /* GNSS_ID_BITMAP_* */
1148 //kal_uint8 preferGnssMode; /* TBD: should not used this kind of design in GNSS */
1149} lcsp_gnss_open_req_struct;
1150
1151
1152/* This structure for MSG_ID_LCSP_GNSS_CLOSE_REQ */
1153typedef struct
1154{
1155 LOCAL_PARA_HDR
1156 //kal_uint8 gnssIdBitmap; /* GNSS_ID_BITMAP_* */
1157} lcsp_gnss_close_req_struct;
1158
1159
1160/* This structure for MSG_ID_LCSP_GNSS_COMMON_ASSIST_DATA_REQ */
1161typedef struct
1162{
1163 LOCAL_PARA_HDR
1164 kal_uint16 transactionID;
1165
1166 gnss_common_assist_data_type_enum type;
1167 union
1168 {
1169 gnss_reference_time_struct refTime;
1170 gnss_reference_location_struct refLoc;
1171 gnss_ionospheric_model_struct ionModel;
1172 gnss_earth_orient_params_struct eop;
1173 } data;
1174} lcsp_gnss_common_assist_data_req_struct;
1175
1176
1177/**
1178 * in LPP, location server could provide up to 16 GNSSs generic assist data
1179 * in RRC/RRLP, location server could provide up to 8 GANSSs generic assist data
1180 */
1181/* This structure for MSG_ID_LCSP_GNSS_GENERIC_ASSIST_DATA_REQ */
1182typedef struct
1183{
1184 LOCAL_PARA_HDR
1185 kal_uint16 transactionID;
1186
1187 gnss_id_enum gnssId;
1188 kal_bool sbasIdValid; /* only present when gnss is sbas */
1189 sbas_id_enum sbasId;
1190
1191 gnss_generic_assist_data_type_enum type;
1192 union
1193 {
1194 gnss_time_model_list_struct timeModel;
1195 gnss_diff_correction_struct dgnss;
1196 gnss_navigation_model_struct navModel;
1197 gnss_real_time_integrity_struct rti;
1198 gnss_data_bit_assistance_struct dataBitAssist;
1199 gnss_acquisition_assistance_struct acqAssist;
1200 gnss_almanac_struct almanac;
1201 gnss_utc_model_struct utcModel;
1202 gnss_aux_info_struct auxInfo;
1203 gnss_dbds_diff_corrections_struct dbds;
1204 gnss_bds_grid_model_params_struct bdsGridModel;
1205 } data;
1206} lcsp_gnss_generic_assist_data_req_struct;
1207
1208
1209typedef struct
1210{
1211 /* note: for MA, use horizontalAccuracy to represent pseudorange error */
1212 kal_bool horizontalAccuracyValid;
1213 kal_uint8 horizontalAccuracy; /* range: 0-127, refer TS 23.032, K1 decoding formula */
1214 kal_uint8 horizontalAccuracyConfidence; /* range: 0-100, refer TS 23.032, direct map to percentage, zero indicate "no inforamation" */
1215 kal_bool verticalAccuracyValid;
1216 kal_uint8 verticalAccuracy; /* range: 0-127, refer TS 23.032, K3 decoding formula */
1217 kal_uint8 verticalAccuracyConfidence; /* range: 0-100, refer TS 23.032, direct map to percentage, zero indicate "no inforamation" */
1218 kal_uint8 responseTime; /* range: 1-128 seconds */
1219//#ifdef __EARLY_FIX_SUPPORT__
1220 kal_uint8 responseTimeEarlyFix; /* range: 1-128 seconds, 0 means not enabled */
1221//#endif
1222 kal_bool isPeriodic;
1223} gnss_loc_req_qos_struct;
1224
1225
1226/* This structure for MSG_ID_LCSP_GNSS_POS_REQ */
1227typedef struct
1228{
1229 LOCAL_PARA_HDR
1230 kal_uint16 transactionID;
1231
1232 lcs_sim_source_enum simSource;
1233 kal_uint16 gnssMethod; /* network allowed GNSS type, may be multiple GNSS, map to GNSS_ID_BITMAP_* */
1234 kal_bool fineTimeAssistanceMeasReq; /* network requested fine time measurement */
1235 /**
1236 * note: we assume that when network requests UE to do fine time measurement,
1237 * network will always give UE corresponding refercence cell information in Reference Time Assistance Data,
1238 * then GNSS task should use this reference cell information within Reference Time Assistance Data to ask current RAT's L1 module to do fine time measurement,
1239 * otherwise the measurement would fail.
1240 */
1241 kal_bool assistanceAvailability; /* network allow UE request additional GNSS assistance data */
1242 gnss_loc_req_qos_struct qos;
1243 kal_bool autoResetTrigger;
1244} lcsp_gnss_pos_req_struct;
1245
1246
1247/* This structure for MSG_ID_LCSP_GNSS_MEAS_REQ */
1248typedef struct
1249{
1250 LOCAL_PARA_HDR
1251 kal_uint16 transactionID;
1252
1253 lcs_sim_source_enum simSource;
1254 kal_uint16 gnssMethod; /* network allowed GNSS type, may be multiple GNSS, map to GNSS_ID_BITMAP_* */
1255 kal_bool fineTimeAssistanceMeasReq; /* network requested fine time measurement */
1256 /**
1257 * note: we assume that when network requests UE to do fine time measurement,
1258 * network will always give UE corresponding refercence cell information in Reference Time Assistance Data,
1259 * then GNSS task should use this reference cell information within Reference Time Assistance Data to ask current RAT's L1 module to do fine time measurement,
1260 * otherwise the measurement would fail.
1261 */
1262 kal_bool adrMeasReq; /* network requested ADR(accumulated Doppler range) measurement */
1263 kal_bool multiFreqMeasReq; /* network requested to report multiple supported GNSS type */
1264 kal_bool assistanceAvailability; /* network allow UE request additional GNSS assistance data */
1265 gnss_loc_req_qos_struct qos;
1266 kal_bool autoResetTrigger;
1267} lcsp_gnss_meas_req_struct;
1268
1269
1270/* This structure for MSG_ID_LCSP_GNSS_ABORT_REQ */
1271typedef struct
1272{
1273 LOCAL_PARA_HDR
1274 kal_uint16 transactionID;
1275} lcsp_gnss_abort_req_struct;
1276
1277
1278/* This structure for MSG_ID_LCSP_GNSS_RESET_UE_STORED_POS_INFO */
1279typedef struct
1280{
1281 LOCAL_PARA_HDR
1282 /* empty */
1283} lcsp_gnss_reset_ue_stored_pos_info_struct;
1284
1285
1286/* GNSS Task -> LCSP */
1287/* This structure for MSG_ID_LCSP_GNSS_COMMON_ASSIST_DATA_CNF */
1288typedef struct
1289{
1290 LOCAL_PARA_HDR
1291 kal_uint16 transactionID;
1292 gnss_common_assist_data_type_enum type;
1293 kal_bool resultOk;
1294} lcsp_gnss_common_assist_data_cnf_struct;
1295
1296
1297/* This structure for MSG_ID_LCSP_GNSS_GENERIC_ASSIST_DATA_CNF */
1298typedef struct
1299{
1300 LOCAL_PARA_HDR
1301 kal_uint16 transactionID;
1302
1303 gnss_id_enum gnssId;
1304 kal_bool sbasIdValid; /* only present when gnss is sbas */
1305 sbas_id_enum sbasId;
1306 gnss_generic_assist_data_type_enum type;
1307 kal_bool resultOk;
1308} lcsp_gnss_generic_assist_data_cnf_struct;
1309
1310
1311/* No more additional assistance data req primitive, embeded assistance data request in GNSS_POS/MEAS_CNF */
1312/**
1313 * For common assistance data,
1314 * to simplify complexity, LPP would align RRC/RRLP ASN.1 design, request all supported data fields of the assistance data type request
1315 * e.g. If network request GPS+GLONASS positioning estimate, LPP will request all supported fields in the GNSS-ReferenceTimeReq if GNSS task response reference time missing
1316 * (1) gnssTimeReqPrefList = GPS-ID + GLONASS-ID
1317 * (2) gpsTOWAssistReq = true
1318 * (3) notOfLeapSecReq = true
1319 *
1320 * If network request GPS only positioning estimate, LPP will request all supported fields in the GNSS-ReferenceTimeReq if GNSS task response reference time missing
1321 * (1) gnssTimeReqPrefList = GPS-ID
1322 * (2) gpsTOWAssistReq = true
1323 * (3) notOfLeapSecReq = false
1324 *
1325 * the same design policy also applies on RRC/RRLP original(extend) GANSS-AdditionalAssistanceDataRequest/GANSSAssistanceData
1326 */
1327
1328typedef struct
1329{
1330 kal_bool gnssReferenceTimeReq; /* fill the request as above example */
1331 kal_bool gnssReferenceLocationReq;
1332 kal_bool gnssIonosphericModelReq; /* klobucharModel for GPS, neQuickModel for Galileo, therefore we fill the request according to GNSS method */
1333 kal_bool gnssEarthOrientationParametersReq;
1334} gnss_request_common_assist_data_struct;
1335
1336
1337/**
1338 * For generic assistance data, we need to specify GNSS id, and its requested assistance data type.
1339 * In some assistance data, we also need to include more data in addition to true/false
1340 * (1) Time Model => GNSS-ID + deltaTreq
1341 * (2) D-Correction => GNSS-Signal-ID + udreValidityTime
1342 * (3) Nav Model => stored nav list or request nav list
1343 * (4) RTI => only true/false!
1344 * (5) Data Bit Assist => GNSS-TOD + interval + speficy which GNSS-Signal-ID, satellite data bit
1345 * (6) ACQ => GNSS-Signal-ID
1346 * (7) Almanac => Model ID (GNSS-ID map to currect Almanac Model ID)
1347 * (8) UTC => Model ID (GNSS-ID map to currect UTC Model ID)
1348 * (9) AUX => only true/false!
1349 * (10) DBDS Correction => GNSS-Signal-ID
1350 * (11) BDS Grid Model => only true/false!
1351 */
1352
1353typedef struct
1354{
1355 kal_bool isRequested; /* indicate if this type of data is requested */
1356 kal_uint8 numGnssToIDReq;
1357 gnss_to_id_enum GnssToIDReq[GNSS_MAX_TIME_MODEL_ELEMENT]; /* 5-15 is reserved */
1358} gnss_request_time_model_struct;
1359
1360
1361typedef struct
1362{
1363 kal_bool isRequested; /* indicate if this type of data is requested */
1364 kal_uint8 gnssSignalsReq; /* requested GNSS Signal(s), map to GNSS_SGN_ID_BITMAP_* */
1365 kal_bool validityTimeReq; /* udreGrowthRate and udreValidityTime are requested or not */
1366} gnss_request_diff_correction_struct;
1367
1368
1369typedef struct
1370{
1371 kal_uint8 svID; /* [0..63] */
1372 kal_uint16 iod; /* 11 bits field */
1373 /* GNSS-ID to clock/orbit model ID (map to GNSS_NAV_CLOCK_MODEL_*_VALUE_* and GNSS_NAV_ORBIT_MODEL_*_VALUE_*)
1374 * gps : Model-2
1375 * sbas : Model-5
1376 * qzss : Model-2
1377 * galileo: Model-1
1378 * glonass: Model-4
1379 * bds : Model-6
1380 */
1381 kal_bool clockModelIDValid;
1382 kal_uint8 clockModelID; /* [1..8], optional, specify which clock model used */
1383 kal_bool orbitModelIDValid;
1384 kal_uint8 orbitModelID; /* [1..8]. optional, specify which orbit model used */
1385} gnss_sat_data_element_struct;
1386
1387
1388typedef struct
1389{
1390 kal_uint16 gnssWeekOrDay; /* [0..4095], indicate GNSS week number for non-GLONASS, otherwise indicate calendar number of data within four-year interval starting from 1st of January in a leap year */
1391 kal_uint8 gnssToe; /* [0.255], indicate GNSS time of ephemeris in hours of latest ephemeris for non-GLONASS, otherwise indicate the time of ephemeris in units of 15 minutes of the latest ephemeris */
1392 kal_uint8 tToeLimit; /* [0..15], indicate ephemeris age tolerance in units of hours for non-GLONASS, otherwise indicate ephemeris age tolerance in units of 30 minutes */
1393 kal_uint8 numSatDataElement;
1394 gnss_sat_data_element_struct satDataElement[GNSS_MAX_NAV_SAT_ELEMENT]; /* optional */
1395} gnss_stored_nav_list_struct;
1396
1397
1398typedef struct
1399{
1400 kal_uint8 svReqList[GNSS_MAX_NAV_SAT_ELEMENT_BIT_POS/8]; /* bit position represent SV-ID, total 64 bits */
1401 /* GNSS-ID to clock/orbit model ID (map to GNSS_NAV_CLOCK_MODEL_*_VALUE_* and GNSS_NAV_ORBIT_MODEL_*_VALUE_*)
1402 * gps : Model-2
1403 * sbas : Model-5
1404 * qzss : Model-2
1405 * galileo: Model-1
1406 * glonass: Model-4
1407 * bds : Model-6
1408 */
1409 kal_uint8 numClockModelIDPrefList;
1410 kal_uint8 clockModelIDPrefList[GNSS_MAX_NAV_CLOCK_MODEL_ELEMENT]; /* optional, list requested clock model in the order of preference */
1411 kal_uint8 numOrbitModelIDPrefList;
1412 kal_uint8 orbitModelIDPrefList[GNSS_MAX_NAV_ORBIT_MODEL_ELEMENT]; /* optional, list requested orbit model in the order of preference */
1413 kal_bool addNaparamReqValid;
1414 kal_bool addNavparamReq; /* dedicated for orbit model - nav-keplerian-set (gps) if need to include addNAVpara IE */
1415} gnss_requested_nav_list_struct;
1416
1417
1418typedef struct
1419{
1420 kal_bool isRequested; /* indicate if this type of data is requested */
1421 gnss_nav_model_req_type_enum type; /* storedNavList or reqNavList */
1422 /*
1423 * TBD: NAV request would be too complex for GNSS task/MNL to have this kind of detailed nav data.
1424 * evaluate if we could simplify it (always use requestd nav list according to GNSS method?)
1425 */
1426 union
1427 {
1428 gnss_stored_nav_list_struct storedNavList; /* this needs GNSS chip response current searched SAT info (in detailed) */
1429 gnss_requested_nav_list_struct reqNavList; /* this could simply fill corresponding IE according network specified GNSS method, but needs svID list */
1430 } data;
1431} gnss_request_nav_model_struct;
1432
1433
1434typedef struct
1435{
1436 kal_bool isRequested; /* indicate if this type of data is requested */
1437 kal_uint16 gnssTODReq; /* [0..3599], specify the reference time for the first data bit requestd in GNSS specific system time, modulo 1 hour, scale factor 1 second */
1438 kal_bool gnssTODFracReqValid;
1439 kal_uint16 gnssTODFracReq; /* [0..999], speficty the franctional part of GNSS-TOD-Req, scale factor 1 millisecond */
1440 kal_uint8 dataBitInterval; /* [0..15], value K, the time length for Data Bit Assist requested, r (second) = 0.1*2^K, K=0 means it is not specified */
1441 kal_uint8 gnssSignalTypes; /* requested GNSS Signal(s), map to GNSS_SGN_ID_BITMAP_* */
1442 kal_uint8 numReqSatList;
1443 kal_uint8 ReqSatList[GNSS_MAX_DBA_SAT_ELEMENT]; /* optional, list contains SV-IDs for Data Bit Assist requested */
1444} gnss_request_data_bit_assist_struct;
1445
1446
1447typedef struct
1448{
1449 kal_bool isRequested; /* indicate if this type of data is requested */
1450 kal_uint8 gnssSignalTypeReq; /* requested signal type, only specify one single signal, map to GNSS_SGN_ID_VALUE_* */
1451} gnss_request_acq_assist_struct;
1452
1453
1454typedef struct
1455{
1456 kal_bool isRequested; /* indicate if this type of data is requested */
1457 /* this could simply fill corresponding IE according network specified GNSS method */
1458 /*
1459 * GNSS-ID to almanac model ID (map to GNSS_ALMANAC_MODEL_*_VALUE_*)
1460 * gps : Model-2 (keplerian NAV almanac set)
1461 * sbas : Model-6 (ecef-SBAS almanac set)
1462 * qzss : Model-2 (keplerian NAV almanac set)
1463 * galileo: Model-1 (keplerian almanac set)
1464 * glonass: Model-5 (Glonass almanac set)
1465 * bds : Model-7 (BDS almanac set)
1466 */
1467 kal_bool modelIDValid;
1468 kal_uint8 modelID; /* [1..8], currently 1..7, map to GNSS_ALMANAC_MODEL_7_VALUE_* */
1469} gnss_request_almanac_struct;
1470
1471
1472typedef struct
1473{
1474 kal_bool isRequested; /* indicate if this type of data is requested */
1475 /* this could simply fill corresponding IE according network specified GNSS method */
1476 /*
1477 * GNSS-ID to UTC model ID (map to GNSS_UTC_MODEL_*_VALUE)
1478 * gps : Model-1
1479 * sbas : Model-4
1480 * qzss : Model-1
1481 * galileo: Model-1
1482 * glonass: Model-3
1483 * bds : Model-5
1484 */
1485 kal_bool modelIDValid;
1486 kal_uint8 modelID; /* [1..8], currently 1..5 map to GNSS_UTC_MODEL_*_VALUE */
1487} gnss_request_utc_model_struct;
1488
1489
1490typedef struct
1491{
1492 kal_bool isRequested; /* indicate if this type of data is requested */
1493 kal_uint8 gnssSignalsReq; /* requested GNSS Signal(s), map to GNSS_SGN_ID_BITMAP_* */
1494} gnss_request_dbds_correction_struct;
1495
1496
1497typedef struct
1498{
1499 gnss_id_enum gnssID;
1500 kal_bool sbasIDValid;
1501 sbas_id_enum sbasID;
1502
1503 gnss_request_time_model_struct gnssTimeModelsReq;
1504 gnss_request_diff_correction_struct gnssDCorrectionsReq;
1505 gnss_request_nav_model_struct gnssNavModelReq;
1506 kal_bool gnssRTIReq;
1507 gnss_request_data_bit_assist_struct gnssDataBitAssistReq;
1508 gnss_request_acq_assist_struct gnssAcqAssistReq;
1509 gnss_request_almanac_struct gnssAlmanacReq;
1510 gnss_request_utc_model_struct gnssUTCModelReq;
1511 kal_bool gnssAuxInfoReq;
1512 gnss_request_dbds_correction_struct gnssDBDSCorrectionsReq;
1513 kal_bool gnssBDSGridModelReq;
1514} gnss_request_generic_assist_data_struct;
1515
1516
1517typedef struct
1518{
1519 gnss_request_common_assist_data_struct gnssCommonAssistData;
1520 kal_uint8 numGnssGenericAssistData;
1521 gnss_request_generic_assist_data_struct gnssGenericAssistData[GNSS_MAX_REQ_ADD_GENERIC_ASSIST_DATA_ELEMENT];
1522} gnss_request_assist_data_struct;
1523
1524
1525typedef struct
1526{
1527 gnss_eutra_cell_id_struct cellID;
1528 kal_uint16 systemFrameNumber; /* 10 bits field, refer TS 36.331 */
1529} gnss_measured_ref_network_time_eutra_struct;
1530
1531
1532typedef struct
1533{
1534 gnss_utra_cell_id_struct cellID;
1535 kal_uint16 refSystemFrameNumber; /* [0..4095], refer TS 25.331 */
1536} gnss_measured_ref_network_time_utra_struct;
1537
1538
1539typedef struct
1540{
1541 gnss_gsm_cell_id_struct cellID;
1542 kal_uint16 referenceFN; /* [0..65535] */
1543 kal_bool referenceFNMSBValid;
1544 kal_uint8 referenceFNMSB; /* [0..63], FN (frame number) = referenceFNMSB*42432 + referenceFN */
1545 kal_bool deltaGNSSTODValid;
1546 kal_uint8 deltaGNSSTOD; /* [0..127], the difference in millisecond between gnssTODmsec and millisecond part of the SV time of first SV in the list reported from target device */
1547} gnss_measured_ref_network_time_gsm_struct;
1548
1549
1550typedef struct
1551{
1552 gnss_network_cell_type_enum type;
1553 union
1554 {
1555 gnss_measured_ref_network_time_eutra_struct eutra;
1556 gnss_measured_ref_network_time_utra_struct utra;
1557 gnss_measured_ref_network_time_gsm_struct gsm;
1558 } data;
1559} gnss_measured_ref_network_time_struct;
1560
1561
1562typedef struct
1563{
1564 kal_uint32 gpsTOW; /* [0..604799999], scale factor millisecond, only used for legacy GPS! (gnssTimeID == GPS) */
1565 kal_uint16 gnssDayNumber; /* [0..32767] */
1566 kal_uint32 gnssTODmsec; /* [0..3599999], scale factor 1 millisecond in a hour*/
1567 kal_bool gnssTODfracValid;
1568 kal_uint16 gnssTODfrac; /* [0..3999], scale factor 250 nanoseconds */
1569 kal_bool gnssTODuncValid;
1570 kal_uint8 gnssTODunc; /* [0..127], K = [0..127], uncertainty r (microseconds) = C*(((1+x)^K)-1), C=0.5, x=0.14 */
1571 gnss_id_enum gnssTimeID; /* specify GNSS type of GNSS system time (TOD+frac) provided */
1572
1573 /* contain networkTime only if fineTimeAssistanceMeasReq is TRUE */
1574 kal_bool networkTimeValid;
1575 gnss_measured_ref_network_time_struct networkTime;
1576} gnss_measured_ref_time;
1577
1578
1579/* we only support horizontal velocity */
1580typedef struct
1581{
1582 kal_uint16 bearing; /* [0..359], direction clockwise from North, scale factor 1 degrees */
1583 kal_uint16 horizontalSpeed; /* [0..2047], scale factor 1 kilometers/hour */
1584} gnss_h_velocity_struct;
1585
1586
1587typedef struct
1588{
1589 kal_bool signOfLatitude; /* TRUE: SOUTH, FALSE: NORTH */
1590 kal_uint32 degreesLatitude; /* [0..8388607], 23 bits field */
1591 kal_int32 degreesLongitude; /* [-8388608..8388607], 24 bits field */
1592 kal_bool signOfAltitude; /* TRUE: DEPTH, FALSE: HEIGHT */
1593 kal_uint16 altitude; /* [0..32767], 15 bits field */
1594 kal_uint8 uncertaintySemiMajor; /* K: [0..127], uncertainty r (meter) = C*((1+x)^K-1), C=10, x=0.1 */
1595 kal_uint8 uncertaintySemiMinor; /* K: [0..127], uncertaintyr (meter) = C*((1+x)^K-1), C=10, x=0.1 */
1596 kal_uint8 orientationMajorAxis; /* bearing angle degree: [0-179] */
1597 kal_uint8 uncertaintyAltitude; /* K: [0..127], uncertainty h (meter) = C*((1+x)^K-1), C=45, x=0.025 */
1598 kal_uint8 confidence; /* [0..100] */
1599 kal_bool velocityValid;
1600 gnss_h_velocity_struct velocityEstimate;
1601} gnss_gad_pos_estimate_struct;
1602
1603typedef struct
1604{
1605 kal_uint8 svID; /* [0..63] */
1606 kal_uint8 cNo; /* [0..63], carrier-to-noise ratio, scale factor 1dB-Hz */
1607 kal_uint8 multipath; /* multipath indicator, real data is two bits field represent multipath enum
1608 '0' = Not measured
1609 '1' = Low, MP error < 5m
1610 '2' = Medium, 5m < MP error < 43m
1611 '3' = High, MP error > 43m
1612 */
1613
1614 /* use validity flag and rearrange fields to reduce structure size */
1615 /**
1616 * GNSS_MEAS_INFO_CARRIER_QUALITY_VALIDITY 0x01
1617 * GNSS_MEAS_INFO_INT_CODE_PHASE_VALIDITY 0x02
1618 * GNSS_MEAS_INFO_DOPPLER_VALIDITY 0x04
1619 * GNSS_MEAS_INFO_ADR_VALIDITY 0x08
1620 */
1621 kal_uint8 validity;
1622
1623 kal_uint8 carrierQualityInd; /* [0..3], two bits field represent carrier phase data inverted/direct, and (not) continuous */
1624 kal_uint8 intCodePhase; /* [0..127], integer millisecond part of code phase modulo codePhaseAmbiguity, scale factor 1 milli-seconds in the range from 0 to 127 milliseconds */
1625
1626 /* to represent codephase RMS error value index, refer floating-point representation mapping table, LPP/RRC/RRLP should combine M & E to index value according to the table */
1627 kal_uint8 codePhaseRMSErrorM; /* codePhase(pseudorange) RMS Error Mantissa */
1628 kal_uint8 codePhaseRMSErrorE; /* codePhase(Pseudorange) RMS Error Exponent */
1629
1630 kal_int16 doppler; /* [-32768..32767], scale factor 0.04 meter/seconds */
1631
1632 kal_uint32 codePhase; /* [0..2097151], contain the whole and fractional value of the code phase, scale factor 2^(-21) milliseconds in the range from 0 to (1-2^(-21)) milliseconds */
1633
1634 kal_uint32 adr; /* [0 .. 33554431], accumulated delta range, scale factor 2^(-10) meters in the range for 0 to 32767.5 meters */
1635
1636 // For LPPE HA
1637 kal_uint8 haAdrRMSerror; /* [0..127], contain the RMS error of the continuous carrier phase, scale factor 2^-10 meters, in the range [0, 0.12403) meters */
1638 kal_bool haLockIndicator; /* TRUE if the carrier phase tracking has been continuous between the previous and the current measurement delivery; */
1639} gnss_measure_info_one_sat;
1640
1641
1642typedef struct
1643{
1644 kal_uint8 signalID; /* map to GNSS_SGN_ID_VALUE_* */
1645 kal_bool codePhaseAmbiguityValid;
1646 kal_uint8 codePhaseAmbiguity; /* [0..127], scale factor 1 milli-seconds */
1647 kal_uint8 numSatMeasElement;
1648 gnss_measure_info_one_sat satMeasElement[GNSS_MAX_MEASURED_SAT_PER_SGN_ELEMENT];
1649} gnss_measure_info_one_sgn;
1650
1651
1652typedef struct
1653{
1654 gnss_id_enum gnssID;
1655 kal_uint8 numSgnMeasElement;
1656 gnss_measure_info_one_sgn sgnMeasElement[GNSS_MAX_MEASURED_SGN_PER_GNSS_ELEMENT];
1657} gnss_measure_info_one_gnss;
1658
1659
1660typedef struct
1661{
1662 /**
1663 * Measurement information up to 16 GNSSs can be included.
1664 * Per GNSS, up to 8 GNSS signal measurements
1665 * Per GNSS signal measurement (band), up to 64 GNSS satellites
1666 */
1667 kal_uint8 numGnssMeasElements;
1668 gnss_measure_info_one_gnss gnssMeasElement[GNSS_MAX_MEASURED_GNSS_ELEMENT];
1669 gnss_measured_ref_time measuredRefTime; /* should always present */
1670 //gnss_ha_measured_result_struct haMeasResult;
1671} gnss_measured_result_struct;
1672
1673/* This structure for MSG_ID_LCSP_GNSS_ADDITIONAL_ASSIST_DATA_REQ */
1674/* This primitive is dedicated for LPP:
1675 * For LPP, if we request additional assistance data, the network will not resent
1676 * a new RequestLocationInformation followed by ProvideAssistanceData (two procedures are independent).
1677 *
1678 * Therefore, the response time will not reset and LPP will not send a new LCSP_GNSS_POS(MEAS)_REQ,
1679 * that's why we separate request additional assistance data by another message
1680 * rather than embeded in LCSP_GNSS_POS(MEAS)_CNF (as RRLP/ULCS design)
1681 */
1682typedef struct
1683{
1684 LOCAL_PARA_HDR
1685 kal_uint16 transactionID; /* transaction ID should align LCSP_GNSS_POS(MEAS)_REQ if present, for checking assistanceAvailability */
1686
1687 kal_uint16 gnssMethod; /* network allowed GNSS type in LCSP_GNSS_POS(MEAS)_REQ if present (or current GNSS chip operation mode), may be multiple GNSS, map to GNSS_ID_BITMAP_* */
1688 gnss_request_assist_data_struct assistDataReq;
1689 kal_bool lppeAssistDataValid;
1690} lcsp_gnss_additional_assist_data_req_struct;
1691
1692
1693/* start for gnss chip support */
1694typedef struct
1695{
1696 gnss_id_enum gnssID;
1697 kal_uint8 sgnIdBitmap;
1698} gnss_gnss_info_one_gnss;
1699
1700
1701typedef struct
1702{
1703 kal_bool adrFlag;
1704 kal_bool ftaFlag;
1705 kal_bool dgnssFlag;
1706 kal_uint8 gnssNumber;
1707 kal_uint16 gnssMethod; /* specify the estimated location is supported by GNSS chip, map to GNSS_ID_BITMAP_* */
1708 gnss_gnss_info_one_gnss gnssInfo[GNSS_MAX_SUPPORT_NUM];
1709 kal_bool lppeFlag;
1710} gnss_capability_report_struct;
1711
1712
1713/* This structure for MSG_ID_ERRC_LBS_GNSS_POS_REQ */
1714typedef struct
1715{
1716 LOCAL_PARA_HDR
1717 kal_bool positioning_status; /*KAL_TRUE:activate, KAL_FALSE:deactivate} for START/STOP MDT positioning */
1718 errc_lbs_gnss_pos_mdt_type_enum positioning_mdt_type; /* start/stop MDT positioning with logged MDT or immediate MDT */
1719}errc_lbs_gnss_pos_req_struct;
1720
1721/* This structure for MSG_ID_ERRC_LBS_GNSS_POS_IND */
1722typedef struct
1723{
1724 LOCAL_PARA_HDR
1725 kal_uint16 gnssMethod; /*GNSS Satellite system calculated for this positioning information, gnssMethod = 0x00 if the position info not available*/
1726 gnss_gad_pos_estimate_struct locationEstimate; /*Position information ellipsoidPointWithAltitudeAndUncertaintyEllipsoid*/
1727 gnss_measured_ref_time measuredRefTime; /* Timing information for gnss- TOD-msec-r10, The TOD is also available*/
1728 kal_uint32 measuredTimeDiff; /* Time difference between LBS getting the positioning result and reporting to ERRC*/
1729} errc_lbs_gnss_pos_ind_struct;
1730
1731
1732typedef struct {
1733 kal_bool is_cdma_eutra_sync; /*FDD mode TRUE : sync sys time recommended, FALSE : assync time recommended.*/
1734 time_sib_cdma_sys_time_type_enum cdma_sys_time_type; /*Used for sync/async_sys_time choice*/
1735 union
1736 {
1737 kal_uint8 sync_sys_time[5]; /*bit string : 39 bits*/
1738 kal_uint8 async_sys_time[7]; /*bit string : 49 bits*/
1739 }
1740 choice;
1741} time_sib_cdma_sys_time_info_struct;
1742
1743
1744typedef struct
1745{
1746 LOCAL_PARA_HDR
1747 kal_uint8 CtrlFlag; /*0: Disable (stop pulse), 1: Enable (Start in periodic mode), 2: Test Mode Enable (Start in one shot mode)*/
1748 kal_uint32 PulsePeriod; /* unit : msec, Range: 100 ~ 300000, The period of pulse. (100 ms ~ 5 min), effective when CtrlFlag = 1 */
1749 kal_uint16 PulseNumber; /*number : 0~7200, 0: Periodic Mode, 1~7200: Non-Periodic Number of Pulse, effective when CtrlFlag = 1*/
1750} lbs_errc_read_time_sib_req_struct;
1751
1752
1753typedef struct
1754{
1755 LOCAL_PARA_HDR
1756 time_sib_result_enum result;
1757 /*SIB8*/
1758 kal_bool is_sib8_valid;
1759 time_sib_cdma_sys_time_info_struct sys_time_info;
1760 kal_uint64 sib8_time_diff;
1761 /*SIB16*/
1762 kal_bool is_sib16_valid;
1763 kal_uint64 timeinfo_utc;
1764 kal_uint8 dayLightSavingTime[2];
1765 kal_bool is_leap_seconds_valid;
1766 kal_int16 leap_seconds;
1767 kal_int16 localTimeOffset;
1768 kal_uint64 sib16_time_diff;
1769} lbs_errc_read_time_sib_ind_struct;
1770
1771
1772/* ---LPPe HA GNSS Interface---begin--- */
1773typedef struct
1774{
1775 kal_uint8 cep; /* [0..255] */
1776 kal_uint8 confidenceHorizontal; /* [0..99] */
1777 kal_uint8 confidenceVertical; /* [0..99] */
1778} gnss_ha_3Dposition_struct;
1779
1780
1781typedef struct
1782{
1783 kal_uint16 eastComponent; /* [0..511] */
1784 kal_uint16 northComponent; /* [0..511] */
1785 kal_uint16 upComponent; /* [0..511] */
1786 kal_uint8 cepV; /* [0..255] */
1787 kal_uint8 uncertaintySemiMajor; /* [0..255] */
1788 kal_uint8 uncertaintySemiMinor; /* [0..255] */
1789 kal_uint8 offsetAngle; /* [0..179] */
1790 kal_uint8 confidenceHorizontal; /* [0..99] */
1791 kal_uint8 uncertaintyUpComponent; /* [0..255] */
1792 kal_uint8 confidenceUp; /* [0..99] */
1793} gnss_ha_3Dvelocity_struct;
1794
1795
1796typedef struct
1797{
1798 gnss_ha_3Dposition_struct ThreeDposition;
1799 gnss_ha_3Dvelocity_struct ThreeDvelocity;
1800} gnss_ha_pos_estimate_struct;
1801
1802
1803typedef struct
1804{
1805 gnss_system_time_struct beginTime; /* specify the start time of the validity period */
1806 kal_bool beginTimeAltValid;
1807 kal_uint16 beginTimeAlt; /* [0..2881], specify the alternative start time, and the start time is relative the time the message was received, scale factor 15 min (range from 0 minutes to 43215 min = 30 days) */
1808 kal_uint16 duration; /* [0..2881], specify the duration of the validity period after the beginTime, scale factor 15 min (range from 0 minutes to 43215 min = 30 days) */
1809} gnss_ha_validity_period_struct;
1810
1811#if 0
1812/* under construction !*/
1813/* under construction !*/
1814/* under construction !*/
1815/* under construction !*/
1816/* under construction !*/
1817#endif
1818
1819typedef struct
1820{
1821 kal_uint8 regionSizeInv; /* [1..255], specify the inverse of the size of each side of the region in degrees, for value N the size is 10/N degrees */
1822 kal_bool areaWidthValid;
1823 kal_uint16 areaWidth; /* [2..9180], specify the number of regions in the area in East-West direction, if the field is not present, the value is 1 */
1824 kal_uint16 codedLatOfNWCorner; /* [0..4589], specify the latitude of the North-West corner of the area, encoded as explained in OMA-TS-LPPe Appendix C.1 */
1825 kal_uint16 codedLonOfNWCorner; /* [0..9179], specify the longitude of the North-West corner of the area, encoded as explained in OMA-TS-LPPe Appendix C.1 */
1826
1827 kal_bool rleListValid;
1828 //gnss_ha_rlelist_struct rleList; /* TBD: redefine internal structure? */ /* This field lists the regions in which the data is valid. If the field is not present, the data is valid in all the regions in the area */
1829} gnss_ha_validity_area_struct;
1830
1831
1832typedef struct
1833{
1834 kal_uint8 regionSizeInv; /* specify the inverse of the size of each side of the region in degrees, for value N the size is 10/N degrees */
1835 kal_bool areaWidthValid;
1836 kal_uint16 areaWidth; /* specify the number of regions in the area in East-West direction, if the field is not present, the value is 1 */
1837 kal_uint16 codedLatOfNWCorner; /* specify the latitude of the North-West corner of the area, encoded as explained in OMA-TS-LPPe Appendix C.1 */
1838 kal_uint16 codedLonOfNWCorner; /* specify the longitude of the North-West corner of the area, encoded as explained in OMA-TS-LPPe Appendix C.1 */
1839} gnss_ha_storm_validity_area_struct; /* only used in gnss_ha_iono_storm_ind_struct */
1840
1841
1842typedef struct
1843{
1844 kal_uint8 duration; /* [1..63], scale factor 15 min, range [15, 945 min], i.e. upto 16 hours */
1845 kal_bool durationLSBValid;
1846 kal_uint8 durationLSB; /* [1..89], finer granularity duration, scale factor is 10 seconds, range [10, 890] seconds */
1847} gnss_ha_duration;
1848
1849
1850typedef struct
1851{
1852 kal_uint8 validityBitmap; /* bhValid, chValid, awValid, bwValid, cwValid, use GNSS_HA_MAPPING_FUNC_PARAMS_BIT_*_VALID */
1853 kal_uint16 ah; /* [0..16383], the a-coefficient of the hydrostatic mapping function, scale factor 2^-14 */
1854 /* optional */
1855 kal_uint16 bh; /* [0..16383], the b-coefficient of the hydrostatic mapping function, scale factor 2^-14 */
1856 /* optional */
1857 kal_uint16 ch; /* [0..16383], the c-coefficient of the hydrostatic mapping function, scale factor 2^-14 */
1858 /* optional */
1859 kal_uint16 aw; /* [0..16383], the a-coefficient of the wet mapping function, scale factor 2^-14 */
1860 /* optional */
1861 kal_uint16 bw; /* [0..16383], the b-coefficient of the wet mapping function, scale factor 2^-14 */
1862 /* optional */
1863 kal_uint16 cw; /* [0..16383], the c-coefficient of the wet mapping function, scale factor 2^-14 */
1864} gnss_ha_mapping_func_params_struct;
1865
1866
1867typedef struct
1868{
1869 kal_int32 latitude; /* [-2147483648..2147483647], latitude based on WGS84 [GPS-ICD-200D] datum, the relation between the latitude X in range [-90', 90'],
1870 and the coded number N is N = floor((X/90')*2^31), where value N=2^31 is coded as N=2^31-1, resolution 4.7 mm */
1871 kal_int32 longitude; /* [-2147483648..2147483647], longitude based on WGS84 [GPS-ICD-200D] datum, the relation between the longitude X in range [-180', 180'),
1872 and the coded number N is floor((X/180')*2^31), worst-case resolution (at the Equator) 9.3 mm */
1873 kal_bool cepValid;
1874 kal_uint8 cep; /* [0..255], horizontal uncertainty expressed as Circular Error Probable expressed as the coded number N,
1875 the relation between the CEP and the coded number is given by CEP = 0.3*((1+0.02)^N - 1) meters, range [0, 45.6) meters */
1876 kal_bool uncSemiMajorValid;
1877 kal_uint8 uncSemiMajor; /* [0..255], the semi-major axis of the horizontal uncertainty ellipse expressed as the coded number N,
1878 the relation between the semi-major axis and the coded number is given by semi-major axis = 0.3*( (1+0.02)^N -1) meters, range [0, 45.6) meters */
1879 kal_bool uncSemiMinorValid;
1880 kal_uint8 uncSemiMinor; /* [0..255], the semi-minor axis of the horizontal uncertainty ellipse expressed as the coded number N,
1881 the relation between the semi-minor axis and the coded number is given by semi-minor axis = 0.3*((1+0.02)^N -1) meters, range [0, 45.6) meters */
1882 kal_bool offsetAngleValid;
1883 kal_uint8 offsetAngle; /* [0..179], the angle of semi-major axis measured clockwise with respect to True North in steps of 1 degree */
1884
1885 kal_bool confHorizontalValid;
1886 kal_uint8 confHorizontal; /* [0..99], specify the horizontal confidence percentage associated with the CEP or Uncertainty Ellipse depending upon which is included */
1887 kal_int32 altitude; /* [-64000..1280000], altitude with respect to WGS84 [GPS-ICD-200D] ellipsoid, scale factor 2^(-7) meters, range [-500, 10000] meters */
1888 kal_uint8 uncAltitude; /* [0..255], the altitude uncertainty expressed as the coded number N, the relation between the altitude uncertainty and
1889 the coded number is given by uncertainty= 0.3*((1+0.02)^N -1) meters, range [0, 45.6) meters */
1890 kal_bool confVerticalValid;
1891 kal_uint8 confVertical; /* [0..99], specify the confidence percentage associated with the altitude uncertainty */
1892} gnss_ha_high_accu_3d_position_struct;
1893
1894#if 0
1895/* under construction !*/
1896/* under construction !*/
1897/* under construction !*/
1898/* under construction !*/
1899/* under construction !*/
1900/* under construction !*/
1901/* under construction !*/
1902/* under construction !*/
1903/* under construction !*/
1904/* under construction !*/
1905/* under construction !*/
1906/* under construction !*/
1907/* under construction !*/
1908/* under construction !*/
1909/* under construction !*/
1910/* under construction !*/
1911/* under construction !*/
1912/* under construction !*/
1913/* under construction !*/
1914/* under construction !*/
1915/* under construction !*/
1916/* under construction !*/
1917/* under construction !*/
1918/* under construction !*/
1919/* under construction !*/
1920/* under construction !*/
1921/* under construction !*/
1922/* under construction !*/
1923/* under construction !*/
1924/* under construction !*/
1925/* under construction !*/
1926/* under construction !*/
1927/* under construction !*/
1928/* under construction !*/
1929/* under construction !*/
1930/* under construction !*/
1931/* under construction !*/
1932/* under construction !*/
1933/* under construction !*/
1934/* under construction !*/
1935/* under construction !*/
1936/* under construction !*/
1937/* under construction !*/
1938/* under construction !*/
1939/* under construction !*/
1940#endif
1941
1942/* begin of gnss_ha_ionospheric_model */
1943typedef struct
1944{
1945 gnss_ha_validity_period_struct validityPeriod; /* specify the start time and duration of the model validity period */
1946 kal_int8 alfa0; /* [-128..127], specify the alpha0 parameter of the Klobuchar model, scale factor 2^(-30) seconds */
1947 kal_int8 alfa1; /* [-128..127], specify the alpha1 parameter of the Klobuchar model, scale factor 2^(-27) seconds/semi-circle */
1948 kal_int8 alfa2; /* [-128..127], specify the alpha2 parameter of the Klobuchar model, scale factor 2^(-24) seconds/semi-circle^2 */
1949 kal_int8 alfa3; /* [-128..127], specify the alpha3 parameter of the Klobuchar model, scale factor 2^(-24) seconds/semi-circle^3 */
1950 kal_int8 beta0; /* [-128..127], specify the beta0 parameter of the Klobuchar model, scale factor 2^11 seconds */
1951 kal_int8 beta1; /* [-128..127], specify the beta1 parameter of the Klobuchar model, scale factor 2^14 seconds/semi-circle */
1952 kal_int8 beta2; /* [-128..127], specify the beta2 parameter of the Klobuchar model, scale factor 2^16 seconds/semi-circle^2 */
1953 kal_int8 beta3; /* [-128..127], specify the beta3 parameter of the Klobuchar model, scale factor 2^16 seconds/semi-circle^3 */
1954} gnss_ha_local_klobuchar_model_struct;
1955
1956
1957typedef struct
1958{
1959 gnss_ha_validity_area_struct validityArea;
1960 kal_uint8 numKlobucharModel;
1961 gnss_ha_local_klobuchar_model_struct klobucharModel[GNSS_HA_MAX_LOCAL_KLOBUCHAR_MODEL]; /* local klobuchar model per validity period */
1962} gnss_ha_local_klobuchar_model_element_struct;
1963
1964
1965typedef struct
1966{
1967 kal_uint8 numKlobucharElement;
1968 gnss_ha_local_klobuchar_model_element_struct klobucharElement[GNSS_HA_MAX_LOCAL_KLOBUCHAR_MODEL_ELEMENT]; /* local klobuchar model per validity area */
1969} gnss_ha_local_klobuchar_model_list_struct;
1970
1971#if 0
1972/* under construction !*/
1973/* under construction !*/
1974/* under construction !*/
1975/* under construction !*/
1976/* under construction !*/
1977/* under construction !*/
1978/* under construction !*/
1979/* under construction !*/
1980/* under construction !*/
1981/* under construction !*/
1982/* under construction !*/
1983/* under construction !*/
1984/* under construction !*/
1985/* under construction !*/
1986/* under construction !*/
1987/* under construction !*/
1988/* under construction !*/
1989/* under construction !*/
1990/* under construction !*/
1991/* under construction !*/
1992/* under construction !*/
1993/* under construction !*/
1994/* under construction !*/
1995/* under construction !*/
1996/* under construction !*/
1997#endif
1998
1999typedef struct
2000{
2001 gnss_ha_validity_period_struct validityPeriod;
2002 //gnss_ha_rle_iono_list_struct rleListIono;
2003} gnss_ha_storm_element_struct;
2004
2005
2006typedef struct
2007{
2008 kal_uint8 numStormElement;
2009 gnss_ha_storm_element_struct stormElement[GNSS_HA_MAX_STORM_ELEMENT];
2010} gnss_ha_storm_list_struct;
2011
2012
2013typedef struct
2014{
2015 gnss_ha_storm_validity_area_struct area; /* rlelist is not not included or ignored in IonoStormIndication */
2016 gnss_ha_storm_list_struct stormList; /* provide information on the ionospheric activity in the area defined by area */
2017} gnss_ha_iono_storm_ind_struct;
2018
2019
2020typedef struct
2021{
2022 kal_bool localKlobucharListValid;
2023 gnss_ha_local_klobuchar_model_list_struct localKlobucharList; /* localized Klobuchar model */
2024
2025 kal_bool ionoStormIndValid;
2026 gnss_ha_iono_storm_ind_struct ionoStormInd; /* information on the ionosphere conditions in the area */
2027} gnss_ha_ionospheric_static_model_struct;
2028
2029#if 0
2030/* under construction !*/
2031/* under construction !*/
2032/* under construction !*/
2033/* under construction !*/
2034/* under construction !*/
2035/* under construction !*/
2036#endif
2037
2038typedef struct
2039{
2040 kal_bool durationValid;
2041 gnss_ha_duration duration; /* specify the length of the continuous periodic assistance session */
2042
2043 kal_bool rateValid;
2044 kal_uint8 rate; /* [1..64], specify the length of the continuous periodic assistance session */
2045
2046 kal_bool refPositionValid;
2047 //gnss_ha_ellipsoid_point_struct referencePosition; /* TBD: redefine internal structure? */
2048
2049 kal_bool validityAreaValid;
2050 gnss_ha_validity_area_struct validityArea;
2051} gnss_ha_wa_iono_control_param_struct;
2052
2053
2054typedef struct
2055{
2056 gnss_ha_validity_period_struct validityPeriod; /* define the validity period of the widea area ionosphere correction */
2057} gnss_ha_wa_iono_common_param_struct;
2058
2059
2060typedef struct
2061{
2062 kal_bool controlParamsValid;
2063 gnss_ha_wa_iono_control_param_struct controlParams; /* carry the control parameters of the periodic Wide Area ionosphere surface corrections */
2064 kal_bool commonParamsValid;
2065 gnss_ha_wa_iono_common_param_struct commonParams; /* carry the common parameters of the periodic Wide Area ionosphere surface corrections */
2066} gnss_ha_ionospheric_periodic_model_struct;
2067
2068
2069typedef struct
2070{
2071 LOCAL_PARA_HDR
2072 kal_uint8 padding[4];
2073 kal_uint16 transactionID;
2074
2075 gnss_ha_iono_model_type_enum type;
2076 union
2077 {
2078 gnss_ha_ionospheric_static_model_struct staticModel;
2079 gnss_ha_ionospheric_periodic_model_struct periodicWAIono; /* based on the real-time GNSS observations and thus updated frequently to the target */
2080 } data;
2081} lcsp_gnss_ha_common_ionospheric_model_req_struct;
2082/* end of gnss_ha_ionospheric_model */
2083
2084
2085/* begin of gnss_ha_troposphere_model */
2086typedef struct
2087{
2088 gnss_ha_validity_period_struct validityPeriod; /* specify the start time and duration of the local troposphere parameters validity period */
2089 kal_uint16 zh0; /* [0..4095], the hydrostatic zenith delay (meters), measured at the reference altitude level, scale factor 2^(-10) m */
2090
2091 kal_uint8 validityBitmap; /* ehValid, zw0Valid, ewValid, gNValid, gEValid, use GNSS_HA_LOCAL_TROPO_DELAY_TIME_ELEMENT_BIT_*_VALID */
2092 /* optional */
2093 kal_uint16 eh; /* [0..4095], the exponential fit parameter (1/m) for scaling zh0 to the target altitude, scale factor 2^(-20) (1/m) */
2094 /* optional */
2095 kal_uint16 zw0; /* [0..4095], the wet zenith delay (meters), measured at the reference altitude level, scale factor 2^(-10) m */
2096 /* optional */
2097 kal_uint16 ew; /* [0..4095], the exponential fit parameter (1/m) for scaling zw0 to the target altitude, scale factor 2^(-20) (1/m) */
2098 /* optional */
2099 kal_int16 gN; /* [-8192..8191], the gradient parameter (m) in North direction of the azimuthally asymmetric part of the tropospheric slant delay, scale factor 2^(-7) m */
2100 /* optioanl */
2101 kal_int16 gE; /* [-8192..8191], the gradient parameter (m) in East direction of the azimuthally asymmetric part of the tropospheric slant delay, scale factor 2^(-7) m */
2102
2103 gnss_ha_mapping_func_params_struct mappingFuncParams; /* coefficients of the mapping functions */
2104} gnss_ha_local_tropo_delay_time_element_struct;
2105
2106
2107typedef struct
2108{
2109 kal_uint8 numDelayTimeElement;
2110 gnss_ha_local_tropo_delay_time_element_struct delayTimeElement[GNSS_HA_MAX_LOCAL_TROPO_DELAY_TIME_ELEMENT];
2111} gnss_ha_local_tropo_delay_time_list_struct;
2112
2113
2114typedef struct
2115{
2116 gnss_ha_validity_area_struct validityArea; /* specify the geographical validity area of the local troposphere model parameters */
2117
2118 kal_bool refAltitudeValid;
2119 kal_int16 refAltitude; /* [-1000..8192], specify the reference altitude (from nominal sea level, EGM96) at which the delay measurements are made, scale factor 1m, if absent, the reference altitude is the zero nominal sea level */
2120
2121 kal_bool graRefPositionValid;
2122 //gnss_ha_ellipsoid_point_struct graRefPosition; /* TBD: redefine internal structure? */ /* specify the origion for the spatial gradients gN and gE, if absent, the origin is taken as the middle point of the validity area */
2123
2124 gnss_ha_local_tropo_delay_time_list_struct delayList; /* specify the troposphere delays */
2125} gnss_ha_local_tropo_delay_area_element_struct;
2126
2127
2128typedef struct
2129{
2130 kal_uint8 numDelayAreaElement;
2131 gnss_ha_local_tropo_delay_area_element_struct delayAreaElement[GNSS_HA_MAX_LOCAL_TROPO_DELAY_AREA_ELEMENT];
2132} gnss_ha_troposphere_delay_list_struct;
2133
2134
2135typedef struct
2136{
2137 gnss_ha_validity_period_struct validityPeriod; /* specify the start time and duration of the surface parameter validity period */
2138
2139 kal_int16 pressure; /* [-1024..1023], local atmospheric pressure measurement (hPa) at the altitude given by refAltitude, scale factor 0.1 hPa, the value is added to the nominal pressure of 1013hPa */
2140 kal_int8 pressureRate; /* [-128..127], rate of change of pressure, when calculating the pressure, the origin of time is the begin time of the validity period, scale factor 10 Pa/hour */
2141
2142 kal_uint8 validityBitmap; /* gNpressureValid, gEpressureValid, temperatureValid, temperatureRateValid, gNtemperatureValid, gEtemperatureValid, use GNSS_HA_LOCAL_SURF_PARAMS_TIME_ELEMENT_BIT_* */
2143 /* optional */
2144 kal_int8 gNpressure; /* [-128..127], specify the northward gradient of the atmospheric pressure, if this field is present, but gE is not given, the eastward gradient is zero, scale factor 10 Pa/km */
2145 /* optional */
2146 kal_int8 gEpressure; /* [-128..127], specify the eastward gradient of the atmospheric pressure, if this field is present, but gN is not given, the nothward gradient is zero, scale factor 10 Pa/km */
2147 /* optional */
2148 kal_int8 temperature; /* [-64..63], local temperature measurement at the reference altitude refAltitude, scale factor 1K, the value is added to 273K */
2149 /* optional */
2150 kal_int8 temperatureRate; /* [-16..16], local temperature change rate, the scale factor 1K/hour */
2151 /* optional */
2152 kal_int8 gNtemperature; /* [-8..7], specify the northward gradient of the temperature, if this field is present, but gE is not given, the eastward gradient is zero, scale factor 1 K/km */
2153 /* optional*/
2154 kal_int8 gEtemperature; /* [-8..7], specify the eastward gradient of the temperature, if this field is present, but gN is not given, the nothward gradient is zero, scale factor 1 K/km */
2155
2156 gnss_ha_mapping_func_params_struct mappingFuncParams; /* coefficients of the mapping functions */
2157} gnss_ha_local_surface_params_time_element_struct;
2158
2159
2160typedef struct
2161{
2162 kal_uint8 numParamsTimeElements;
2163 gnss_ha_local_surface_params_time_element_struct paramsTimeElement[GNSS_HA_MAX_LOCAL_SURFACE_PARAMS_TIME_ELEMENT];
2164} gnss_ha_local_surface_params_struct;
2165
2166
2167typedef struct
2168{
2169 gnss_ha_validity_area_struct validityArea; /* specify the geographical validity area of the local troposphere model parameters */
2170
2171 kal_bool refAltitudeValid;
2172 kal_int16 refAltitude; /* [-1000..8192], specify the reference altitude (from nominal sea level, EGM96) at which the surface measurements are made, scale factor 1m, if absent, the reference altitude is the zero nominal sea level EGM96 */
2173
2174 kal_bool graRefPositionValid;
2175 //gnss_ha_ellipsoid_point_struct graRefPosition; /* specify the origion for the spatial gradients gN and gE, if absent, the origin is taken as the middle point of the validity area */
2176 gnss_ha_local_surface_params_struct paramsList; /* specify the surface parameters */
2177} gnss_ha_local_surface_params_element_struct;
2178
2179
2180typedef struct
2181{
2182 kal_uint8 numParamsElements;
2183 gnss_ha_local_surface_params_element_struct paramsElement[GNSS_HA_MAX_LOCAL_SURFACE_PARAMS_ELEMENT];
2184} gnss_ha_local_surface_params_list_struct;
2185
2186
2187typedef struct
2188{
2189 LOCAL_PARA_HDR
2190 kal_uint8 padding[4];
2191 kal_uint16 transactionID;
2192
2193 kal_bool tropoDelayListValid;
2194 gnss_ha_troposphere_delay_list_struct tropoDelayList; /* provide the zenith troposphere delay components determined in a given location and the needed parameters to adjust the delay to the target's altitude */
2195 kal_bool surfaceParamListValid;
2196 gnss_ha_local_surface_params_list_struct surfaceParametersList; /* provide the surface pressure and optionally temperature that allow the target to compute the tropospheric delay using one of the known atmosphere models, such as the Hopfield or Saastamoinen model */
2197} lcsp_gnss_ha_common_troposphere_model_req_struct;
2198/* end of gnss_ha_troposphere_model */
2199
2200
2201/* begin of gnss_ha_altitude_assist */
2202typedef struct
2203{
2204 gnss_ha_validity_period_struct validityPeriod; /* specify the start time and duration of the altitude assistance validity period */
2205
2206 kal_int16 pressure; /* [-1024..1023], local atmospheric pressure measurement (hPa) at the altitude given by refAltitude, scale factor 10 Pa, the value is added to the nominal pressure of 1013hPa */
2207 kal_bool pressureRateValid;
2208 kal_int8 pressureRate; /* [-128..127], rate of change of pressure, when calculating the pressure, the origin of time is the begin time of the validity period, scale factor 10 Pa/hour */
2209
2210 kal_bool gNValid;
2211 kal_int8 gN; /* [-128..127], specify the northward gradient of the atmospheric pressure, scale factor 10 Pa/km */
2212 kal_bool gEValid;
2213 kal_int8 gE; /* [-128..127], specify the eastward gradient of the atmospheric pressure, scale factor 10 Pa/km */
2214} gnss_ha_pressure_assist_element_struct;
2215
2216
2217typedef struct
2218{
2219 kal_uint8 numPressureElements;
2220 gnss_ha_pressure_assist_element_struct pressureElement[GNSS_HA_MAX_PRESSURE_ASSIST_ELEMENT];
2221} gnss_ha_pressure_assist_list_struct;
2222
2223
2224typedef struct
2225{
2226 gnss_ha_validity_area_struct validityArea; /* specify the geographical validity area of the altitude assistance */
2227
2228 kal_bool gradRefPositionValid;
2229 gnss_reference_location_struct gradRefPosition; /* specify the origin for the spatial gradients gN and gE, if absent, the origin is taken as the middle point of the validity area */
2230
2231 kal_bool refAltitudeValid;
2232 kal_int16 refAltitude; /* specify the reference altitude (from nominal sea level, [EGM96]) at which the surface measurements are made, scale factor 1m, if absent, the reference altitude is the zero nominal sea level */
2233
2234 gnss_ha_pressure_assist_list_struct pressureAssistanceList; /* specify the set of pressure assistance elements for different periods of time */
2235} gnss_ha_altitude_assist_area_element_struct;
2236
2237
2238typedef struct
2239{
2240 LOCAL_PARA_HDR
2241 kal_uint8 padding[4];
2242 kal_uint16 transactionID;
2243
2244 kal_uint8 numAltitudeAreaElement;
2245 gnss_ha_altitude_assist_area_element_struct altitudeAreaElement[GNSS_HA_MAX_ALTITUDE_ASSIST_AREA_ELEMENT];
2246} lcsp_gnss_ha_common_altitude_assist_req_struct;
2247/* end of gnss_ha_altitude_assist */
2248
2249
2250/* begin of gnss_ha_altitude_assist */
2251typedef struct
2252{
2253 LOCAL_PARA_HDR
2254 kal_uint8 padding[4];
2255 kal_uint16 transactionID;
2256
2257 kal_uint16 solarRad; /* specifies the solar radiation at one AU from the Sun, scale factor 1 Wm^(-2) */
2258} lcsp_gnss_ha_common_solar_radiation_req_struct;
2259/* end of gnss_ha_altitude_assist */
2260
2261
2262/* begin of gnss_ha_ccp_assist_common */
2263typedef struct
2264{
2265 gnss_id_enum gnssID; /* specify the GNSS type */
2266 kal_uint8 gnssSignals; /* specify the GNSS signal types for which CCP assistance can be provided in the area, GNSS Signal(s), map to GNSS_SGN_ID_BITMAP_* */
2267} gnss_ha_ccp_signal_supp_element_struct;
2268
2269
2270typedef struct
2271{
2272 kal_uint8 numSigSuppElement;
2273 gnss_ha_ccp_signal_supp_element_struct sigSuppElement[GNSS_HA_MAX_CCP_SIGNAL_SUPP_ELEMENT];
2274} gnss_ha_ccp_signal_supp_struct;
2275
2276
2277typedef struct
2278{
2279 gnss_ha_validity_area_struct areaDescr; /* provide the description of the area */
2280 gnss_ha_ccp_signal_supp_struct sigSupp; /* provide the GNSS signal support information */
2281} gnss_ha_ccp_support_area_struct;
2282
2283#if 0
2284/* under construction !*/
2285/* under construction !*/
2286/* under construction !*/
2287/* under construction !*/
2288/* under construction !*/
2289/* under construction !*/
2290/* under construction !*/
2291/* under construction !*/
2292/* under construction !*/
2293/* under construction !*/
2294/* under construction !*/
2295/* under construction !*/
2296/* under construction !*/
2297/* under construction !*/
2298/* under construction !*/
2299/* under construction !*/
2300/* under construction !*/
2301/* under construction !*/
2302/* under construction !*/
2303/* under construction !*/
2304#endif
2305
2306
2307typedef struct
2308{
2309 kal_uint16 refStationID; /* define the ID of the reference station */
2310 gnss_ha_high_accu_3d_position_struct refStationLoc; /* define the location of the reference station, of which ID is refStationID */
2311 kal_bool antennaDescrValid;
2312 //gnss_ha_antenna_struct antennaDescr; /* TBD: redefine internal structure? */ /* specify the antenna type used at the reference station */
2313} gnss_ha_ccp_pref_station_list_element_struct;
2314
2315
2316typedef struct
2317{
2318
2319 kal_uint8 numPrefStationElement;
2320 gnss_ha_ccp_pref_station_list_element_struct prefStationElement[GNSS_HA_MAX_CCP_PREF_STATION_LIST_ELEMENT];
2321} gnss_ha_ccp_pref_station_list_struct;
2322
2323
2324typedef struct
2325{
2326 kal_bool supportAreaValid;
2327 gnss_ha_ccp_support_area_struct supportArea; /* provide information on the area, in which CCP is supported */
2328
2329 kal_bool nbrListValid;
2330 gnss_ha_ccp_pref_station_list_struct nbrList; /* provide information on the possible neighbour reference stations */
2331
2332 kal_bool durationValid;
2333 gnss_ha_duration duration; /* specify the length of the continuous periodic assistance session */
2334
2335 kal_bool rateValid;
2336 kal_uint8 rate; /* [1..64], specify the interval between the assistance data deliveries in seconds */
2337
2338 kal_bool refStationListValid;
2339 gnss_ha_ccp_pref_station_list_struct refStationList; /* provide the locations of the reference stations for which CCP assistance is being provided */
2340} gnss_ha_ccp_assist_common_ctrl_params_struct;
2341
2342
2343typedef struct
2344{
2345 LOCAL_PARA_HDR
2346 kal_uint8 padding[4];
2347 kal_uint16 transactionID;
2348 gnss_ha_ccp_assist_common_type_enum type;
2349 union
2350 {
2351 gnss_system_time_struct commParamsRefSysTime; /* define the CCP-specific common parameters (reference time) */
2352 gnss_ha_ccp_assist_common_ctrl_params_struct ctrlParams; /* define the CCP-specific control parameters */
2353 } data;
2354} lcsp_gnss_ha_common_ccp_assist_req_struct;
2355/* end of gnss_ha_ccp_assist_common */
2356
2357#if 0
2358/* under construction !*/
2359/* under construction !*/
2360/* under construction !*/
2361/* under construction !*/
2362/* under construction !*/
2363/* under construction !*/
2364/* under construction !*/
2365/* under construction !*/
2366/* under construction !*/
2367/* under construction !*/
2368/* under construction !*/
2369/* under construction !*/
2370/* under construction !*/
2371/* under construction !*/
2372#endif
2373
2374/* begin of gnss_ha_req_ionospheric_model */
2375typedef struct
2376{
2377 kal_uint8 ionoReq; /* specify which ionosphere models are being requested for, mapping to GNSS_HA_COMM_AD_REQ_IONO_BIT_* */
2378
2379 kal_bool reqBeginTimeValid;
2380 gnss_system_time_struct reqBeginTime; /* specify the first time instant when an ionosphere model is needed, if absent, begin time is the current time */
2381
2382 gnss_ha_duration duration; /* specify for how long period the ionospheric model is requested */
2383} gnss_ha_req_ionospheric_static_model_struct;
2384
2385
2386typedef struct
2387{
2388 kal_bool durationValid;
2389 gnss_ha_duration duration; /* specify the length of the continuous periodic assistance session */
2390
2391 kal_bool rateValid;
2392 kal_uint8 rate; /* [0..64], specify the interval between the assistance data deliveries in seconds */
2393} gnss_ha_req_ionospheric_periodic_model_struct;
2394
2395
2396typedef struct
2397{
2398 gnss_ha_iono_model_type_enum type;
2399 union
2400 {
2401 gnss_ha_req_ionospheric_static_model_struct staticModelReq; /* request for the one-shot ionosphere models */
2402 gnss_ha_req_ionospheric_periodic_model_struct periodicWAIonoReq; /* request for periodic ionosphere models */
2403 } data;
2404} gnss_ha_req_ionospheric_model_struct;
2405/* end of gnss_ha_req_ionospheric_model */
2406
2407
2408/* begin of gnss_ha_req_troposphere_model */
2409typedef struct
2410{
2411 kal_uint8 tropoModelReq; /* specify the desired model or models, mapping to GNSS_HA_COMM_AD_REQ_TROPO_BIT_* */
2412
2413 kal_bool supportMultiGridPoints; /* indicate if the target is requesting parameter sets originating from multiple locations around it (TRUE)
2414 FALSE means that only the nearest grid point parameters are requested */
2415
2416 kal_bool reqBeginTimeValid;
2417 gnss_system_time_struct reqBeginTime; /* specify the first time instant when a valid troposphere model is needed, if absent, the begin time is the current time */
2418
2419 gnss_ha_duration duration; /* specify how long time the tropospheric model is requested for */
2420} gnss_ha_req_troposphere_model_struct;
2421/* end of gnss_ha_req_troposphere_model */
2422
2423
2424/* begin of gnss_ha_req_altitude_assist */
2425typedef struct
2426{
2427 kal_bool reqBeginTimeValid;
2428 gnss_system_time_struct reqBeginTime; /* specify the first time instant when altitude assistance is needed, if absent, the begin time is the current time */
2429
2430 kal_bool durationValid;
2431 gnss_ha_duration duration; /* specify how long time the altitude assistance is requested for, if absent, altitude assistance is requested for the current moment */
2432} gnss_ha_req_altitude_assist_struct;
2433/* end of gnss_ha_req_altitude_assist */
2434
2435
2436/* begin of gnss_ha_req_ccp_ctrl_params */
2437typedef struct
2438{
2439 gnss_ha_high_accu_3d_position_struct reqRefStationLoc; /* request for a new reference station based on the position. The position may or may not be the target position */
2440 gnss_ha_agnss_qor_type_enum qor; /* QoR (Quality-of-Reference station) defines how close to the requested location the closest reference station must be
2441 In case the closest reference station is within the uncertainty area of the target location, the QoR parameter is neglected */
2442} gnss_ha_req_ccp_pos_based_ref_station_struct;
2443
2444
2445typedef struct
2446{
2447 kal_uint8 numRefStationIDElement;
2448 kal_uint16 refStationIDElement[GNSS_HA_MAX_CCP_PREF_STATION_LIST_ELEMENT]; /* [0..65535], contain the reference station ID list */
2449} gnss_ha_req_ccp_ref_station_list_struct;
2450
2451
2452typedef struct
2453{
2454 gnss_ha_req_ccp_ref_station_type_enum type;
2455 union
2456 {
2457 gnss_ha_req_ccp_pos_based_ref_station_struct posBasedRefStationReq;
2458 gnss_ha_req_ccp_ref_station_list_struct idBasedRefStationReq; /* request for CCP AD for a new reference station based on the reference station ID */
2459 gnss_ha_req_ccp_ref_station_list_struct refStationKillList; /* terminate CCP AD deliveries for selected reference stations based on their reference station IDs */
2460 } data;
2461} gnss_ha_req_ccp_ref_station_struct;
2462
2463
2464typedef struct
2465{
2466 kal_bool durationValid;
2467 gnss_ha_duration duration; /* specify the length of the continuous periodic assistance session */
2468
2469 kal_bool rateValid;
2470 kal_uint8 rate; /* [1..64], specify the interval between the assistance data deliveries in seconds */
2471
2472 kal_bool refStationValid;
2473 gnss_ha_req_ccp_ref_station_struct refStation; /* specify the request/modification of the active reference station set */
2474} gnss_ha_req_ccp_common_req_struct;
2475
2476
2477typedef struct
2478{
2479 kal_bool ccpSuppAreaReq; /* TRUE if request for the information on the CCP assistance availability in the target area */
2480 kal_bool ccpNbrListReq; /* TRUE if request for the information on the reference stations in the vicinity of the target */
2481
2482 gnss_ha_req_ccp_common_req_struct ccpCommonRequest; /* request for a new reference station or stopping CCP AD delivery for a reference station */
2483} gnss_ha_req_ccp_ctrl_params_struct;
2484/* end of gnss_ha_req_ccp_ctrl_params */
2485
2486/* begin of gnss_ha_req_ccp_generic_struct */
2487typedef struct
2488{
2489 kal_uint8 ccpGnssSignalsReq; /* specify the GNSS signal types for which the CCP assistance is requested by the target device, GNSS Signal(s), map to GNSS_SGN_ID_BITMAP_* */
2490} gnss_ha_req_ccp_generic_struct;
2491/* end of gnss_ha_req_ccp_generic_struct */
2492
2493typedef struct
2494{
2495 gnss_id_enum gnssId;
2496 // kal_bool waIonoSurfaceReq; /* TRUE if wide area ionosphere correction surface is requested for the SVs of this GNSS */
2497 // gnss_ha_req_mechanics_struct mechanicsReq; /* request the SV mechanics information */
2498 // gnss_ha_req_dcb_struct dcbReq; /* request the differential code biases to gain higher accuracy */
2499 kal_bool degradModelReq; /* TRUE if request the accuracy models for the SV orbit and clock models to get a better understanding of the accuracy of the computed position */
2500 gnss_ha_req_ccp_generic_struct ccpAssistGenericReq; /* request for the CCP reference assistance data for high accuracy */
2501 // gnss_ha_req_nav_model_struct navigationModelReq; /* TBD. request for the navigation models defined in LPPe */
2502
2503} gnss_ha_generic_assist_struct;
2504
2505typedef struct
2506{
2507 LOCAL_PARA_HDR
2508 kal_uint8 padding[4];
2509 kal_uint16 transactionID;
2510
2511 /* Common assistance data */
2512 kal_bool ionoModelReqValid;
2513 gnss_ha_req_ionospheric_model_struct ionoModelReq; /* request for ionosphere models */
2514
2515 kal_bool tropoModelReqValid;
2516 gnss_ha_req_troposphere_model_struct tropoModelReq; /* request troposphere models */
2517
2518 kal_bool altAssistReqValid;
2519 gnss_ha_req_altitude_assist_struct altAssistReq; /* request altitude assistance for improved availability */
2520
2521 kal_bool solarRadReq; /* TRUE if request the solar radiation intensity */
2522
2523 kal_bool ccpCtrlParamsReqValid;
2524 gnss_ha_req_ccp_ctrl_params_struct ccpCtrlParamsReq; /* request for the control parameters of the CCP AD session.
2525 it shall be accompanied by ccpAssistGenericReq in the generic part of the AGNSS request */
2526 /* Generic assistance data */
2527 kal_uint8 numGnssSupport;
2528 gnss_ha_generic_assist_struct genericAssistReq[16];
2529} lcsp_gnss_ha_assist_data_request_ind_struct;
2530
2531#if 0
2532/* under construction !*/
2533/* under construction !*/
2534/* under construction !*/
2535/* under construction !*/
2536/* under construction !*/
2537/* under construction !*/
2538/* under construction !*/
2539/* under construction !*/
2540/* under construction !*/
2541/* under construction !*/
2542/* under construction !*/
2543/* under construction !*/
2544/* under construction !*/
2545/* under construction !*/
2546/* under construction !*/
2547/* under construction !*/
2548/* under construction !*/
2549/* under construction !*/
2550/* under construction !*/
2551/* under construction !*/
2552/* under construction !*/
2553/* under construction !*/
2554/* under construction !*/
2555/* under construction !*/
2556/* under construction !*/
2557/* under construction !*/
2558/* under construction !*/
2559/* under construction !*/
2560/* under construction !*/
2561/* under construction !*/
2562/* under construction !*/
2563/* under construction !*/
2564/* under construction !*/
2565/* under construction !*/
2566/* under construction !*/
2567/* under construction !*/
2568/* under construction !*/
2569/* under construction !*/
2570/* under construction !*/
2571/* under construction !*/
2572/* under construction !*/
2573/* under construction !*/
2574/* under construction !*/
2575/* under construction !*/
2576/* under construction !*/
2577/* under construction !*/
2578/* under construction !*/
2579/* under construction !*/
2580/* under construction !*/
2581/* under construction !*/
2582/* under construction !*/
2583/* under construction !*/
2584/* under construction !*/
2585/* under construction !*/
2586/* under construction !*/
2587/* under construction !*/
2588/* under construction !*/
2589/* under construction !*/
2590/* under construction !*/
2591/* under construction !*/
2592/* under construction !*/
2593/* under construction !*/
2594/* under construction !*/
2595/* under construction !*/
2596/* under construction !*/
2597/* under construction !*/
2598/* under construction !*/
2599/* under construction !*/
2600/* under construction !*/
2601/* under construction !*/
2602/* under construction !*/
2603/* under construction !*/
2604/* under construction !*/
2605/* under construction !*/
2606/* under construction !*/
2607/* under construction !*/
2608/* under construction !*/
2609/* under construction !*/
2610/* under construction !*/
2611/* under construction !*/
2612/* under construction !*/
2613/* under construction !*/
2614/* under construction !*/
2615/* under construction !*/
2616/* under construction !*/
2617/* under construction !*/
2618/* under construction !*/
2619/* under construction !*/
2620/* under construction !*/
2621/* under construction !*/
2622/* under construction !*/
2623/* under construction !*/
2624/* under construction !*/
2625/* under construction !*/
2626/* under construction !*/
2627/* under construction !*/
2628/* under construction !*/
2629/* under construction !*/
2630/* under construction !*/
2631/* under construction !*/
2632/* under construction !*/
2633/* under construction !*/
2634/* under construction !*/
2635/* under construction !*/
2636/* under construction !*/
2637/* under construction !*/
2638#endif
2639
2640/* begin of gnss_ha_degradation_model */
2641typedef struct
2642{
2643 kal_uint8 clockRMS0; /* specify the constant term of the clock model degradation model by cRMS0 =((1+0.1)^clockRMS0 -1) meters,
2644 where clockRMS0 = 31 denotes 'Use At Own Risk', the range is [0, 16.45) meters, refer to OMA-TS-LPPe Appendix C.6.1 */
2645 kal_bool clockRMS1Valid;
2646 kal_uint8 clockRMS1; /* specify the first order term of the clock model degradation model, cRMS1, scale factor 2^(-14) m/s,
2647 range [0, 4.3e-4) m/s, refer to OMA-TS-LPPe Appendix C.6.1 */
2648} gnss_ha_clock_model_degrad_model_struct;
2649
2650
2651typedef struct
2652{
2653 kal_uint8 orbitRMS0; /* specify the constant term of the orbit model degradation model by oRMS0 =((1+0.1)^orbitRMS0 -1) meters,
2654 where orbitRMS0 = 31 denotes 'Use At Own Risk', the range is [0, 16.45) meters, refer to OMA-TS-LPPe Appendix C.6.2 */
2655 kal_bool orbitRMS1Valid;
2656 kal_uint8 orbitRMS1; /* specify the first order term of the orbit model degradation model, oRMS1, scale factor 2^(-14) m/s, range [0, 4.3e-4) m/s,
2657 refer to OMA-TS-LPPe Appendix C.6.2 */
2658} gnss_ha_orbit_model_degrad_model_struct;
2659
2660
2661typedef struct
2662{
2663 kal_uint8 svID; /* [0..63], specify the SV for which degradation models are provided */
2664 gnss_ha_clock_model_degrad_model_struct clockDegradationModel; /* provide the degradation model for the clock model */
2665 gnss_ha_orbit_model_degrad_model_struct orbitDegradationModel; /* provide the degradation model for the orbit model */
2666} gnss_ha_degrad_model_element_struct;
2667
2668
2669typedef struct
2670{
2671 LOCAL_PARA_HDR
2672 kal_uint8 padding[4];
2673 kal_uint16 transactionID;
2674 gnss_id_enum gnssId;
2675
2676 kal_uint8 numDegradModelElement;
2677 gnss_ha_degrad_model_element_struct degradModelElement[GNSS_HA_MAX_DEGRAD_MODEL_ELEMENT];
2678} lcsp_gnss_ha_generic_degradation_model_req_struct;
2679/* end of gnss_ha_degradation_model */
2680
2681
2682/* begin of gnss_ha_ccp_assist_generic */
2683typedef struct
2684{
2685 gnss_ha_code_phase_err_type_enum type;
2686 union
2687 {
2688 kal_uint8 codePhaseRMSError; /* contain the pseudorange RMS error value, representation refer to TS 36.355 floating-point representation of GNSS-MeasurementList field descriptions */
2689 kal_uint8 cnr; /* carrier-to-noise ratio, scale factor 0.25 dB-Hz, range [0, 63.75] dB-Hz */
2690 } data;
2691} gnss_ha_code_phase_error_struct;
2692
2693
2694typedef struct
2695{
2696 kal_uint8 svID; /* [0..63], identify the SV for which CCP assistance is being provided */
2697
2698 kal_bool intCodePhaseValid;
2699 kal_uint8 intCodePhase; /* [0..255], indicate the integer milli-second part of the code phase */
2700
2701 kal_uint32 codePhase; /* [0.. 14989622], contain the sub-millisecond part of the code phase observation
2702 for the particular satellite signal at the reference time, scale factor 0.02 meters, range [0, 299792.44] meters */
2703
2704 kal_bool codePhaseErrorValid;
2705 gnss_ha_code_phase_error_struct codePhaseError; /* code phase error */
2706
2707 kal_int32 phaseRangeDelta; /* [-524288.. 524287], define the (Phase Range �V Pseudorange), scale factor 0.5 mm, range [-262.144, 262.1435] meters */
2708
2709 kal_bool phaseRangeRMSErrorValid;
2710 kal_uint8 phaseRangeRMSerror; /* [0..127], contain the RMS error of the continuous carrier phase, scale factor 2^(-10) meters, in the range [0, 0.12403) meters */
2711
2712 kal_bool lockIndicator; /* TRUE: if the carrier phase tracking has been continuous between the previous and the current assistance
2713 data delivery. FALSE: a cycle slip has occurred */
2714} gnss_ha_ccp_sv_element_struct;
2715
2716
2717typedef struct
2718{
2719 kal_uint8 numCCPPerSVElement;
2720 gnss_ha_ccp_sv_element_struct ccpPerSVElement[GNSS_HA_MAX_CCP_PER_SV_ELEMENT];
2721} gnss_ha_ccp_per_sv_list_struct;
2722
2723
2724typedef struct
2725{
2726 kal_uint8 signalID; /* indicate the signal id, map to GNSS_SGN_ID_VALUE_* */
2727 gnss_ha_ccp_per_sv_list_struct ccpPerSVlist;
2728} gnss_ha_ccp_per_signal_element_struct;
2729
2730
2731typedef struct
2732{
2733 kal_uint8 numCCPPerSigElement;
2734 gnss_ha_ccp_per_signal_element_struct ccpPerSigElement[GNSS_HA_MAX_CCP_PER_SIG_ELEMENT];
2735} gnss_ha_ccp_per_signal_list_struct;
2736
2737
2738typedef struct
2739{
2740 kal_uint16 refStationID; /* define the ID of the reference station to which the CCP assistance is provided */
2741 gnss_ha_ccp_per_signal_list_struct ccpPerSignalList;
2742} gnss_ha_ccp_generic_element_struct;
2743
2744
2745typedef struct
2746{
2747 LOCAL_PARA_HDR
2748 kal_uint8 padding[4];
2749 kal_uint16 transactionID;
2750 gnss_id_enum gnssId;
2751
2752 kal_uint8 numCCPGenericElement;
2753 gnss_ha_ccp_generic_element_struct ccpGenericElement[GNSS_HA_MAX_CCP_GENERIC_ELEMENT];
2754} lcsp_gnss_ha_generic_ccp_assist_req_struct;
2755/* end of gnss_ha_ccp_assist_generic */
2756
2757#if 0
2758/* under construction !*/
2759/* under construction !*/
2760/* under construction !*/
2761/* under construction !*/
2762/* under construction !*/
2763/* under construction !*/
2764/* under construction !*/
2765/* under construction !*/
2766/* under construction !*/
2767/* under construction !*/
2768/* under construction !*/
2769/* under construction !*/
2770/* under construction !*/
2771/* under construction !*/
2772/* under construction !*/
2773/* under construction !*/
2774/* under construction !*/
2775/* under construction !*/
2776/* under construction !*/
2777/* under construction !*/
2778/* under construction !*/
2779/* under construction !*/
2780/* under construction !*/
2781/* under construction !*/
2782/* under construction !*/
2783/* under construction !*/
2784/* under construction !*/
2785/* under construction !*/
2786/* under construction !*/
2787/* under construction !*/
2788/* under construction !*/
2789/* under construction !*/
2790/* under construction !*/
2791/* under construction !*/
2792/* under construction !*/
2793/* under construction !*/
2794/* under construction !*/
2795/* under construction !*/
2796/* under construction !*/
2797/* under construction !*/
2798/* under construction !*/
2799/* under construction !*/
2800/* under construction !*/
2801/* under construction !*/
2802/* under construction !*/
2803/* under construction !*/
2804/* under construction !*/
2805/* under construction !*/
2806/* under construction !*/
2807/* under construction !*/
2808/* under construction !*/
2809/* under construction !*/
2810/* under construction !*/
2811/* under construction !*/
2812/* under construction !*/
2813/* under construction !*/
2814/* under construction !*/
2815/* under construction !*/
2816/* under construction !*/
2817/* under construction !*/
2818/* under construction !*/
2819/* under construction !*/
2820/* under construction !*/
2821/* under construction !*/
2822/* under construction !*/
2823/* under construction !*/
2824/* under construction !*/
2825/* under construction !*/
2826/* under construction !*/
2827/* under construction !*/
2828/* under construction !*/
2829/* under construction !*/
2830/* under construction !*/
2831/* under construction !*/
2832/* under construction !*/
2833/* under construction !*/
2834/* under construction !*/
2835/* under construction !*/
2836/* under construction !*/
2837/* under construction !*/
2838/* under construction !*/
2839/* under construction !*/
2840/* under construction !*/
2841/* under construction !*/
2842/* under construction !*/
2843/* under construction !*/
2844/* under construction !*/
2845/* under construction !*/
2846/* under construction !*/
2847/* under construction !*/
2848/* under construction !*/
2849/* under construction !*/
2850/* under construction !*/
2851/* under construction !*/
2852/* under construction !*/
2853/* under construction !*/
2854/* under construction !*/
2855/* under construction !*/
2856/* under construction !*/
2857/* under construction !*/
2858/* under construction !*/
2859/* under construction !*/
2860/* under construction !*/
2861/* under construction !*/
2862/* under construction !*/
2863/* under construction !*/
2864/* under construction !*/
2865/* under construction !*/
2866/* under construction !*/
2867/* under construction !*/
2868/* under construction !*/
2869/* under construction !*/
2870/* under construction !*/
2871/* under construction !*/
2872/* under construction !*/
2873/* under construction !*/
2874/* under construction !*/
2875/* under construction !*/
2876/* under construction !*/
2877/* under construction !*/
2878/* under construction !*/
2879/* under construction !*/
2880/* under construction !*/
2881/* under construction !*/
2882/* under construction !*/
2883/* under construction !*/
2884/* under construction !*/
2885/* under construction !*/
2886/* under construction !*/
2887/* under construction !*/
2888/* under construction !*/
2889/* under construction !*/
2890/* under construction !*/
2891/* under construction !*/
2892/* under construction !*/
2893/* under construction !*/
2894/* under construction !*/
2895/* under construction !*/
2896/* under construction !*/
2897/* under construction !*/
2898/* under construction !*/
2899/* under construction !*/
2900/* under construction !*/
2901/* under construction !*/
2902/* under construction !*/
2903/* under construction !*/
2904/* under construction !*/
2905/* under construction !*/
2906/* under construction !*/
2907/* under construction !*/
2908/* under construction !*/
2909#endif
2910
2911typedef struct
2912{
2913 gnss_id_enum gnssID; /* GNSS ID for which HA GNSS measurements are requested */
2914 kal_uint8 gnssSignals; /* specify the GNSS signal types for which HA GNSS measurements are requested by the server, map to GNSS_SGN_ID_BITMAP_* */
2915} gnss_ha_meas_signal_req_element_struct;
2916
2917
2918typedef struct
2919{
2920 kal_bool durationValid;
2921 gnss_ha_duration duration; /* specify the length of the HA GNSS measurement session */
2922
2923 kal_bool rateValid;
2924 kal_uint8 rate; /* [1..63], specify the rate of delivery of the HA GNSS measurements, scale factor 1 second */
2925
2926 /* should we support antenna info for HA GNSS? */
2927 //kal_bool antennaInfoReqValid;
2928 ///LPP_EXT_OMA_LPPe_AGNSS_HAgnssRequestControlParameters_antennaInformationReq antennaInformationReq; /* request for the target antenna information */
2929
2930 kal_bool pressureReq; /* request for the pressure information at the target site */
2931
2932 kal_uint8 numSigReqElement;
2933 gnss_ha_meas_signal_req_element_struct sigReqelement[GNSS_HA_MAX_MEAS_PER_GNSS_ELEMENT]; /* request HA GNSS measurements for specific GNSS signals */
2934} gnss_ha_meas_req_struct;
2935
2936
2937typedef struct
2938{
2939 kal_int16 pressure; /* [-1024..1023], local atmospheric pressure measurement (hPa) at the target��s altitude, scale factor 0.1 hPa, the value is added to the average pressure 1013hPa */
2940 kal_uint8 pressureUnc; /* [0..127], the 1-sigma standard deviation of the pressure measurement, the scale factor 0.1 hPa */
2941} gnss_ha_local_pressure_struct;
2942
2943
2944typedef struct
2945{
2946 kal_uint8 svID; /* [0..63], identify the SV for which HA GNSS measurements are provided */
2947
2948 kal_bool intCodePhaseValid;
2949 kal_uint8 intCodePhase; /* [0..255], indicate the integer milli-second part of the code phase */
2950
2951 kal_uint32 codePhase; /* [0..14989622], contain the sub-millisecond part of the code phase observation for the particular satellite signal at the reference time
2952 target shall reconstruct the full pseudorange by Pseudorange = (Integer Code Phase) + (Code Phase), scale factor 0.02 meters. Range [0, 299792.44] meters */
2953
2954 kal_uint8 codePhaseRMSError; /* [0..63], contain the pseudorange RMS error value. representation refer to TS 36.355 floating-point representation of GNSS-MeasurementList field descriptions */
2955 gnss_ha_multipath_detect_type_enum multipathDetection; /* contain an estimate of the multipath environment */
2956 kal_uint8 cnr; /* [0..255], contain an estimate of the carrier-to-noise ratio, scale factor 0.25 dB-Hz, range [0, 63.75] dB-Hz */
2957 kal_uint32 adr; /* [0..536870911], contain the continuous carrier phase with direct data polarity, scale factor 2^-10 meters, in the range [0, 524287.999023438) meters */
2958 kal_uint8 adrRMSerror; /* [0..127], contain the RMS error of the continuous carrier phase, scale factor 2^-10 meters, in the range [0, 0.12403) meters */
2959 kal_bool lockIndicator; /* TRUE if the carrier phase tracking has been continuous between the previous and the current measurement delivery;
2960 FALSE if a cycle slip has occurred */
2961} gnss_ha_meas_per_sv_element_struct;
2962
2963
2964typedef struct
2965{
2966 kal_uint8 numPerSVElement;
2967 gnss_ha_meas_per_sv_element_struct perSVElement[GNSS_HA_MAX_MEAS_PER_SV_ELEMENT];
2968} gnss_ha_meas_per_sv_list_struct;
2969
2970
2971typedef struct
2972{
2973 kal_uint8 signalID; /* define GNSS signal ID for which measurements are being provided, map to GNSS_SGN_ID_VALUE_* */
2974 gnss_ha_meas_per_sv_list_struct perSVlist; /* carry the HA GNSS measurements for specific satellites */
2975} gnss_ha_meas_per_sig_element_struct;
2976
2977
2978typedef struct
2979{
2980 kal_uint8 numPerSigElement;
2981 gnss_ha_meas_per_sig_element_struct perSigElement[GNSS_HA_MAX_MEAS_PER_SIGNAL_ELEMENT];
2982} gnss_ha_meas_per_sig_list_struct;
2983
2984
2985typedef struct
2986{
2987 gnss_id_enum gnssID; /* GNSS ID for which measurements are being provided */
2988 gnss_ha_meas_per_sig_list_struct perSignalList; /* carry the HA GNSS measurements for the given signals */
2989} gnss_ha_meas_per_gnss_element_struct;
2990
2991
2992typedef struct
2993{
2994 kal_uint8 numGnssElement;
2995 gnss_ha_meas_per_gnss_element_struct gnssElement[GNSS_HA_MAX_MEAS_PER_GNSS_ELEMENT];
2996} gnss_ha_measured_result_struct;
2997
2998
2999typedef struct
3000{
3001 kal_bool positionValid;
3002 gnss_reference_location_struct position; /* specify the position of the target device */
3003
3004 gnss_system_time_struct refTime; /* specify the time, when the measurements included are applicable */
3005
3006 kal_bool localPressureValid;
3007 gnss_ha_local_pressure_struct localPressure; /* specify the local atmospheric pressure measurement at the target's altitude for improved altitude or delta-altitude performance */
3008
3009 /* should we support antenna info for HA GNSS? */
3010 //LPP_EXT_OMA_LPPe_Orientation antennaOrientation; /* OPTIONAL */
3011
3012 gnss_ha_measured_result_struct signalMeasurements; /* carry the HA GNSS signal measurements */
3013} gnss_ha_meas_cnf_struct;
3014
3015
3016typedef struct
3017{
3018 kal_uint16 azimuth; /* [0..359], indicate the azimuth angle of the ionosphere measurement, i.e. the direction from the user where the TEC values are observed.
3019 azimuth angle is defined as the clockwise angle from the true North, scale factor 1 degree */
3020 kal_uint8 elevation; /* [0..90], indicate the elevation angle of the ionosphere measurement, i.e. how high or low in the sky the TEC value is observed, scale factor is 1 degree */
3021 kal_uint16 tecValue; /* [0..511], indicate the measured TEC value towards the SV concerned, scale factor is 1 TEC unit, 10^16 e-/m^2 */
3022 kal_uint8 tecUncertainty; /* [0..63], indicate the 1-sigma standard deviation of the TEC measurement, scale factor is 1 TEC unit, 10^16 e-/m^2 */
3023} gnaa_ha_tec_per_sv_element_struct;
3024
3025
3026typedef struct
3027{
3028 kal_uint8 numPerSVElement;
3029 gnaa_ha_tec_per_sv_element_struct perSVElement[GNSS_HA_MAX_TEC_PER_SV_ELEMENT];
3030} gnss_ha_tec_per_sv_struct;
3031
3032
3033typedef struct
3034{
3035 kal_uint16 tecValueAtZenith; /* [0..511], indicate the measured vertical TEC value, scale factor is 1 TEC unit, 10^16 e-/m^2 */
3036 kal_uint8 tecUncertaintyAtZenith; /* [0..63], indicate the 1-sigma standard deviation of the TEC measurement, scale factor is 1 TEC unit 10^16 e-/m^2 */
3037} gnss_ha_tec_at_zenith_struct;
3038
3039
3040typedef struct
3041{
3042 kal_uint16 azimuth;
3043 kal_uint8 elevation;
3044 kal_uint16 tecValue;
3045 kal_uint8 tecUncertainty;
3046} gnss_ha_tec_persv_element_struct;
3047
3048
3049typedef struct
3050{
3051 kal_uint8 numElements;
3052 gnss_ha_tec_persv_element_struct *element;
3053} gnss_ha_tec_persv_struct;
3054
3055
3056typedef struct
3057{
3058 gnss_system_time_struct gnssTime; /* indicate the measurement time */
3059 gnss_reference_location_struct position; /* indicates the measurement location */
3060
3061 kal_bool tecPerSVValid;
3062 gnss_ha_tec_persv_struct tecPerSV; /* contain the list of TEC values from the target towards each of the SVs seen by the target */
3063
3064 kal_bool tecAtZenithValid;
3065 gnss_ha_tec_at_zenith_struct tecAtZenith; /* contain the target's estimate of the zenith TEC value at the target's position */
3066} gnss_ha_iono_meas_struct;
3067
3068
3069typedef struct
3070{
3071 kal_bool temperatureValid;
3072 kal_int8 temperature; /* [-64..63], local temperature measured by the target, the value is added to 273K, scale factor 1K */
3073
3074 kal_bool temperatureUncValid;
3075 kal_uint8 temperatureUnc; /* [0..7], the 1-sigma standard deviation of the temperature measurement, scale factor 1K */
3076} gnss_ha_temperature_meas_struct;
3077
3078
3079typedef struct
3080{
3081 gnss_system_time_struct gnssTime; /* indicate the measurement time */
3082 gnss_reference_location_struct position; /* indicates the measurement location */
3083
3084 kal_int16 pressure; /* local atmospheric pressure measurement (hPa) at the target's altitude, scale factor is 0.1 hPa, the value is added to the nominal pressure of 1013hPa */
3085 kal_uint8 pressureUncertainty; /* the 1-sigma standard deviation of the pressure measurement, the scale factor is 0.1 hPa */
3086
3087 kal_bool temperatureMeasValid;
3088 gnss_ha_temperature_meas_struct temperatureMeas; /* provide temperature measurement */
3089} gnss_ha_local_surf_meas_struct;
3090
3091
3092typedef struct
3093{
3094 kal_bool haErrCauseValid;
3095 gnss_ha_tgt_err_cause_enum haErrCause;
3096
3097 kal_bool ionoMeasErrCauseValid;
3098 gnss_ha_tgt_iono_meas_err_cause_enum ionoMeasErrCause;
3099
3100 kal_bool envObserveErrCauseValid;
3101 gnss_ha_tgt_env_observe_err_cause_enum envObserveErrCause;
3102
3103 kal_bool haGNSSErrCauseValid;
3104 gnss_ha_tgt_gnss_err_cause_enum haGNSSErrCause;
3105} gnss_ha_tgt_error_struct;
3106
3107
3108typedef struct
3109{
3110 kal_uint8 ionoModelSupport; /* specify which ionospheric model or models the target supports, mapping to GNSS_HA_COMM_IONO_AD_SUPP_BIT_* */
3111 kal_uint8 tropoModelSupport; /* specify which troposphere model or models the target supports and combining troposphere information from several grid points surrounding the target, mapping to GNSS_HA_COMM_TROPO_AD_SUPP_BIT_* */
3112 kal_bool altitudeAssistSupport; /* TRUE if the targets supports altitude assistance */
3113 kal_bool solarRadiationSupport; /* TRUE if the targets supports solar radiation assistance data */
3114 kal_uint8 ccpSupport; /* specify which CCP assistance data type the target supports, mapping to GNSS_HA_COMM_CCP_AD_SUPP_BIT_* */
3115} gnss_ha_common_assist_data_support_struct;
3116
3117
3118typedef struct
3119{
3120 gnss_id_enum gnss_ID;
3121
3122 kal_bool mechanicsSupport; /* TRUE if the target supports mechanics assistance data */
3123 kal_bool dcbSupport; /* TRUE if the target supports Differential Code Bias assistance data */
3124 kal_bool degradationModelSupport; /* TRUE if the target supports navigation model degradation model assistance data */
3125 kal_uint8 ccpAssistSignalIDsSupport; /* indicate if target supports CCP assistance data for at least one signal of the GNSS, mapping to GNSS_SGN_ID_BITMAP_* */
3126 kal_uint8 navModelSupport[GNSS_HA_MAX_GENERIC_AD_NAV_MODEL_ID_ELEMENT]; /* TBD */
3127} gnss_ha_generic_assist_data_support_element_struct;
3128
3129
3130typedef struct
3131{
3132 kal_uint8 numGenericElement;
3133 gnss_ha_generic_assist_data_support_element_struct genericElement[GNSS_HA_MAX_GNSS_GENERIC_ASSIST_DATA_ELEMENT];
3134} gnss_ha_generic_assist_data_support_struct;
3135
3136
3137typedef struct
3138{
3139 gnss_ha_common_assist_data_support_struct commonAssistDataSupp; /* provide target's GNSS-independent AGNSS capabilities */
3140 gnss_ha_generic_assist_data_support_struct genericAssistDataSupp; /* provide target's GNSS-dependent AGNSS assistance data capabilities */
3141} gnss_ha_assist_data_support_list_struct;
3142
3143
3144typedef struct
3145{
3146 kal_uint8 ionoMeasSupport; /* specify the ionospheric measurement supported by the target device, mapping to GNSS_HA_GENE_AD_SUPP_BIT_BIT_* */
3147 kal_bool pressureMeasSupport;
3148 kal_bool temperatureMeasSupport;
3149} gnss_ha_env_observe_support_list_struct;
3150
3151
3152typedef struct
3153{
3154 gnss_id_enum gnssID; /* specify the ID of the GNSS for which HA GNSS capabilities are provided */
3155 kal_uint8 signalIDsSupport; /* specify the GNSS signal types for which HA GNSS signal measurements are supported by the target device */
3156} gnss_ha_capa_per_gnss_support_struct;
3157
3158
3159typedef struct
3160{
3161 kal_uint8 modeSupport; /* indicate which mode supports HA GNSS, mapping to GNSS_HA_MODE_SUPPORT_BIT* */
3162 kal_bool pressureInfoSupport; /* TRUE if the target is capable of providing absolute pressure information for improved delta-altitude performance */
3163 kal_uint8 antInfoSupport; /* specify the antenna information support type, mapping to GNSS_HA_ANT_SUPPORT_BIT_* */
3164
3165 kal_uint8 numPerGNSSElement;
3166 gnss_ha_capa_per_gnss_support_struct perGNSSElement[GNSS_HA_MAX_HA_GNSS_CAPA_ELEMENT];
3167} gnss_ha_gnss_capa_support_struct;
3168
3169
3170typedef struct
3171{
3172 kal_bool assistDataSuppListValid;
3173 gnss_ha_assist_data_support_list_struct assistDataSuppList; /* provide target's HA GNSS assist data capabilities */
3174
3175 kal_bool envObserveSupportListValid;
3176 gnss_ha_env_observe_support_list_struct envObserveSupportList; /* provide target's environment observation capabilities */
3177
3178 kal_bool haGNSSSupportValid;
3179 gnss_ha_gnss_capa_support_struct haGNSSSupport; /* provide target's HA GNSS capabilities */
3180} gnss_ha_capability_struct;
3181
3182typedef struct
3183{
3184 LOCAL_PARA_HDR
3185 kal_uint8 padding[4];
3186 kal_int32 type; /* refer to agps_md_huge_data_msg_id */
3187} lbs_gnss_ha_assist_cnf_struct;
3188
3189/* ---LPPe HA GNSS Interface---end--- */
3190
3191typedef struct
3192{
3193 kal_uint16 gnssMethod; /* specify the estimated location is calculated by which GNSS systems, map to GNSS_ID_BITMAP_* */
3194 gnss_gad_pos_estimate_struct locationEstimate;
3195 gnss_measured_ref_time measuredRefTime; /* should always present */
3196 kal_bool haLocValid;
3197 gnss_ha_pos_estimate_struct haLocationEstimate;
3198} gnss_pos_result_struct;
3199
3200/* This structure for MSG_ID_LCSP_GNSS_STANDALONE_POS_IND*/
3201typedef struct
3202{
3203 LOCAL_PARA_HDR
3204 kal_uint16 transactionID;
3205
3206 gnss_loc_result_enum resultStatus;
3207
3208 gnss_pos_result_type_enum type;
3209 union
3210 {
3211 gnss_pos_result_struct posResult; /* only valid when resultStatus = GNSS_LOC_RESULT_NO_ERROR */
3212 gnss_request_assist_data_struct assistDataReq; /* used for ULCS/RRLP, selected when resultStatus = GNSS_LOC_RESULT_ASSIST_DATA_MISSING */
3213 } data;
3214} lcsp_gnss_standalone_pos_ind_struct;
3215
3216
3217/* This structure for MSG_ID_LCSP_GNSS_POS_CNF */
3218typedef struct
3219{
3220 LOCAL_PARA_HDR
3221 kal_uint16 transactionID;
3222
3223 gnss_loc_result_enum resultStatus;
3224
3225 gnss_pos_result_type_enum type;
3226 union
3227 {
3228 gnss_pos_result_struct posResult; /* only valid when resultStatus = GNSS_LOC_RESULT_NO_ERROR */
3229 gnss_request_assist_data_struct assistDataReq; /* used for ULCS/RRLP, selected when resultStatus = GNSS_LOC_RESULT_ASSIST_DATA_MISSING */
3230 } data;
3231} lcsp_gnss_pos_cnf_struct;
3232
3233
3234/* This structure for MSG_ID_LCSP_GNSS_MEAS_CNF */
3235typedef struct
3236{
3237 LOCAL_PARA_HDR
3238 kal_uint16 transactionID;
3239
3240 gnss_loc_result_enum resultStatus;
3241
3242 gnss_meas_result_type_enum type;
3243 union
3244 {
3245 gnss_measured_result_struct measuredResult; /* only valid when resultStatus = GNSS_LOC_RESULT_NO_ERROR */
3246 gnss_request_assist_data_struct assistDataReq; /* used for ULCS/RRLP, selected when resultStatus = GNSS_LOC_RESULT_ASSIST_DATA_MISSING */
3247 } data;
3248} lcsp_gnss_meas_cnf_struct;
3249
3250
3251//#endif /* #if defined(__AGNSS_SUPPORT__) || defined(__AGPS_SUPPORT__) */
3252
3253#endif /* _GNSS2LCSP_STRUCT_H */
3254