1ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. 2ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * 3ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * Redistribution and use in source and binary forms, with or without 4ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * modification, are permitted provided that the following conditions are 5ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * met: 6ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * * Redistributions of source code must retain the above copyright 7ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * notice, this list of conditions and the following disclaimer. 8ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * * Redistributions in binary form must reproduce the above 9ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * copyright notice, this list of conditions and the following 10ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * disclaimer in the documentation and/or other materials provided 11ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * with the distribution. 12ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * * Neither the name of The Linux Foundation, nor the names of its 13ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * contributors may be used to endorse or promote products derived 14ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * from this software without specific prior written permission. 15ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * 16ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * 28ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo */ 29ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 30ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#define LOG_NDDEBUG 0 31ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#define LOG_TAG "LocSvc_afw" 32ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 33ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <hardware/gps.h> 34ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <gps_extended.h> 35ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <loc_eng.h> 36ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <loc_target.h> 37ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <loc_log.h> 38ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <fcntl.h> 39ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <errno.h> 40ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <dlfcn.h> 41ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <sys/types.h> 42ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <sys/stat.h> 43ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <fcntl.h> 44ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <errno.h> 45ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <LocDualContext.h> 46ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <cutils/properties.h> 47ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 48ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russousing namespace loc_core; 49ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 50ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo//Globals defns 51ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic gps_location_callback gps_loc_cb = NULL; 52ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic gps_sv_status_callback gps_sv_cb = NULL; 53ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 54ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void local_loc_cb(UlpLocation* location, void* locExt); 55ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void local_sv_cb(GpsSvStatus* sv_status, void* svExt); 56ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 57ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic const GpsGeofencingInterface* get_geofence_interface(void); 58ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 59ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo// Function declarations for sLocEngInterface 60ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_init(GpsCallbacks* callbacks); 61ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_start(); 62ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_stop(); 63ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_cleanup(); 64ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_inject_time(GpsUtcTime time, int64_t timeReference, int uncertainty); 65ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_inject_location(double latitude, double longitude, float accuracy); 66ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_delete_aiding_data(GpsAidingData f); 67ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_set_position_mode(GpsPositionMode mode, GpsPositionRecurrence recurrence, 68ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo uint32_t min_interval, uint32_t preferred_accuracy, 69ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo uint32_t preferred_time); 70ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic const void* loc_get_extension(const char* name); 71ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 72ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo// Defines the GpsInterface in gps.h 73ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic const GpsInterface sLocEngInterface = 74ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 75ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo sizeof(GpsInterface), 76ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_init, 77ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_start, 78ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_stop, 79ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_cleanup, 80ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_inject_time, 81ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_inject_location, 82ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_delete_aiding_data, 83ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_set_position_mode, 84ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_get_extension 85ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}; 86ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 87ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo// Function declarations for sLocEngAGpsInterface 88ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_init(AGpsCallbacks* callbacks); 89ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_agps_open(const char* apn); 90ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_agps_closed(); 91ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_agps_open_failed(); 92ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_agps_set_server(AGpsType type, const char *hostname, int port); 93ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 9433627a403843dfa40837e800663475cba345a044Dante Russostatic const AGpsInterface_v1 sLocEngAGpsInterface = 95ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 9633627a403843dfa40837e800663475cba345a044Dante Russo sizeof(AGpsInterface_v1), 97ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_init, 98ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_open, 99ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_closed, 100ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_open_failed, 101ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_set_server 102ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}; 103ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 104ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_xtra_init(GpsXtraCallbacks* callbacks); 105ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_xtra_inject_data(char* data, int length); 106ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 107ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic const GpsXtraInterface sLocEngXTRAInterface = 108ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 109ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo sizeof(GpsXtraInterface), 110ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_xtra_init, 111ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_xtra_inject_data 112ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}; 113ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 114ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_ni_init(GpsNiCallbacks *callbacks); 115ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_ni_respond(int notif_id, GpsUserResponseType user_response); 116ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 117ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoconst GpsNiInterface sLocEngNiInterface = 118ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 119ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo sizeof(GpsNiInterface), 120ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_ni_init, 121ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_ni_respond, 122ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}; 123ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 124ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_init( AGpsRilCallbacks* callbacks ); 125ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_set_ref_location(const AGpsRefLocation *agps_reflocation, size_t sz_struct); 126ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_set_set_id(AGpsSetIDType type, const char* setid); 127ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_ni_message(uint8_t *msg, size_t len); 128ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_update_network_state(int connected, int type, int roaming, const char* extra_info); 129ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_update_network_availability(int avaiable, const char* apn); 130ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 131ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic const AGpsRilInterface sLocEngAGpsRilInterface = 132ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 133ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo sizeof(AGpsRilInterface), 134ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_ril_init, 135ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_ril_set_ref_location, 136ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_ril_set_set_id, 137ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_ril_ni_message, 138ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_ril_update_network_state, 139ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_agps_ril_update_network_availability 140ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}; 141ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 142ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic loc_eng_data_s_type loc_afw_data; 143ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int gss_fd = 0; 144ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 145ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 146ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION gps_get_hardware_interface 147ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 148ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 149ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Returns the GPS hardware interaface based on LOC API 150ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if GPS is enabled. 151ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 152ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 153ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 154ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 155ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 156ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 157ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 158ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 159ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 160ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 161ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 162ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoconst GpsInterface* gps_get_hardware_interface () 163ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 164ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG_CALLFLOW(); 165ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo const GpsInterface* ret_val; 166ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 167ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo char propBuf[PROPERTY_VALUE_MAX]; 168ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 169ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_read_config(); 170ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 171ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo // check to see if GPS should be disabled 172ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo property_get("gps.disable", propBuf, ""); 173ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (propBuf[0] == '1') 174ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 175ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGD("gps_get_interface returning NULL because gps.disable=1\n"); 176ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = NULL; 177ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } else { 178ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = &sLocEngInterface; 179ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 180ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 181ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_read_config(); 182ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 183ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%p, ret_val); 184ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 185ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 186ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 187ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo// for gps.c 188ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoextern "C" const GpsInterface* get_gps_interface() 189ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 190ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo unsigned int target = TARGET_DEFAULT; 191ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_read_config(); 192ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 193ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo target = get_target(); 194ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGD("Target name check returned %s", loc_get_target_name(target)); 195ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo //APQ8064 196ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if( getTargetGnssType(target) == GNSS_GSS ) { 197ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_conf.CAPABILITIES &= ~(GPS_CAPABILITY_MSA | GPS_CAPABILITY_MSB); 198ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gss_fd = open("/dev/gss", O_RDONLY); 199ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (gss_fd < 0) { 200ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGE("GSS open failed: %s\n", strerror(errno)); 201ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 202ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else { 203ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGD("GSS open success! CAPABILITIES %0lx\n", 204ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_conf.CAPABILITIES); 205ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 206ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 207ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo //MPQ8064 208ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else if( getTargetGnssType(target) == GNSS_NONE) { 209ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGE("No GPS HW on this target (MPQ8064). Not returning interface"); 210ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return NULL; 211ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 212ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return &sLocEngInterface; 213ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 214ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 215ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 216ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_init 217ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 218ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 219ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Initialize the location engine, this include setting up global datas 220ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo and registers location engien with loc api service. 221ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 222ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 223ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 224ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 225ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 226ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 227ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 228ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 229ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/Ax 230ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 231ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 232ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_init(GpsCallbacks* callbacks) 233ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 234ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int retVal = -1; 235ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 236ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_EVENT_MASK_T event; 237ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 238ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (NULL == callbacks) { 239ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGE("loc_init failed. cb = NULL\n"); 240ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, retVal); 241ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return retVal; 242ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 243ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 244ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo event = LOC_API_ADAPTER_BIT_PARSED_POSITION_REPORT | 245ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_BIT_SATELLITE_REPORT | 246ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_BIT_LOCATION_SERVER_REQUEST | 247ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_BIT_ASSISTANCE_DATA_REQUEST | 248ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_BIT_IOCTL_REPORT | 249ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_BIT_STATUS_REPORT | 250ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_BIT_NMEA_1HZ_REPORT | 251ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_API_ADAPTER_BIT_NI_NOTIFY_VERIFY_REQUEST; 252ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 253ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LocCallbacks clientCallbacks = {local_loc_cb, /* location_cb */ 254ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo callbacks->status_cb, /* status_cb */ 255ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo local_sv_cb, /* sv_status_cb */ 256ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo callbacks->nmea_cb, /* nmea_cb */ 257ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo callbacks->set_capabilities_cb, /* set_capabilities_cb */ 258ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo callbacks->acquire_wakelock_cb, /* acquire_wakelock_cb */ 259ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo callbacks->release_wakelock_cb, /* release_wakelock_cb */ 260ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo callbacks->create_thread_cb, /* create_thread_cb */ 261ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NULL, /* location_ext_parser */ 262ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NULL, /* sv_ext_parser */ 263ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo callbacks->request_utc_time_cb /* request_utc_time_cb */}; 264ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 265ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_loc_cb = callbacks->location_cb; 266ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_sv_cb = callbacks->sv_status_cb; 267ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 268ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo retVal = loc_eng_init(loc_afw_data, &clientCallbacks, event); 269ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_afw_data.adapter->requestUlp(gps_conf.CAPABILITIES); 270ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_afw_data.adapter->mAgpsEnabled = !loc_afw_data.adapter->hasAgpsExt(); 271ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 272ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 273ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, retVal); 274ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return retVal; 275ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 276ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 277ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 278ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_cleanup 279ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 280ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 281ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Cleans location engine. The location client handle will be released. 282ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 283ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 284ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 285ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 286ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 287ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 288ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 289ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 290ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 291ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 292ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 293ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_cleanup() 294ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 295ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 296ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_cleanup(loc_afw_data); 297ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_loc_cb = NULL; 298ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_sv_cb = NULL; 299ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 300ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo /* 301ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * if (get_target() == TARGET_NAME_APQ8064_STANDALONE) 302ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * { 303ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * close(gss_fd); 304ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * LOC_LOGD("GSS shutdown.\n"); 305ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * } 306ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo */ 307ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 308ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 309ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 310ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 311ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 312ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_start 313ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 314ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 315ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Starts the tracking session 316ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 317ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 318ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 319ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 320ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 321ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 322ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 323ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 324ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 325ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 326ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 327ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_start() 328ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 329ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 330ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = loc_eng_start(loc_afw_data); 331ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 332ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 333ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 334ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 335ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 336ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 337ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_stop 338ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 339ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 340ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Stops the tracking session 341ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 342ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 343ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 344ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 345ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 346ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 347ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 348ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 349ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 350ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 351ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 352ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_stop() 353ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 354ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 355ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = -1; 356ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = loc_eng_stop(loc_afw_data); 357ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 358ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 359ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 360ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 361ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 362ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 363ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_set_position_mode 364ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 365ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 366ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Sets the mode and fix frequency for the tracking session. 367ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 368ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 369ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 370ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 371ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 372ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 373ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 374ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 375ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 376ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 377ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 378ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_set_position_mode(GpsPositionMode mode, 379ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo GpsPositionRecurrence recurrence, 380ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo uint32_t min_interval, 381ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo uint32_t preferred_accuracy, 382ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo uint32_t preferred_time) 383ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 384ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 385ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = -1; 386ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LocPositionMode locMode; 387ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo switch (mode) { 388ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo case GPS_POSITION_MODE_MS_BASED: 389ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo locMode = LOC_POSITION_MODE_MS_BASED; 390ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo break; 391ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo case GPS_POSITION_MODE_MS_ASSISTED: 392ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo locMode = LOC_POSITION_MODE_MS_ASSISTED; 393ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo break; 394ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo default: 395ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo locMode = LOC_POSITION_MODE_STANDALONE; 396ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo break; 397ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 398ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 399ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LocPosMode params(locMode, recurrence, min_interval, 400ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo preferred_accuracy, preferred_time, NULL, NULL); 401ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = loc_eng_set_position_mode(loc_afw_data, params); 402ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 403ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 404ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 405ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 406ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 407ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 408ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_inject_time 409ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 410ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 411ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This is used by Java native function to do time injection. 412ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 413ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 414ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 415ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 416ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 417ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0 418ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 419ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 420ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 421ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 422ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 423ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_inject_time(GpsUtcTime time, int64_t timeReference, int uncertainty) 424ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 425ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 426ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = 0; 427ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 428ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = loc_eng_inject_time(loc_afw_data, time, 429ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo timeReference, uncertainty); 430ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 431ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 432ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 433ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 434ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 435ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 436ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 437ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_inject_location 438ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 439ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 440ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This is used by Java native function to do location injection. 441ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 442ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 443ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 444ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 445ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 446ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0 : Successful 447ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo error code : Failure 448ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 449ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 450ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 451ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 452ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_inject_location(double latitude, double longitude, float accuracy) 453ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 454ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo static bool initialized = false; 455ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo static bool enable_cpi = true; 456ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 457ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 458ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if(!initialized) 459ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 460ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo char value[PROPERTY_VALUE_MAX]; 461ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo memset(value, 0, sizeof(value)); 462ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo (void)property_get("persist.gps.qc_nlp_in_use", value, "0"); 463ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if(0 == strcmp(value, "1")) 464ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 465ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo enable_cpi = false; 466ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGI("GPS HAL coarse position injection disabled"); 467ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 468ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else 469ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 470ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGI("GPS HAL coarse position injection enabled"); 471ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 472ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo initialized = true; 473ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 474ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 475ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = 0; 476ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if(enable_cpi) 477ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 478ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = loc_eng_inject_location(loc_afw_data, latitude, longitude, accuracy); 479ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 480ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 481ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 482ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 483ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 484ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 485ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 486ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_delete_aiding_data 487ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 488ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 489ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This is used by Java native function to delete the aiding data. The function 490ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo updates the global variable for the aiding data to be deleted. If the GPS 491ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo engine is off, the aiding data will be deleted. Otherwise, the actual action 492ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo will happen when gps engine is turned off. 493ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 494ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 495ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Assumes the aiding data type specified in GpsAidingData matches with 496ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC API specification. 497ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 498ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 499ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 500ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 501ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 502ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 503ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 504ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 505ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_delete_aiding_data(GpsAidingData f) 506ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 507ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 508ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_delete_aiding_data(loc_afw_data, f); 509ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 510ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 511ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 512ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 513ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoconst GpsGeofencingInterface* get_geofence_interface(void) 514ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 515ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 516ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo void *handle; 517ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo const char *error; 518ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo typedef const GpsGeofencingInterface* (*get_gps_geofence_interface_function) (void); 519ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo get_gps_geofence_interface_function get_gps_geofence_interface; 520ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo static const GpsGeofencingInterface* geofence_interface = NULL; 521ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 522ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo dlerror(); /* Clear any existing error */ 523ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 524ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo handle = dlopen ("libgeofence.so", RTLD_NOW); 525ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 526ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (!handle) 527ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 528ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if ((error = dlerror()) != NULL) { 529ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGE ("%s, dlopen for libgeofence.so failed, error = %s\n", __func__, error); 530ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 531ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo goto exit; 532ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 533ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo dlerror(); /* Clear any existing error */ 534ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo get_gps_geofence_interface = (get_gps_geofence_interface_function)dlsym(handle, "gps_geofence_get_interface"); 535ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if ((error = dlerror()) != NULL) { 536ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGE ("%s, dlsym for get_gps_geofence_interface failed, error = %s\n", __func__, error); 537ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo goto exit; 538ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 539ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 540ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo geofence_interface = get_gps_geofence_interface(); 541ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 542ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoexit: 543ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, geofence_interface == NULL); 544ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return geofence_interface; 545ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 546ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 547ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_get_extension 548ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 549ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 550ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Get the gps extension to support XTRA. 551ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 552ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 553ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 554ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 555ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 556ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo The GPS extension interface. 557ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 558ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 559ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 560ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 561ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 562ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoconst void* loc_get_extension(const char* name) 563ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 564ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 565ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo const void* ret_val = NULL; 566ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 567ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGD("%s:%d] For Interface = %s\n",__func__, __LINE__, name); 568ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (strcmp(name, GPS_XTRA_INTERFACE) == 0) 569ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 570ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = &sLocEngXTRAInterface; 571ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 572ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else if (strcmp(name, AGPS_INTERFACE) == 0) 573ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 574ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo //Return an interface to AGPS only if MSA or MSB capabilities 575ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo //are present. If the target is an APQ, these masks are 576ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo //cleared in get_gps_interface() and the below logic will 577ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo //return NULL as the interface for AGPS 578ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if((gps_conf.CAPABILITIES & GPS_CAPABILITY_MSA) || 579ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo (gps_conf.CAPABILITIES & GPS_CAPABILITY_MSB) ) { 580ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGD("%s:%d]: AGPS capabilities found\n", __func__, __LINE__); 581ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = &sLocEngAGpsInterface; 582ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 583ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else { 584ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGD("%s:%d]: Returning NULL AgpsInterface\n", __func__, __LINE__); 585ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = NULL; 586ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 587ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 588ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else if (strcmp(name, GPS_NI_INTERFACE) == 0) 589ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 590ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = &sLocEngNiInterface; 591ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 592ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else if (strcmp(name, AGPS_RIL_INTERFACE) == 0) 593ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 594ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo char baseband[PROPERTY_VALUE_MAX]; 595ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo property_get("ro.baseband", baseband, "msm"); 596ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (strcmp(baseband, "csfb") == 0) 597ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 598ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = &sLocEngAGpsRilInterface; 599ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 600ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 601ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else if (strcmp(name, GPS_GEOFENCING_INTERFACE) == 0) 602ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 603ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if ((gps_conf.CAPABILITIES | GPS_CAPABILITY_GEOFENCING) == gps_conf.CAPABILITIES ){ 604ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ret_val = get_geofence_interface(); 605ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 606ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 607ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo else 608ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo { 609ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LOC_LOGE ("get_extension: Invalid interface passed in\n"); 610ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 611ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%p, ret_val); 612ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 613ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 614ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 615ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 616ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_agps_init 617ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 618ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 619ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Initialize the AGps interface. 620ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 621ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 622ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NONE 623ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 624ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 625ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0 626ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 627ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 628ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 629ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 630ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 631ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_init(AGpsCallbacks* callbacks) 632ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 633ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 634ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_agps_init(loc_afw_data, (AGpsExtCallbacks*)callbacks); 635ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 636ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 637ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 638ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 639ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_agps_open 640ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 641ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 642ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This function is called when on-demand data connection opening is successful. 643ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoIt should inform ARM 9 about the data open result. 644ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 645ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 646ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NONE 647ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 648ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 649ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0 650ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 651ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 652ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 653ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 654ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 655ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_agps_open(const char* apn) 656ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 657ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 658ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo AGpsType agpsType = AGPS_TYPE_SUPL; 659ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo AGpsBearerType bearerType = AGPS_APN_BEARER_IPV4; 660ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = loc_eng_agps_open(loc_afw_data, agpsType, apn, bearerType); 661ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 662ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 663ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 664ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 665ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 666ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 667ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_agps_closed 668ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 669ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 670ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This function is called when on-demand data connection closing is done. 671ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoIt should inform ARM 9 about the data close result. 672ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 673ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 674ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NONE 675ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 676ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 677ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0 678ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 679ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 680ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 681ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 682ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 683ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_agps_closed() 684ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 685ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 686ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo AGpsType agpsType = AGPS_TYPE_SUPL; 687ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = loc_eng_agps_closed(loc_afw_data, agpsType); 688ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 689ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 690ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 691ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 692ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 693ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 694ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_agps_open_failed 695ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 696ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 697ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This function is called when on-demand data connection opening has failed. 698ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoIt should inform ARM 9 about the data open result. 699ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 700ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 701ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NONE 702ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 703ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 704ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0 705ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 706ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 707ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 708ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 709ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 710ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_agps_open_failed() 711ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 712ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 713ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo AGpsType agpsType = AGPS_TYPE_SUPL; 714ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = loc_eng_agps_open_failed(loc_afw_data, agpsType); 715ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 716ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 717ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 718ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 719ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 720ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 721ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_agps_set_server 722ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 723ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 724ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo If loc_eng_set_server is called before loc_eng_init, it doesn't work. This 725ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo proxy buffers server settings and calls loc_eng_set_server when the client is 726ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo open. 727ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 728ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 729ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NONE 730ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 731ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 732ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0 733ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 734ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 735ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 736ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 737ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 738ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_agps_set_server(AGpsType type, const char* hostname, int port) 739ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 740ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 741ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo LocServerType serverType; 742ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo switch (type) { 743ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo case AGPS_TYPE_SUPL: 744ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo serverType = LOC_AGPS_SUPL_SERVER; 745ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo break; 746ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo case AGPS_TYPE_C2K: 747ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo serverType = LOC_AGPS_CDMA_PDE_SERVER; 748ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo break; 749ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo default: 750ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo serverType = LOC_AGPS_SUPL_SERVER; 751ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 752ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = loc_eng_set_server_proxy(loc_afw_data, serverType, hostname, port); 753ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 754ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 755ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 756ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 757ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 758ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 759ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTIONf571 760ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_xtra_init 761ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 762ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 763ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Initialize XTRA module. 764ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 765ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 766ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 767ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 768ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 769ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 770ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 771ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 772ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 773ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 774ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 775ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_xtra_init(GpsXtraCallbacks* callbacks) 776ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 777ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 778ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo int ret_val = loc_eng_xtra_init(loc_afw_data, (GpsXtraExtCallbacks*)callbacks); 779ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 780ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 781ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 782ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 783ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 784ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 785ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 786ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_xtra_inject_data 787ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 788ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 789ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Initialize XTRA module. 790ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 791ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 792ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 793ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 794ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 795ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 796ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 797ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 798ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 799ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 800ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 801ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic int loc_xtra_inject_data(char* data, int length) 802ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 803ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 804bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo int ret_val = -1; 805bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo if( (data != NULL) && ((unsigned int)length <= XTRA_DATA_MAX_SIZE)) 806bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo ret_val = loc_eng_xtra_inject_data(loc_afw_data, data, length); 807bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo else 808bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo LOC_LOGE("%s, Could not inject XTRA data. Buffer address: %p, length: %d", 809bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo __func__, data, length); 810ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%d, ret_val); 811ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo return ret_val; 812ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 813ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 814ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 815ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_ni_init 816ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 817ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 818ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This function initializes the NI interface 819ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 820ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 821ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NONE 822ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 823ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 824ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 825ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 826ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 827ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 828ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 829ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 830ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russovoid loc_ni_init(GpsNiCallbacks *callbacks) 831ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 832ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 833ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_ni_init(loc_afw_data,(GpsNiExtCallbacks*) callbacks); 834ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 835ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 836ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 837ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 838ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_ni_respond 839ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 840ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 841ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This function sends an NI respond to the modem processor 842ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 843ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 844ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo NONE 845ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 846ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 847ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 848ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 849ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 850ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 851ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 852ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 853ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russovoid loc_ni_respond(int notif_id, GpsUserResponseType user_response) 854ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 855ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 856ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_ni_respond(loc_afw_data, notif_id, user_response); 857ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 858ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 859ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 860ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo// Below stub functions are members of sLocEngAGpsRilInterface 861ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_init( AGpsRilCallbacks* callbacks ) {} 862ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_set_ref_location(const AGpsRefLocation *agps_reflocation, size_t sz_struct) {} 863ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_set_set_id(AGpsSetIDType type, const char* setid) {} 864ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_ni_message(uint8_t *msg, size_t len) {} 865ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_update_network_state(int connected, int type, int roaming, const char* extra_info) {} 866ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 867ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*=========================================================================== 868ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION loc_agps_ril_update_network_availability 869ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 870ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION 871ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo Sets data call allow vs disallow flag to modem 872ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo This is the only member of sLocEngAGpsRilInterface implemented. 873ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 874ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES 875ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo None 876ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 877ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE 878ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 0: success 879ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 880ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS 881ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo N/A 882ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 883ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/ 884ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void loc_agps_ril_update_network_availability(int available, const char* apn) 885ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 886ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 887ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo loc_eng_agps_ril_update_network_availability(loc_afw_data, available, apn); 888ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 889ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 890ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 891ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void local_loc_cb(UlpLocation* location, void* locExt) 892ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 893ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 894ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (NULL != location) { 895ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo CALLBACK_LOG_CALLFLOW("location_cb - from", %d, location->position_source); 896ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 897ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (NULL != gps_loc_cb) { 898ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_loc_cb(&location->gpsLocation); 899ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 900ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 901ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 902ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 903ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo 904ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russostatic void local_sv_cb(GpsSvStatus* sv_status, void* svExt) 905ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{ 906ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo ENTRY_LOG(); 907ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo if (NULL != gps_sv_cb) { 908ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo CALLBACK_LOG_CALLFLOW("sv_status_cb -", %d, sv_status->num_svs); 909ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo gps_sv_cb(sv_status); 910ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo } 911ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo EXIT_LOG(%s, VOID_RET); 912ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo} 913