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 &params);
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