rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | |
| 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 | |
| 39 | typedef 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 | |
| 54 | typedef 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 | |
| 69 | typedef 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 | |
| 147 | typedef 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 | |
| 207 | typedef 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 | |
| 213 | typedef struct { |
| 214 | char pmtk[256]; |
| 215 | } agps_md_pmtk; |
| 216 | |
| 217 | typedef struct { |
| 218 | agps_md_reset_data flags; //just hardcode 0x3f |
| 219 | } agps_md_gps_reset_ind; |
| 220 | /* |
| 221 | typedef struct { |
| 222 | //nothing |
| 223 | } agps_md_gps_reset_rsp; |
| 224 | */ |
| 225 | typedef 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 | |
| 234 | typedef 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 | /* |
| 245 | typedef struct { |
| 246 | //nothing |
| 247 | } agps_md_gps_close_ind; |
| 248 | |
| 249 | typedef struct { |
| 250 | //nothing |
| 251 | } agps_md_gps_close_rsp; |
| 252 | |
| 253 | typedef struct { |
| 254 | //nothing |
| 255 | } agps_md_session_abort_req; |
| 256 | |
| 257 | typedef struct { |
| 258 | //nothing |
| 259 | } agps_md_session_abort_rsp; |
| 260 | |
| 261 | typedef struct { |
| 262 | //nothing |
| 263 | } agps_md_mdt_supl_done_rsp; |
| 264 | |
| 265 | */ |
| 266 | typedef struct { |
| 267 | short length; |
| 268 | char pdu[300]; |
| 269 | } position_protocol_pdu; |
| 270 | |
| 271 | typedef 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 | |
| 289 | typedef 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 | |
| 297 | typedef 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 | |
| 308 | typedef 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 | |
| 326 | typedef 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 | /* |
| 334 | typedef struct { |
| 335 | //nothing |
| 336 | } agps_md_nbr_cell_info_reg_req; |
| 337 | */ |
| 338 | typedef 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 | /* |
| 348 | typedef struct { |
| 349 | //nothing |
| 350 | } agps_md_nbr_cell_info_dereg_req; |
| 351 | |
| 352 | typedef struct { |
| 353 | //nothing |
| 354 | } agps_md_nbr_cell_info_dereg_cnf; |
| 355 | */ |
| 356 | |
| 357 | typedef 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 | |
| 368 | typedef struct { |
| 369 | char mode; // 0=off 1=on |
| 370 | } agps_md_auto_test_ind; |
| 371 | |
| 372 | typedef 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 | /* |
| 382 | typedef struct { |
| 383 | //nothing |
| 384 | } agps_md_auto_molr_start_ind; |
| 385 | |
| 386 | typedef struct { |
| 387 | //nothing |
| 388 | } agps_md_auto_molr_stop_ind; |
| 389 | */ |
| 390 | typedef 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 | |
| 397 | typedef 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 | |
| 409 | typedef 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 | |
| 421 | typedef 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 | |
| 444 | typedef 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 | /* |
| 472 | typedef struct { |
| 473 | //nothing |
| 474 | } agps_md_service_state_req; |
| 475 | */ |
| 476 | typedef struct { |
| 477 | int state_bitmap; //0=out of service 1=in service |
| 478 | } agps_md_service_state_rsp; |
| 479 | /* |
| 480 | typedef struct { |
| 481 | //nothing |
| 482 | } agps_md_roaming_state_req; |
| 483 | */ |
| 484 | typedef struct { |
| 485 | int state_bitmap; //0=local or unknown 1=roaming |
| 486 | } agps_md_roaming_state_rsp; |
| 487 | /* |
| 488 | typedef struct { |
| 489 | //nothing |
| 490 | } agps_md_data_connection_state_req; |
| 491 | */ |
| 492 | typedef struct { |
| 493 | int state_bitmap; //0=disconnected or unknown 1=connected |
| 494 | } agps_md_data_connection_state_rsp; |
| 495 | |
| 496 | typedef 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 | |
| 509 | typedef 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 | |
| 513 | typedef 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 | |
| 526 | typedef 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 | |
| 533 | typedef 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 | /* |
| 560 | typedef struct { |
| 561 | //nothing |
| 562 | } agps_md_supl_flow_rsp; |
| 563 | |
| 564 | typedef struct { |
| 565 | //nothing |
| 566 | } agps_md_modem_reboot_ind; |
| 567 | */ |
| 568 | /* Structure for LBS AP setting query API */ |
| 569 | typedef agps_md_sim_info_req lbs_setting_generic_ap; |
| 570 | #endif |
| 571 | |