14035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin/* Copyright (c) 2009-2014, The Linux Foundation. All rights reserved. 24035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * 34035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * Redistribution and use in source and binary forms, with or without 44035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * modification, are permitted provided that the following conditions are 54035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * met: 64035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * * Redistributions of source code must retain the above copyright 74035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * notice, this list of conditions and the following disclaimer. 84035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * * Redistributions in binary form must reproduce the above 94035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * copyright notice, this list of conditions and the following 104035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * disclaimer in the documentation and/or other materials provided 114035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * with the distribution. 124035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * * Neither the name of The Linux Foundation, nor the names of its 134035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * contributors may be used to endorse or promote products derived 144035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * from this software without specific prior written permission. 154035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * 164035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 174035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 184035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 194035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 204035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 214035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 224035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 234035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 244035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 254035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 264035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin * 284035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin */ 294035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 304035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#ifndef LOC_ENG_H 314035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define LOC_ENG_H 324035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 334035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#ifdef __cplusplus 344035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinextern "C" { 354035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#endif /* __cplusplus */ 364035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 374035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin// Uncomment to keep all LOG messages (LOGD, LOGI, LOGV, etc.) 384035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define MAX_NUM_ATL_CONNECTIONS 2 394035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 404035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin// Define boolean type to be used by libgps on loc api module 414035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjintypedef unsigned char boolean; 424035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 434035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#ifndef TRUE 444035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define TRUE 1 454035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#endif 464035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 474035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#ifndef FALSE 484035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define FALSE 0 494035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#endif 504035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 514035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <loc.h> 524035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <loc_eng_xtra.h> 534035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <loc_eng_ni.h> 544035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <loc_eng_agps.h> 554035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <loc_cfg.h> 564035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <loc_log.h> 574035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <log_util.h> 584035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <loc_eng_agps.h> 594035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#include <LocEngAdapter.h> 604035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 614035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin// The data connection minimal open time 624035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define DATA_OPEN_MIN_TIME 1 /* sec */ 634035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 644035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin// The system sees GPS engine turns off after inactive for this period of time 654035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define GPS_AUTO_OFF_TIME 2 /* secs */ 664035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define SUCCESS TRUE 674035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define FAILURE FALSE 684035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define INVALID_ATL_CONNECTION_HANDLE -1 694035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 704035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#define MAX_XTRA_SERVER_URL_LENGTH 256 714035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 724035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinenum loc_nmea_provider_e_type { 734035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin NMEA_PROVIDER_AP = 0, // Application Processor Provider of NMEA 744035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin NMEA_PROVIDER_MP // Modem Processor Provider of NMEA 754035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin}; 764035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 774035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinenum loc_mute_session_e_type { 784035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LOC_MUTE_SESS_NONE = 0, 794035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LOC_MUTE_SESS_WAIT, 804035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LOC_MUTE_SESS_IN_SESSION 814035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin}; 824035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 834035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin// Module data 844035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjintypedef struct loc_eng_data_s 854035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin{ 864035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LocEngAdapter *adapter; 874035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin loc_location_cb_ext location_cb; 884035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_status_callback status_cb; 894035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin loc_sv_status_cb_ext sv_status_cb; 904035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin agps_status_extended agps_status_cb; 914035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_nmea_callback nmea_cb; 924035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_ni_notify_callback ni_notify_cb; 934035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_set_capabilities set_capabilities_cb; 944035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_acquire_wakelock acquire_wakelock_cb; 954035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_release_wakelock release_wakelock_cb; 964035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_request_utc_time request_utc_time_cb; 974035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin gps_measurement_callback gps_measurement_cb; 984035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin boolean intermediateFix; 994035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin AGpsStatusValue agps_status; 1004035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin loc_eng_xtra_data_s_type xtra_module_data; 1014035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin loc_eng_ni_data_s_type loc_eng_ni_data; 1024035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1034035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin // AGPS state machines 1044035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin AgpsStateMachine* agnss_nif; 1054035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin AgpsStateMachine* internet_nif; 1064035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin AgpsStateMachine* wifi_nif; 1074035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin //State machine for Data Services 1084035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin AgpsStateMachine* ds_nif; 1094035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1104035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin // GPS engine status 1114035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsStatusValue engine_status; 1124035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsStatusValue fix_session_status; 1134035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1144035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin // Aiding data information to be deleted, aiding data can only be deleted when GPS engine is off 1154035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsAidingData aiding_data_for_deletion; 1164035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1174035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin // For muting session broadcast 1184035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin loc_mute_session_e_type mute_session_state; 1194035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1204035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin // For nmea generation 1214035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin boolean generateNmea; 1224035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t sv_used_mask; 1234035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin float hdop; 1244035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin float pdop; 1254035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin float vdop; 1264035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1274035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin // Address buffers, for addressing setting before init 1284035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int supl_host_set; 1294035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin char supl_host_buf[101]; 1304035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int supl_port_buf; 1314035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int c2k_host_set; 1324035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin char c2k_host_buf[101]; 1334035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int c2k_port_buf; 1344035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int mpc_host_set; 1354035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin char mpc_host_buf[101]; 1364035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int mpc_port_buf; 1374035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1384035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin loc_ext_parser location_ext_parser; 1394035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin loc_ext_parser sv_ext_parser; 1404035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin} loc_eng_data_s_type; 1414035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1424035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin/* GPS.conf support */ 1434035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin/* NOTE: the implementaiton of the parser casts number 1444035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin fields to 32 bit. To ensure all 'n' fields working, 1454035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin they must all be 32 bit fields. */ 1464035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjintypedef struct loc_gps_cfg_s 1474035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin{ 1484035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t INTERMEDIATE_POS; 1494035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t ACCURACY_THRES; 1504035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SUPL_VER; 1514035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SUPL_MODE; 1524035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t CAPABILITIES; 1534035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t LPP_PROFILE; 1544035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t XTRA_VERSION_CHECK; 1554035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin char XTRA_SERVER_1[MAX_XTRA_SERVER_URL_LENGTH]; 1564035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin char XTRA_SERVER_2[MAX_XTRA_SERVER_URL_LENGTH]; 1574035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin char XTRA_SERVER_3[MAX_XTRA_SERVER_URL_LENGTH]; 1584035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL; 1594035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t NMEA_PROVIDER; 1604035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t GPS_LOCK; 1614035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t A_GLONASS_POS_PROTOCOL_SELECT; 1624035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t AGPS_CERT_WRITABLE_MASK; 1634035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin} loc_gps_cfg_s_type; 1644035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1654035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin/* NOTE: the implementaiton of the parser casts number 1664035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin fields to 32 bit. To ensure all 'n' fields working, 1674035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin they must all be 32 bit fields. */ 1684035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin/* Meanwhile, *_valid fields are 8 bit fields, and 'f' 1694035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin fields are double. Rigid as they are, it is the 1704035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin the status quo, until the parsing mechanism is 1714035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin change, that is. */ 1724035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjintypedef struct 1734035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin{ 1744035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint8_t GYRO_BIAS_RANDOM_WALK_VALID; 1754035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin double GYRO_BIAS_RANDOM_WALK; 1764035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_ACCEL_BATCHES_PER_SEC; 1774035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH; 1784035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_GYRO_BATCHES_PER_SEC; 1794035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH; 1804035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_ACCEL_BATCHES_PER_SEC_HIGH; 1814035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH; 1824035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_GYRO_BATCHES_PER_SEC_HIGH; 1834035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH; 1844035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_CONTROL_MODE; 1854035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_USAGE; 1864035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_ALGORITHM_CONFIG_MASK; 1874035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint8_t ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 1884035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin double ACCEL_RANDOM_WALK_SPECTRAL_DENSITY; 1894035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint8_t ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 1904035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin double ANGLE_RANDOM_WALK_SPECTRAL_DENSITY; 1914035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint8_t RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 1924035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin double RATE_RANDOM_WALK_SPECTRAL_DENSITY; 1934035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint8_t VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID; 1944035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin double VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY; 1954035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin uint32_t SENSOR_PROVIDER; 1964035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin} loc_sap_cfg_s_type; 1974035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 1984035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinextern loc_gps_cfg_s_type gps_conf; 1994035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinextern loc_sap_cfg_s_type sap_conf; 2004035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2014035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2024035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinuint32_t getCarrierCapabilities(); 2034035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2044035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin//loc_eng functions 2054035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_init(loc_eng_data_s_type &loc_eng_data, 2064035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LocCallbacks* callbacks, 2074035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LOC_API_ADAPTER_EVENT_MASK_T event, 2084035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin ContextBase* context); 2094035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_start(loc_eng_data_s_type &loc_eng_data); 2104035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_stop(loc_eng_data_s_type &loc_eng_data); 2114035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_cleanup(loc_eng_data_s_type &loc_eng_data); 2124035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_inject_time(loc_eng_data_s_type &loc_eng_data, 2134035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsUtcTime time, int64_t timeReference, 2144035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int uncertainty); 2154035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_inject_location(loc_eng_data_s_type &loc_eng_data, 2164035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin double latitude, double longitude, 2174035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin float accuracy); 2184035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_delete_aiding_data(loc_eng_data_s_type &loc_eng_data, 2194035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsAidingData f); 2204035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_set_position_mode(loc_eng_data_s_type &loc_eng_data, 2214035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LocPosMode ¶ms); 2224035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinconst void* loc_eng_get_extension(loc_eng_data_s_type &loc_eng_data, 2234035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin const char* name); 2244035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_set_server_proxy(loc_eng_data_s_type &loc_eng_data, 2254035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin LocServerType type, const char *hostname, int port); 2264035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_mute_one_session(loc_eng_data_s_type &loc_eng_data); 2274035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_read_config(void); 2284035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2294035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin//loc_eng_agps functions 2304035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_agps_init(loc_eng_data_s_type &loc_eng_data, 2314035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin AGpsExtCallbacks* callbacks); 2324035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_agps_open(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType, 2334035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin const char* apn, AGpsBearerType bearerType); 2344035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_agps_closed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType); 2354035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_agps_open_failed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType); 2364035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_agps_ril_update_network_availability(loc_eng_data_s_type &loc_eng_data, 2374035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int avaiable, const char* apn); 2384035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_agps_install_certificates(loc_eng_data_s_type &loc_eng_data, 2394035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin const DerEncodedCertificate* certificates, 2404035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin size_t length); 2414035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2424035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin//loc_eng_xtra functions 2434035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_xtra_init (loc_eng_data_s_type &loc_eng_data, 2444035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsXtraExtCallbacks* callbacks); 2454035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_xtra_inject_data(loc_eng_data_s_type &loc_eng_data, 2464035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin char* data, int length); 2474035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_xtra_request_server(loc_eng_data_s_type &loc_eng_data); 2484035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_xtra_version_check(loc_eng_data_s_type &loc_eng_data, int check); 2494035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2504035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin//loc_eng_ni functions 2514035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinextern void loc_eng_ni_init(loc_eng_data_s_type &loc_eng_data, 2524035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsNiExtCallbacks *callbacks); 2534035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinextern void loc_eng_ni_respond(loc_eng_data_s_type &loc_eng_data, 2544035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin int notif_id, GpsUserResponseType user_response); 2554035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinextern void loc_eng_ni_request_handler(loc_eng_data_s_type &loc_eng_data, 2564035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin const GpsNiNotification *notif, 2574035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin const void* passThrough); 2584035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinextern void loc_eng_ni_reset_on_engine_restart(loc_eng_data_s_type &loc_eng_data); 2594035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2604035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_configuration_update (loc_eng_data_s_type &loc_eng_data, 2614035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin const char* config_data, int32_t length); 2624035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinint loc_eng_gps_measurement_init(loc_eng_data_s_type &loc_eng_data, 2634035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin GpsMeasurementCallbacks* callbacks); 2644035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjinvoid loc_eng_gps_measurement_close(loc_eng_data_s_type &loc_eng_data); 2654035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2664035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#ifdef __cplusplus 2674035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin} 2684035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#endif /* __cplusplus */ 2694035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin 2704035be28a255eaa5605dbd9abeb2340db584249cPatrick Tjin#endif // LOC_ENG_H 271