1/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are
5 * met:
6 *     * Redistributions of source code must retain the above copyright
7 *       notice, this list of conditions and the following disclaimer.
8 *     * Redistributions in binary form must reproduce the above
9 *       copyright notice, this list of conditions and the following
10 *       disclaimer in the documentation and/or other materials provided
11 *       with the distribution.
12 *     * Neither the name of The Linux Foundation, nor the names of its
13 *       contributors may be used to endorse or promote products derived
14 *       from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 */
29
30#define LOG_NDDEBUG 0
31#define LOG_TAG "LocSvc_core_log"
32
33#include <loc_log.h>
34#include <log_util.h>
35#include <loc_core_log.h>
36
37void LocPosMode::logv() const
38{
39    LOC_LOGV ("Position mode: %s\n  Position recurrence: %s\n  "
40              "min interval: %d\n  preferred accuracy: %d\n  "
41              "preferred time: %d\n  credentials: %s  provider: %s",
42              loc_get_position_mode_name(mode),
43              loc_get_position_recurrence_name(recurrence),
44              min_interval,
45              preferred_accuracy,
46              preferred_time,
47              credentials,
48              provider);
49}
50
51/* GPS status names */
52static loc_name_val_s_type gps_status_name[] =
53{
54    NAME_VAL( GPS_STATUS_NONE ),
55    NAME_VAL( GPS_STATUS_SESSION_BEGIN ),
56    NAME_VAL( GPS_STATUS_SESSION_END ),
57    NAME_VAL( GPS_STATUS_ENGINE_ON ),
58    NAME_VAL( GPS_STATUS_ENGINE_OFF ),
59};
60static int gps_status_num = sizeof(gps_status_name) / sizeof(loc_name_val_s_type);
61
62/* Find Android GPS status name */
63const char* loc_get_gps_status_name(GpsStatusValue gps_status)
64{
65   return loc_get_name_from_val(gps_status_name, gps_status_num,
66         (long) gps_status);
67}
68
69
70
71static loc_name_val_s_type loc_eng_position_modes[] =
72{
73    NAME_VAL( LOC_POSITION_MODE_STANDALONE ),
74    NAME_VAL( LOC_POSITION_MODE_MS_BASED ),
75    NAME_VAL( LOC_POSITION_MODE_MS_ASSISTED ),
76    NAME_VAL( LOC_POSITION_MODE_RESERVED_1 ),
77    NAME_VAL( LOC_POSITION_MODE_RESERVED_2 ),
78    NAME_VAL( LOC_POSITION_MODE_RESERVED_3 ),
79    NAME_VAL( LOC_POSITION_MODE_RESERVED_4 ),
80    NAME_VAL( LOC_POSITION_MODE_RESERVED_5 )
81};
82static int loc_eng_position_mode_num = sizeof(loc_eng_position_modes) / sizeof(loc_name_val_s_type);
83
84const char* loc_get_position_mode_name(GpsPositionMode mode)
85{
86    return loc_get_name_from_val(loc_eng_position_modes, loc_eng_position_mode_num, (long) mode);
87}
88
89
90
91static loc_name_val_s_type loc_eng_position_recurrences[] =
92{
93    NAME_VAL( GPS_POSITION_RECURRENCE_PERIODIC ),
94    NAME_VAL( GPS_POSITION_RECURRENCE_SINGLE )
95};
96static int loc_eng_position_recurrence_num = sizeof(loc_eng_position_recurrences) / sizeof(loc_name_val_s_type);
97
98const char* loc_get_position_recurrence_name(GpsPositionRecurrence recur)
99{
100    return loc_get_name_from_val(loc_eng_position_recurrences, loc_eng_position_recurrence_num, (long) recur);
101}
102
103
104
105static loc_name_val_s_type loc_eng_aiding_data_bits[] =
106{
107    NAME_VAL( GPS_DELETE_EPHEMERIS ),
108    NAME_VAL( GPS_DELETE_ALMANAC ),
109    NAME_VAL( GPS_DELETE_POSITION ),
110    NAME_VAL( GPS_DELETE_TIME ),
111    NAME_VAL( GPS_DELETE_IONO ),
112    NAME_VAL( GPS_DELETE_UTC ),
113    NAME_VAL( GPS_DELETE_HEALTH ),
114    NAME_VAL( GPS_DELETE_SVDIR ),
115    NAME_VAL( GPS_DELETE_SVSTEER ),
116    NAME_VAL( GPS_DELETE_SADATA ),
117    NAME_VAL( GPS_DELETE_RTI ),
118    NAME_VAL( GPS_DELETE_CELLDB_INFO ),
119    NAME_VAL( GPS_DELETE_ALMANAC_CORR ),
120    NAME_VAL( GPS_DELETE_FREQ_BIAS_EST ),
121    NAME_VAL( GPS_DELETE_EPHEMERIS_GLO ),
122    NAME_VAL( GPS_DELETE_ALMANAC_GLO ),
123    NAME_VAL( GPS_DELETE_SVDIR_GLO ),
124    NAME_VAL( GPS_DELETE_SVSTEER_GLO ),
125    NAME_VAL( GPS_DELETE_ALMANAC_CORR_GLO ),
126    NAME_VAL( GPS_DELETE_TIME_GPS ),
127    NAME_VAL( GPS_DELETE_TIME_GLO )
128};
129static int loc_eng_aiding_data_bit_num = sizeof(loc_eng_aiding_data_bits) / sizeof(loc_name_val_s_type);
130
131const char* loc_get_aiding_data_mask_names(GpsAidingData data)
132{
133    return NULL;
134}
135
136
137static loc_name_val_s_type loc_eng_agps_types[] =
138{
139    NAME_VAL( AGPS_TYPE_INVALID ),
140    NAME_VAL( AGPS_TYPE_ANY ),
141    NAME_VAL( AGPS_TYPE_SUPL ),
142    NAME_VAL( AGPS_TYPE_C2K ),
143    NAME_VAL( AGPS_TYPE_WWAN_ANY )
144};
145static int loc_eng_agps_type_num = sizeof(loc_eng_agps_types) / sizeof(loc_name_val_s_type);
146
147const char* loc_get_agps_type_name(AGpsType type)
148{
149    return loc_get_name_from_val(loc_eng_agps_types, loc_eng_agps_type_num, (long) type);
150}
151
152
153static loc_name_val_s_type loc_eng_ni_types[] =
154{
155    NAME_VAL( GPS_NI_TYPE_VOICE ),
156    NAME_VAL( GPS_NI_TYPE_UMTS_SUPL ),
157    NAME_VAL( GPS_NI_TYPE_UMTS_CTRL_PLANE ),
158    NAME_VAL( GPS_NI_TYPE_EMERGENCY_SUPL )
159};
160static int loc_eng_ni_type_num = sizeof(loc_eng_ni_types) / sizeof(loc_name_val_s_type);
161
162const char* loc_get_ni_type_name(GpsNiType type)
163{
164    return loc_get_name_from_val(loc_eng_ni_types, loc_eng_ni_type_num, (long) type);
165}
166
167
168static loc_name_val_s_type loc_eng_ni_responses[] =
169{
170    NAME_VAL( GPS_NI_RESPONSE_ACCEPT ),
171    NAME_VAL( GPS_NI_RESPONSE_DENY ),
172    NAME_VAL( GPS_NI_RESPONSE_DENY )
173};
174static int loc_eng_ni_reponse_num = sizeof(loc_eng_ni_responses) / sizeof(loc_name_val_s_type);
175
176const char* loc_get_ni_response_name(GpsUserResponseType response)
177{
178    return loc_get_name_from_val(loc_eng_ni_responses, loc_eng_ni_reponse_num, (long) response);
179}
180
181
182static loc_name_val_s_type loc_eng_ni_encodings[] =
183{
184    NAME_VAL( GPS_ENC_NONE ),
185    NAME_VAL( GPS_ENC_SUPL_GSM_DEFAULT ),
186    NAME_VAL( GPS_ENC_SUPL_UTF8 ),
187    NAME_VAL( GPS_ENC_SUPL_UCS2 ),
188    NAME_VAL( GPS_ENC_UNKNOWN )
189};
190static int loc_eng_ni_encoding_num = sizeof(loc_eng_ni_encodings) / sizeof(loc_name_val_s_type);
191
192const char* loc_get_ni_encoding_name(GpsNiEncodingType encoding)
193{
194    return loc_get_name_from_val(loc_eng_ni_encodings, loc_eng_ni_encoding_num, (long) encoding);
195}
196
197static loc_name_val_s_type loc_eng_agps_bears[] =
198{
199    NAME_VAL( AGPS_APN_BEARER_INVALID ),
200    NAME_VAL( AGPS_APN_BEARER_IPV4 ),
201    NAME_VAL( AGPS_APN_BEARER_IPV6 ),
202    NAME_VAL( AGPS_APN_BEARER_IPV4V6 )
203};
204static int loc_eng_agps_bears_num = sizeof(loc_eng_agps_bears) / sizeof(loc_name_val_s_type);
205
206const char* loc_get_agps_bear_name(AGpsBearerType bearer)
207{
208    return loc_get_name_from_val(loc_eng_agps_bears, loc_eng_agps_bears_num, (long) bearer);
209}
210
211static loc_name_val_s_type loc_eng_server_types[] =
212{
213    NAME_VAL( LOC_AGPS_CDMA_PDE_SERVER ),
214    NAME_VAL( LOC_AGPS_CUSTOM_PDE_SERVER ),
215    NAME_VAL( LOC_AGPS_MPC_SERVER ),
216    NAME_VAL( LOC_AGPS_SUPL_SERVER )
217};
218static int loc_eng_server_types_num = sizeof(loc_eng_server_types) / sizeof(loc_name_val_s_type);
219
220const char* loc_get_server_type_name(LocServerType type)
221{
222    return loc_get_name_from_val(loc_eng_server_types, loc_eng_server_types_num, (long) type);
223}
224
225static loc_name_val_s_type loc_eng_position_sess_status_types[] =
226{
227    NAME_VAL( LOC_SESS_SUCCESS ),
228    NAME_VAL( LOC_SESS_INTERMEDIATE ),
229    NAME_VAL( LOC_SESS_FAILURE )
230};
231static int loc_eng_position_sess_status_num = sizeof(loc_eng_position_sess_status_types) / sizeof(loc_name_val_s_type);
232
233const char* loc_get_position_sess_status_name(enum loc_sess_status status)
234{
235    return loc_get_name_from_val(loc_eng_position_sess_status_types, loc_eng_position_sess_status_num, (long) status);
236}
237
238static loc_name_val_s_type loc_eng_agps_status_names[] =
239{
240    NAME_VAL( GPS_REQUEST_AGPS_DATA_CONN ),
241    NAME_VAL( GPS_RELEASE_AGPS_DATA_CONN ),
242    NAME_VAL( GPS_AGPS_DATA_CONNECTED ),
243    NAME_VAL( GPS_AGPS_DATA_CONN_DONE ),
244    NAME_VAL( GPS_AGPS_DATA_CONN_FAILED )
245};
246static int loc_eng_agps_status_num = sizeof(loc_eng_agps_status_names) / sizeof(loc_name_val_s_type);
247
248const char* loc_get_agps_status_name(AGpsStatusValue status)
249{
250    return loc_get_name_from_val(loc_eng_agps_status_names, loc_eng_agps_status_num, (long) status);
251}
252