1bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo/* Copyright (c) 2009-2014, The Linux Foundation. All rights reserved. 234ee09551764b045fdc02df754157473125edf60Kevin Tang * 334ee09551764b045fdc02df754157473125edf60Kevin Tang * Redistribution and use in source and binary forms, with or without 434ee09551764b045fdc02df754157473125edf60Kevin Tang * modification, are permitted provided that the following conditions are 534ee09551764b045fdc02df754157473125edf60Kevin Tang * met: 634ee09551764b045fdc02df754157473125edf60Kevin Tang * * Redistributions of source code must retain the above copyright 734ee09551764b045fdc02df754157473125edf60Kevin Tang * notice, this list of conditions and the following disclaimer. 834ee09551764b045fdc02df754157473125edf60Kevin Tang * * Redistributions in binary form must reproduce the above 934ee09551764b045fdc02df754157473125edf60Kevin Tang * copyright notice, this list of conditions and the following 1034ee09551764b045fdc02df754157473125edf60Kevin Tang * disclaimer in the documentation and/or other materials provided 1134ee09551764b045fdc02df754157473125edf60Kevin Tang * with the distribution. 12e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo * * Neither the name of The Linux Foundation, nor the names of its 1334ee09551764b045fdc02df754157473125edf60Kevin Tang * contributors may be used to endorse or promote products derived 1434ee09551764b045fdc02df754157473125edf60Kevin Tang * from this software without specific prior written permission. 1534ee09551764b045fdc02df754157473125edf60Kevin Tang * 1634ee09551764b045fdc02df754157473125edf60Kevin Tang * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 1734ee09551764b045fdc02df754157473125edf60Kevin Tang * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1834ee09551764b045fdc02df754157473125edf60Kevin Tang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 1934ee09551764b045fdc02df754157473125edf60Kevin Tang * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 2034ee09551764b045fdc02df754157473125edf60Kevin Tang * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2134ee09551764b045fdc02df754157473125edf60Kevin Tang * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2234ee09551764b045fdc02df754157473125edf60Kevin Tang * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2334ee09551764b045fdc02df754157473125edf60Kevin Tang * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2434ee09551764b045fdc02df754157473125edf60Kevin Tang * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2534ee09551764b045fdc02df754157473125edf60Kevin Tang * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 2634ee09551764b045fdc02df754157473125edf60Kevin Tang * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2734ee09551764b045fdc02df754157473125edf60Kevin Tang * 2834ee09551764b045fdc02df754157473125edf60Kevin Tang */ 2934ee09551764b045fdc02df754157473125edf60Kevin Tang 3034ee09551764b045fdc02df754157473125edf60Kevin Tang#ifndef LOC_ENG_H 3134ee09551764b045fdc02df754157473125edf60Kevin Tang#define LOC_ENG_H 3234ee09551764b045fdc02df754157473125edf60Kevin Tang 3334ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef __cplusplus 3434ee09551764b045fdc02df754157473125edf60Kevin Tangextern "C" { 3534ee09551764b045fdc02df754157473125edf60Kevin Tang#endif /* __cplusplus */ 3634ee09551764b045fdc02df754157473125edf60Kevin Tang 3734ee09551764b045fdc02df754157473125edf60Kevin Tang// Uncomment to keep all LOG messages (LOGD, LOGI, LOGV, etc.) 3834ee09551764b045fdc02df754157473125edf60Kevin Tang#define MAX_NUM_ATL_CONNECTIONS 2 39e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo 4034ee09551764b045fdc02df754157473125edf60Kevin Tang// Define boolean type to be used by libgps on loc api module 4134ee09551764b045fdc02df754157473125edf60Kevin Tangtypedef unsigned char boolean; 4234ee09551764b045fdc02df754157473125edf60Kevin Tang 4334ee09551764b045fdc02df754157473125edf60Kevin Tang#ifndef TRUE 4434ee09551764b045fdc02df754157473125edf60Kevin Tang#define TRUE 1 4534ee09551764b045fdc02df754157473125edf60Kevin Tang#endif 4634ee09551764b045fdc02df754157473125edf60Kevin Tang 4734ee09551764b045fdc02df754157473125edf60Kevin Tang#ifndef FALSE 4834ee09551764b045fdc02df754157473125edf60Kevin Tang#define FALSE 0 4934ee09551764b045fdc02df754157473125edf60Kevin Tang#endif 5034ee09551764b045fdc02df754157473125edf60Kevin Tang 5134ee09551764b045fdc02df754157473125edf60Kevin Tang#include <loc.h> 5234ee09551764b045fdc02df754157473125edf60Kevin Tang#include <loc_eng_xtra.h> 5334ee09551764b045fdc02df754157473125edf60Kevin Tang#include <loc_eng_ni.h> 5434ee09551764b045fdc02df754157473125edf60Kevin Tang#include <loc_eng_agps.h> 5534ee09551764b045fdc02df754157473125edf60Kevin Tang#include <loc_cfg.h> 5634ee09551764b045fdc02df754157473125edf60Kevin Tang#include <loc_log.h> 5734ee09551764b045fdc02df754157473125edf60Kevin Tang#include <log_util.h> 5834ee09551764b045fdc02df754157473125edf60Kevin Tang#include <loc_eng_agps.h> 59e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo#include <LocEngAdapter.h> 6034ee09551764b045fdc02df754157473125edf60Kevin Tang 6134ee09551764b045fdc02df754157473125edf60Kevin Tang// The data connection minimal open time 6234ee09551764b045fdc02df754157473125edf60Kevin Tang#define DATA_OPEN_MIN_TIME 1 /* sec */ 6334ee09551764b045fdc02df754157473125edf60Kevin Tang 6434ee09551764b045fdc02df754157473125edf60Kevin Tang// The system sees GPS engine turns off after inactive for this period of time 6534ee09551764b045fdc02df754157473125edf60Kevin Tang#define GPS_AUTO_OFF_TIME 2 /* secs */ 6634ee09551764b045fdc02df754157473125edf60Kevin Tang#define SUCCESS TRUE 6734ee09551764b045fdc02df754157473125edf60Kevin Tang#define FAILURE FALSE 6834ee09551764b045fdc02df754157473125edf60Kevin Tang#define INVALID_ATL_CONNECTION_HANDLE -1 6934ee09551764b045fdc02df754157473125edf60Kevin Tang 70bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define MAX_XTRA_SERVER_URL_LENGTH 256 71bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo 72e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russoenum loc_nmea_provider_e_type { 73e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo NMEA_PROVIDER_AP = 0, // Application Processor Provider of NMEA 74e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo NMEA_PROVIDER_MP // Modem Processor Provider of NMEA 75e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo}; 7634ee09551764b045fdc02df754157473125edf60Kevin Tang 7734ee09551764b045fdc02df754157473125edf60Kevin Tangenum loc_mute_session_e_type { 7834ee09551764b045fdc02df754157473125edf60Kevin Tang LOC_MUTE_SESS_NONE = 0, 7934ee09551764b045fdc02df754157473125edf60Kevin Tang LOC_MUTE_SESS_WAIT, 8034ee09551764b045fdc02df754157473125edf60Kevin Tang LOC_MUTE_SESS_IN_SESSION 8134ee09551764b045fdc02df754157473125edf60Kevin Tang}; 8234ee09551764b045fdc02df754157473125edf60Kevin Tang 8334ee09551764b045fdc02df754157473125edf60Kevin Tang// Module data 84e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russotypedef struct loc_eng_data_s 8534ee09551764b045fdc02df754157473125edf60Kevin Tang{ 86e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo LocEngAdapter *adapter; 8734ee09551764b045fdc02df754157473125edf60Kevin Tang loc_location_cb_ext location_cb; 8834ee09551764b045fdc02df754157473125edf60Kevin Tang gps_status_callback status_cb; 8934ee09551764b045fdc02df754157473125edf60Kevin Tang loc_sv_status_cb_ext sv_status_cb; 90e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo agps_status_extended agps_status_cb; 9134ee09551764b045fdc02df754157473125edf60Kevin Tang gps_nmea_callback nmea_cb; 9234ee09551764b045fdc02df754157473125edf60Kevin Tang gps_ni_notify_callback ni_notify_cb; 938aa503a872e8c8cf241061f6ffed4e9fba125ffeKevin Tang gps_set_capabilities set_capabilities_cb; 9434ee09551764b045fdc02df754157473125edf60Kevin Tang gps_acquire_wakelock acquire_wakelock_cb; 9534ee09551764b045fdc02df754157473125edf60Kevin Tang gps_release_wakelock release_wakelock_cb; 96e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo gps_request_utc_time request_utc_time_cb; 978aac9d301fc5aa83071492803f4335b73f2604e3Vineeta Srivastava gps_measurement_callback gps_measurement_cb; 9834ee09551764b045fdc02df754157473125edf60Kevin Tang boolean intermediateFix; 9934ee09551764b045fdc02df754157473125edf60Kevin Tang AGpsStatusValue agps_status; 10034ee09551764b045fdc02df754157473125edf60Kevin Tang loc_eng_xtra_data_s_type xtra_module_data; 10134ee09551764b045fdc02df754157473125edf60Kevin Tang loc_eng_ni_data_s_type loc_eng_ni_data; 10234ee09551764b045fdc02df754157473125edf60Kevin Tang 10334ee09551764b045fdc02df754157473125edf60Kevin Tang // AGPS state machines 10434ee09551764b045fdc02df754157473125edf60Kevin Tang AgpsStateMachine* agnss_nif; 10534ee09551764b045fdc02df754157473125edf60Kevin Tang AgpsStateMachine* internet_nif; 106e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo AgpsStateMachine* wifi_nif; 107e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo //State machine for Data Services 108e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo AgpsStateMachine* ds_nif; 10934ee09551764b045fdc02df754157473125edf60Kevin Tang 11034ee09551764b045fdc02df754157473125edf60Kevin Tang // GPS engine status 11134ee09551764b045fdc02df754157473125edf60Kevin Tang GpsStatusValue engine_status; 11234ee09551764b045fdc02df754157473125edf60Kevin Tang GpsStatusValue fix_session_status; 11334ee09551764b045fdc02df754157473125edf60Kevin Tang 11434ee09551764b045fdc02df754157473125edf60Kevin Tang // Aiding data information to be deleted, aiding data can only be deleted when GPS engine is off 11534ee09551764b045fdc02df754157473125edf60Kevin Tang GpsAidingData aiding_data_for_deletion; 11634ee09551764b045fdc02df754157473125edf60Kevin Tang 11734ee09551764b045fdc02df754157473125edf60Kevin Tang // For muting session broadcast 11834ee09551764b045fdc02df754157473125edf60Kevin Tang loc_mute_session_e_type mute_session_state; 11934ee09551764b045fdc02df754157473125edf60Kevin Tang 120e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo // For nmea generation 121e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo boolean generateNmea; 122e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo uint32_t sv_used_mask; 123e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo float hdop; 124e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo float pdop; 125e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo float vdop; 126e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo 12734ee09551764b045fdc02df754157473125edf60Kevin Tang // Address buffers, for addressing setting before init 12834ee09551764b045fdc02df754157473125edf60Kevin Tang int supl_host_set; 12934ee09551764b045fdc02df754157473125edf60Kevin Tang char supl_host_buf[101]; 13034ee09551764b045fdc02df754157473125edf60Kevin Tang int supl_port_buf; 13134ee09551764b045fdc02df754157473125edf60Kevin Tang int c2k_host_set; 13234ee09551764b045fdc02df754157473125edf60Kevin Tang char c2k_host_buf[101]; 13334ee09551764b045fdc02df754157473125edf60Kevin Tang int c2k_port_buf; 13434ee09551764b045fdc02df754157473125edf60Kevin Tang int mpc_host_set; 13534ee09551764b045fdc02df754157473125edf60Kevin Tang char mpc_host_buf[101]; 13634ee09551764b045fdc02df754157473125edf60Kevin Tang int mpc_port_buf; 137e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo 138e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo loc_ext_parser location_ext_parser; 139e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo loc_ext_parser sv_ext_parser; 14034ee09551764b045fdc02df754157473125edf60Kevin Tang} loc_eng_data_s_type; 14134ee09551764b045fdc02df754157473125edf60Kevin Tang 142e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo/* GPS.conf support */ 1431300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang/* NOTE: the implementaiton of the parser casts number 1441300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang fields to 32 bit. To ensure all 'n' fields working, 1451300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang they must all be 32 bit fields. */ 146e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russotypedef struct loc_gps_cfg_s 147e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo{ 148fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t INTERMEDIATE_POS; 149fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t ACCURACY_THRES; 150fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SUPL_VER; 151bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo uint32_t SUPL_MODE; 152fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t CAPABILITIES; 153fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t LPP_PROFILE; 154bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo uint32_t XTRA_VERSION_CHECK; 155bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo char XTRA_SERVER_1[MAX_XTRA_SERVER_URL_LENGTH]; 156bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo char XTRA_SERVER_2[MAX_XTRA_SERVER_URL_LENGTH]; 157bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo char XTRA_SERVER_3[MAX_XTRA_SERVER_URL_LENGTH]; 158bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo uint32_t USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL; 1591300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang uint32_t NMEA_PROVIDER; 1601300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang uint32_t GPS_LOCK; 161fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t A_GLONASS_POS_PROTOCOL_SELECT; 162fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t AGPS_CERT_WRITABLE_MASK; 163e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo} loc_gps_cfg_s_type; 164e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo 1651300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang/* NOTE: the implementaiton of the parser casts number 1661300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang fields to 32 bit. To ensure all 'n' fields working, 1671300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang they must all be 32 bit fields. */ 1681300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang/* Meanwhile, *_valid fields are 8 bit fields, and 'f' 1691300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang fields are double. Rigid as they are, it is the 1701300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang the status quo, until the parsing mechanism is 1711300ae618a0e750e41a5ee22bc242a8e0a7951b5Kevin Tang change, that is. */ 172e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russotypedef struct 173e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo{ 174e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo uint8_t GYRO_BIAS_RANDOM_WALK_VALID; 175e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo double GYRO_BIAS_RANDOM_WALK; 176fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_ACCEL_BATCHES_PER_SEC; 177fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH; 178fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_GYRO_BATCHES_PER_SEC; 179fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH; 180fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_ACCEL_BATCHES_PER_SEC_HIGH; 181fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH; 182fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_GYRO_BATCHES_PER_SEC_HIGH; 183fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH; 184fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_CONTROL_MODE; 185fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_USAGE; 186fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_ALGORITHM_CONFIG_MASK; 187e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo uint8_t ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 188e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo double ACCEL_RANDOM_WALK_SPECTRAL_DENSITY; 189e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo uint8_t ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 190e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo double ANGLE_RANDOM_WALK_SPECTRAL_DENSITY; 191e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo uint8_t RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 192e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo double RATE_RANDOM_WALK_SPECTRAL_DENSITY; 193e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo uint8_t VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 194e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo double VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY; 195fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang uint32_t SENSOR_PROVIDER; 196e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo} loc_sap_cfg_s_type; 197e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo 198e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russoextern loc_gps_cfg_s_type gps_conf; 199e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russoextern loc_sap_cfg_s_type sap_conf; 20034ee09551764b045fdc02df754157473125edf60Kevin Tang 201bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo 202bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russouint32_t getCarrierCapabilities(); 203bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo 204bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo//loc_eng functions 20534ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_init(loc_eng_data_s_type &loc_eng_data, 20634ee09551764b045fdc02df754157473125edf60Kevin Tang LocCallbacks* callbacks, 20747ad5e4cf2f6810db3c0e7ec79696496a94b6f0dDante Russo LOC_API_ADAPTER_EVENT_MASK_T event, 20847ad5e4cf2f6810db3c0e7ec79696496a94b6f0dDante Russo ContextBase* context); 20934ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_start(loc_eng_data_s_type &loc_eng_data); 21034ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_stop(loc_eng_data_s_type &loc_eng_data); 21134ee09551764b045fdc02df754157473125edf60Kevin Tangvoid loc_eng_cleanup(loc_eng_data_s_type &loc_eng_data); 21234ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_inject_time(loc_eng_data_s_type &loc_eng_data, 21334ee09551764b045fdc02df754157473125edf60Kevin Tang GpsUtcTime time, int64_t timeReference, 21434ee09551764b045fdc02df754157473125edf60Kevin Tang int uncertainty); 21534ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_inject_location(loc_eng_data_s_type &loc_eng_data, 21634ee09551764b045fdc02df754157473125edf60Kevin Tang double latitude, double longitude, 21734ee09551764b045fdc02df754157473125edf60Kevin Tang float accuracy); 21834ee09551764b045fdc02df754157473125edf60Kevin Tangvoid loc_eng_delete_aiding_data(loc_eng_data_s_type &loc_eng_data, 21934ee09551764b045fdc02df754157473125edf60Kevin Tang GpsAidingData f); 22034ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_set_position_mode(loc_eng_data_s_type &loc_eng_data, 221e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo LocPosMode ¶ms); 22234ee09551764b045fdc02df754157473125edf60Kevin Tangconst void* loc_eng_get_extension(loc_eng_data_s_type &loc_eng_data, 22334ee09551764b045fdc02df754157473125edf60Kevin Tang const char* name); 224bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russoint loc_eng_set_server_proxy(loc_eng_data_s_type &loc_eng_data, 225bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo LocServerType type, const char *hostname, int port); 226bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russovoid loc_eng_mute_one_session(loc_eng_data_s_type &loc_eng_data); 227bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russoint loc_eng_read_config(void); 228bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo 229bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo//loc_eng_agps functions 23034ee09551764b045fdc02df754157473125edf60Kevin Tangvoid loc_eng_agps_init(loc_eng_data_s_type &loc_eng_data, 231e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo AGpsExtCallbacks* callbacks); 232e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russoint loc_eng_agps_open(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType, 23334ee09551764b045fdc02df754157473125edf60Kevin Tang const char* apn, AGpsBearerType bearerType); 234e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russoint loc_eng_agps_closed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType); 235e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russoint loc_eng_agps_open_failed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType); 23634ee09551764b045fdc02df754157473125edf60Kevin Tangvoid loc_eng_agps_ril_update_network_availability(loc_eng_data_s_type &loc_eng_data, 23734ee09551764b045fdc02df754157473125edf60Kevin Tang int avaiable, const char* apn); 238bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russoint loc_eng_agps_install_certificates(loc_eng_data_s_type &loc_eng_data, 239bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo const DerEncodedCertificate* certificates, 240bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo size_t length); 24134ee09551764b045fdc02df754157473125edf60Kevin Tang 242bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo//loc_eng_xtra functions 243bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russoint loc_eng_xtra_init (loc_eng_data_s_type &loc_eng_data, 244e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo GpsXtraExtCallbacks* callbacks); 245bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russoint loc_eng_xtra_inject_data(loc_eng_data_s_type &loc_eng_data, 24634ee09551764b045fdc02df754157473125edf60Kevin Tang char* data, int length); 247bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russoint loc_eng_xtra_request_server(loc_eng_data_s_type &loc_eng_data); 248bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russovoid loc_eng_xtra_version_check(loc_eng_data_s_type &loc_eng_data, int check); 24934ee09551764b045fdc02df754157473125edf60Kevin Tang 250bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo//loc_eng_ni functions 25134ee09551764b045fdc02df754157473125edf60Kevin Tangextern void loc_eng_ni_init(loc_eng_data_s_type &loc_eng_data, 252e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo GpsNiExtCallbacks *callbacks); 25334ee09551764b045fdc02df754157473125edf60Kevin Tangextern void loc_eng_ni_respond(loc_eng_data_s_type &loc_eng_data, 25434ee09551764b045fdc02df754157473125edf60Kevin Tang int notif_id, GpsUserResponseType user_response); 25534ee09551764b045fdc02df754157473125edf60Kevin Tangextern void loc_eng_ni_request_handler(loc_eng_data_s_type &loc_eng_data, 25634ee09551764b045fdc02df754157473125edf60Kevin Tang const GpsNiNotification *notif, 25734ee09551764b045fdc02df754157473125edf60Kevin Tang const void* passThrough); 25834ee09551764b045fdc02df754157473125edf60Kevin Tangextern void loc_eng_ni_reset_on_engine_restart(loc_eng_data_s_type &loc_eng_data); 2598aac9d301fc5aa83071492803f4335b73f2604e3Vineeta Srivastava 260fe660078f05f448ececb0b1170ecd79e600db440Kevin Tangvoid loc_eng_configuration_update (loc_eng_data_s_type &loc_eng_data, 261fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang const char* config_data, int32_t length); 2628aac9d301fc5aa83071492803f4335b73f2604e3Vineeta Srivastavaint loc_eng_gps_measurement_init(loc_eng_data_s_type &loc_eng_data, 2638aac9d301fc5aa83071492803f4335b73f2604e3Vineeta Srivastava GpsMeasurementCallbacks* callbacks); 2648aac9d301fc5aa83071492803f4335b73f2604e3Vineeta Srivastavavoid loc_eng_gps_measurement_close(loc_eng_data_s_type &loc_eng_data); 265fe660078f05f448ececb0b1170ecd79e600db440Kevin Tang 26634ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef __cplusplus 26734ee09551764b045fdc02df754157473125edf60Kevin Tang} 26834ee09551764b045fdc02df754157473125edf60Kevin Tang#endif /* __cplusplus */ 26934ee09551764b045fdc02df754157473125edf60Kevin Tang 27034ee09551764b045fdc02df754157473125edf60Kevin Tang#endif // LOC_ENG_H 271