1e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/* Copyright (c) 2011-2015, 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#define LOG_NDDEBUG 0 31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_TAG "LocSvc_afw" 32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <hardware/gps.h> 34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <gps_extended.h> 35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng.h> 36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_target.h> 37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_log.h> 38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <fcntl.h> 39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <errno.h> 40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <dlfcn.h> 41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <sys/types.h> 42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <sys/stat.h> 43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <fcntl.h> 44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <errno.h> 45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <LocDualContext.h> 46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <cutils/properties.h> 47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiusing namespace loc_core; 49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_PM_CLIENT_NAME "GPS" 51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//Globals defns 53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic gps_location_callback gps_loc_cb = NULL; 54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic gps_sv_status_callback gps_sv_cb = NULL; 55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void local_loc_cb(UlpLocation* location, void* locExt); 57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void local_sv_cb(GpsSvStatus* sv_status, void* svExt); 58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const GpsGeofencingInterface* get_geofence_interface(void); 60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Function declarations for sLocEngInterface 62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_init(GpsCallbacks* callbacks); 63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_start(); 64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_stop(); 65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_cleanup(); 66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_inject_time(GpsUtcTime time, int64_t timeReference, int uncertainty); 67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_inject_location(double latitude, double longitude, float accuracy); 68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_delete_aiding_data(GpsAidingData f); 69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_set_position_mode(GpsPositionMode mode, GpsPositionRecurrence recurrence, 70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti uint32_t min_interval, uint32_t preferred_accuracy, 71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti uint32_t preferred_time); 72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const void* loc_get_extension(const char* name); 73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Defines the GpsInterface in gps.h 74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const GpsInterface sLocEngInterface = 75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(GpsInterface), 77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_init, 78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_start, 79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_stop, 80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_cleanup, 81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_inject_time, 82e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_inject_location, 83e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_delete_aiding_data, 84e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_set_position_mode, 85e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_get_extension 86e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 87e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 88e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Function declarations for sLocEngAGpsInterface 89e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_init(AGpsCallbacks* callbacks); 90e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_open(const char* apn); 91e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_closed(); 92e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_open_failed(); 93e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_set_server(AGpsType type, const char *hostname, int port); 94e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_open_with_apniptype( const char* apn, ApnIpType apnIpType); 95e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 96e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const AGpsInterface sLocEngAGpsInterface = 97e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 98e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(AGpsInterface), 99e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_init, 100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_open, 101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_closed, 102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_open_failed, 103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_set_server, 104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_open_with_apniptype 105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_xtra_init(GpsXtraCallbacks* callbacks); 108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_xtra_inject_data(char* data, int length); 109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const GpsXtraInterface sLocEngXTRAInterface = 111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(GpsXtraInterface), 113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_xtra_init, 114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_xtra_inject_data 115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_ni_init(GpsNiCallbacks *callbacks); 118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_ni_respond(int notif_id, GpsUserResponseType user_response); 119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const GpsNiInterface sLocEngNiInterface = 121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(GpsNiInterface), 123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_ni_init, 124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_ni_respond, 125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_gps_measurement_init(GpsMeasurementCallbacks* callbacks); 128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_gps_measurement_close(); 129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const GpsMeasurementInterface sLocEngGpsMeasurementInterface = 131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(GpsMeasurementInterface), 133e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_gps_measurement_init, 134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_gps_measurement_close 135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_init( AGpsRilCallbacks* callbacks ); 138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_set_ref_location(const AGpsRefLocation *agps_reflocation, size_t sz_struct); 139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_set_set_id(AGpsSetIDType type, const char* setid); 140e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_ni_message(uint8_t *msg, size_t len); 141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_update_network_state(int connected, int type, int roaming, const char* extra_info); 142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_update_network_availability(int avaiable, const char* apn); 143e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 144e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const AGpsRilInterface sLocEngAGpsRilInterface = 145e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 146e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(AGpsRilInterface), 147e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_ril_init, 148e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_ril_set_ref_location, 149e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_ril_set_set_id, 150e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_ril_ni_message, 151e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_ril_update_network_state, 152e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_ril_update_network_availability 153e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 154e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 155e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_install_certificates(const DerEncodedCertificate* certificates, 156e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti size_t length); 157e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_revoke_certificates(const Sha1CertificateFingerprint* fingerprints, 158e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti size_t length); 159e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 160e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const SuplCertificateInterface sLocEngAGpsCertInterface = 161e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 162e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(SuplCertificateInterface), 163e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_install_certificates, 164e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_agps_revoke_certificates 165e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 166e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 167e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_configuration_update(const char* config_data, int32_t length); 168e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 169e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const GnssConfigurationInterface sLocEngConfigInterface = 170e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 171e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sizeof(GnssConfigurationInterface), 172e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_configuration_update 173e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 174e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 175e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic loc_eng_data_s_type loc_afw_data; 176e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int gss_fd = -1; 177e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int sGnssType = GNSS_UNKNOWN; 178e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 179e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION gps_get_hardware_interface 180e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 181e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 182e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Returns the GPS hardware interaface based on LOC API 183e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if GPS is enabled. 184e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 185e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 186e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 187e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 188e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 189e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 190e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 191e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 192e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 193e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 194e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 195e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticonst GpsInterface* gps_get_hardware_interface () 196e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 197e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG_CALLFLOW(); 198e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const GpsInterface* ret_val; 199e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 200e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti char propBuf[PROPERTY_VALUE_MAX]; 201e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 202e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_read_config(); 203e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 204e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti // check to see if GPS should be disabled 205e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti property_get("gps.disable", propBuf, ""); 206e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (propBuf[0] == '1') 207e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 208e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGD("gps_get_interface returning NULL because gps.disable=1\n"); 209e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = NULL; 210e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } else { 211e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngInterface; 212e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 213e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 214e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_read_config(); 215e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 216e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%p, ret_val); 217e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 218e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 219e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 220e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// for gps.c 221e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern "C" const GpsInterface* get_gps_interface() 222e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 223e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti unsigned int target = TARGET_DEFAULT; 224e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_read_config(); 225e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 226e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti target = loc_get_target(); 227e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGD("Target name check returned %s", loc_get_target_name(target)); 228e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 229e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti sGnssType = getTargetGnssType(target); 230e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti switch (sGnssType) 231e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 232e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GNSS_GSS: 233e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GNSS_AUTO: 234e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti //APQ8064 235e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_conf.CAPABILITIES &= ~(GPS_CAPABILITY_MSA | GPS_CAPABILITY_MSB); 236e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gss_fd = open("/dev/gss", O_RDONLY); 237e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (gss_fd < 0) { 238e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE("GSS open failed: %s\n", strerror(errno)); 239e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 240e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else { 241e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGD("GSS open success! CAPABILITIES %0lx\n", 242e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_conf.CAPABILITIES); 243e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 244e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 245e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GNSS_NONE: 246e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti //MPQ8064 247e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE("No GPS HW on this target. Not returning interface."); 248e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return NULL; 249e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GNSS_QCA1530: 250e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti // qca1530 chip is present 251e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_conf.CAPABILITIES &= ~(GPS_CAPABILITY_MSA | GPS_CAPABILITY_MSB); 252e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGD("qca1530 present: CAPABILITIES %0lx\n", gps_conf.CAPABILITIES); 253e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 254e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 255e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return &sLocEngInterface; 256e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 257e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 258e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 259e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_init 260e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 261e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 262e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Initialize the location engine, this include setting up global datas 263e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti and registers location engien with loc api service. 264e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 265e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 266e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 267e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 268e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 269e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 270e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 271e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 272e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/Ax 273e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 274e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 275e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_init(GpsCallbacks* callbacks) 276e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 277e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int retVal = -1; 278e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 279e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_EVENT_MASK_T event; 280e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 281e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (NULL == callbacks) { 282e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE("loc_init failed. cb = NULL\n"); 283e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, retVal); 284e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return retVal; 285e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 286e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 287e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti event = LOC_API_ADAPTER_BIT_PARSED_POSITION_REPORT | 288e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_BIT_SATELLITE_REPORT | 289e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_BIT_LOCATION_SERVER_REQUEST | 290e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_BIT_ASSISTANCE_DATA_REQUEST | 291e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_BIT_IOCTL_REPORT | 292e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_BIT_STATUS_REPORT | 293e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_BIT_NMEA_1HZ_REPORT | 294e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_BIT_NI_NOTIFY_VERIFY_REQUEST; 295e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 296e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocCallbacks clientCallbacks = {local_loc_cb, /* location_cb */ 297e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks->status_cb, /* status_cb */ 298e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti local_sv_cb, /* sv_status_cb */ 299e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks->nmea_cb, /* nmea_cb */ 300e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks->set_capabilities_cb, /* set_capabilities_cb */ 301e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks->acquire_wakelock_cb, /* acquire_wakelock_cb */ 302e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks->release_wakelock_cb, /* release_wakelock_cb */ 303e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks->create_thread_cb, /* create_thread_cb */ 304e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NULL, /* location_ext_parser */ 305e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NULL, /* sv_ext_parser */ 306e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks->request_utc_time_cb, /* request_utc_time_cb */ 307e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti }; 308e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 309e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_loc_cb = callbacks->location_cb; 310e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_sv_cb = callbacks->sv_status_cb; 311e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 312e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti retVal = loc_eng_init(loc_afw_data, &clientCallbacks, event, NULL); 313e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->mSupportsAgpsRequests = !loc_afw_data.adapter->hasAgpsExtendedCapabilities(); 314e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->mSupportsPositionInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities(); 315e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->mSupportsTimeInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities(); 316e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->setGpsLockMsg(0); 317e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->requestUlp(getCarrierCapabilities()); 318e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->setXtraUserAgent(); 319e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 320e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if(retVal) { 321e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE("loc_eng_init() fail!"); 322e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti goto err; 323e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 324e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 325e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->setPowerVoteRight(loc_get_target() == TARGET_QCA1530); 326e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->setPowerVote(true); 327e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 328e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGD("loc_eng_init() success!"); 329e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 330e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletierr: 331e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, retVal); 332e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return retVal; 333e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 334e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 335e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 336e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_cleanup 337e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 338e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 339e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Cleans location engine. The location client handle will be released. 340e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 341e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 342e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 343e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 344e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 345e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 346e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 347e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 348e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 349e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 350e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 351e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_cleanup() 352e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 353e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 354e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 355e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->setPowerVote(false); 356e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_afw_data.adapter->setGpsLockMsg(gps_conf.GPS_LOCK); 357e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 358e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_cleanup(loc_afw_data); 359e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_loc_cb = NULL; 360e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_sv_cb = NULL; 361e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 362e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 363e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 364e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 365e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 366e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_start 367e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 368e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 369e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Starts the tracking session 370e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 371e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 372e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 373e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 374e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 375e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 376e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 377e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 378e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 379e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 380e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 381e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_start() 382e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 383e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 384e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_start(loc_afw_data); 385e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 386e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 387e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 388e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 389e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 390e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 391e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_stop 392e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 393e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 394e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Stops the tracking session 395e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 396e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 397e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 398e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 399e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 400e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 401e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 402e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 403e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 404e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 405e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 406e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_stop() 407e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 408e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 409e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = -1; 410e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = loc_eng_stop(loc_afw_data); 411e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 412e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 413e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 414e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 415e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 416e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 417e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_set_position_mode 418e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 419e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 420e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Sets the mode and fix frequency for the tracking session. 421e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 422e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 423e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 424e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 425e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 426e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 427e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 428e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 429e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 430e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 431e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 432e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_set_position_mode(GpsPositionMode mode, 433e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti GpsPositionRecurrence recurrence, 434e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti uint32_t min_interval, 435e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti uint32_t preferred_accuracy, 436e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti uint32_t preferred_time) 437e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 438e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 439e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = -1; 440e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocPositionMode locMode; 441e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti switch (mode) { 442e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GPS_POSITION_MODE_MS_BASED: 443e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti locMode = LOC_POSITION_MODE_MS_BASED; 444e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 445e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GPS_POSITION_MODE_MS_ASSISTED: 446e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti locMode = LOC_POSITION_MODE_MS_ASSISTED; 447e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 448e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti default: 449e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti locMode = LOC_POSITION_MODE_STANDALONE; 450e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 451e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 452e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 453e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocPosMode params(locMode, recurrence, min_interval, 454e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti preferred_accuracy, preferred_time, NULL, NULL); 455e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = loc_eng_set_position_mode(loc_afw_data, params); 456e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 457e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 458e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 459e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 460e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 461e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 462e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_inject_time 463e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 464e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 465e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This is used by Java native function to do time injection. 466e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 467e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 468e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 469e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 470e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 471e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 472e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 473e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 474e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 475e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 476e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 477e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_inject_time(GpsUtcTime time, int64_t timeReference, int uncertainty) 478e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 479e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 480e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = 0; 481e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 482e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = loc_eng_inject_time(loc_afw_data, time, 483e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti timeReference, uncertainty); 484e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 485e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 486e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 487e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 488e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 489e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 490e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 491e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_inject_location 492e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 493e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 494e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This is used by Java native function to do location injection. 495e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 496e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 497e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 498e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 499e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 500e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 : Successful 501e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti error code : Failure 502e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 503e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 504e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 505e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 506e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_inject_location(double latitude, double longitude, float accuracy) 507e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 508e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 509e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 510e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = 0; 511e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = loc_eng_inject_location(loc_afw_data, latitude, longitude, accuracy); 512e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 513e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 514e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 515e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 516e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 517e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 518e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 519e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_delete_aiding_data 520e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 521e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 522e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This is used by Java native function to delete the aiding data. The function 523e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti updates the global variable for the aiding data to be deleted. If the GPS 524e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti engine is off, the aiding data will be deleted. Otherwise, the actual action 525e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti will happen when gps engine is turned off. 526e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 527e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 528e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Assumes the aiding data type specified in GpsAidingData matches with 529e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC API specification. 530e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 531e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 532e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 533e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 534e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 535e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 536e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 537e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 538e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_delete_aiding_data(GpsAidingData f) 539e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 540e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 541e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_delete_aiding_data(loc_afw_data, f); 542e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 543e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 544e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 545e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 546e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticonst GpsGeofencingInterface* get_geofence_interface(void) 547e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 548e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 549e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti void *handle; 550e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const char *error; 551e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti typedef const GpsGeofencingInterface* (*get_gps_geofence_interface_function) (void); 552e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti get_gps_geofence_interface_function get_gps_geofence_interface; 553e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti static const GpsGeofencingInterface* geofence_interface = NULL; 554e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 555e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti dlerror(); /* Clear any existing error */ 556e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 557e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti handle = dlopen ("libgeofence.so", RTLD_NOW); 558e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 559e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (!handle) 560e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 561e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if ((error = dlerror()) != NULL) { 562e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE ("%s, dlopen for libgeofence.so failed, error = %s\n", __func__, error); 563e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 564e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti goto exit; 565e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 566e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti dlerror(); /* Clear any existing error */ 567e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti get_gps_geofence_interface = (get_gps_geofence_interface_function)dlsym(handle, "gps_geofence_get_interface"); 568e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if ((error = dlerror()) != NULL || NULL == get_gps_geofence_interface) { 569e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE ("%s, dlsym for get_gps_geofence_interface failed, error = %s\n", __func__, error); 570e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti goto exit; 571e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 572e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 573e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti geofence_interface = get_gps_geofence_interface(); 574e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 575e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiexit: 576e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, geofence_interface == NULL); 577e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return geofence_interface; 578e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 579e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 580e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_get_extension 581e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 582e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 583e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Get the gps extension to support XTRA. 584e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 585e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 586e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 587e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 588e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 589e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti The GPS extension interface. 590e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 591e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 592e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 593e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 594e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 595e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticonst void* loc_get_extension(const char* name) 596e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 597e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 598e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const void* ret_val = NULL; 599e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 600e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGD("%s:%d] For Interface = %s\n",__func__, __LINE__, name); 601e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (strcmp(name, GPS_XTRA_INTERFACE) == 0) 602e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 603e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngXTRAInterface; 604e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 605e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else if (strcmp(name, AGPS_INTERFACE) == 0) 606e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 607e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngAGpsInterface; 608e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 609e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else if (strcmp(name, GPS_NI_INTERFACE) == 0) 610e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 611e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngNiInterface; 612e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 613e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else if (strcmp(name, AGPS_RIL_INTERFACE) == 0) 614e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 615e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti char baseband[PROPERTY_VALUE_MAX]; 616e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti property_get("ro.baseband", baseband, "msm"); 617e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (strcmp(baseband, "csfb") == 0) 618e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 619e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngAGpsRilInterface; 620e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 621e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 622e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else if (strcmp(name, GPS_GEOFENCING_INTERFACE) == 0) 623e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 624e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if ((gps_conf.CAPABILITIES | GPS_CAPABILITY_GEOFENCING) == gps_conf.CAPABILITIES ){ 625e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = get_geofence_interface(); 626e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 627e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 628e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else if (strcmp(name, SUPL_CERTIFICATE_INTERFACE) == 0) 629e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 630e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngAGpsCertInterface; 631e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 632e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else if (strcmp(name, GNSS_CONFIGURATION_INTERFACE) == 0) 633e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 634e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngConfigInterface; 635e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 636e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else if (strcmp(name, GPS_MEASUREMENT_INTERFACE) == 0) 637e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 638e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = &sLocEngGpsMeasurementInterface; 639e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 640e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else 641e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 642e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE ("get_extension: Invalid interface passed in\n"); 643e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 644e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%p, ret_val); 645e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 646e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 647e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 648e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 649e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_agps_init 650e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 651e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 652e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Initialize the AGps interface. 653e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 654e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 655e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 656e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 657e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 658e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 659e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 660e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 661e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 662e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 663e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 664e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_init(AGpsCallbacks* callbacks) 665e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 666e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 667e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_agps_init(loc_afw_data, (AGpsExtCallbacks*)callbacks); 668e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 669e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 670e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 671e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 672e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_agps_open 673e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 674e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 675e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function is called when on-demand data connection opening is successful. 676e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIt should inform ARM 9 about the data open result. 677e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 678e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 679e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 680e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 681e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 682e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 683e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 684e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 685e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 686e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 687e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 688e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_open(const char* apn) 689e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 690e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 691e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti AGpsType agpsType = AGPS_TYPE_SUPL; 692e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti AGpsBearerType bearerType = AGPS_APN_BEARER_IPV4; 693e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_agps_open(loc_afw_data, agpsType, apn, bearerType); 694e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 695e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 696e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 697e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 698e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 699e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 700e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_agps_open_with_apniptype 701e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 702e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 703e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function is called when on-demand data connection opening is successful. 704e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIt should inform ARM 9 about the data open result. 705e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 706e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 707e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 708e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 709e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 710e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 711e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 712e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 713e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 714e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 715e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 716e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_open_with_apniptype(const char* apn, ApnIpType apnIpType) 717e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 718e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 719e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti AGpsType agpsType = AGPS_TYPE_SUPL; 720e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti AGpsBearerType bearerType; 721e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 722e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti switch (apnIpType) { 723e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case APN_IP_IPV4: 724e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti bearerType = AGPS_APN_BEARER_IPV4; 725e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 726e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case APN_IP_IPV6: 727e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti bearerType = AGPS_APN_BEARER_IPV6; 728e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 729e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case APN_IP_IPV4V6: 730e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti bearerType = AGPS_APN_BEARER_IPV4V6; 731e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 732e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti default: 733d7b1204cc565f482a6067953cebe25b16cc2a148Dante Russo bearerType = AGPS_APN_BEARER_IPV4; 734e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 735e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 736e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 737e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_agps_open(loc_afw_data, agpsType, apn, bearerType); 738e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 739e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 740e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 741e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 742e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 743e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 744e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_agps_closed 745e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 746e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 747e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function is called when on-demand data connection closing is done. 748e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIt should inform ARM 9 about the data close result. 749e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 750e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 751e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 752e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 753e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 754e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 755e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 756e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 757e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 758e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 759e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 760e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_closed() 761e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 762e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 763e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti AGpsType agpsType = AGPS_TYPE_SUPL; 764e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_agps_closed(loc_afw_data, agpsType); 765e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 766e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 767e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 768e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 769e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 770e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 771e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_agps_open_failed 772e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 773e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 774e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function is called when on-demand data connection opening has failed. 775e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIt should inform ARM 9 about the data open result. 776e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 777e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 778e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 779e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 780e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 781e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 782e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 783e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 784e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 785e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 786e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 787e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_agps_open_failed() 788e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 789e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 790e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti AGpsType agpsType = AGPS_TYPE_SUPL; 791e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_agps_open_failed(loc_afw_data, agpsType); 792e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 793e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 794e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 795e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 796e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 797e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 798e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_agps_set_server 799e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 800e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 801e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti If loc_eng_set_server is called before loc_eng_init, it doesn't work. This 802e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti proxy buffers server settings and calls loc_eng_set_server when the client is 803e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti open. 804e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 805e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 806e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 807e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 808e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 809e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0 810e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 811e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 812e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 813e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 814e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 815e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_set_server(AGpsType type, const char* hostname, int port) 816e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 817e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 818e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocServerType serverType; 819e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti switch (type) { 820e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case AGPS_TYPE_SUPL: 821e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti serverType = LOC_AGPS_SUPL_SERVER; 822e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 823e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case AGPS_TYPE_C2K: 824e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti serverType = LOC_AGPS_CDMA_PDE_SERVER; 825e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 826e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti default: 827e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti serverType = LOC_AGPS_SUPL_SERVER; 828e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 829e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_set_server_proxy(loc_afw_data, serverType, hostname, port); 830e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 831e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 832e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 833e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 834e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 835e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 836e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTIONf571 837e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_xtra_init 838e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 839e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 840e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Initialize XTRA module. 841e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 842e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 843e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 844e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 845e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 846e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 847e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 848e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 849e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 850e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 851e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 852e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_xtra_init(GpsXtraCallbacks* callbacks) 853e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 854e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 855e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti GpsXtraExtCallbacks extCallbacks; 856e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti memset(&extCallbacks, 0, sizeof(extCallbacks)); 857e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti extCallbacks.download_request_cb = callbacks->download_request_cb; 858e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_xtra_init(loc_afw_data, &extCallbacks); 859e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 860e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 861e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 862e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 863e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 864e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 865e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 866e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_xtra_inject_data 867e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 868e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 869e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Initialize XTRA module. 870e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 871e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 872e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 873e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 874e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 875e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 876e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 877e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 878e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 879e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 880e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 881e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_xtra_inject_data(char* data, int length) 882e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 883e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 884e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = -1; 885e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if( (data != NULL) && ((unsigned int)length <= XTRA_DATA_MAX_SIZE)) 886e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ret_val = loc_eng_xtra_inject_data(loc_afw_data, data, length); 887e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti else 888e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE("%s, Could not inject XTRA data. Buffer address: %p, length: %d", 889e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti __func__, data, length); 890e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 891e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 892e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 893e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 894e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 895e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_gps_measurement_init 896e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 897e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 898e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function initializes the gps measurement interface 899e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 900e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 901e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 902e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 903e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 904e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 905e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 906e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 907e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 908e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 909e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 910e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_gps_measurement_init(GpsMeasurementCallbacks* callbacks) 911e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 912e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 913e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_gps_measurement_init(loc_afw_data, 914e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti callbacks); 915e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 916e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 917e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 918e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 919e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 920e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 921e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_gps_measurement_close 922e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 923e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 924e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function closes the gps measurement interface 925e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 926e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 927e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 928e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 929e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 930e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 931e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 932e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 933e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 934e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 935e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 936e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_gps_measurement_close() 937e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 938e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 939e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_gps_measurement_close(loc_afw_data); 940e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 941e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 942e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 943e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 944e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 945e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_ni_init 946e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 947e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 948e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function initializes the NI interface 949e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 950e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 951e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 952e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 953e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 954e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 955e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 956e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 957e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 958e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 959e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 960e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_ni_init(GpsNiCallbacks *callbacks) 961e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 962e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 963e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_ni_init(loc_afw_data,(GpsNiExtCallbacks*) callbacks); 964e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 965e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 966e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 967e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 968e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_ni_respond 969e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 970e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 971e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This function sends an NI respond to the modem processor 972e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 973e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 974e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti NONE 975e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 976e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 977e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 978e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 979e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 980e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 981e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 982e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 983e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_ni_respond(int notif_id, GpsUserResponseType user_response) 984e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 985e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 986e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_ni_respond(loc_afw_data, notif_id, user_response); 987e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 988e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 989e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 990e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Below stub functions are members of sLocEngAGpsRilInterface 991e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_init( AGpsRilCallbacks* callbacks ) {} 992e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_set_ref_location(const AGpsRefLocation *agps_reflocation, size_t sz_struct) {} 993e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_set_set_id(AGpsSetIDType type, const char* setid) {} 994e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_ni_message(uint8_t *msg, size_t len) {} 995e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_update_network_state(int connected, int type, int roaming, const char* extra_info) {} 996e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 997e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*=========================================================================== 998e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_agps_ril_update_network_availability 999e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1000e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION 1001e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti Sets data call allow vs disallow flag to modem 1002e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti This is the only member of sLocEngAGpsRilInterface implemented. 1003e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1004e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES 1005e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti None 1006e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1007e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE 1008e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 0: success 1009e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1010e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS 1011e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti N/A 1012e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1013e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/ 1014e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_agps_ril_update_network_availability(int available, const char* apn) 1015e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 1016e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 1017e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_agps_ril_update_network_availability(loc_afw_data, available, apn); 1018e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 1019e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 1020e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1021e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_install_certificates(const DerEncodedCertificate* certificates, 1022e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti size_t length) 1023e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 1024e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 1025e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = loc_eng_agps_install_certificates(loc_afw_data, certificates, length); 1026e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 1027e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 1028e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 1029e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_agps_revoke_certificates(const Sha1CertificateFingerprint* fingerprints, 1030e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti size_t length) 1031e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 1032e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 1033e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_LOGE("%s:%d]: agps_revoke_certificates not supported"); 1034e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti int ret_val = AGPS_CERTIFICATE_ERROR_GENERIC; 1035e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%d, ret_val); 1036e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return ret_val; 1037e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 1038e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1039e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_configuration_update(const char* config_data, int32_t length) 1040e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 1041e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 1042e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_eng_configuration_update(loc_afw_data, config_data, length); 1043e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti switch (sGnssType) 1044e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 1045e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GNSS_GSS: 1046e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GNSS_AUTO: 1047e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti case GNSS_QCA1530: 1048e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti //APQ 1049e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_conf.CAPABILITIES &= ~(GPS_CAPABILITY_MSA | GPS_CAPABILITY_MSB); 1050e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti break; 1051e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 1052e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 1053e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 1054e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1055e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void local_loc_cb(UlpLocation* location, void* locExt) 1056e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 1057e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 1058e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (NULL != location) { 1059e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti CALLBACK_LOG_CALLFLOW("location_cb - from", %d, location->position_source); 1060e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1061e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (NULL != gps_loc_cb) { 1062e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_loc_cb(&location->gpsLocation); 1063e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 1064e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 1065e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 1066e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 1067e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1068e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void local_sv_cb(GpsSvStatus* sv_status, void* svExt) 1069e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{ 1070e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ENTRY_LOG(); 1071e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti if (NULL != gps_sv_cb) { 1072e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti CALLBACK_LOG_CALLFLOW("sv_status_cb -", %d, sv_status->num_svs); 1073e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti gps_sv_cb(sv_status); 1074e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 1075e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti EXIT_LOG(%s, VOID_RET); 1076e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} 1077e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 1078