blob: c144f31b9c704e9a041c7e3c393d31420c0c589d [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001
2#ifndef __AGPS_MD_INTERFACE_H__
3#define __AGPS_MD_INTERFACE_H__
4
5#include "gps_common.h"
6
7//version history
8// 6 add PositionTect bitmap parameter in MOLR_BEGIN_REQ, add session_id in MTLR_BEGIN_IND and MTLR_BEGIN_RSP
9// 7 change version's type from short to int to avoid unaligned access
10// 8 add 4 Session IND messages
11// 9 extend requestor_id and client_name from 128 bytes to 160 bytes
12// 10 define LPP UP SWIP <-> LPP CP message ID (no struct definition, uses raw data)
13// 11 add AGPS_MD_TYPE_MTLR_BEGIN_2_IND and agps_md_mtlr_begin_2_ind struct
14// 12 add supporting eutran band list in sim_info_rsp
15// 13 add session_id in agps_md_auto_mtlr_response_ind struct
16// 13.2 add AGPS_MD_TYPE_SIM_INFO_IND for MD to report SIM_INFO when it is boot up complete, AP CCCI driver should keep the data sent from MD when AP/AGPS does not open CCCI yet
17// 13.3 add AGPS_MD_TYPE_LPP_PEER_OTDOA_RESET_UE_STORED_POS_REQ for SUPL LPP session to delete OTDOA data in MD side when A-GPS session is finished
18// 13.4 add AGPS_MD_TYPE_MDT_SUPL_DONE_RSP and AGPS_MD_GPS_OPEN_IND_TYPE_MDT for MDT session
19// 13.5 add AGPS_MD_TYPE_LOCATION_NTF to sync the latest location to MD side
20// 13.6 add support_lpp_otdoa_nbr_cell_list in agps_md_sim_info_rsp and agps_md_sim_info_ind for LPP inter-freq (only on LPP, no implementation on LBS)
21// 13.7 add supl flow indication
22// 13.8 add AGPS_MD_TYPE_CP_SERVICE_CONFIG_NTF to do CP on/off in runtime, this should be used in Titan's project only
23// 13.9 add CP service config in agps_md_sim_info_req struct
24// 13.10 add AGPS_MD_TYPE_MODEM_REBOOT_IND when LBS task is initiated or flight mode on/off
25// 13.11 add the huge data transfer
26// 13.12 add support_location_settings and AGPS_MD_TYPE_LOCATION_SETTINGS_NTF
27// 13.13 move agps_md_huge_data_type from huge_data_transfer.h to agps_md_interface.h
28// 13.14 re-name agps_md_huge_data_type to agps_md_huge_data_msg_id
29// 13.15 add reject_non911_nilr_enable for LGE VZW requirement
30// 13.16 add battery_percentage in agps_md_sim_info_req struct to sync the battery percentage per 5% to MD/LBS
31// 13.17 add support_ue_rx_tx_sup_tdd_r13 in agps_md_sim_info_rsp
32// 13.18 add NR positioning
33// 13.19 add location source in AGPS_MD_TYPE_LOCATION_NTF
34// 13.20 add support_md_time_sync and AGPS_MD_HUGE_DATA_TYPE_MD_TIME_XXX
35
36#define AGPS_MD_INTERFACE_VERSION 13
37#define MAX_AGPS_MD_BUFFER_SIZE 4096
38
39typedef int agps_md_reset_data;
40#define AGPS_MD_RESET_EPHEMERIS 0x0001
41#define AGPS_MD_RESET_ALMANAC 0x0002
42#define AGPS_MD_RESET_POSITION 0x0004
43#define AGPS_MD_RESET_TIME 0x0008
44#define AGPS_MD_RESET_IONO 0x0010
45#define AGPS_MD_RESET_UTC 0x0020
46#define AGPS_MD_RESET_HEALTH 0x0040
47#define AGPS_MD_RESET_SVDIR 0x0080
48#define AGPS_MD_RESET_SVSTEER 0x0100
49#define AGPS_MD_RESET_SADATA 0x0200
50#define AGPS_MD_RESET_RTI 0x0400
51#define AGPS_MD_RESET_CELLDB_INFO 0x8000
52#define AGPS_MD_RESET_ALL 0xFFFF
53
54typedef struct {
55 double latitude; //Represents latitude in degrees
56 double longitude; //Represents longitude in degrees
57 char altitude_used; //0=disabled 1=enabled
58 double altitude; //Represents altitude in meters above the WGS 84 reference
59 char speed_used; //0=disabled 1=enabled
60 float speed; //Represents speed in meters per second
61 char bearing_used; //0=disabled 1=enabled
62 float bearing; //Represents heading in degrees
63 char accuracy_used; //0=disabled 1=enabled
64 float accuracy; //Represents expected accuracy in meters
65 char timestamp_used; //0=disabled 1=enabled
66 long long timestamp; //Milliseconds since January 1, 1970
67} agps_md_gps_location;
68
69typedef enum {
70 //PMTK
71 AGPS_MD_TYPE_PMTK = 0,
72 //GPS control
73 AGPS_MD_TYPE_GPS_RESET_IND = 100,
74 AGPS_MD_TYPE_GPS_RESET_RSP,
75 AGPS_MD_TYPE_GPS_OPEN_IND,
76 AGPS_MD_TYPE_GPS_OPEN_RSP,
77 AGPS_MD_TYPE_GPS_CLOSE_IND,
78 AGPS_MD_TYPE_GPS_CLOSE_RSP,
79 AGPS_MD_TYPE_SESSION_ABORT_REQ,
80 AGPS_MD_TYPE_SESSION_ABORT_RSP,
81 AGPS_MD_TYPE_MDT_SUPL_DONE_RSP,
82 //MOLR
83 AGPS_MD_TYPE_MOLR_BEGIN_REQ = 200,
84 AGPS_MD_TYPE_MOLR_BEGIN_RSP,
85 //MTLR
86 AGPS_MD_TYPE_MTLR_BEGIN_IND = 300,
87 AGPS_MD_TYPE_MTLR_BEGIN_RSP,
88 AGPS_MD_TYPE_MTLR_BEGIN_2_IND,
89 //NBR
90 AGPS_MD_TYPE_NBR_CELL_INFO_REG_REQ = 400,
91 AGPS_MD_TYPE_NBR_CELL_INFO_REG_CNF,
92 AGPS_MD_TYPE_NBR_CELL_INFO_DEREG_REQ,
93 AGPS_MD_TYPE_NBR_CELL_INFO_DEREG_CNF,
94 AGPS_MD_TYPE_NBR_CELL_INFO_IND,
95 //Automation
96 AGPS_MD_TYPE_AUTO_TEST_IND = 500,
97 AGPS_MD_TYPE_AUTO_CP_UP_STATUS_IND,
98 AGPS_MD_TYPE_AUTO_MOLR_START_IND,
99 AGPS_MD_TYPE_AUTO_MOLR_STOP_IND,
100 AGPS_MD_TYPE_AUTO_MTLR_RESPONSE_IND, //not support by MTK AOSP AGPS
101 //SIM info query
102 AGPS_MD_TYPE_EMERGENCY_CALL_IND = 600,
103 AGPS_MD_TYPE_SIM_INFO_REQ,
104 AGPS_MD_TYPE_SIM_INFO_RSP,
105 AGPS_MD_TYPE_SERVICE_STATE_REQ,
106 AGPS_MD_TYPE_SERVICE_STATE_RSP,
107 AGPS_MD_TYPE_ROAMING_STATE_REQ,
108 AGPS_MD_TYPE_ROAMING_STATE_RSP,
109 AGPS_MD_TYPE_DATA_CONNECTION_STATE_REQ,
110 AGPS_MD_TYPE_DATA_CONNECTION_STATE_RSP,
111 AGPS_MD_TYPE_SIM_INFO_IND,
112 AGPS_MD_TYPE_EMERGENCY_TEXT_IND,
113 //Session IND
114 AGPS_MD_TYPE_SESSION_START_IND = 700,
115 AGPS_MD_TYPE_SESSION_END_IND,
116 AGPS_MD_TYPE_LTE_OTDOA_IND,
117 AGPS_MD_TYPE_LTE_ECID_IND,
118 //LPP UP SWIP to LPP CP (raw data)
119 AGPS_MD_TYPE_LPP_PEER_OTDOA_MEAS_REQ = 800,
120 AGPS_MD_TYPE_LPP_PEER_OTDOA_ASSIST_DATA_REQ,
121 AGPS_MD_TYPE_LPP_PEER_OTDOA_MEAS_ABORT_REQ,
122 AGPS_MD_TYPE_LPP_PEER_ECID_MEAS_REQ,
123 AGPS_MD_TYPE_LPP_PEER_ECID_MEAS_ABORT_REQ,
124 AGPS_MD_TYPE_LPP_PEER_EUTRAN_BAND_UPDATE_REQ,
125 AGPS_MD_TYPE_LPP_PEER_OTDOA_RESET_UE_STORED_POS_REQ,
126 //LPP CP to LPP UP SWIP (raw data)
127 AGPS_MD_TYPE_LPP_PEER_OTDOA_MEAS_CNF = 900,
128 AGPS_MD_TYPE_LPP_PEER_OTDOA_ASSIST_DATA_CNF,
129 AGPS_MD_TYPE_LPP_PEER_OTDOA_ADDITIONAL_ASSIST_DATA_REQ,
130 AGPS_MD_TYPE_LPP_PEER_ECID_MEAS_CNF,
131 AGPS_MD_TYPE_LPP_PEER_EUTRAN_BAND_UPDATE_CNF,
132 //AP -> MD notify information
133 AGPS_MD_TYPE_LOCATION_NTF = 1000,
134 AGPS_MD_TYPE_CP_SERVICE_CONFIG_NTF,
135 AGPS_MD_TYPE_LOCATION_SETTINGS_NTF,
136 AGPS_MD_TYPE_GNSS_TIME_NTF,
137
138 //SUPL Raw data to ELT
139 AGPS_MD_TYPE_SUPL_FLOW_IND = 1100,
140 AGPS_MD_TYPE_SUPL_FLOW_RSP = 1101,
141 //MD -> AP notify information
142 AGPS_MD_TYPE_MODEM_REBOOT_IND = 1200,
143 //Segmented Packet Transfer (Two-way)
144 AGPS_MD_TYPE_SEGMENTED_PACKET_IND = 1300,
145} agps_md_type;
146
147typedef enum {
148 // LPPe WLAN
149 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_REQUEST_CAPABILITIES = 100, //MD -> AP null
150 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_PROVIDE_CAPABILITIES = 101, //AP -> MD LPPeWlan_WlanProvideCapabilities
151 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_START_MEASUREMENT = 102, //MD -> AP LPPeWlan_WlanMeasurements
152 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_STOP_MEASUREMENT = 103, //MD -> AP null
153 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_QUERY_MEASUREMENT = 104, //MD -> AP null
154 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_REPLY_MEASUREMENT = 105, //AP -> MD lppe_stack_wlan_meas
155 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_REQUEST_ASSIST_DATA = 106, //AP -> MD lppe_stack_wlan_request_assist_data
156 AGPS_MD_HUGE_DATA_TYPE_LPPE_WLAN_PROVIDE_ASSIST_DATA = 107, //MD -> AP lppe_stack_wlan_provide_assist_data
157 // LPPe BT
158 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_REQUEST_CAPABILITIES = 200, //MD -> AP null
159 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_PROVIDE_CAPABILITIES = 201, //AP -> MD LPPeBluetooth_BluetoothProvideCapabilities
160 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_START_MEASUREMENT = 202, //MD -> AP LPPeBluetooth_BluetoothMeasurementRequest
161 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_STOP_MEASUREMENT = 203, //MD -> AP null
162 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_QUERY_MEASUREMENT = 204, //MD -> AP null
163 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_REPLY_MEASUREMENT = 205, //AP -> MD lppe_stack_bt_meas
164 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_REQUEST_ASSIST_DATA = 206, //AP -> MD lppe_stack_bt_request_assist_data
165 AGPS_MD_HUGE_DATA_TYPE_LPPE_BT_PROVIDE_ASSIST_DATA = 207, //MD -> AP lppe_stack_bt_provide_assist_data
166 // LPPe Sensor
167 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_REQUEST_CAPABILITIES = 300, //MD -> AP null
168 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_PROVIDE_CAPABILITIES = 301, //AP -> MD LPPeSensor_SensorProvideCapabilities
169 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_START_MEASUREMENT = 302, //MD -> AP LPPeSensor_SensorMeasurementRequest
170 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_STOP_MEASUREMENT = 303, //MD -> AP null
171 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_QUERY_MEASUREMENT = 304, //MD -> AP null
172 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_REPLY_MEASUREMENT = 305, //AP -> MD lppe_stack_sensor_meas
173 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_REQUEST_ASSIST_DATA = 306, //AP -> MD lppe_stack_sensor_request_assist_data
174 AGPS_MD_HUGE_DATA_TYPE_LPPE_SENSOR_PROVIDE_ASSIST_DATA = 307, //MD -> AP lppe_stack_sensor_provide_assist_data
175 // LPPe Network
176 AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_REQUEST_CAPABILITIES = 400, //MD -> AP null
177 AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_PROVIDE_CAPABILITIES = 401, //AP -> MD bool
178 AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_START_MEASUREMENT = 402, //MD -> AP null
179 AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_STOP_MEASUREMENT = 403, //MD -> AP null
180 AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_QUERY_MEASUREMENT = 404, //MD -> AP null
181 AGPS_MD_HUGE_DATA_TYPE_LPPE_NETWORK_REPLY_MEASUREMENT = 405, //AP -> MD lppe_stack_network_meas
182 // LPPe IP Address
183 AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_REQUEST_CAPABILITIES = 500, //MD -> AP null
184 AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_PROVIDE_CAPABILITIES = 501, //AP -> MD LPPeIpAddress_IpAddressCapabilities
185 AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_QUERY_INFORMATION = 504, //MD -> AP null
186 AGPS_MD_HUGE_DATA_TYPE_LPPE_IPADDRESS_REPLY_INFORMATION = 505, //AP -> MD LPPeIpAddress_IpAddressInformation
187 // LPPe AGNSS
188 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_REQUEST_ASSIST_DATA = 600, //AP -> MD lpp_lppe_ha_gnss_ad_req_struct
189 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_IONO = 610, //MD -> AP gnss_ha_common_ionospheric_model_struct
190 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_TROP = 611, //MD -> AP gnss_ha_common_troposphere_model_struct
191 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_ALT = 612, //MD -> AP gnss_ha_common_altitude_assist_struct
192 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_SOLAR = 613, //MD -> AP gnss_ha_common_solar_radiation_struct
193 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_COMMON_CCP = 614, //MD -> AP gnss_ha_common_ccp_assist_struct
194 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_GENERIC_CCP = 630, //MD -> AP gnss_ha_generic_ccp_assist_struct
195 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_GENERIC_DM = 631, //MD -> AP gnss_ha_generic_degradation_model_struct
196 AGPS_MD_HUGE_DATA_TYPE_LPPE_AGNSS_PROVIDE_ASSIST_DATA_ACK = 650, //AP -> MD lpp_lppe_ha_gnss_ad_ack_st
197 // GPS chip and MD timing sync
198 AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_REQ = 700, //AP -> MD mnl_md_time_sync_req_struct
199 AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_RSP = 701, //AP -> MD mnl_md_time_sync_rsp_struct
200 AGPS_MD_HUGE_DATA_TYPE_TIME_INFO_RSP = 702, //AP -> MD mnl_md_time_info_rsp_struct
201 AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_IND = 703, //MD -> AP mnl_md_time_sync_ind_struct
202 AGPS_MD_HUGE_DATA_TYPE_TIME_SYNC_CNF = 704, //MD -> AP mnl_md_time_sync_cnf_struct
203 // End
204 AGPS_MD_HUGE_DATA_TYPE_LPPE_END = 2147483647, //make sure this enum is 4 bytes in compile time
205} agps_md_huge_data_msg_id;
206
207typedef struct {
208 int version; //use AGPS_MD_INTERFACE_VERSION
209 short type; //refer to agps_md_type
210 short len; //data length, not include header's size
211} agps_md_header;
212
213typedef struct {
214 char pmtk[256];
215} agps_md_pmtk;
216
217typedef struct {
218 agps_md_reset_data flags; //just hardcode 0x3f
219} agps_md_gps_reset_ind;
220/*
221typedef struct {
222 //nothing
223} agps_md_gps_reset_rsp;
224*/
225typedef struct {
226 #define AGPS_MD_GPS_OPEN_IND_TYPE_NILR 0
227 #define AGPS_MD_GPS_OPEN_IND_TYPE_MTLR 1
228 #define AGPS_MD_GPS_OPEN_IND_TYPE_MOLR 2
229 #define AGPS_MD_GPS_OPEN_IND_TYPE_QUERY 3
230 #define AGPS_MD_GPS_OPEN_IND_TYPE_SUPL 4
231 char type; //refer to AGPS_MD_GPS_OPEN_IND_TYPE_
232} agps_md_gps_open_ind;
233
234typedef struct {
235 #define AGPS_MD_GPS_OPEN_RSP_RESULT_DENY 0
236 #define AGPS_MD_GPS_OPEN_RSP_RESULT_ACCEPT 1
237 char result; //refer to AGPS_MD_GPS_OPEN_RSP_RESULT_
238
239 #define AGPS_MD_GPS_OPEN_RSP_RESULT_CP_AUTO_RESET_DISABLED 0
240 #define AGPS_MD_GPS_OPEN_RSP_RESULT_CP_AUTO_RESET_ENABLED 1
241 char cp_auto_reset; //refer to AGPS_MD_GPS_OPEN_RSP_RESULT_CP_AUTO_RESET_
242} agps_md_gps_open_rsp;
243
244/*
245typedef struct {
246 //nothing
247} agps_md_gps_close_ind;
248
249typedef struct {
250 //nothing
251} agps_md_gps_close_rsp;
252
253typedef struct {
254 //nothing
255} agps_md_session_abort_req;
256
257typedef struct {
258 //nothing
259} agps_md_session_abort_rsp;
260
261typedef struct {
262 //nothing
263} agps_md_mdt_supl_done_rsp;
264
265*/
266typedef struct {
267 short length;
268 char pdu[300];
269} position_protocol_pdu;
270
271typedef struct {
272 #define AGPS_MD_MOLR_BEGIN_POS_TECH_AGNSS (1 << 0)
273 #define AGPS_MD_MOLR_BEGIN_POS_TECH_ECID (1 << 1)
274 #define AGPS_MD_MOLR_BEGIN_POS_TECH_OTDOA (1 << 2)
275 int pos_tech_bitmap; //refer to AGPS_MD_MOLR_BEGIN_POS_TECH_
276 #define AGPS_MD_MOLR_BEGIN_REQ_MOLR_TYPE_LOC_ESTIMATE 0
277 #define AGPS_MD_MOLR_BEGIN_REQ_MOLR_TYPE_ASSIST_DATA 1
278 char molr_type; //refer to AGPS_MD_MOLR_BEGIN_REQ_MOLR_TYPE_
279 char gps_assist_data_used; //0=disabled 1=enabled
280 int gps_assist_data; //0x6f hardcode
281 char external_addr_used; //0=disabled 1=enabled
282 char external_addr[20];
283 char mlc_number_used; //0=disabled 1=enabled
284 char mlc_number[20];
285 int pos_protocol_pdu_num;
286 position_protocol_pdu pos_protocol_pdu[3];
287} agps_md_molr_begin_req;
288
289typedef struct {
290 #define AGPS_MD_MOLR_BEGIN_RSP_RESULT_FAIL 0
291 #define AGPS_MD_MOLR_BEGIN_RSP_RESULT_SUCCESS 1
292 char result; ///refer to AGPS_MD_MOLR_BEGIN_RSP_RESULT_
293 char location_used; //0=disabled 1=enabled
294 agps_md_gps_location location;
295} agps_md_molr_begin_rsp;
296
297typedef struct {
298 #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_LOCATION_ALLOWED 0
299 #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_VERIFY_ALLOW_IF_NO_RSP 1
300 #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_VERIFY_DENY_IF_NO_RSP 2
301 #define AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_NOTIFY_TO_MS_USER_LOCATION_NOT_ALLOWED 3
302 int session_id;
303 char notify_type; //refer to AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_
304 char requestor_id[160]; //ASCII string
305 char client_name[160]; //ASCII string
306} agps_md_mtlr_begin_ind;
307
308typedef struct {
309 #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_LOCATION_ALLOWED 0
310 #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_VERIFY_ALLOW_IF_NO_RSP 1
311 #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_VERIFY_DENY_IF_NO_RSP 2
312 #define AGPS_MD_MTLR_BEGIN_2_IND_NOTIFY_TYPE_NOTIFY_TO_MS_USER_LOCATION_NOT_ALLOWED 3
313 int session_id;
314 char notify_type; //refer to AGPS_MD_MTLR_BEGIN_IND_NOTIFY_TYPE_
315 char requestor_id[160];
316 int requestor_id_len;
317 char client_name[160];
318 int client_name_len;
319 #define AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_GSM7 1
320 #define AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_UTF8 2
321 #define AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_UCS2 3
322 char requestor_id_encoding_type; //refer to AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_
323 char client_name_encoding_type; //refer to AGPS_MD_MTLR_BEGIN_2_IND_ENCODING_TYPE_
324} agps_md_mtlr_begin_2_ind;
325
326typedef struct {
327 #define AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND_DENY 0
328 #define AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND_ACCEPT 1
329 #define AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND_NO_RESPOND 2
330 int session_id;
331 char user_respond; //refer to AGPS_MD_MTLR_BEGIN_RSP_USER_RESPOND
332} agps_md_mtlr_begin_rsp;
333/*
334typedef struct {
335 //nothing
336} agps_md_nbr_cell_info_reg_req;
337*/
338typedef struct {
339 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_GSM 1
340 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_UMTS 2
341 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_LTE 4
342 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_NR 9
343 char rat_mode;
344 char is_nbr_info_valid;
345 agps_ps_nbr_cell_info_union_type ps_nbr_cell_info_union;
346} agps_md_nbr_cell_info_reg_cnf;
347/*
348typedef struct {
349 //nothing
350} agps_md_nbr_cell_info_dereg_req;
351
352typedef struct {
353 //nothing
354} agps_md_nbr_cell_info_dereg_cnf;
355*/
356
357typedef struct {
358 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_GSM 1
359 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_UMTS 2
360 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_LTE 4
361 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_CDMA 8 // IS801 Over SUPL
362 #define AGPS_MD_NBR_CELL_INFO_RAT_MODE_NR 9
363 char rat_mode;
364 char is_nbr_info_valid;
365 agps_ps_nbr_cell_info_union_type ps_nbr_cell_info_union;
366} agps_md_nbr_cell_info_ind;
367
368typedef struct {
369 char mode; // 0=off 1=on
370} agps_md_auto_test_ind;
371
372typedef struct {
373 #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_SET_TO_CP 0
374 #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_SET_TO_UP 1
375 #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_CP_SET_TO_LOC_EST 2
376 #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_CP_SET_TO_ASSIT_DATA 3
377 #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_UP_SET_TO_MA 4
378 #define AGPS_MD_AUTO_CP_UP_STATUS_MODE_UP_SET_TO_MB 5
379 char mode; //refer to AGPS_MD_CP_UP_STATUS_MODE_
380} agps_md_auto_cp_up_status_ind;
381/*
382typedef struct {
383 //nothing
384} agps_md_auto_molr_start_ind;
385
386typedef struct {
387 //nothing
388} agps_md_auto_molr_stop_ind;
389*/
390typedef struct {
391 #define AGPS_MD_AUTO_MTLR_RESPONSE_IND_RESPONSE_REJECT 0
392 #define AGPS_MD_AUTO_MTLR_RESPONSE_IND_RESPONSE_ACCEPT 1
393 char response; //refer to AGPS_MD_MTLR_RESPONSE_IND_RESPONSE_
394 int session_id;
395} agps_md_auto_mtlr_response_ind;
396
397typedef struct {
398 #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_1 1
399 #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_2 2
400 #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_3 3
401 #define AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_SIM_4 4
402 char sim_id; //refer to AGPS_MD_EMERGENCY_CALL_IND_SIM_ID_
403
404 #define AGPS_MD_EMERGENCY_CALL_IND_STATE_DIALED 0
405 #define AGPS_MD_EMERGENCY_CALL_IND_STATE_ENDED 1
406 char state; //refer to AGPS_MD_EMERGENCY_CALL_IND_STATE_
407} agps_md_emergency_call_ind;
408
409typedef struct {
410 #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_1 1
411 #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_2 2
412 #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_3 3
413 #define AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_SIM_4 4
414 char sim_id; //refer to AGPS_MD_EMERGENCY_TEXT_IND_SIM_ID_
415
416 #define AGPS_MD_EMERGENCY_TEXT_IND_STATE_START 0
417 #define AGPS_MD_EMERGENCY_TEXT_IND_STATE_END 1
418 char state; //refer to AGPS_MD_EMERGENCY_TEXT_IND_STATE_
419} agps_md_emergency_text_ind;
420
421typedef struct {
422 #define CP_SUPPORT_AGNSS 0x01
423 #define CP_SUPPORT_OTDOA 0x02
424 #define CP_SUPPORT_ECID 0x04
425 #define CP_SUPPORT_CONVENTIONAL_GPS 0x08
426 // #define CP_SUPPORT_LPP_EXTENSION 0x10 // Use cp_lppe_enable instead
427 #define CP_SUPPORT_INTER_FREQ_OTDOA 0x20
428 char cp_gsm_disabled;
429 char cp_umts_disabled;
430 char cp_lte_disabled;
431 char cp_lppe_enable;
432 char lppe_network_location_disable;
433 char reject_non911_nilr_enable;
434 char battery_percentage; // the default value is 100 if AGPS is also not synced from framework layer
435 // and it will be udpated per 5% of battery level
436 char cp_nr_disabled;
437 char cp_guard_time_enable;
438 char cp_capability_ctrl_valid;
439 char reserved[2]; // Compiler will put 2 bytes here for alignment. We can put other options in the future
440 int cp_guard_time;
441 int cp_capability_ctrl;
442} agps_md_sim_info_req;
443
444typedef struct {
445 #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_SINGLE 1
446 #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_GEMINI 2
447 #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_GEMINI_3 3
448 #define AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_GEMINI_4 4
449 char sim_number; //refer to AGPS_MD_SIM_INFO_RSP_SIM_NUMBER_
450 #define AGPS_MD_SIM_INFO_RSP_MD_TYPE_FDD 0
451 #define AGPS_MD_SIM_INFO_RSP_MD_TYPE_TDD 1
452 char md_type;
453 #define AGPS_MD_SIM_INFO_RSP_SUPPORT_EUTRAN_BAND_MAX 50
454 char support_lpp_ecid;
455 char support_lpp_otdoa;
456 char support_eutran_band_num;
457 short support_eutran_band_list[AGPS_MD_SIM_INFO_RSP_SUPPORT_EUTRAN_BAND_MAX];
458 char support_lpp_otdoa_nbr_cell_list;
459 char support_supl_flow_ind;
460 char support_location_settings;
461 char support_cp_lppe;
462 char support_rat_2g;
463 char support_rat_3g;
464 char support_rat_4g;
465 char support_ue_rx_tx_sup_tdd_r13;
466 char support_rat_5g;
467 char support_lpp_inter_rat_otdoa;
468 char support_md_time_sync; // GNSS Time Sync between mnl annd modem via huge data transfer
469 char disable_lpp_inter_freq_otdoa;
470} agps_md_sim_info_rsp, agps_md_sim_info_ind;
471/*
472typedef struct {
473 //nothing
474} agps_md_service_state_req;
475*/
476typedef struct {
477 int state_bitmap; //0=out of service 1=in service
478} agps_md_service_state_rsp;
479/*
480typedef struct {
481 //nothing
482} agps_md_roaming_state_req;
483*/
484typedef struct {
485 int state_bitmap; //0=local or unknown 1=roaming
486} agps_md_roaming_state_rsp;
487/*
488typedef struct {
489 //nothing
490} agps_md_data_connection_state_req;
491*/
492typedef struct {
493 int state_bitmap; //0=disconnected or unknown 1=connected
494} agps_md_data_connection_state_rsp;
495
496typedef struct {
497 #define AGPS_MD_LOC_SOURCE_NONE 0x00
498 #define AGPS_MD_LOC_SOURCE_GNSS 0x01
499 #define AGPS_MD_LOC_SOURCE_NLP 0x02
500 #define AGPS_MD_LOC_SOURCE_SENSOR 0x04
501 double lat;
502 double lng;
503 int acc; // meter
504 int loc_source; // bitmap of AGPS_MD_LOC_SOURCE_xxx
505 char utc_time_valid;
506 unsigned long long utc_time; //the number of UTC seconds in 1ms units since 00:00:00 on Gregorian calendar date 1 January, 1970.
507} agps_md_location_ntf;
508
509typedef struct {
510 unsigned long long utc_time; //the number of UTC seconds in 1ms units since 00:00:00 on Gregorian calendar date 1 January, 1970.
511} agps_md_gnss_time_ntf;
512
513typedef struct {
514 #define AGPS_MD_CP_RAT_MODE_GSM 0x01
515 #define AGPS_MD_CP_RAT_MODE_UMTS 0x02
516 #define AGPS_MD_CP_RAT_MODE_LTE 0x04
517 #define AGPS_MD_CP_RAT_MODE_NR 0x08
518 int rat_mode_flags;
519
520 char gsm_enabled;
521 char umts_enabled;
522 char lte_enabled;
523 char nr_enabled;
524} agps_md_cp_service_config_ntf;
525
526typedef struct {
527 char enabled; // 0: reject most location except emergency, 1: allow all location request
528 char gnss_visibility_control_status; // 0: gvc reject network-initiated location,
529 // 1: gvc allow network-initiated location
530 char cp_gvc_enable; // 0: do not check gvc, 1: consider gvc status
531} agps_md_location_setting_ntf;
532
533typedef struct {
534 #define AGPS_MD_SUPL_FLOW_IND_DIRECTION_NW_TO_UE 0 // LS to MS in operator's sample excel
535 #define AGPS_MD_SUPL_FLOW_IND_DIRECTION_UE_TO_NW 1 // MS to LS
536 char direction;
537 #define AGPS_MD_SUPL_FLOW_IND_TYPE_UNKNOWN 0
538 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_INIT 1
539 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_START 2
540 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_RESPONSE 3
541 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_POS_INIT 4
542 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_POS 5
543 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_END 6
544 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_TRIGGERED_START 7
545 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_TRIGGERED_RESPONSE 8
546 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_TRIGGERED_STOP 9
547 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_NOTIFY 10
548 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_NOTIFY_RESPONSE 11
549 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_SET_INIT 12
550 #define AGPS_MD_SUPL_FLOW_IND_TYPE_SUPL_REPORT 13
551 char type;
552 int message_size;
553 int session_id;
554 int message_id;
555 int pdu_id;
556 int pdu_size;
557 char pdu[3072];
558} agps_md_supl_flow_ind;
559/*
560typedef struct {
561 //nothing
562} agps_md_supl_flow_rsp;
563
564typedef struct {
565 //nothing
566} agps_md_modem_reboot_ind;
567*/
568/* Structure for LBS AP setting query API */
569typedef agps_md_sim_info_req lbs_setting_generic_ap;
570#endif
571