164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar/* Copyright (c) 2009-2014,2016, The Linux Foundation. All rights reserved.
2e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
3e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * Redistribution and use in source and binary forms, with or without
4e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * modification, are permitted provided that the following conditions are
5e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * met:
6e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions of source code must retain the above copyright
7e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       notice, this list of conditions and the following disclaimer.
8e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions in binary form must reproduce the above
9e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       copyright notice, this list of conditions and the following
10e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       disclaimer in the documentation and/or other materials provided
11e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       with the distribution.
12e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Neither the name of The Linux Foundation, nor the names of its
13e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       contributors may be used to endorse or promote products derived
14e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       from this software without specific prior written permission.
15e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
16e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
28e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti */
29e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef LOC_ENG_H
31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_ENG_H
32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef __cplusplus
34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern "C" {
35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* __cplusplus */
36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Uncomment to keep all LOG messages (LOGD, LOGI, LOGV, etc.)
38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define MAX_NUM_ATL_CONNECTIONS  2
39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Define boolean type to be used by libgps on loc api module
41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletitypedef unsigned char boolean;
42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef TRUE
44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define TRUE 1
45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef FALSE
48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define FALSE 0
49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc.h>
52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_xtra.h>
53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_ni.h>
54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_agps.h>
55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_cfg.h>
56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_log.h>
57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <log_util.h>
58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_agps.h>
59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <LocEngAdapter.h>
60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// The data connection minimal open time
62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define DATA_OPEN_MIN_TIME        1  /* sec */
63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// The system sees GPS engine turns off after inactive for this period of time
65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define GPS_AUTO_OFF_TIME         2  /* secs */
66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define SUCCESS              TRUE
67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define FAILURE                 FALSE
68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define INVALID_ATL_CONNECTION_HANDLE -1
69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
70da16d7831ac9c02ff31a7baa1b1c112d6a38d7b6Dante Russo#define gps_conf ContextBase::mGps_conf
71da16d7831ac9c02ff31a7baa1b1c112d6a38d7b6Dante Russo#define sap_conf ContextBase::mSap_conf
72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletienum loc_nmea_provider_e_type {
74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    NMEA_PROVIDER_AP = 0, // Application Processor Provider of NMEA
75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    NMEA_PROVIDER_MP // Modem Processor Provider of NMEA
76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletienum loc_mute_session_e_type {
79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   LOC_MUTE_SESS_NONE = 0,
80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   LOC_MUTE_SESS_WAIT,
81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   LOC_MUTE_SESS_IN_SESSION
82e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
83e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
84e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Module data
85e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletitypedef struct loc_eng_data_s
86e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
87e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter                  *adapter;
88e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_location_cb_ext            location_cb;
89e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gps_status_callback            status_cb;
90e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_sv_status_cb_ext           sv_status_cb;
91e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    agps_status_extended           agps_status_cb;
92e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gps_nmea_callback              nmea_cb;
93e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gps_ni_notify_callback         ni_notify_cb;
94e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gps_set_capabilities           set_capabilities_cb;
95e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gps_acquire_wakelock           acquire_wakelock_cb;
96e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gps_release_wakelock           release_wakelock_cb;
97e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gps_request_utc_time           request_utc_time_cb;
9864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    gnss_set_system_info           set_system_info_cb;
9964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    gnss_sv_status_callback        gnss_sv_status_cb;
10064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    gnss_measurement_callback      gnss_measurement_cb;
101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    boolean                        intermediateFix;
102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AGpsStatusValue                agps_status;
103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_xtra_data_s_type       xtra_module_data;
104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_ni_data_s_type         loc_eng_ni_data;
105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // AGPS state machines
107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine*              agnss_nif;
108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine*              internet_nif;
109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine*              wifi_nif;
110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //State machine for Data Services
111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine*              ds_nif;
112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // GPS engine status
114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    GpsStatusValue                 engine_status;
115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    GpsStatusValue                 fix_session_status;
116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Aiding data information to be deleted, aiding data can only be deleted when GPS engine is off
118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    GpsAidingData                  aiding_data_for_deletion;
119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // For muting session broadcast
121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_mute_session_e_type        mute_session_state;
122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // For nmea generation
124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    boolean generateNmea;
125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    uint32_t sv_used_mask;
126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    float hdop;
127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    float pdop;
128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    float vdop;
129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Address buffers, for addressing setting before init
131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int    supl_host_set;
132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    char   supl_host_buf[101];
133e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int    supl_port_buf;
134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int    c2k_host_set;
135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    char   c2k_host_buf[101];
136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int    c2k_port_buf;
137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int    mpc_host_set;
138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    char   mpc_host_buf[101];
139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int    mpc_port_buf;
140e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_ext_parser location_ext_parser;
142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_ext_parser sv_ext_parser;
143e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} loc_eng_data_s_type;
144e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
145e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//loc_eng functions
146e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_init(loc_eng_data_s_type &loc_eng_data,
147e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  LocCallbacks* callbacks,
148e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  LOC_API_ADAPTER_EVENT_MASK_T event,
149e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  ContextBase* context);
150e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_start(loc_eng_data_s_type &loc_eng_data);
151e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_stop(loc_eng_data_s_type &loc_eng_data);
152e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_cleanup(loc_eng_data_s_type &loc_eng_data);
153e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_inject_time(loc_eng_data_s_type &loc_eng_data,
154e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         GpsUtcTime time, int64_t timeReference,
155e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         int uncertainty);
156e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_inject_location(loc_eng_data_s_type &loc_eng_data,
157e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                             double latitude, double longitude,
158e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                             float accuracy);
159e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_delete_aiding_data(loc_eng_data_s_type &loc_eng_data,
160e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                GpsAidingData f);
161e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_set_position_mode(loc_eng_data_s_type &loc_eng_data,
162e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               LocPosMode &params);
163e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticonst void* loc_eng_get_extension(loc_eng_data_s_type &loc_eng_data,
164e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  const char* name);
165e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_set_server_proxy(loc_eng_data_s_type &loc_eng_data,
166e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              LocServerType type, const char *hostname, int port);
167e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_mute_one_session(loc_eng_data_s_type &loc_eng_data);
168e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_read_config(void);
169e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
170e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//loc_eng_agps functions
171e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_agps_init(loc_eng_data_s_type &loc_eng_data,
172e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                       AGpsExtCallbacks* callbacks);
173e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_agps_open(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType,
174e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                      const char* apn, AGpsBearerType bearerType);
175e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_agps_closed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType);
176e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_agps_open_failed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType);
177e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_agps_ril_update_network_availability(loc_eng_data_s_type &loc_eng_data,
178e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                  int avaiable, const char* apn);
179e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_agps_install_certificates(loc_eng_data_s_type &loc_eng_data,
180e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      const DerEncodedCertificate* certificates,
181e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      size_t length);
182e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
183e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//loc_eng_xtra functions
184e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_xtra_init (loc_eng_data_s_type &loc_eng_data,
185e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                       GpsXtraExtCallbacks* callbacks);
186e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_xtra_inject_data(loc_eng_data_s_type &loc_eng_data,
187e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                             char* data, int length);
188e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint  loc_eng_xtra_request_server(loc_eng_data_s_type &loc_eng_data);
189e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_xtra_version_check(loc_eng_data_s_type &loc_eng_data, int check);
190e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
191e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//loc_eng_ni functions
192e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern void loc_eng_ni_init(loc_eng_data_s_type &loc_eng_data,
193e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            GpsNiExtCallbacks *callbacks);
194e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern void loc_eng_ni_respond(loc_eng_data_s_type &loc_eng_data,
195e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int notif_id, GpsUserResponseType user_response);
196e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern void loc_eng_ni_request_handler(loc_eng_data_s_type &loc_eng_data,
197e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   const GpsNiNotification *notif,
198e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   const void* passThrough);
199e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern void loc_eng_ni_reset_on_engine_restart(loc_eng_data_s_type &loc_eng_data);
200e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
201e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_configuration_update (loc_eng_data_s_type &loc_eng_data,
202e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   const char* config_data, int32_t length);
203e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_gps_measurement_init(loc_eng_data_s_type &loc_eng_data,
204e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                 GpsMeasurementCallbacks* callbacks);
205e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_gps_measurement_close(loc_eng_data_s_type &loc_eng_data);
206e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
207e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef __cplusplus
208e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
209e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* __cplusplus */
210e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
211e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif // LOC_ENG_H
212