164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar/* Copyright (c) 2009-2016, The Linux Foundation. All rights reserved.
2e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
3e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * Redistribution and use in source and binary forms, with or without
4e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * modification, are permitted provided that the following conditions are
5e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * met:
6e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions of source code must retain the above copyright
7e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       notice, this list of conditions and the following disclaimer.
8e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions in binary form must reproduce the above
9e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       copyright notice, this list of conditions and the following
10e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       disclaimer in the documentation and/or other materials provided
11e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       with the distribution.
12e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Neither the name of The Linux Foundation, nor the names of its
13e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       contributors may be used to endorse or promote products derived
14e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       from this software without specific prior written permission.
15e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
16e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
28e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti */
29e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_NDDEBUG 0
31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_TAG "LocSvc_eng"
32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <stdint.h>
34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <stdio.h>
35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <stdlib.h>
36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <unistd.h>
37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <dlfcn.h>
38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <ctype.h>
39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <math.h>
40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <pthread.h>
41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <arpa/inet.h>
42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <netinet/in.h>         /* struct sockaddr_in */
43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <sys/socket.h>
44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <sys/time.h>
45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <netdb.h>
46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <time.h>
47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <new>
48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <LocEngAdapter.h>
49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <cutils/sched_policy.h>
51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef USE_GLIB
52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <utils/SystemClock.h>
53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <utils/Log.h>
54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* USE_GLIB */
55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef USE_GLIB
57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <glib.h>
58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <sys/syscall.h>
59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* USE_GLIB */
60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <string.h>
62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng.h>
64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_ni.h>
65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_dmn_conn.h>
66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_dmn_conn_handler.h>
67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_msg.h>
68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_eng_nmea.h>
69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <msg_q.h>
70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc.h>
71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include "log_util.h"
72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include "platform_lib_includes.h"
73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include "loc_core_log.h"
74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include "loc_eng_log.h"
75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define SUCCESS TRUE
77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define FAILURE FALSE
78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef GPS_CONF_FILE
80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define GPS_CONF_FILE            "/etc/gps.conf"   //??? platform independent
81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
82e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
83e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef SAP_CONF_FILE
84e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define SAP_CONF_FILE            "/etc/sap.conf"
85e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
86e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
87e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define XTRA1_GPSONEXTRA         "xtra1.gpsonextra.net"
88e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
89e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiusing namespace loc_core;
90e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
91e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiboolean configAlreadyRead = false;
92e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiunsigned int agpsStatus = 0;
93e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
94e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/* Parameter spec table */
95e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const loc_param_s_type gps_conf_table[] =
96e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
97e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"GPS_LOCK",                       &gps_conf.GPS_LOCK,                       NULL, 'n'},
98e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SUPL_VER",                       &gps_conf.SUPL_VER,                       NULL, 'n'},
99e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"LPP_PROFILE",                    &gps_conf.LPP_PROFILE,                    NULL, 'n'},
100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"A_GLONASS_POS_PROTOCOL_SELECT",  &gps_conf.A_GLONASS_POS_PROTOCOL_SELECT,  NULL, 'n'},
101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"AGPS_CERT_WRITABLE_MASK",        &gps_conf.AGPS_CERT_WRITABLE_MASK,        NULL, 'n'},
102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SUPL_MODE",                      &gps_conf.SUPL_MODE,                      NULL, 'n'},
103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"INTERMEDIATE_POS",               &gps_conf.INTERMEDIATE_POS,               NULL, 'n'},
104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"ACCURACY_THRES",                 &gps_conf.ACCURACY_THRES,                 NULL, 'n'},
105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"NMEA_PROVIDER",                  &gps_conf.NMEA_PROVIDER,                  NULL, 'n'},
106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"CAPABILITIES",                   &gps_conf.CAPABILITIES,                   NULL, 'n'},
107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"XTRA_VERSION_CHECK",             &gps_conf.XTRA_VERSION_CHECK,             NULL, 'n'},
108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"XTRA_SERVER_1",                  &gps_conf.XTRA_SERVER_1,                  NULL, 's'},
109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"XTRA_SERVER_2",                  &gps_conf.XTRA_SERVER_2,                  NULL, 's'},
110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"XTRA_SERVER_3",                  &gps_conf.XTRA_SERVER_3,                  NULL, 's'},
111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL",  &gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL,          NULL, 'n'},
112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic const loc_param_s_type sap_conf_table[] =
115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"GYRO_BIAS_RANDOM_WALK",          &sap_conf.GYRO_BIAS_RANDOM_WALK,          &sap_conf.GYRO_BIAS_RANDOM_WALK_VALID, 'f'},
117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"ACCEL_RANDOM_WALK_SPECTRAL_DENSITY",     &sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY,    &sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID, 'f'},
118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"ANGLE_RANDOM_WALK_SPECTRAL_DENSITY",     &sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY,    &sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID, 'f'},
119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"RATE_RANDOM_WALK_SPECTRAL_DENSITY",      &sap_conf.RATE_RANDOM_WALK_SPECTRAL_DENSITY,     &sap_conf.RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID, 'f'},
120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY",  &sap_conf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY, &sap_conf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID, 'f'},
121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_ACCEL_BATCHES_PER_SEC",   &sap_conf.SENSOR_ACCEL_BATCHES_PER_SEC,   NULL, 'n'},
122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_ACCEL_SAMPLES_PER_BATCH", &sap_conf.SENSOR_ACCEL_SAMPLES_PER_BATCH, NULL, 'n'},
123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_GYRO_BATCHES_PER_SEC",    &sap_conf.SENSOR_GYRO_BATCHES_PER_SEC,    NULL, 'n'},
124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_GYRO_SAMPLES_PER_BATCH",  &sap_conf.SENSOR_GYRO_SAMPLES_PER_BATCH,  NULL, 'n'},
125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_ACCEL_BATCHES_PER_SEC_HIGH",   &sap_conf.SENSOR_ACCEL_BATCHES_PER_SEC_HIGH,   NULL, 'n'},
126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH", &sap_conf.SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH, NULL, 'n'},
127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_GYRO_BATCHES_PER_SEC_HIGH",    &sap_conf.SENSOR_GYRO_BATCHES_PER_SEC_HIGH,    NULL, 'n'},
128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH",  &sap_conf.SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH,  NULL, 'n'},
129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_CONTROL_MODE",            &sap_conf.SENSOR_CONTROL_MODE,            NULL, 'n'},
130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_USAGE",                   &sap_conf.SENSOR_USAGE,                   NULL, 'n'},
131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_ALGORITHM_CONFIG_MASK",   &sap_conf.SENSOR_ALGORITHM_CONFIG_MASK,   NULL, 'n'},
132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {"SENSOR_PROVIDER",                &sap_conf.SENSOR_PROVIDER,                NULL, 'n'}
133e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_default_parameters(void)
136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /*Defaults for gps.conf*/
138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.INTERMEDIATE_POS = 0;
139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.ACCURACY_THRES = 0;
140e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.NMEA_PROVIDER = 0;
141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.GPS_LOCK = 0;
142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.SUPL_VER = 0x10000;
143e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.SUPL_MODE = 0x3;
144e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.CAPABILITIES = 0x7;
145e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /* LTE Positioning Profile configuration is disable by default*/
146e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.LPP_PROFILE = 0;
147e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /*By default no positioning protocol is selected on A-GLONASS system*/
148e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.A_GLONASS_POS_PROTOCOL_SELECT = 0;
149e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /*XTRA version check is disabled by default*/
150e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.XTRA_VERSION_CHECK=0;
151e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /*Use emergency PDN by default*/
152e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL = 1;
153e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
154e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /*Defaults for sap.conf*/
155e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.GYRO_BIAS_RANDOM_WALK = 0;
156e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_ACCEL_BATCHES_PER_SEC = 2;
157e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_ACCEL_SAMPLES_PER_BATCH = 5;
158e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_GYRO_BATCHES_PER_SEC = 2;
159e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_GYRO_SAMPLES_PER_BATCH = 5;
160e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_ACCEL_BATCHES_PER_SEC_HIGH = 4;
161e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH = 25;
162e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_GYRO_BATCHES_PER_SEC_HIGH = 4;
163e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH = 25;
164e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_CONTROL_MODE = 0; /* AUTO */
165e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_USAGE = 0; /* Enabled */
166e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_ALGORITHM_CONFIG_MASK = 0; /* INS Disabled = FALSE*/
167e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /* Values MUST be set by OEMs in configuration for sensor-assisted
168e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      navigation to work. There are NO default values */
169e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY = 0;
170e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY = 0;
171e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.RATE_RANDOM_WALK_SPECTRAL_DENSITY = 0;
172e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY = 0;
173e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.GYRO_BIAS_RANDOM_WALK_VALID = 0;
174e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID = 0;
175e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID = 0;
176e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID = 0;
177e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID = 0;
178e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /* default provider is SSC */
179e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   sap_conf.SENSOR_PROVIDER = 1;
180e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
181e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   /* None of the 10 slots for agps certificates are writable by default */
182e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   gps_conf.AGPS_CERT_WRITABLE_MASK = 0;
183e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
184e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
185e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// 2nd half of init(), singled out for
186e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// modem restart to use.
187e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_reinit(loc_eng_data_s_type &loc_eng_data);
188e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_agps_reinit(loc_eng_data_s_type &loc_eng_data);
189e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
190e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_set_server(loc_eng_data_s_type &loc_eng_data,
191e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              LocServerType type, const char *hostname, int port);
192e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// Internal functions
193e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_inform_gps_status(loc_eng_data_s_type &loc_eng_data,
194e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  GpsStatusValue status);
195e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_report_status(loc_eng_data_s_type &loc_eng_data,
196e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  GpsStatusValue status);
197e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_process_conn_request(loc_eng_data_s_type &loc_eng_data,
198e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int connHandle, AGpsType agps_type);
199e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_agps_close_status(loc_eng_data_s_type &loc_eng_data, int is_succ);
200e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_handle_engine_down(loc_eng_data_s_type &loc_eng_data) ;
201e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_handle_engine_up(loc_eng_data_s_type &loc_eng_data) ;
202e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
203e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_start_handler(loc_eng_data_s_type &loc_eng_data);
204e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_stop_handler(loc_eng_data_s_type &loc_eng_data);
205e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_get_zpp_handler(loc_eng_data_s_type &loc_eng_data);
206e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void deleteAidingData(loc_eng_data_s_type &logEng);
207e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic AgpsStateMachine*
208e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletigetAgpsStateMachine(loc_eng_data_s_type& logEng, AGpsExtType agpsType);
209e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int dataCallCb(void *cb_data);
210e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void update_aiding_data_for_deletion(loc_eng_data_s_type& loc_eng_data) {
211e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.engine_status != GPS_STATUS_ENGINE_ON &&
212e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.aiding_data_for_deletion != 0)
213e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
214e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.adapter->deleteAidingData(loc_eng_data.aiding_data_for_deletion);
215e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.aiding_data_for_deletion = 0;
216e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
217e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
218e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
219e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void* noProc(void* data)
220e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
221e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return NULL;
222e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
223e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
224e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*********************************************************************
225e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * definitions of the static messages used in the file
226e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *********************************************************************/
227e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_NI:
228e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngRequestNi::LocEngRequestNi(void* locEng,
229e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                 GpsNiNotification &notif,
230e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                 const void* data) :
231e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mNotify(notif), mPayload(data) {
232e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
233e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
234e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngRequestNi::proc() const {
235e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_ni_request_handler(*((loc_eng_data_s_type*)mLocEng),
236e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               &mNotify, mPayload);
237e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
238e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngRequestNi::locallog() const
239e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
240e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("id: %d\n  type: %s\n  flags: %d\n  time out: %d\n  "
241e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             "default response: %s\n  requestor id encoding: %s\n"
242e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             "  text encoding: %s\n  passThroughData: %p",
243e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             mNotify.notification_id,
244e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             loc_get_ni_type_name(mNotify.ni_type),
245e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             mNotify.notify_flags,
246e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             mNotify.timeout,
247e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             loc_get_ni_response_name(mNotify.default_response),
248e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             loc_get_ni_encoding_name(mNotify.requestor_id_encoding),
249e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             loc_get_ni_encoding_name(mNotify.text_encoding),
250e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             mPayload);
251e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
252e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestNi::log() const {
253e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
254e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
255e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
256e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_INFORM_NI_RESPONSE:
257e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// in loc_eng_ni.cpp
258e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
259e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_START_FIX:
260e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngStartFix::LocEngStartFix(LocEngAdapter* adapter) :
261e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mAdapter(adapter)
262e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
263e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
264e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
265e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngStartFix::proc() const
266e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
267e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mAdapter->getOwner();
268e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_start_handler(*locEng);
269e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
270e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngStartFix::locallog() const
271e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
272e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngStartFix");
273e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
274e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngStartFix::log() const
275e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
276e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
277e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
278e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngStartFix::send() const {
279e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mAdapter->sendMsg(this);
280e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
281e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
282e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_STOP_FIX:
283e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngStopFix::LocEngStopFix(LocEngAdapter* adapter) :
284e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mAdapter(adapter)
285e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
286e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
287e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
288e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngStopFix::proc() const
289e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
290e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mAdapter->getOwner();
291e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_stop_handler(*locEng);
292e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
293e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngStopFix::locallog() const
294e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
295e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngStopFix");
296e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
297e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngStopFix::log() const
298e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
299e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
300e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
301e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngStopFix::send() const {
302e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mAdapter->sendMsg(this);
303e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
304e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
305e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SET_POSITION_MODE:
306e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngPositionMode::LocEngPositionMode(LocEngAdapter* adapter,
307e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                       LocPosMode &mode) :
308e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mAdapter(adapter), mPosMode(mode)
309e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
310e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mPosMode.logv();
311e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
312e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngPositionMode::proc() const {
313e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mAdapter->setPositionMode(&mPosMode);
314e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
315e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngPositionMode::log() const {
316e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mPosMode.logv();
317e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
318e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngPositionMode::send() const {
319e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mAdapter->sendMsg(this);
320e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
321e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
322e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngGetZpp::LocEngGetZpp(LocEngAdapter* adapter) :
323e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mAdapter(adapter)
324e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
325e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
326e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
327e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngGetZpp::proc() const
328e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
329e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mAdapter->getOwner();
330e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_get_zpp_handler(*locEng);
331e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
332e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngGetZpp::locallog() const
333e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
334e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngGetZpp");
335e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
336e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngGetZpp::log() const
337e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
338e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
339e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
340e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngGetZpp::send() const {
341e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mAdapter->sendMsg(this);
342e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
343e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
344e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSetTime : public LocMsg {
345e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
346e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const GpsUtcTime mTime;
347e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int64_t mTimeReference;
348e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mUncertainty;
349e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSetTime(LocEngAdapter* adapter,
350e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         GpsUtcTime t, int64_t tf, int unc) :
351e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
352e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mTime(t), mTimeReference(tf), mUncertainty(unc)
353e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
354e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
355e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
356e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
357e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setTime(mTime, mTimeReference, mUncertainty);
358e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
359e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
360e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("time: %lld\n  timeReference: %lld\n  uncertainty: %d",
361e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mTime, mTimeReference, mUncertainty);
362e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
363e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
364e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
365e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
366e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
367e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
368e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti //       case LOC_ENG_MSG_INJECT_LOCATION:
369e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngInjectLocation : public LocMsg {
370e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
371e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const double mLatitude;
372e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const double mLongitude;
373e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const float mAccuracy;
374e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngInjectLocation(LocEngAdapter* adapter,
375e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                double lat, double lon, float accur) :
376e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
377e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mLatitude(lat), mLongitude(lon), mAccuracy(accur)
378e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
379e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
380e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
381e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
382e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->injectPosition(mLatitude, mLongitude, mAccuracy);
383e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
384e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
385e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("latitude: %f\n  longitude: %f\n  accuracy: %f",
386e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mLatitude, mLongitude, mAccuracy);
387e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
388e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
389e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
390e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
391e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
392e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
393e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SET_SERVER_IPV4:
394e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSetServerIpv4 : public LocMsg {
395e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
396e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const unsigned int mNlAddr;
397e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mPort;
398e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const LocServerType mServerType;
399e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSetServerIpv4(LocEngAdapter* adapter,
400e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               unsigned int ip,
401e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int port,
402e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               LocServerType type) :
403e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
404e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mNlAddr(ip), mPort(port), mServerType(type)
405e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
406e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
407e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
408e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
409e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setServer(mNlAddr, mPort, mServerType);
410e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
411e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
412e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngSetServerIpv4 - addr: %x, port: %d, type: %s",
413e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mNlAddr, mPort, loc_get_server_type_name(mServerType));
414e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
415e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
416e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
417e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
418e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
419e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
420e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SET_SERVER_URL:
421e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSetServerUrl : public LocMsg {
422e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
423e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mLen;
424e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    char* mUrl;
425e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSetServerUrl(LocEngAdapter* adapter,
426e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              char* urlString,
427e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              int url_len) :
428e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
429e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mLen(url_len), mUrl(new char[mLen+1])
430e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
431e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        memcpy((void*)mUrl, (void*)urlString, url_len);
432e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mUrl[mLen] = 0;
433e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
434e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
435e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline ~LocEngSetServerUrl()
436e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
437e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete[] mUrl;
438e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
439e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
440e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setServer(mUrl, mLen);
441e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
442e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
443e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngSetServerUrl - url: %s", mUrl);
444e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
445e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
446e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
447e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
448e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
449e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
450e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_A_GLONASS_PROTOCOL:
451e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngAGlonassProtocol : public LocMsg {
452e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
453e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const unsigned long mAGlonassProtocl;
454e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngAGlonassProtocol(LocEngAdapter* adapter,
455e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  unsigned long protocol) :
456e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter), mAGlonassProtocl(protocol)
457e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
458e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
459e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
460e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
461e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setAGLONASSProtocol(mAGlonassProtocl);
462e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
463e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline  void locallog() const {
464e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("A-GLONASS protocol: 0x%lx", mAGlonassProtocl);
465e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
466e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
467e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
468e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
469e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
470e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
471e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SUPL_VERSION:
472e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSuplVer : public LocMsg {
473e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
474e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mSuplVer;
475e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSuplVer(LocEngAdapter* adapter,
476e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         int suplVer) :
477e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter), mSuplVer(suplVer)
478e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
479e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
480e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
481e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
482e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setSUPLVersion(mSuplVer);
483e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
484e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline  void locallog() const {
485e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("SUPL Version: %d", mSuplVer);
486e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
487e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
488e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
489e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
490e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
491e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
492e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSuplMode : public LocMsg {
493e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    UlpProxyBase* mUlp;
494e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
495e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSuplMode(UlpProxyBase* ulp) :
496e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mUlp(ulp)
497e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
498e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
499e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
500e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
501da16d7831ac9c02ff31a7baa1b1c112d6a38d7b6Dante Russo        mUlp->setCapabilities(ContextBase::getCarrierCapabilities());
502e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
503e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline  void locallog() const {
504e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
505e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
506e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
507e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
508e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
509e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
510e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_LPP_CONFIG:
511e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngLppConfig : public LocMsg {
512e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
513e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mLppConfig;
514e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngLppConfig(LocEngAdapter* adapter,
515e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                           int lppConfig) :
516e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter), mLppConfig(lppConfig)
517e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
518e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
519e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
520e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
521e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setLPPConfig(mLppConfig);
522e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
523e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
524e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngLppConfig - profile: %d", mLppConfig);
525e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
526e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
527e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
528e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
529e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
530e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
531e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SET_SENSOR_CONTROL_CONFIG:
532e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSensorControlConfig : public LocMsg {
533e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
534e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mSensorsDisabled;
535e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mSensorProvider;
536e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSensorControlConfig(LocEngAdapter* adapter,
537e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                     int sensorsDisabled, int sensorProvider) :
538e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter), mSensorsDisabled(sensorsDisabled),
539e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mSensorProvider(sensorProvider)
540e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
541e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
542e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
543e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
544e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setSensorControlConfig(mSensorsDisabled, mSensorProvider);
545e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
546e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline  void locallog() const {
547e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngSensorControlConfig - Sensors Disabled: %d, Sensor Provider: %d",
548e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mSensorsDisabled, mSensorProvider);
549e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
550e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
551e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
552e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
553e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
554e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
555e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SET_SENSOR_PROPERTIES:
556e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSensorProperties : public LocMsg {
557e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
558e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const bool mGyroBiasVarianceRandomWalkValid;
559e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const float mGyroBiasVarianceRandomWalk;
560e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const bool mAccelRandomWalkValid;
561e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const float mAccelRandomWalk;
562e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const bool mAngleRandomWalkValid;
563e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const float mAngleRandomWalk;
564e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const bool mRateRandomWalkValid;
565e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const float mRateRandomWalk;
566e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const bool mVelocityRandomWalkValid;
567e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const float mVelocityRandomWalk;
568e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSensorProperties(LocEngAdapter* adapter,
569e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  bool gyroBiasRandomWalk_valid,
570e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  float gyroBiasRandomWalk,
571e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  bool accelRandomWalk_valid,
572e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  float accelRandomWalk,
573e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  bool angleRandomWalk_valid,
574e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  float angleRandomWalk,
575e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  bool rateRandomWalk_valid,
576e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  float rateRandomWalk,
577e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  bool velocityRandomWalk_valid,
578e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  float velocityRandomWalk) :
579e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
580e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mGyroBiasVarianceRandomWalkValid(gyroBiasRandomWalk_valid),
581e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mGyroBiasVarianceRandomWalk(gyroBiasRandomWalk),
582e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAccelRandomWalkValid(accelRandomWalk_valid),
583e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAccelRandomWalk(accelRandomWalk),
584e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAngleRandomWalkValid(angleRandomWalk_valid),
585e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAngleRandomWalk(angleRandomWalk),
586e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mRateRandomWalkValid(rateRandomWalk_valid),
587e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mRateRandomWalk(rateRandomWalk),
588e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mVelocityRandomWalkValid(velocityRandomWalk_valid),
589e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mVelocityRandomWalk(velocityRandomWalk)
590e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
591e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
592e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
593e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
594e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setSensorProperties(mGyroBiasVarianceRandomWalkValid,
595e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mGyroBiasVarianceRandomWalk,
596e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mAccelRandomWalkValid,
597e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mAccelRandomWalk,
598e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mAngleRandomWalkValid,
599e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mAngleRandomWalk,
600e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mRateRandomWalkValid,
601e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mRateRandomWalk,
602e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mVelocityRandomWalkValid,
603e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      mVelocityRandomWalk);
604e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
605e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline  void locallog() const {
606e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("Sensor properties validity, Gyro Random walk: %d "
607e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "Accel Random Walk: %d "
608e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "Angle Random Walk: %d Rate Random Walk: %d "
609e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "Velocity Random Walk: %d\n"
610e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "Sensor properties, Gyro Random walk: %f "
611e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "Accel Random Walk: %f "
612e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "Angle Random Walk: %f Rate Random Walk: %f "
613e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "Velocity Random Walk: %f",
614e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mGyroBiasVarianceRandomWalkValid,
615e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAccelRandomWalkValid,
616e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAngleRandomWalkValid,
617e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mRateRandomWalkValid,
618e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mVelocityRandomWalkValid,
619e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mGyroBiasVarianceRandomWalk,
620e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAccelRandomWalk,
621e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAngleRandomWalk,
622e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mRateRandomWalk,
623e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mVelocityRandomWalk
624e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            );
625e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
626e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
627e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
628e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
629e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
630e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
631e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SET_SENSOR_PERF_CONTROL_CONFIG:
632e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSensorPerfControlConfig : public LocMsg {
633e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
634e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mControlMode;
635e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mAccelSamplesPerBatch;
636e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mAccelBatchesPerSec;
637e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mGyroSamplesPerBatch;
638e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mGyroBatchesPerSec;
639e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mAccelSamplesPerBatchHigh;
640e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mAccelBatchesPerSecHigh;
641e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mGyroSamplesPerBatchHigh;
642e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mGyroBatchesPerSecHigh;
643e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mAlgorithmConfig;
644e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSensorPerfControlConfig(LocEngAdapter* adapter,
645e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int controlMode,
646e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int accelSamplesPerBatch,
647e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int accelBatchesPerSec,
648e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int gyroSamplesPerBatch,
649e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int gyroBatchesPerSec,
650e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int accelSamplesPerBatchHigh,
651e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int accelBatchesPerSecHigh,
652e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int gyroSamplesPerBatchHigh,
653e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int gyroBatchesPerSecHigh,
654e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                         int algorithmConfig) :
655e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
656e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mControlMode(controlMode),
657e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAccelSamplesPerBatch(accelSamplesPerBatch),
658e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAccelBatchesPerSec(accelBatchesPerSec),
659e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mGyroSamplesPerBatch(gyroSamplesPerBatch),
660e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mGyroBatchesPerSec(gyroBatchesPerSec),
661e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAccelSamplesPerBatchHigh(accelSamplesPerBatchHigh),
662e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAccelBatchesPerSecHigh(accelBatchesPerSecHigh),
663e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mGyroSamplesPerBatchHigh(gyroSamplesPerBatchHigh),
664e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mGyroBatchesPerSecHigh(gyroBatchesPerSecHigh),
665e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAlgorithmConfig(algorithmConfig)
666e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
667e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
668e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
669e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
670e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setSensorPerfControlConfig(mControlMode,
671e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mAccelSamplesPerBatch,
672e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mAccelBatchesPerSec,
673e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mGyroSamplesPerBatch,
674e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mGyroBatchesPerSec,
675e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mAccelSamplesPerBatchHigh,
676e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mAccelBatchesPerSecHigh,
677e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mGyroSamplesPerBatchHigh,
678e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mGyroBatchesPerSecHigh,
679e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                             mAlgorithmConfig);
680e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
681e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
682e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("Sensor Perf Control Config (performanceControlMode)(%u) "
683e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "accel(#smp,#batches) (%u,%u) "
684e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "gyro(#smp,#batches) (%u,%u), "
685e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "accel_high(#smp,#batches) (%u,%u) "
686e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "gyro_high(#smp,#batches) (%u,%u), "
687e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "algorithmConfig(%u)\n",
688e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mControlMode,
689e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAccelSamplesPerBatch, mAccelBatchesPerSec,
690e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mGyroSamplesPerBatch, mGyroBatchesPerSec,
691e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAccelSamplesPerBatchHigh, mAccelBatchesPerSecHigh,
692e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mGyroSamplesPerBatchHigh, mGyroBatchesPerSecHigh,
693e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAlgorithmConfig);
694e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
695e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
696e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
697e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
698e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
699e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
700e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_EXT_POWER_CONFIG:
701e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngExtPowerConfig : public LocMsg {
702e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
703e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mIsBatteryCharging;
704e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngExtPowerConfig(LocEngAdapter* adapter,
705e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                int isBatteryCharging) :
706e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
707e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mIsBatteryCharging(isBatteryCharging)
708e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
709e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
710e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
711e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
712e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->setExtPowerConfig(mIsBatteryCharging);
713e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
714e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
715e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngExtPowerConfig - isBatteryCharging: %d",
716e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mIsBatteryCharging);
717e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
718e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
719e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
720e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
721e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
722e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
723e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REPORT_POSITION:
724e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReportPosition::LocEngReportPosition(LocAdapterBase* adapter,
725e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                           UlpLocation &loc,
726e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                           GpsLocationExtended &locExtended,
727e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                           void* locExt,
728e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                           enum loc_sess_status st,
729e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                           LocPosTechMask technology) :
730e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mAdapter(adapter), mLocation(loc),
731e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mLocationExtended(locExtended),
732e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mLocationExt(((loc_eng_data_s_type*)
733e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  ((LocEngAdapter*)
734e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                   (mAdapter))->getOwner())->location_ext_parser(locExt)),
735e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mStatus(st), mTechMask(technology)
736e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
737e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
738e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
739e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportPosition::proc() const {
740e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = (LocEngAdapter*)mAdapter;
741e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)adapter->getOwner();
742e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
743e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->mute_session_state != LOC_MUTE_SESS_IN_SESSION) {
744e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        bool reported = false;
745e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (locEng->location_cb != NULL) {
746e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (LOC_SESS_FAILURE == mStatus) {
747e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                // in case we want to handle the failure case
748e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                locEng->location_cb(NULL, NULL);
749e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                reported = true;
750e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
751e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            // what's in the else if is... (line by line)
752e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            // 1. this is a final fix; and
753e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            //   1.1 it is a Satellite fix; or
754e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            //   1.2 it is a sensor fix
755e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            // 2. (must be intermediate fix... implicit)
756e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            //   2.1 we accepte intermediate; and
757e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            //   2.2 it is NOT the case that
758e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            //   2.2.1 there is inaccuracy; and
759e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            //   2.2.2 we care about inaccuracy; and
760e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            //   2.2.3 the inaccuracy exceeds our tolerance
761e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            else if ((LOC_SESS_SUCCESS == mStatus &&
762e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                      ((LOC_POS_TECH_MASK_SATELLITE |
763e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        LOC_POS_TECH_MASK_SENSORS   |
764e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        LOC_POS_TECH_MASK_HYBRID) &
765e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                       mTechMask)) ||
766e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                     (LOC_SESS_INTERMEDIATE == locEng->intermediateFix &&
767e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                      !((mLocation.gpsLocation.flags &
768e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         GPS_LOCATION_HAS_ACCURACY) &&
769e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        (gps_conf.ACCURACY_THRES != 0) &&
770e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        (mLocation.gpsLocation.accuracy >
771e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         gps_conf.ACCURACY_THRES)))) {
772e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                locEng->location_cb((UlpLocation*)&(mLocation),
773e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                    (void*)mLocationExt);
774e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                reported = true;
775e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
776e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
777e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
778e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        // if we have reported this fix
779e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (reported &&
780e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            // and if this is a singleshot
781e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            GPS_POSITION_RECURRENCE_SINGLE ==
782e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locEng->adapter->getPositionMode().recurrence) {
783e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (LOC_SESS_INTERMEDIATE == mStatus) {
784e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                // modem could be still working for a final fix,
785e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                // although we no longer need it.  So stopFix().
786e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                locEng->adapter->stopFix();
787e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
788e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            // turn off the session flag.
789e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locEng->adapter->setInSession(false);
790e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
791e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
792e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngReportPosition::proc() - generateNmea: %d, position source: %d, "
793e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "engine_status: %d, isInSession: %d",
794e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        locEng->generateNmea, mLocation.position_source,
795e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        locEng->engine_status, locEng->adapter->isInSession());
796e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
797e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (locEng->generateNmea &&
798e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locEng->adapter->isInSession())
799e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
800e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            unsigned char generate_nmea = reported &&
801e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                          (mStatus != LOC_SESS_FAILURE);
802e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            loc_eng_nmea_generate_pos(locEng, mLocation, mLocationExtended,
803e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      generate_nmea);
804e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
805e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
806e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        // Free the allocated memory for rawData
807e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        UlpLocation* gp = (UlpLocation*)&(mLocation);
808e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (gp != NULL && gp->rawData != NULL)
809e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
810e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            delete (char*)gp->rawData;
811e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            gp->rawData = NULL;
812e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            gp->rawDataSize = 0;
813e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
814e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
815e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
816e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportPosition::locallog() const {
817e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngReportPosition");
818e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
819e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportPosition::log() const {
820e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
821e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
822e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportPosition::send() const {
823e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mAdapter->sendMsg(this);
824e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
825e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
826e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
827e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REPORT_SV:
828e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReportSv::LocEngReportSv(LocAdapterBase* adapter,
82964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                               GnssSvStatus &sv,
830e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               GpsLocationExtended &locExtended,
831e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               void* svExt) :
832e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mAdapter(adapter), mSvStatus(sv),
833e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mLocationExtended(locExtended),
834e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mSvExt(((loc_eng_data_s_type*)
835e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            ((LocEngAdapter*)
836e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             (mAdapter))->getOwner())->sv_ext_parser(svExt))
837e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
838e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
839e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
840e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportSv::proc() const {
841e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = (LocEngAdapter*)mAdapter;
842e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)adapter->getOwner();
843e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
844e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->mute_session_state != LOC_MUTE_SESS_IN_SESSION)
845e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
84664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        if (locEng->gnss_sv_status_cb != NULL) {
84764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            LOC_LOGE("Calling gnss_sv_status_cb");
84864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            locEng->gnss_sv_status_cb((GnssSvStatus*)&(mSvStatus));
849e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
850e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
851e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (locEng->generateNmea)
852e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
853e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            loc_eng_nmea_generate_sv(locEng, mSvStatus, mLocationExtended);
854e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
855e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
856e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
857e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportSv::locallog() const {
858e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("%s:%d] LocEngReportSv",__func__, __LINE__);
859e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
860e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportSv::log() const {
861e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
862e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
863e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportSv::send() const {
864e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mAdapter->sendMsg(this);
865e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
866e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
867e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REPORT_STATUS:
868e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReportStatus::LocEngReportStatus(LocAdapterBase* adapter,
869e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                       GpsStatusValue engineStatus) :
870e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(),  mAdapter(adapter), mStatus(engineStatus)
871e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
872e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
873e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
874e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportStatus::proc() const
875e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
876e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = (LocEngAdapter*)mAdapter;
877e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)adapter->getOwner();
878e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
879e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_report_status(*locEng, mStatus);
880e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    update_aiding_data_for_deletion(*locEng);
881e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
882e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportStatus::locallog() const {
883e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngReportStatus");
884e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
885e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportStatus::log() const {
886e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
887e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
888e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
889e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REPORT_NMEA:
890e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReportNmea::LocEngReportNmea(void* locEng,
891e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   const char* data, int len) :
892e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mNmea(new char[len]), mLen(len)
893e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
894e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    memcpy((void*)mNmea, (void*)data, len);
895e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
896e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
897e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportNmea::proc() const {
898e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*) mLocEng;
899e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
900e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    struct timeval tv;
901e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    gettimeofday(&tv, (struct timezone *) NULL);
902e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int64_t now = tv.tv_sec * 1000LL + tv.tv_usec / 1000;
903e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
904e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->nmea_cb != NULL)
905e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEng->nmea_cb(now, mNmea, mLen);
906e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
907e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportNmea::locallog() const {
908e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngReportNmea");
909e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
910e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportNmea::log() const {
911e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
912e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
913e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
914e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REPORT_XTRA_SERVER:
915e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReportXtraServer::LocEngReportXtraServer(void* locEng,
916e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                               const char *url1,
917e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                               const char *url2,
918e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                               const char *url3,
919e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                               const int maxlength) :
920e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mMaxLen(maxlength),
921e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mServers(new char[3*(mMaxLen+1)])
922e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
923e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    char * cptr = mServers;
924e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    memset(mServers, 0, 3*(mMaxLen+1));
925e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
926e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Override modem URLs with uncommented gps.conf urls
927e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if( gps_conf.XTRA_SERVER_1[0] != '\0' ) {
928e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        url1 = &gps_conf.XTRA_SERVER_1[0];
929e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
930e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if( gps_conf.XTRA_SERVER_2[0] != '\0' ) {
931e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        url2 = &gps_conf.XTRA_SERVER_2[0];
932e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
933e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if( gps_conf.XTRA_SERVER_3[0] != '\0' ) {
934e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        url3 = &gps_conf.XTRA_SERVER_3[0];
935e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
936e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // copy non xtra1.gpsonextra.net URLs into the forwarding buffer.
937e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if( NULL == strcasestr(url1, XTRA1_GPSONEXTRA) ) {
938e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        strlcpy(cptr, url1, mMaxLen + 1);
939e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        cptr += mMaxLen + 1;
940e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
941e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if( NULL == strcasestr(url2, XTRA1_GPSONEXTRA) ) {
942e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        strlcpy(cptr, url2, mMaxLen + 1);
943e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        cptr += mMaxLen + 1;
944e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
945e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if( NULL == strcasestr(url3, XTRA1_GPSONEXTRA) ) {
946e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        strlcpy(cptr, url3, mMaxLen + 1);
947e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
948e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
949e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
950e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
951e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReportXtraServer::proc() const {
952e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_xtra_data_s_type* locEngXtra =
953e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        &(((loc_eng_data_s_type*)mLocEng)->xtra_module_data);
954e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
955e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEngXtra->report_xtra_server_cb != NULL) {
956e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        CALLBACK_LOG_CALLFLOW("report_xtra_server_cb", %s, mServers);
957e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEngXtra->report_xtra_server_cb(mServers,
958e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                          &(mServers[mMaxLen+1]),
959e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                          &(mServers[(mMaxLen+1)<<1]));
960e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
961e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("Callback function for request xtra is NULL");
962e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
963e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
964e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportXtraServer::locallog() const {
965e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngReportXtraServers: server1: %s\n  server2: %s\n"
966e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             "  server3: %s\n",
967e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             mServers, &mServers[mMaxLen+1], &mServers[(mMaxLen+1)<<1]);
968e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
969e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReportXtraServer::log() const {
970e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
971e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
972e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
973e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_BIT:
974e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_RELEASE_BIT:
975e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReqRelBIT::LocEngReqRelBIT(void* locEng, AGpsExtType type,
976e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                 int ipv4, char* ipv6, bool isReq) :
977e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mType(type), mIPv4Addr(ipv4),
978e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mIPv6Addr(ipv6 ? new char[16] : NULL), mIsReq(isReq) {
979e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != ipv6)
980e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        memcpy(mIPv6Addr, ipv6, 16);
981e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
982e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
983e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline LocEngReqRelBIT::~LocEngReqRelBIT() {
984e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (mIPv6Addr) {
985e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete[] mIPv6Addr;
986e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
987e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
988e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReqRelBIT::proc() const {
989e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
990e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    BITSubscriber s(getAgpsStateMachine(*locEng, mType),
991e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                    mIPv4Addr, mIPv6Addr);
992e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* sm = (AgpsStateMachine*)s.mStateMachine;
993e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
994e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (mIsReq) {
995e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->subscribeRsrc((Subscriber*)&s);
996e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
997e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->unsubscribeRsrc((Subscriber*)&s);
998e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
999e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1000e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReqRelBIT::locallog() const {
1001e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngRequestBIT - ipv4: %d.%d.%d.%d, ipv6: %s",
1002e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             (unsigned char)mIPv4Addr,
1003e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             (unsigned char)(mIPv4Addr>>8),
1004e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             (unsigned char)(mIPv4Addr>>16),
1005e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             (unsigned char)(mIPv4Addr>>24),
1006e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             NULL != mIPv6Addr ? mIPv6Addr : "");
1007e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1008e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReqRelBIT::log() const {
1009e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1010e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1011e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReqRelBIT::send() const {
1012e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1013e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locEng->adapter->sendMsg(this);
1014e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1015e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1016e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_RELEASE_BIT:
1017e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngReleaseBIT : public LocMsg {
1018e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const BITSubscriber mSubscriber;
1019e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngReleaseBIT(const AgpsStateMachine* stateMachine,
1020e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            unsigned int ipv4, char* ipv6) :
1021e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(),
1022e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mSubscriber(stateMachine, ipv4, ipv6)
1023e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1024e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1025e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1026e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const
1027e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1028e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        AgpsStateMachine* sm = (AgpsStateMachine*)mSubscriber.mStateMachine;
1029e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->unsubscribeRsrc((Subscriber*)&mSubscriber);
1030e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1031e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
1032e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngReleaseBIT - ipv4: %d.%d.%d.%d, ipv6: %s",
1033e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 (unsigned char)(mSubscriber.ID>>24),
1034e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 (unsigned char)(mSubscriber.ID>>16),
1035e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 (unsigned char)(mSubscriber.ID>>8),
1036e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 (unsigned char)mSubscriber.ID,
1037e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 NULL != mSubscriber.mIPv6Addr ? mSubscriber.mIPv6Addr : "");
1038e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1039e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void log() const {
1040e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1041e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1042e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1043e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1044e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        LocEngSuplEsOpened
1045e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngSuplEsOpened::LocEngSuplEsOpened(void* locEng) :
1046e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng) {
1047e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1048e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1049e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngSuplEsOpened::proc() const {
1050e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1051e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->ds_nif) {
1052e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        AgpsStateMachine* sm = locEng->ds_nif;
1053e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->onRsrcEvent(RSRC_GRANTED);
1054e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1055e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1056e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngSuplEsOpened::locallog() const {
1057e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngSuplEsOpened");
1058e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1059e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngSuplEsOpened::log() const {
1060e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1061e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1062e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1063e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        LocEngSuplEsClosed
1064e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngSuplEsClosed::LocEngSuplEsClosed(void* locEng) :
1065e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng) {
1066e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1067e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1068e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngSuplEsClosed::proc() const {
1069e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1070e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->ds_nif) {
1071e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        AgpsStateMachine* sm = locEng->ds_nif;
1072e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->onRsrcEvent(RSRC_RELEASED);
1073e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1074e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1075e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngSuplEsClosed::locallog() const {
1076e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngSuplEsClosed");
1077e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1078e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngSuplEsClosed::log() const {
1079e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1080e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1081e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1082e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1083e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_SUPL_ES:
1084e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngRequestSuplEs::LocEngRequestSuplEs(void* locEng, int id) :
1085e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mID(id) {
1086e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1087e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1088e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngRequestSuplEs::proc() const {
1089e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1090e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->ds_nif) {
1091e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        AgpsStateMachine* sm = locEng->ds_nif;
1092e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        DSSubscriber s(sm, mID);
1093e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->subscribeRsrc((Subscriber*)&s);
1094e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1095e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    else if (locEng->agnss_nif) {
1096e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        AgpsStateMachine *sm = locEng->agnss_nif;
1097e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ATLSubscriber s(mID,
1098e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        sm,
1099e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        locEng->adapter,
1100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        false);
1101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->subscribeRsrc((Subscriber*)&s);
1102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGD("%s:%d]: Using regular ATL for SUPL ES", __func__, __LINE__);
1103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    else {
1105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEng->adapter->atlOpenStatus(mID, 0, NULL, -1, -1);
1106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestSuplEs::locallog() const {
1109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngRequestSuplEs");
1110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestSuplEs::log() const {
1112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_ATL:
1116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngRequestATL::LocEngRequestATL(void* locEng, int id,
1117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   AGpsExtType agps_type) :
1118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mID(id), mType(agps_type) {
1119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngRequestATL::proc() const {
1122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* sm = (AgpsStateMachine*)
1124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                           getAgpsStateMachine(*locEng, mType);
1125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (sm) {
1126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ATLSubscriber s(mID,
1127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        sm,
1128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        locEng->adapter,
1129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        AGPS_TYPE_INVALID == mType);
1130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sm->subscribeRsrc((Subscriber*)&s);
1131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
1132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEng->adapter->atlOpenStatus(mID, 0, NULL, -1, mType);
1133e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestATL::locallog() const {
1136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngRequestATL");
1137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestATL::log() const {
1139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1140e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_RELEASE_ATL:
1143e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReleaseATL::LocEngReleaseATL(void* locEng, int id) :
1144e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mID(id) {
1145e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1146e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1147e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReleaseATL::proc() const {
1148e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1149e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1150e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   if (locEng->agnss_nif) {
1151e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ATLSubscriber s1(mID, locEng->agnss_nif, locEng->adapter, false);
1152e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (locEng->agnss_nif->unsubscribeRsrc((Subscriber*)&s1)) {
1153e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGD("%s:%d]: Unsubscribed from agnss_nif",
1154e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                     __func__, __LINE__);
1155e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            return;
1156e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1157e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1158e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1159e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->internet_nif) {
1160e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ATLSubscriber s2(mID, locEng->internet_nif, locEng->adapter, false);
1161e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (locEng->internet_nif->unsubscribeRsrc((Subscriber*)&s2)) {
1162e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGD("%s:%d]: Unsubscribed from internet_nif",
1163e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                     __func__, __LINE__);
1164e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            return;
1165e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1166e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1167e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1168e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->ds_nif) {
1169e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        DSSubscriber s3(locEng->ds_nif, mID);
1170e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (locEng->ds_nif->unsubscribeRsrc((Subscriber*)&s3)) {
1171e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGD("%s:%d]: Unsubscribed from ds_nif",
1172e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                     __func__, __LINE__);
1173e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            return;
1174e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1175e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1176e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1177e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGW("%s:%d]: Could not release ATL. "
1178e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             "No subscribers found\n",
1179e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             __func__, __LINE__);
1180e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locEng->adapter->atlCloseStatus(mID, 0);
1181e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1182e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReleaseATL::locallog() const {
1183e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngReleaseATL");
1184e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1185e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReleaseATL::log() const {
1186e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1187e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1188e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1189e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_WIFI:
1190e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_RELEASE_WIFI:
1191e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReqRelWifi::LocEngReqRelWifi(void* locEng, AGpsExtType type,
1192e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   loc_if_req_sender_id_e_type sender_id,
1193e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   char* s, char* p, bool isReq) :
1194e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng), mType(type), mSenderId(sender_id),
1195e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mSSID(NULL == s ? NULL : new char[SSID_BUF_SIZE]),
1196e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mPassword(NULL == p ? NULL : new char[SSID_BUF_SIZE]),
1197e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mIsReq(isReq) {
1198e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != s)
1199e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        strlcpy(mSSID, s, SSID_BUF_SIZE);
1200e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != p)
1201e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        strlcpy(mPassword, p, SSID_BUF_SIZE);
1202e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1203e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1204e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngReqRelWifi::~LocEngReqRelWifi() {
1205e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != mSSID) {
1206e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete[] mSSID;
1207e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1208e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != mPassword) {
1209e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete[] mPassword;
1210e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1211e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1212e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReqRelWifi::proc() const {
1213e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1214e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->wifi_nif) {
1215e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        WIFISubscriber s(locEng->wifi_nif, mSSID, mPassword, mSenderId);
1216e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (mIsReq) {
1217e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locEng->wifi_nif->subscribeRsrc((Subscriber*)&s);
1218e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        } else {
1219e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locEng->wifi_nif->unsubscribeRsrc((Subscriber*)&s);
1220e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1221e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
1222e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEng->adapter->atlOpenStatus(mSenderId, 0, NULL, -1, mType);
1223e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1224e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1225e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReqRelWifi::locallog() const {
1226e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("%s - senderId: %d, ssid: %s, password: %s",
1227e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             mIsReq ? "LocEngRequestWifi" : "LocEngReleaseWifi",
1228e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             mSenderId,
1229e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             NULL != mSSID ? mSSID : "",
1230e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             NULL != mPassword ? mPassword : "");
1231e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1232e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngReqRelWifi::log() const {
1233e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1234e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1235e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngReqRelWifi::send() const {
1236e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1237e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locEng->adapter->sendMsg(this);
1238e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1239e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1240e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_XTRA_DATA:
1241e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngRequestXtra::LocEngRequestXtra(void* locEng) :
1242e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mLocEng(locEng) {
1243e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1244e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1245e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngRequestXtra::proc() const
1246e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1247e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_xtra_data_s_type* locEngXtra =
1248e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        &(((loc_eng_data_s_type*)mLocEng)->xtra_module_data);
1249e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1250e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEngXtra->download_request_cb != NULL) {
1251e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        CALLBACK_LOG_CALLFLOW("download_request_cb", %p, mLocEng);
1252e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEngXtra->download_request_cb();
1253e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
1254e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("Callback function for request xtra is NULL");
1255e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1256e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1257e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestXtra::locallog() const {
1258e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngReqXtra");
1259e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1260e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestXtra::log() const {
1261e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1262e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1263e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1264e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_TIME:
1265e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngRequestTime::LocEngRequestTime(void* locEng) :
1266e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng)
1267e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1268e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1269e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1270e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocEngRequestTime::proc() const {
1271e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1272e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (gps_conf.CAPABILITIES & GPS_CAPABILITY_ON_DEMAND_TIME) {
1273e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (locEng->request_utc_time_cb != NULL) {
1274e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locEng->request_utc_time_cb();
1275e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        } else {
1276e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGE("Callback function for request time is NULL");
1277e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1278e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1279e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1280e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestTime::locallog() const {
1281e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngReqTime");
1282e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1283e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngRequestTime::log() const {
1284e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1285e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1286e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1287e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_DELETE_AIDING_DATA:
1288e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngDelAidData : public LocMsg {
1289e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* mLocEng;
1290e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const GpsAidingData mType;
1291e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngDelAidData(loc_eng_data_s_type* locEng,
1292e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            GpsAidingData f) :
1293e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mLocEng(locEng), mType(f)
1294e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1295e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1296e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1297e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1298e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mLocEng->aiding_data_for_deletion = mType;
1299e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        update_aiding_data_for_deletion(*mLocEng);
1300e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1301e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
1302e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("aiding data msak %d", mType);
1303e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1304e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void log() const {
1305e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1306e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1307e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1308e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1309e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_ENABLE_DATA:
1310e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngEnableData : public LocMsg {
1311e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
1312e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mEnable;
1313e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    char* mAPN;
1314e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mLen;
1315e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngEnableData(LocEngAdapter* adapter,
1316e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            const char* name, int len, int enable) :
1317e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter),
1318e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mEnable(enable), mAPN(NULL), mLen(len)
1319e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1320e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (NULL != name) {
1321e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            mAPN = new char[len+1];
1322e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            memcpy((void*)mAPN, (void*)name, len);
1323e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            mAPN[len] = 0;
1324e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1325e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1326e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1327e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline ~LocEngEnableData() {
1328e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (NULL != mAPN) {
1329e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            delete[] mAPN;
1330e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1331e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1332e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1333e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAdapter->enableData(mEnable);
1334e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (NULL != mAPN) {
1335e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            mAdapter->setAPN(mAPN, mLen);
1336e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1337e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1338e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
1339e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("apn: %s\n  enable: %d",
1340e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 (NULL == mAPN) ? "NULL" : mAPN, mEnable);
1341e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1342e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
1343e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1344e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1345e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1346e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1347e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_INJECT_XTRA_DATA:
1348e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// loc_eng_xtra.cpp
1349e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1350e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_SET_CAPABILITIES:
1351e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngSetCapabilities : public LocMsg {
1352e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* mLocEng;
1353e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngSetCapabilities(loc_eng_data_s_type* locEng) :
1354e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mLocEng(locEng)
1355e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1356e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1357e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1358e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1359e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (NULL != mLocEng->set_capabilities_cb) {
1360e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGV("calling set_capabilities_cb 0x%x",
1361e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                     gps_conf.CAPABILITIES);
1362e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            mLocEng->set_capabilities_cb(gps_conf.CAPABILITIES);
1363e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        } else {
1364e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGV("set_capabilities_cb is NULL.\n");
1365e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1366e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1367e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const
1368e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1369e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngSetCapabilities");
1370e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1371e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const
1372e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1373e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1374e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1375e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1376e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
137764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumarstruct LocEngSetSystemInfo : public LocMsg {
137864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    loc_eng_data_s_type* mLocEng;
137964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    inline LocEngSetSystemInfo(loc_eng_data_s_type* locEng) :
138064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        LocMsg(), mLocEng(locEng)
138164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    {
138264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        locallog();
138364efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    }
138464efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    inline virtual void proc() const {
138590ff8458566558fcd750c78351bc4ec8466d3995Dante Russo        if (NULL != mLocEng->set_system_info_cb) {
138664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            LOC_LOGV("calling set_system_info_cb 0x%x",
138764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                mLocEng->adapter->mGnssInfo.year_of_hw);
138864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mLocEng->set_system_info_cb(&(mLocEng->adapter->mGnssInfo));
138964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        }
139064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        else {
139164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            LOC_LOGV("set_system_info_cb is NULL.\n");
139264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        }
139364efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    }
139464efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    inline void locallog() const
139564efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    {
139664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        LOC_LOGV("LocEngSetSystemInfo");
139764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    }
139864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    inline virtual void log() const
139964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    {
140064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        locallog();
140164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    }
140264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar};
140364efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar
1404e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_LOC_INIT:
1405e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngInit : public LocMsg {
1406e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* mLocEng;
1407e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngInit(loc_eng_data_s_type* locEng) :
1408e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mLocEng(locEng)
1409e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1410e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1411e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1412e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1413e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_reinit(*mLocEng);
1414e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        // set the capabilities
1415e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mLocEng->adapter->sendMsg(new LocEngSetCapabilities(mLocEng));
141664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        mLocEng->adapter->sendMsg(new LocEngSetSystemInfo(mLocEng));
1417e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1418e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const
1419e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1420e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngInit");
1421e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1422e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const
1423e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1424e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1425e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1426e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1427e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1428e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REQUEST_XTRA_SERVER:
1429e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// loc_eng_xtra.cpp
1430e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1431e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_ATL_OPEN_SUCCESS:
1432e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngAtlOpenSuccess : public LocMsg {
1433e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* mStateMachine;
1434e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const int mLen;
1435e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    char* mAPN;
1436e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const AGpsBearerType mBearerType;
1437e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngAtlOpenSuccess(AgpsStateMachine* statemachine,
1438e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                const char* name,
1439e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                int len,
1440e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                AGpsBearerType btype) :
1441e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(),
1442e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mStateMachine(statemachine), mLen(len),
1443e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAPN(new char[len+1]), mBearerType(btype)
1444e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1445e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        memcpy((void*)mAPN, (void*)name, len);
1446e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mAPN[len] = 0;
1447e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1448e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1449e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline ~LocEngAtlOpenSuccess()
1450e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1451e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete[] mAPN;
1452e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1453e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1454e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mStateMachine->setBearer(mBearerType);
1455e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mStateMachine->setAPN(mAPN, mLen);
1456e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mStateMachine->onRsrcEvent(RSRC_GRANTED);
1457e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1458e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
1459e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngAtlOpenSuccess agps type: %s\n  apn: %s\n"
1460e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "  bearer type: %s",
1461e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 loc_get_agps_type_name(mStateMachine->getType()),
1462e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mAPN,
1463e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 loc_get_agps_bear_name(mBearerType));
1464e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1465e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
1466e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1467e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1468e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1469e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1470e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_ATL_CLOSED:
1471e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngAtlClosed : public LocMsg {
1472e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* mStateMachine;
1473e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngAtlClosed(AgpsStateMachine* statemachine) :
1474e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mStateMachine(statemachine) {
1475e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1476e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1477e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1478e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mStateMachine->onRsrcEvent(RSRC_RELEASED);
1479e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1480e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
1481e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngAtlClosed");
1482e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1483e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
1484e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1485e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1486e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1487e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1488e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_ATL_OPEN_FAILED:
1489e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngAtlOpenFailed : public LocMsg {
1490e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* mStateMachine;
1491e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngAtlOpenFailed(AgpsStateMachine* statemachine) :
1492e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mStateMachine(statemachine) {
1493e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1494e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1495e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1496e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mStateMachine->onRsrcEvent(RSRC_DENIED);
1497e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1498e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
1499e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngAtlOpenFailed");
1500e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1501e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
1502e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1503e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1504e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1505e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1506e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_ENGINE_DOWN:
1507e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngDown::LocEngDown(void* locEng) :
1508e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng) {
1509e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1510e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1511e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngDown::proc() const {
1512e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1513e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_handle_engine_down(*locEng);
1514e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1515e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngDown::locallog() const {
1516e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngDown");
1517e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1518e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngDown::log() const {
1519e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1520e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1521e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1522e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_ENGINE_UP:
1523e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocEngUp::LocEngUp(void* locEng) :
1524e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocMsg(), mLocEng(locEng) {
1525e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1526e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1527e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngUp::proc() const {
1528e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mLocEng;
1529e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_handle_engine_up(*locEng);
1530e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1531e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngUp::locallog() const {
1532e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("LocEngUp");
1533e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1534e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiinline void LocEngUp::log() const {
1535e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1536e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1537e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1538e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngDataClientInit : public LocMsg {
1539e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* mLocEng;
1540e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngDataClientInit(loc_eng_data_s_type* locEng) :
1541e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mLocEng(locEng) {
1542e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1543e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1544e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void proc() const {
1545e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data_s_type *locEng = (loc_eng_data_s_type *)mLocEng;
1546e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if(!locEng->adapter->initDataServiceClient()) {
1547e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locEng->ds_nif = new DSStateMachine(servicerTypeExt,
1548e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                               (void *)dataCallCb,
1549e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                               locEng->adapter);
1550e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1551e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1552e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void locallog() const {
1553e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngDataClientInit\n");
1554e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1555e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void log() const {
1556e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1557e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1558e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1559e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1560e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngInstallAGpsCert : public LocMsg {
1561e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mpAdapter;
1562e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const size_t mNumberOfCerts;
1563e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const uint32_t mSlotBitMask;
1564e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    DerEncodedCertificate* mpData;
1565e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngInstallAGpsCert(LocEngAdapter* adapter,
1566e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              const DerEncodedCertificate* pData,
1567e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              size_t numberOfCerts,
1568e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              uint32_t slotBitMask) :
1569e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mpAdapter(adapter),
1570e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mNumberOfCerts(numberOfCerts), mSlotBitMask(slotBitMask),
1571e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mpData(new DerEncodedCertificate[mNumberOfCerts])
1572e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1573e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        for (int i=0; i < mNumberOfCerts; i++) {
1574e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            mpData[i].data = new u_char[pData[i].length];
1575e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (mpData[i].data) {
1576e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                memcpy(mpData[i].data, (void*)pData[i].data, pData[i].length);
1577e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                mpData[i].length = pData[i].length;
1578e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            } else {
1579e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                LOC_LOGE("malloc failed for cert#%d", i);
1580e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                break;
1581e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
1582e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1583e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1584e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1585e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline ~LocEngInstallAGpsCert()
1586e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1587e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        for (int i=0; i < mNumberOfCerts; i++) {
1588e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (mpData[i].data) {
1589e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                delete[] mpData[i].data;
1590e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
1591e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1592e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete[] mpData;
1593e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1594e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1595e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mpAdapter->installAGpsCert(mpData, mNumberOfCerts, mSlotBitMask);
1596e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1597e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void locallog() const {
1598e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngInstallAGpsCert - certs=%u mask=%u",
1599e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 mNumberOfCerts, mSlotBitMask);
1600e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1601e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void log() const {
1602e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1603e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1604e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1605e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1606e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngUpdateRegistrationMask : public LocMsg {
1607e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* mLocEng;
1608e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_API_ADAPTER_EVENT_MASK_T mMask;
1609e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_registration_mask_status mIsEnabled;
1610e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngUpdateRegistrationMask(loc_eng_data_s_type* locEng,
1611e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                        LOC_API_ADAPTER_EVENT_MASK_T mask,
1612e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                        loc_registration_mask_status isEnabled) :
1613e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mLocEng(locEng), mMask(mask), mIsEnabled(isEnabled) {
1614e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1615e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1616e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
1617e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data_s_type *locEng = (loc_eng_data_s_type *)mLocEng;
1618e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEng->adapter->updateRegistrationMask(mMask,
1619e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                mIsEnabled);
1620e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1621e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void locallog() const {
1622e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngUpdateRegistrationMask\n");
1623e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1624e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void log() const {
1625e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1626e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1627e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1628e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1629e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocEngGnssConstellationConfig : public LocMsg {
1630e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* mAdapter;
1631e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocEngGnssConstellationConfig(LocEngAdapter* adapter) :
1632e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocMsg(), mAdapter(adapter) {
1633e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1634e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1635e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void proc() const {
163664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        mAdapter->mGnssInfo.size = sizeof(GnssSystemInfo);
1637e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (mAdapter->gnssConstellationConfig()) {
1638e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGV("Modem supports GNSS measurements\n");
1639e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            gps_conf.CAPABILITIES |= GPS_CAPABILITY_MEASUREMENTS;
164064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mAdapter->mGnssInfo.year_of_hw = 2016;
1641e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        } else {
164264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mAdapter->mGnssInfo.year_of_hw = 2015;
1643e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGV("Modem does not support GNSS measurements\n");
1644e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1645e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1646e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void locallog() const {
1647e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("LocEngGnssConstellationConfig\n");
1648e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1649e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void log() const {
1650e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locallog();
1651e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1652e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
1653e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1654e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti//        case LOC_ENG_MSG_REPORT_GNSS_MEASUREMENT:
165564efbd901d2142e100b2f16f4879baedb7de6efeAjit KumarLocEngReportGnssMeasurement::LocEngReportGnssMeasurement(void* locEng,
165664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                                                       GnssData &gnssData) :
165764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    LocMsg(), mLocEng(locEng), mGnssData(gnssData)
1658e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1659e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1660e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
166164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumarvoid LocEngReportGnssMeasurement::proc() const {
1662e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data_s_type* locEng = (loc_eng_data_s_type*) mLocEng;
1663e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (locEng->mute_session_state != LOC_MUTE_SESS_IN_SESSION)
1664e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
166564efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        if (locEng->gnss_measurement_cb != NULL) {
166664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            LOC_LOGV("Calling gnss_measurement_cb");
166764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            locEng->gnss_measurement_cb((GnssData*)&(mGnssData));
1668e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
1669e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1670e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
167164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar
167264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumarvoid LocEngReportGnssMeasurement::locallog() const {
1673e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    IF_LOC_LOGV {
1674e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGV("%s:%d]: Received in GPS HAL."
1675e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 "GNSS Measurements count: %d \n",
167664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                 __func__, __LINE__, mGnssData.measurement_count);
167764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        for (int i =0; i< mGnssData.measurement_count && i < GNSS_MAX_SVS; i++) {
1678e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                LOC_LOGV(" GNSS measurement data in GPS HAL: \n"
167964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         " GPS_HAL => Measurement ID | svid | time_offset_ns | state |"
168064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         " c_n0_dbhz | pseudorange_rate_mps |"
1681e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         " pseudorange_rate_uncertainty_mps |"
1682e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         " accumulated_delta_range_state | flags \n"
168364efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         " GPS_HAL => %d | %d | %f | %d | %f | %f | %f | %d | %d \n",
1684e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                         i,
168564efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].svid,
168664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].time_offset_ns,
168764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].state,
168864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].c_n0_dbhz,
168964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].pseudorange_rate_mps,
169064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].pseudorange_rate_uncertainty_mps,
169164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].accumulated_delta_range_state,
169264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                         mGnssData.measurements[i].flags);
1693e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
169464efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar        LOC_LOGV(" GPS_HAL => Clocks Info: \n"
169564efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                 " time_ns | full_bias_ns | bias_ns | bias_uncertainty_ns | "
169664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                 " drift_nsps | drift_uncertainty_nsps | hw_clock_discontinuity_count | flags"
169764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                 " GPS_HAL => Clocks Info: %lld | %lld | %g | %g | %g | %g | %d | 0x%04x\n",
169864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.time_ns,
169964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.full_bias_ns,
170064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.bias_ns,
170164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.bias_uncertainty_ns,
170264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.drift_nsps,
170364efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.drift_uncertainty_nsps,
170464efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.hw_clock_discontinuity_count,
170564efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar            mGnssData.clock.flags);
170664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    }
170764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar}
170864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar
170964efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumarinline void LocEngReportGnssMeasurement::log() const {
1710e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    locallog();
1711e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1712e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1713e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*********************************************************************
1714e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * Initialization checking macros
1715e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *********************************************************************/
1716e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define STATE_CHECK(ctx, x, ret) \
1717e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (!(ctx))                  \
1718e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  {                              \
1719e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      /* Not intialized, abort */\
1720e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      LOC_LOGE("%s: log_eng state error: %s", __func__, x); \
1721e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      EXIT_LOG(%s, x);                                            \
1722e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      ret;                                                        \
1723e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  }
1724e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define INIT_CHECK(ctx, ret) STATE_CHECK(ctx, "instance not initialized", ret)
1725e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1726e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
1727e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_init
1728e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1729e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
1730e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Initialize the location engine, this include setting up global datas
1731e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   and registers location engien with loc api service.
1732e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1733e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
1734e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
1735e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1736e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
1737e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: success
1738e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1739e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
1740e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
1741e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1742e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
1743e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_init(loc_eng_data_s_type &loc_eng_data, LocCallbacks* callbacks,
1744e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 LOC_API_ADAPTER_EVENT_MASK_T event, ContextBase* context)
1745e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1746e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1747e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int ret_val = 0;
1748e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1749e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
1750e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL == callbacks || 0 == event) {
1751e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("loc_eng_init: bad parameters cb %p eMask %d", callbacks, event);
1752e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ret_val = -1;
1753e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        EXIT_LOG(%d, ret_val);
1754e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        return ret_val;
1755e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1756e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1757e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    STATE_CHECK((NULL == loc_eng_data.adapter),
1758e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                "instance already initialized", return 0);
1759e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1760e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    memset(&loc_eng_data, 0, sizeof (loc_eng_data));
1761e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1762e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Save callbacks
1763e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.location_cb  = callbacks->location_cb;
1764e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.sv_status_cb = callbacks->sv_status_cb;
1765e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.status_cb    = callbacks->status_cb;
1766e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.nmea_cb      = callbacks->nmea_cb;
1767e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.set_capabilities_cb = callbacks->set_capabilities_cb;
1768e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.acquire_wakelock_cb = callbacks->acquire_wakelock_cb;
1769e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.release_wakelock_cb = callbacks->release_wakelock_cb;
1770e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.request_utc_time_cb = callbacks->request_utc_time_cb;
177164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    loc_eng_data.set_system_info_cb = callbacks->set_system_info_cb;
177264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    loc_eng_data.gnss_sv_status_cb = callbacks->gnss_sv_status_cb;
1773e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.location_ext_parser = callbacks->location_ext_parser ?
1774e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        callbacks->location_ext_parser : noProc;
1775e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.sv_ext_parser = callbacks->sv_ext_parser ?
1776e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        callbacks->sv_ext_parser : noProc;
1777e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.intermediateFix = gps_conf.INTERMEDIATE_POS;
1778e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // initial states taken care of by the memset above
1779e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // loc_eng_data.engine_status -- GPS_STATUS_NONE;
1780e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // loc_eng_data.fix_session_status -- GPS_STATUS_NONE;
1781e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // loc_eng_data.mute_session_state -- LOC_MUTE_SESS_NONE;
1782e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1783e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if ((event & LOC_API_ADAPTER_BIT_NMEA_1HZ_REPORT) && (gps_conf.NMEA_PROVIDER == NMEA_PROVIDER_AP))
1784e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1785e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        event = event ^ LOC_API_ADAPTER_BIT_NMEA_1HZ_REPORT; // unregister for modem NMEA report
1786e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.generateNmea = true;
1787e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1788e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    else
1789e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1790e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.generateNmea = false;
1791e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1792e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1793e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter =
1794e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        new LocEngAdapter(event, &loc_eng_data, context,
1795e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                          (LocThread::tCreate)callbacks->create_thread_cb);
1796e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
179764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    loc_eng_data.adapter->mGnssInfo.size = sizeof(GnssSystemInfo);
179864efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    loc_eng_data.adapter->mGnssInfo.year_of_hw = 2015;
1799e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD("loc_eng_init created client, id = %p\n",
1800e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             loc_eng_data.adapter);
1801e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->sendMsg(new LocEngInit(&loc_eng_data));
1802e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1803e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, ret_val);
1804e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret_val;
1805e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1806e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1807e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_reinit(loc_eng_data_s_type &loc_eng_data)
1808e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1809e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
1810e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int ret_val = LOC_API_ADAPTER_ERR_SUCCESS;
1811e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = loc_eng_data.adapter;
1812e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1813e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngGnssConstellationConfig(adapter));
1814e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngSuplVer(adapter, gps_conf.SUPL_VER));
1815e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngLppConfig(adapter, gps_conf.LPP_PROFILE));
1816e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngSensorControlConfig(adapter, sap_conf.SENSOR_USAGE,
1817e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                   sap_conf.SENSOR_PROVIDER));
1818e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngAGlonassProtocol(adapter, gps_conf.A_GLONASS_POS_PROTOCOL_SELECT));
1819e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1820e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    /* Make sure at least one of the sensor property is specified by the user in the gps.conf file. */
1821e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if( sap_conf.GYRO_BIAS_RANDOM_WALK_VALID ||
1822e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
1823e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
1824e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sap_conf.RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
1825e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        sap_conf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID ) {
1826e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        adapter->sendMsg(new LocEngSensorProperties(adapter,
1827e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.GYRO_BIAS_RANDOM_WALK_VALID,
1828e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.GYRO_BIAS_RANDOM_WALK,
1829e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
1830e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY,
1831e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
1832e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY,
1833e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
1834e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.RATE_RANDOM_WALK_SPECTRAL_DENSITY,
1835e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
1836e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                    sap_conf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY));
1837e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1838e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1839e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngSensorPerfControlConfig(adapter,
1840e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_CONTROL_MODE,
1841e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_ACCEL_SAMPLES_PER_BATCH,
1842e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_ACCEL_BATCHES_PER_SEC,
1843e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_GYRO_SAMPLES_PER_BATCH,
1844e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_GYRO_BATCHES_PER_SEC,
1845e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH,
1846e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_ACCEL_BATCHES_PER_SEC_HIGH,
1847e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH,
1848e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_GYRO_BATCHES_PER_SEC_HIGH,
1849e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       sap_conf.SENSOR_ALGORITHM_CONFIG_MASK));
1850e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1851e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngEnableData(adapter, NULL, 0, (agpsStatus ? 1:0)));
1852e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1853e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_xtra_version_check(loc_eng_data, gps_conf.XTRA_VERSION_CHECK);
1854e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1855e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD("loc_eng_reinit reinit() successful");
1856e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, ret_val);
1857e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret_val;
1858e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1859e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1860e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
1861e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_cleanup
1862e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1863e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
1864e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Cleans location engine. The location client handle will be released.
1865e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1866e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
1867e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
1868e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1869e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
1870e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
1871e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1872e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
1873e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
1874e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1875e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
1876e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_cleanup(loc_eng_data_s_type &loc_eng_data)
1877e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1878e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
1879e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return);
1880e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1881e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // XTRA has no state, so we are fine with it.
1882e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1883e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // we need to check and clear NI
1884e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#if 0
1885e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // we need to check and clear ATL
1886e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != loc_eng_data.agnss_nif) {
1887e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete loc_eng_data.agnss_nif;
1888e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.agnss_nif = NULL;
1889e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1890e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != loc_eng_data.internet_nif) {
1891e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        delete loc_eng_data.internet_nif;
1892e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.internet_nif = NULL;
1893e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1894e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
1895e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.adapter->isInSession())
1896e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1897e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGD("loc_eng_cleanup: fix not stopped. stop it now.");
1898e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_stop(loc_eng_data);
1899e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1900e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1901e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#if 0 // can't afford to actually clean up, for many reason.
1902e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1903e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD("loc_eng_init: client opened. close it now.");
1904e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    delete loc_eng_data.adapter;
1905e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter = NULL;
1906e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1907e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_dmn_conn_loc_api_server_unblock();
1908e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_dmn_conn_loc_api_server_join();
1909e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1910e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
1911e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1912e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
1913e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1914e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1915e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1916e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
1917e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_start
1918e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1919e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
1920e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Starts the tracking session
1921e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1922e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
1923e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
1924e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1925e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
1926e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: success
1927e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1928e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
1929e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
1930e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1931e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
1932e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_start(loc_eng_data_s_type &loc_eng_data)
1933e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1934e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   ENTRY_LOG_CALLFLOW();
1935e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   INIT_CHECK(loc_eng_data.adapter, return -1);
1936e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1937e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   if(! loc_eng_data.adapter->getUlpProxy()->sendStartFix())
1938e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   {
1939e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti       loc_eng_data.adapter->sendMsg(new LocEngStartFix(loc_eng_data.adapter));
1940e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   }
1941e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1942e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   EXIT_LOG(%d, 0);
1943e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   return 0;
1944e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1945e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1946e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_start_handler(loc_eng_data_s_type &loc_eng_data)
1947e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1948e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   ENTRY_LOG();
1949e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   int ret_val = LOC_API_ADAPTER_ERR_SUCCESS;
1950e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1951e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   if (!loc_eng_data.adapter->isInSession()) {
1952e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti       ret_val = loc_eng_data.adapter->startFix();
1953e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1954e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti       if (ret_val == LOC_API_ADAPTER_ERR_SUCCESS ||
1955e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti           ret_val == LOC_API_ADAPTER_ERR_ENGINE_DOWN ||
1956e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti           ret_val == LOC_API_ADAPTER_ERR_PHONE_OFFLINE ||
1957e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti           ret_val == LOC_API_ADAPTER_ERR_INTERNAL)
1958e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti       {
1959e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti           loc_eng_data.adapter->setInSession(TRUE);
1960e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti       }
1961e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   }
1962e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1963e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   EXIT_LOG(%d, ret_val);
1964e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   return ret_val;
1965e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1966e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1967e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
1968e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_stop_wrapper
1969e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1970e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
1971e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Stops the tracking session
1972e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1973e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
1974e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
1975e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1976e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
1977e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: success
1978e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1979e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
1980e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
1981e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1982e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
1983e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_stop(loc_eng_data_s_type &loc_eng_data)
1984e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1985e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
1986e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return -1);
1987e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1988e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if(! loc_eng_data.adapter->getUlpProxy()->sendStopFix())
1989e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
1990e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.adapter->sendMsg(new LocEngStopFix(loc_eng_data.adapter));
1991e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
1992e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1993e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
1994e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
1995e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
1996e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
1997e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_stop_handler(loc_eng_data_s_type &loc_eng_data)
1998e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
1999e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   ENTRY_LOG();
2000e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   int ret_val = LOC_API_ADAPTER_ERR_SUCCESS;
2001e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2002e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   if (loc_eng_data.adapter->isInSession()) {
2003e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2004e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti       ret_val = loc_eng_data.adapter->stopFix();
2005e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti       loc_eng_data.adapter->setInSession(FALSE);
2006e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   }
2007e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2008e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, ret_val);
2009e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret_val;
2010e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2011e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2012e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2013e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_mute_one_session
2014e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2015e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2016e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Mutes one session
2017e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2018e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2019e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2020e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2021e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2022e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: Success
2023e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2024e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2025e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2026e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2027e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2028e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_mute_one_session(loc_eng_data_s_type &loc_eng_data)
2029e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2030e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2031e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.mute_session_state = LOC_MUTE_SESS_WAIT;
2032e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2033e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2034e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2035e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2036e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_set_position_mode
2037e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2038e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2039e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Sets the mode and fix frequency for the tracking session.
2040e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2041e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2042e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2043e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2044e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2045e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: success
2046e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2047e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2048e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2049e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2050e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2051e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_set_position_mode(loc_eng_data_s_type &loc_eng_data,
2052e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              LocPosMode &params)
2053e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2054e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2055e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return -1);
2056e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2057e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // The position mode for AUTO/GSS/QCA1530 can only be standalone
2058e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (!(gps_conf.CAPABILITIES & GPS_CAPABILITY_MSB) &&
2059e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        !(gps_conf.CAPABILITIES & GPS_CAPABILITY_MSA) &&
2060e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        (params.mode != LOC_POSITION_MODE_STANDALONE)) {
2061e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        params.mode = LOC_POSITION_MODE_STANDALONE;
2062e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGD("Position mode changed to standalone for target with AUTO/GSS/qca1530.");
2063e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2064e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2065e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if(! loc_eng_data.adapter->getUlpProxy()->sendFixMode(params))
2066e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2067e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocEngAdapter* adapter = loc_eng_data.adapter;
2068e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        adapter->sendMsg(new LocEngPositionMode(adapter, params));
2069e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2070e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2071e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
2072e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2073e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2074e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2075e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2076e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_inject_time
2077e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2078e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2079e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This is used by Java native function to do time injection.
2080e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2081e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2082e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2083e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2084e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2085e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2086e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2087e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2088e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2089e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2090e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2091e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_inject_time(loc_eng_data_s_type &loc_eng_data, GpsUtcTime time,
2092e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        int64_t timeReference, int uncertainty)
2093e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2094e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2095e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return -1);
2096e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = loc_eng_data.adapter;
2097e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2098e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    adapter->sendMsg(new LocEngSetTime(adapter, time, timeReference,
2099e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                       uncertainty));
2100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
2102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_inject_location
2108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This is used by Java native function to do location injection.
2111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0          : Successful
2117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   error code : Failure
2118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_inject_location(loc_eng_data_s_type &loc_eng_data, double latitude,
2123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            double longitude, float accuracy)
2124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return -1);
2127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = loc_eng_data.adapter;
2128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if(adapter->mSupportsPositionInjection)
2129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        adapter->sendMsg(new LocEngInjectLocation(adapter, latitude, longitude,
2131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                  accuracy));
2132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2133e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
2135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2140e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_delete_aiding_data
2141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2143e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This is used by Java native function to delete the aiding data. The function
2144e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   updates the global variable for the aiding data to be deleted. If the GPS
2145e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   engine is off, the aiding data will be deleted. Otherwise, the actual action
2146e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   will happen when gps engine is turned off.
2147e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2148e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2149e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Assumes the aiding data type specified in GpsAidingData matches with
2150e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   LOC API specification.
2151e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2152e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2153e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2154e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2155e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2156e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2157e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2158e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2159e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_delete_aiding_data(loc_eng_data_s_type &loc_eng_data, GpsAidingData f)
2160e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2161e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2162e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return);
2163e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2164e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->sendMsg(new LocEngDelAidData(&loc_eng_data, f));
2165e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2166e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2167e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2168e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2169e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2170e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2171e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_inform_gps_state
2172e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2173e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2174e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Informs the GPS Provider about the GPS status
2175e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2176e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2177e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2178e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2179e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2180e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2181e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2182e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2183e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2184e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2185e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2186e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_inform_gps_status(loc_eng_data_s_type &loc_eng_data, GpsStatusValue status)
2187e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2188e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2189e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2190e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.status_cb)
2191e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2192e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        GpsStatus gs = { sizeof(gs),status };
2193e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        CALLBACK_LOG_CALLFLOW("status_cb", %s,
2194e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              loc_get_gps_status_name(gs.status));
2195e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.status_cb(&gs);
2196e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2197e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2198e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2199e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2200e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2201e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_get_zpp_handler(loc_eng_data_s_type &loc_eng_data)
2202e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2203e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   ENTRY_LOG();
2204e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   int ret_val = LOC_API_ADAPTER_ERR_SUCCESS;
2205e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   UlpLocation location;
2206e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   LocPosTechMask tech_mask = LOC_POS_TECH_MASK_DEFAULT;
2207e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   GpsLocationExtended locationExtended;
2208e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   memset(&locationExtended, 0, sizeof (GpsLocationExtended));
2209e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   locationExtended.size = sizeof(locationExtended);
2210e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2211e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   ret_val = loc_eng_data.adapter->getZpp(location.gpsLocation, tech_mask);
2212e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  //Mark the location source as from ZPP
2213e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  location.gpsLocation.flags |= LOCATION_HAS_SOURCE_INFO;
2214e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  location.position_source = ULP_LOCATION_IS_FROM_ZPP;
2215e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2216e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  loc_eng_data.adapter->getUlpProxy()->reportPosition(location,
2217e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                     locationExtended,
2218e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                     NULL,
2219e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                     LOC_SESS_SUCCESS,
2220e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                     tech_mask);
2221e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2222e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  EXIT_LOG(%d, ret_val);
2223e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  return ret_val;
2224e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2225e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2226e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*
2227e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  Callback function passed to Data Services State Machine
2228e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  This becomes part of the state machine's servicer and
2229e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  is used to send requests to the data services client
2230e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti*/
2231e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int dataCallCb(void *cb_data)
2232e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2233e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD("Enter dataCallCb\n");
2234e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int ret=0;
2235e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if(cb_data != NULL) {
2236e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        dsCbData *cbData = (dsCbData *)cb_data;
2237e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocEngAdapter *locAdapter = (LocEngAdapter *)cbData->mAdapter;
2238e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if(cbData->action == GPS_REQUEST_AGPS_DATA_CONN) {
2239e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGD("dataCallCb GPS_REQUEST_AGPS_DATA_CONN\n");
2240e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            ret =  locAdapter->openAndStartDataCall();
2241e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2242e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        else if(cbData->action == GPS_RELEASE_AGPS_DATA_CONN) {
2243e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGD("dataCallCb GPS_RELEASE_AGPS_DATA_CONN\n");
2244e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            locAdapter->stopDataCall();
2245e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2246e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2247e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    else {
2248e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("NULL argument received. Failing.\n");
2249e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ret = -1;
2250e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        goto err;
2251e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2252e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2253e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletierr:
2254e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD("Exit dataCallCb ret = %d\n", ret);
2255e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret;
2256e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2257e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2258e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2259e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_agps_reinit
2260e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2261e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2262e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   2nd half of loc_eng_agps_init(), singled out for modem restart to use.
2263e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2264e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2265e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   NONE
2266e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2267e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2268e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2269e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2270e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2271e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2272e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2273e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2274e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_agps_reinit(loc_eng_data_s_type &loc_eng_data)
2275e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2276e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2277e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2278e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Set server addresses which came before init
2279e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.supl_host_set)
2280e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2281e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_set_server(loc_eng_data, LOC_AGPS_SUPL_SERVER,
2282e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                           loc_eng_data.supl_host_buf,
2283e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                           loc_eng_data.supl_port_buf);
2284e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2285e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2286e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.c2k_host_set)
2287e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2288e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_set_server(loc_eng_data, LOC_AGPS_CDMA_PDE_SERVER,
2289e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                           loc_eng_data.c2k_host_buf,
2290e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                           loc_eng_data.c2k_port_buf);
2291e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2292e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2293e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2294e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2295e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_agps_init
2296e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2297e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2298e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Initialize the AGps interface.
2299e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2300e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2301e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   NONE
2302e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2303e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2304e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2305e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2306e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2307e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2308e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2309e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2310e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_agps_init(loc_eng_data_s_type &loc_eng_data, AGpsExtCallbacks* callbacks)
2311e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2312e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2313e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return);
2314e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    STATE_CHECK((NULL == loc_eng_data.agps_status_cb),
2315e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                "agps instance already initialized",
2316e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                return);
2317e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (callbacks == NULL) {
2318e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("loc_eng_agps_init: bad parameters cb %p", callbacks);
2319e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        EXIT_LOG(%s, VOID_RET);
2320e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        return;
2321e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2322e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = loc_eng_data.adapter;
2323e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.agps_status_cb = callbacks->status_cb;
2324e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2325e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.internet_nif = new AgpsStateMachine(servicerTypeAgps,
2326e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                     (void *)loc_eng_data.agps_status_cb,
2327e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                     AGPS_TYPE_WWAN_ANY,
2328e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                     false);
2329e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.wifi_nif = new AgpsStateMachine(servicerTypeAgps,
2330e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                 (void *)loc_eng_data.agps_status_cb,
2331e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                 AGPS_TYPE_WIFI,
2332e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                 true);
2333e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2334e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if ((gps_conf.CAPABILITIES & GPS_CAPABILITY_MSA) ||
2335e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        (gps_conf.CAPABILITIES & GPS_CAPABILITY_MSB)) {
2336e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.agnss_nif = new AgpsStateMachine(servicerTypeAgps,
2337e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                      (void *)loc_eng_data.agps_status_cb,
2338e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                      AGPS_TYPE_SUPL,
2339e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                      false);
2340e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2341e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (adapter->mSupportsAgpsRequests) {
2342e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if(gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL) {
2343e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                loc_eng_data.adapter->sendMsg(new LocEngDataClientInit(&loc_eng_data));
2344e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
2345e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            loc_eng_dmn_conn_loc_api_server_launch(callbacks->create_thread_cb,
2346e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                   NULL, NULL, &loc_eng_data);
2347e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2348e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_agps_reinit(loc_eng_data);
2349e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2350e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2351e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2352e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2353e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2354e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void deleteAidingData(loc_eng_data_s_type &logEng) {
2355e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (logEng.engine_status != GPS_STATUS_ENGINE_ON &&
2356e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        logEng.aiding_data_for_deletion != 0) {
2357e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        logEng.adapter->deleteAidingData(logEng.aiding_data_for_deletion);
2358e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        logEng.aiding_data_for_deletion = 0;
2359e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2360e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2361e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2362e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic AgpsStateMachine*
2363e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletigetAgpsStateMachine(loc_eng_data_s_type &locEng, AGpsExtType agpsType) {
2364e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* stateMachine;
2365e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    switch (agpsType) {
2366e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    case AGPS_TYPE_WIFI: {
2367e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        stateMachine = locEng.wifi_nif;
2368e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        break;
2369e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2370e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    case AGPS_TYPE_INVALID:
2371e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    case AGPS_TYPE_SUPL: {
2372e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        stateMachine = locEng.agnss_nif;
2373e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        break;
2374e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2375e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    case AGPS_TYPE_SUPL_ES: {
2376e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        locEng.ds_nif ?
2377e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            stateMachine = locEng.ds_nif:
2378e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            stateMachine = locEng.agnss_nif;
2379e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        break;
2380e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2381e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    default:
2382e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        stateMachine  = locEng.internet_nif;
2383e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2384e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return stateMachine;
2385e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2386e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2387e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2388e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_agps_open
2389e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2390e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2391e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This function is called when on-demand data connection opening is successful.
2392e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIt should inform engine about the data open result.
2393e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2394e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2395e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   NONE
2396e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2397e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2398e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2399e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2400e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2401e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2402e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2403e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2404e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_agps_open(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType,
2405e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                     const char* apn, AGpsBearerType bearerType)
2406e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2407e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2408e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter && loc_eng_data.agps_status_cb,
2409e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti               return -1);
2410e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2411e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (apn == NULL)
2412e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2413e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("APN Name NULL\n");
2414e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        return 0;
2415e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2416e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2417e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD("loc_eng_agps_open APN name = [%s]", apn);
2418e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2419e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int apn_len = smaller_of(strlen (apn), MAX_APN_LEN);
2420e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* sm = getAgpsStateMachine(loc_eng_data, agpsType);
2421e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2422e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->sendMsg(
2423e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        new LocEngAtlOpenSuccess(sm, apn, apn_len, bearerType));
2424e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2425e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
2426e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2427e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2428e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2429e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2430e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_agps_closed
2431e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2432e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2433e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This function is called when on-demand data connection closing is done.
2434e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIt should inform engine about the data close result.
2435e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2436e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2437e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   NONE
2438e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2439e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2440e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2441e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2442e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2443e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2444e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2445e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2446e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_agps_closed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType)
2447e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2448e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2449e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter && loc_eng_data.agps_status_cb,
2450e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti               return -1);
2451e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2452e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* sm = getAgpsStateMachine(loc_eng_data, agpsType);
2453e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->sendMsg(new LocEngAtlClosed(sm));
2454e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2455e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
2456e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2457e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2458e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2459e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2460e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_agps_open_failed
2461e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2462e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2463e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This function is called when on-demand data connection opening has failed.
2464e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiIt should inform engine about the data open result.
2465e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2466e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2467e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   NONE
2468e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2469e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2470e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2471e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2472e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2473e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2474e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2475e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2476e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_agps_open_failed(loc_eng_data_s_type &loc_eng_data, AGpsExtType agpsType)
2477e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2478e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2479e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter && loc_eng_data.agps_status_cb,
2480e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti               return -1);
2481e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2482e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AgpsStateMachine* sm = getAgpsStateMachine(loc_eng_data, agpsType);
2483e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->sendMsg(new LocEngAtlOpenFailed(sm));
2484e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2485e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
2486e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2487e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2488e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2489e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2490e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2491e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION resolve_in_addr
2492e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2493e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2494e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Translates a hostname to in_addr struct
2495e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2496e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2497e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   n/a
2498e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2499e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2500e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   TRUE if successful
2501e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2502e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2503e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   n/a
2504e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2505e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2506e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic boolean resolve_in_addr(const char *host_addr, struct in_addr *in_addr_ptr)
2507e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2508e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2509e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    boolean ret_val = TRUE;
2510e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2511e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    struct hostent             *hp;
2512e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    hp = gethostbyname(host_addr);
2513e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (hp != NULL) /* DNS OK */
2514e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2515e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        memcpy(in_addr_ptr, hp->h_addr_list[0], hp->h_length);
2516e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2517e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    else
2518e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2519e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        /* Try IP representation */
2520e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (inet_aton(host_addr, in_addr_ptr) == 0)
2521e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
2522e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            /* IP not valid */
2523e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGE("DNS query on '%s' failed\n", host_addr);
2524e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            ret_val = FALSE;
2525e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2526e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2527e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2528e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, loc_logger_boolStr[ret_val!=0]);
2529e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret_val;
2530e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2531e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2532e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2533e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_set_server
2534e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2535e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2536e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This is used to set the default AGPS server. Server address is obtained
2537e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   from gps.conf.
2538e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2539e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2540e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   NONE
2541e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2542e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2543e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2544e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2545e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2546e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2547e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2548e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2549e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int loc_eng_set_server(loc_eng_data_s_type &loc_eng_data,
2550e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                              LocServerType type, const char* hostname, int port)
2551e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2552e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2553e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int ret = 0;
2554e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = loc_eng_data.adapter;
2555e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2556e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (LOC_AGPS_SUPL_SERVER == type) {
2557e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        char url[MAX_URL_LEN];
2558e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        unsigned int len = 0;
2559e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        const char nohost[] = "NONE";
2560e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (hostname == NULL ||
2561e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            strncasecmp(nohost, hostname, sizeof(nohost)) == 0) {
2562e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            url[0] = NULL;
2563e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        } else {
2564e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            len = snprintf(url, sizeof(url), "%s:%u", hostname, (unsigned) port);
2565e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2566e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2567e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (sizeof(url) > len) {
2568e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            adapter->sendMsg(new LocEngSetServerUrl(adapter, url, len));
2569e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2570e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else if (LOC_AGPS_CDMA_PDE_SERVER == type ||
2571e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti               LOC_AGPS_CUSTOM_PDE_SERVER == type ||
2572e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti               LOC_AGPS_MPC_SERVER == type) {
2573e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        struct in_addr addr;
2574e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (!resolve_in_addr(hostname, &addr))
2575e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
2576e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGE("loc_eng_set_server, hostname %s cannot be resolved.\n", hostname);
2577e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            ret = -2;
2578e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        } else {
2579e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            unsigned int ip = htonl(addr.s_addr);
2580e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            adapter->sendMsg(new LocEngSetServerIpv4(adapter, ip, port, type));
2581e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2582e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
2583e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("loc_eng_set_server, type %d cannot be resolved.\n", type);
2584e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2585e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2586e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, ret);
2587e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret;
2588e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2589e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2590e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2591e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_set_server_proxy
2592e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2593e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2594e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   If loc_eng_set_server is called before loc_eng_init, it doesn't work. This
2595e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   proxy buffers server settings and calls loc_eng_set_server when the client is
2596e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   open.
2597e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2598e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2599e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   NONE
2600e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2601e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2602e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2603e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2604e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2605e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2606e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2607e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2608e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_set_server_proxy(loc_eng_data_s_type &loc_eng_data,
2609e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                             LocServerType type,
2610e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                             const char* hostname, int port)
2611e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2612e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2613e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int ret_val = 0;
2614e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2615e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGV("save the address, type: %d, hostname: %s, port: %d",
2616e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             (int) type, hostname, port);
2617e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    switch (type)
2618e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2619e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    case LOC_AGPS_SUPL_SERVER:
2620e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        strlcpy(loc_eng_data.supl_host_buf, hostname,
2621e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                sizeof(loc_eng_data.supl_host_buf));
2622e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.supl_port_buf = port;
2623e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.supl_host_set = 1;
2624e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        break;
2625e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    case LOC_AGPS_CDMA_PDE_SERVER:
2626e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        strlcpy(loc_eng_data.c2k_host_buf, hostname,
2627e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                sizeof(loc_eng_data.c2k_host_buf));
2628e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.c2k_port_buf = port;
2629e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.c2k_host_set = 1;
2630e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        break;
2631e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    default:
2632e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("loc_eng_set_server_proxy, unknown server type = %d", (int) type);
2633e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2634e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2635e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (NULL != loc_eng_data.adapter)
2636e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2637e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ret_val = loc_eng_set_server(loc_eng_data, type, hostname, port);
2638e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2639e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2640e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, ret_val);
2641e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret_val;
2642e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2643e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2644e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2645e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_agps_ril_update_network_availability
2646e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2647e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2648e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Sets data call allow vs disallow flag to modem
2649e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This is the only member of sLocEngAGpsRilInterface implemented.
2650e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2651e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2652e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2653e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2654e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2655e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: success
2656e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2657e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2658e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2659e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2660e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2661e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_agps_ril_update_network_availability(loc_eng_data_s_type &loc_eng_data,
2662e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                  int available, const char* apn)
2663e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2664e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2665e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2666e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //This is to store the status of data availability over the network.
2667e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //If GPS is not enabled, the INIT_CHECK will fail and the modem will
2668e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //not be updated with the network's availability. Since the data status
2669e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //can change before GPS is enabled the, storing the status will enable
2670e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //us to inform the modem after GPS is enabled
2671e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    agpsStatus = available;
2672e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2673e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return);
2674e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (apn != NULL)
2675e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2676e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGD("loc_eng_agps_ril_update_network_availability: APN Name = [%s]\n", apn);
2677e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        int apn_len = smaller_of(strlen (apn), MAX_APN_LEN);
2678e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocEngAdapter* adapter = loc_eng_data.adapter;
2679e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        adapter->sendMsg(new LocEngEnableData(adapter, apn,  apn_len, available));
2680e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2681e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2682e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2683e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2684e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_agps_install_certificates(loc_eng_data_s_type &loc_eng_data,
2685e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      const DerEncodedCertificate* certificates,
2686e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                      size_t numberOfCerts)
2687e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2688e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2689e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    int ret_val = AGPS_CERTIFICATE_OPERATION_SUCCESS;
2690e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2691e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    uint32_t slotBitMask = gps_conf.AGPS_CERT_WRITABLE_MASK;
2692e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    uint32_t slotCount = 0;
2693e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    for (uint32_t slotBitMaskCounter=slotBitMask; slotBitMaskCounter; slotCount++) {
2694e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        slotBitMaskCounter &= slotBitMaskCounter - 1;
2695e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2696e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD("SlotBitMask=%u SlotCount=%u NumberOfCerts=%u",
2697e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             slotBitMask, slotCount, numberOfCerts);
2698e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2699e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocEngAdapter* adapter = loc_eng_data.adapter;
2700e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2701e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (numberOfCerts == 0) {
2702e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("No certs to install, since numberOfCerts is zero");
2703e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ret_val = AGPS_CERTIFICATE_OPERATION_SUCCESS;
2704e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else if (!adapter) {
2705e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("adapter is null!");
2706e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ret_val = AGPS_CERTIFICATE_ERROR_GENERIC;
2707e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else if (slotCount < numberOfCerts) {
2708e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGE("Not enough cert slots (%u) to install %u certs!",
2709e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                 slotCount, numberOfCerts);
2710e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ret_val = AGPS_CERTIFICATE_ERROR_TOO_MANY_CERTIFICATES;
2711e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
2712e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        for (int i=0; i < numberOfCerts; ++i)
2713e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
2714e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (certificates[i].length > AGPS_CERTIFICATE_MAX_LENGTH) {
2715e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                LOC_LOGE("cert#(%u) length of %u is too big! greater than %u",
2716e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        certificates[i].length, AGPS_CERTIFICATE_MAX_LENGTH);
2717e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                ret_val = AGPS_CERTIFICATE_ERROR_GENERIC;
2718e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                break;
2719e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
2720e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2721e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2722e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (ret_val == AGPS_CERTIFICATE_OPERATION_SUCCESS) {
2723e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            adapter->sendMsg(new LocEngInstallAGpsCert(adapter,
2724e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       certificates,
2725e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       numberOfCerts,
2726e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                       slotBitMask));
2727e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2728e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2729e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2730e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, ret_val);
2731e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return ret_val;
2732e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2733e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2734e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_configuration_update (loc_eng_data_s_type &loc_eng_data,
2735e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                   const char* config_data, int32_t length)
2736e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2737e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2738e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2739e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (config_data && length > 0) {
2740e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_gps_cfg_s_type gps_conf_tmp = gps_conf;
2741e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        UTIL_UPDATE_CONF(config_data, length, gps_conf_table);
2742e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LocEngAdapter* adapter = loc_eng_data.adapter;
2743e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2744e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        // it is possible that HAL is not init'ed at this time
2745e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (adapter) {
2746e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (gps_conf_tmp.SUPL_VER != gps_conf.SUPL_VER) {
2747e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                adapter->sendMsg(new LocEngSuplVer(adapter, gps_conf.SUPL_VER));
2748e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
2749e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (gps_conf_tmp.LPP_PROFILE != gps_conf.LPP_PROFILE) {
2750e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                adapter->sendMsg(new LocEngLppConfig(adapter, gps_conf.LPP_PROFILE));
2751e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
2752e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (gps_conf_tmp.A_GLONASS_POS_PROTOCOL_SELECT != gps_conf.A_GLONASS_POS_PROTOCOL_SELECT) {
2753e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                adapter->sendMsg(new LocEngAGlonassProtocol(adapter,
2754e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                            gps_conf.A_GLONASS_POS_PROTOCOL_SELECT));
2755e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
2756e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            if (gps_conf_tmp.SUPL_MODE != gps_conf.SUPL_MODE) {
2757e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                adapter->sendMsg(new LocEngSuplMode(adapter->getUlpProxy()));
2758e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            }
2759e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2760e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2761e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        gps_conf_tmp.SUPL_VER = gps_conf.SUPL_VER;
2762e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        gps_conf_tmp.LPP_PROFILE = gps_conf.LPP_PROFILE;
2763e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        gps_conf_tmp.A_GLONASS_POS_PROTOCOL_SELECT = gps_conf.A_GLONASS_POS_PROTOCOL_SELECT;
2764e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        gps_conf_tmp.GPS_LOCK = gps_conf.GPS_LOCK;
2765e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        gps_conf = gps_conf_tmp;
2766e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2767e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2768e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2769e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2770e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2771e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2772e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_report_status
2773e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2774e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2775e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Reports GPS engine state to Java layer.
2776e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2777e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2778e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2779e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2780e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2781e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2782e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2783e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2784e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2785e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2786e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2787e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic void loc_eng_report_status (loc_eng_data_s_type &loc_eng_data, GpsStatusValue status)
2788e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2789e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2790e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Switch from WAIT to MUTE, for "engine on" or "session begin" event
2791e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (status == GPS_STATUS_SESSION_BEGIN || status == GPS_STATUS_ENGINE_ON)
2792e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2793e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (loc_eng_data.mute_session_state == LOC_MUTE_SESS_WAIT)
2794e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
2795e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGD("loc_eng_report_status: mute_session_state changed from WAIT to IN SESSION");
2796e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            loc_eng_data.mute_session_state = LOC_MUTE_SESS_IN_SESSION;
2797e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2798e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2799e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2800e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Switch off MUTE session
2801e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.mute_session_state == LOC_MUTE_SESS_IN_SESSION &&
2802e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        (status == GPS_STATUS_SESSION_END || status == GPS_STATUS_ENGINE_OFF))
2803e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2804e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        LOC_LOGD("loc_eng_report_status: mute_session_state changed from IN SESSION to NONE");
2805e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.mute_session_state = LOC_MUTE_SESS_NONE;
2806e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2807e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2808e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Session End is not reported during Android navigating state
2809e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    boolean navigating = loc_eng_data.adapter->isInSession();
2810e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (status != GPS_STATUS_NONE &&
2811e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        !(status == GPS_STATUS_SESSION_END && navigating) &&
2812e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        !(status == GPS_STATUS_SESSION_BEGIN && !navigating))
2813e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2814e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (loc_eng_data.mute_session_state != LOC_MUTE_SESS_IN_SESSION)
2815e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        {
2816e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            // Inform GpsLocationProvider about mNavigating status
2817e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            loc_inform_gps_status(loc_eng_data, status);
2818e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2819e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        else {
2820e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            LOC_LOGD("loc_eng_report_status: muting the status report.");
2821e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
2822e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2823e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2824e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Only keeps ENGINE ON/OFF in engine_status
2825e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (status == GPS_STATUS_ENGINE_ON || status == GPS_STATUS_ENGINE_OFF)
2826e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2827e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.engine_status = status;
2828e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2829e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2830e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // Only keeps SESSION BEGIN/END in fix_session_status
2831e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (status == GPS_STATUS_SESSION_BEGIN || status == GPS_STATUS_SESSION_END)
2832e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2833e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.fix_session_status = status;
2834e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2835e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2836e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2837e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2838e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2839e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION loc_eng_handle_engine_down
2840e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti         loc_eng_handle_engine_up
2841e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2842e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2843e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Calls this function when it is detected that modem restart is happening.
2844e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Either we detected the modem is down or received modem up event.
2845e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   This must be called from the deferred thread to avoid race condition.
2846e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2847e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2848e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2849e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2850e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2851e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2852e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2853e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2854e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2855e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2856e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2857e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_handle_engine_down(loc_eng_data_s_type &loc_eng_data)
2858e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2859e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2860e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_ni_reset_on_engine_restart(loc_eng_data);
2861e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_report_status(loc_eng_data, GPS_STATUS_ENGINE_OFF);
2862e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2863e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2864e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2865e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_handle_engine_up(loc_eng_data_s_type &loc_eng_data)
2866e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2867e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG();
2868e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_reinit(loc_eng_data);
2869e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2870e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->requestPowerVote();
2871e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2872e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.agps_status_cb != NULL) {
2873e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (loc_eng_data.agnss_nif)
2874e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            loc_eng_data.agnss_nif->dropAllSubscribers();
2875e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (loc_eng_data.internet_nif)
2876e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            loc_eng_data.internet_nif->dropAllSubscribers();
2877e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2878e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_agps_reinit(loc_eng_data);
2879e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2880e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2881e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // modem is back up.  If we crashed in the middle of navigating, we restart.
2882e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (loc_eng_data.adapter->isInSession()) {
2883e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        // This sets the copy in adapter to modem
2884e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.adapter->setInSession(false);
2885e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        loc_eng_data.adapter->sendMsg(new LocEngStartFix(loc_eng_data.adapter));
2886e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2887e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%s, VOID_RET);
2888e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2889e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2890e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef USE_GLIB
2891e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2892e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION set_sched_policy
2893e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2894e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2895e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Local copy of this function which bypasses android set_sched_policy
2896e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2897e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2898e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2899e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2900e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2901e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0
2902e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2903e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2904e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2905e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2906e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2907e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistatic int set_sched_policy(int tid, SchedPolicy policy)
2908e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2909e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2910e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2911e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif /* USE_GLIB */
2912e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2913e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2914e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_read_config
2915e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2916e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2917e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Initiates the reading of the gps config file stored in /etc dir
2918e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2919e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2920e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   None
2921e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2922e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2923e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: success
2924e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2925e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2926e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2927e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2928e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2929e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_read_config(void)
2930e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2931e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2932e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if(configAlreadyRead == false)
2933e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    {
2934e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      // Initialize our defaults before reading of configuration file overwrites them.
2935e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      loc_default_parameters();
2936e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      // We only want to parse the conf file once. This is a good place to ensure that.
2937e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      // In fact one day the conf file should go into context.
2938e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      UTIL_READ_CONF(GPS_CONF_FILE, gps_conf_table);
2939e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      UTIL_READ_CONF(SAP_CONF_FILE, sap_conf_table);
2940e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      configAlreadyRead = true;
2941e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } else {
2942e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      LOC_LOGV("GPS Config file has already been read\n");
2943e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
2944e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2945e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
2946e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return 0;
2947e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2948e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2949e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2950e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_gps_measurement_init
2951e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2952e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2953e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Initialize gps measurement module.
2954e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2955e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
2956e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2957e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2958e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
2959e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   0: success
2960e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2961e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
2962e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
2963e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2964e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
2965e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint loc_eng_gps_measurement_init(loc_eng_data_s_type &loc_eng_data,
2966e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                 GpsMeasurementCallbacks* callbacks)
2967e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
2968e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
2969e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
297064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    STATE_CHECK((NULL == loc_eng_data.gnss_measurement_cb),
297164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar                "gnss measurement already initialized",
2972e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                return GPS_MEASUREMENT_ERROR_ALREADY_INIT);
2973e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    STATE_CHECK((callbacks != NULL),
2974e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                "callbacks can not be NULL",
2975e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                return GPS_MEASUREMENT_ERROR_GENERIC);
2976e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    STATE_CHECK(loc_eng_data.adapter,
2977e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                "GpsInterface must be initialized first",
2978e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                return GPS_MEASUREMENT_ERROR_GENERIC);
2979e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2980e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // updated the mask
2981e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_API_ADAPTER_EVENT_MASK_T event = LOC_API_ADAPTER_BIT_GNSS_MEASUREMENT;
2982e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->sendMsg(new LocEngUpdateRegistrationMask(
2983e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                        &loc_eng_data,
2984e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                        event,
2985e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                        LOC_REGISTRATION_MASK_ENABLED));
2986e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // set up the callback
298764efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    loc_eng_data.gnss_measurement_cb = callbacks->gnss_measurement_callback;
2988e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_LOGD ("%s, event masks updated successfully", __func__);
2989e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2990e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    return GPS_MEASUREMENT_OPERATION_SUCCESS;
2991e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
2992e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2993e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/*===========================================================================
2994e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiFUNCTION    loc_eng_gps_measurement_close
2995e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2996e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDESCRIPTION
2997e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   Close gps measurement module.
2998e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
2999e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEPENDENCIES
3000e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
3001e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
3002e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiRETURN VALUE
3003e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
3004e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
3005e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiSIDE EFFECTS
3006e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti   N/A
3007e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
3008e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti===========================================================================*/
3009e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid loc_eng_gps_measurement_close(loc_eng_data_s_type &loc_eng_data)
3010e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
3011e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ENTRY_LOG_CALLFLOW();
3012e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
3013e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    INIT_CHECK(loc_eng_data.adapter, return);
3014e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
3015e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // updated the mask
3016e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_API_ADAPTER_EVENT_MASK_T event = LOC_API_ADAPTER_BIT_GNSS_MEASUREMENT;
3017e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    loc_eng_data.adapter->sendMsg(new LocEngUpdateRegistrationMask(
3018e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                          &loc_eng_data,
3019e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                          event,
3020e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                                          LOC_REGISTRATION_MASK_DISABLED));
3021e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // set up the callback
302264efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    loc_eng_data.gnss_measurement_cb = NULL;
3023e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    EXIT_LOG(%d, 0);
3024e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
3025