1/* Copyright (c) 2011, 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#ifndef  LOC_API_FIXUP_H
30#define LOC_API_FIXUP_H
31
32#ifdef __cplusplus
33extern "C"
34{
35#endif
36
37#ifndef NULLPROC
38#define NULLPROC 0
39#endif /* NULLPROC */
40
41#ifdef ADD_XDR_FLOAT
42
43extern bool_t xdr_float (XDR *__xdrs, float *__fp);
44extern bool_t xdr_double (XDR *__xdrs, double *__dp);
45
46#endif /* ADD_XDR_FLOAT */
47
48#ifdef ADD_XDR_BOOL
49extern bool_t xdr_bool(XDR *__xdrs, int *__bp);
50#endif /* ADD_XDR_BOOL */
51
52#define RPC_LOC_API_MAJOR_VERSION_NUMBER   1
53#define RPC_LOC_API_MINOR_VERSION_NUMBER   0
54
55// Return value for loc_open in case of failure.
56#define RPC_LOC_CLIENT_HANDLE_INVALID     -1
57
58// Return value of loc api calls for loc_close, loc_start_fix, loc_stop_fix and loc_ioctl
59// These are also the status for the ioctl callback
60#define RPC_LOC_API_SUCCESS           0
61#define RPC_LOC_API_GENERAL_FAILURE   1
62#define RPC_LOC_API_UNSUPPORTED       2
63#define RPC_LOC_API_INVALID_HANDLE    4
64#define RPC_LOC_API_INVALID_PARAMETER 5
65#define RPC_LOC_API_ENGINE_BUSY       6
66#define RPC_LOC_API_PHONE_OFFLINE     7
67#define RPC_LOC_API_TIMEOUT           8
68
69// Special return value for loc api calls in case of RPC failure
70#define RPC_LOC_API_RPC_FAILURE       (-1234)
71// Special return value for modem restart incurred RPC failure
72#define RPC_LOC_API_RPC_MODEM_RESTART       (-1235)
73
74#define RPC_LOC_API_MAX_SV_COUNT                      80
75#define RPC_LOC_API_MAX_NMEA_STRING_LENGTH            1200
76
77// Maximum server address that will be used in location API
78#define RPC_LOC_API_MAX_SERVER_ADDR_LENGTH            256
79#define RPC_LOC_API_MAX_NUM_PREDICTED_ORBITS_SERVERS  3
80#define RPC_LOC_API_MAX_NUM_NTP_SERVERS               3
81
82#define RPC_LOC_EVENT_PARSED_POSITION_REPORT             0x00000001 // Position report comes in loc_parsed_position_s_type
83#define RPC_LOC_EVENT_SATELLITE_REPORT                   0x00000002 // Satellite in view report
84#define RPC_LOC_EVENT_NMEA_1HZ_REPORT                    0x00000004 // NMEA report at 1HZ rate
85#define RPC_LOC_EVENT_NMEA_POSITION_REPORT               0x00000008 // NMEA report at position report rate
86#define RPC_LOC_EVENT_NI_NOTIFY_VERIFY_REQUEST           0x00000010 // NI notification/verification request
87#define RPC_LOC_EVENT_ASSISTANCE_DATA_REQUEST            0x00000020 // Assistance data, eg: time, predicted orbits request
88#define RPC_LOC_EVENT_LOCATION_SERVER_REQUEST            0x00000040 // Request for location server
89#define RPC_LOC_EVENT_IOCTL_REPORT                       0x00000080 // Callback report for loc_ioctl
90#define RPC_LOC_EVENT_STATUS_REPORT                      0x00000100 // Misc status report: eg, engine state
91
92#define RPC_LOC_POS_VALID_SESSION_STATUS                 0x00000001
93#define RPC_LOC_POS_VALID_TIMESTAMP_CALENDAR             0x00000002
94#define RPC_LOC_POS_VALID_TIMESTAMP_UTC                  0x00000004
95#define RPC_LOC_POS_VALID_LEAP_SECONDS                   0x00000008
96#define RPC_LOC_POS_VALID_TIME_UNC                       0x00000010
97#define RPC_LOC_POS_VALID_LATITUDE                       0x00000020
98#define RPC_LOC_POS_VALID_LONGITUDE                      0x00000040
99#define RPC_LOC_POS_VALID_ALTITUDE_WRT_ELLIPSOID         0x00000080
100#define RPC_LOC_POS_VALID_ALTITUDE_WRT_MEAN_SEA_LEVEL    0x00000100
101#define RPC_LOC_POS_VALID_SPEED_HORIZONTAL               0x00000200
102#define RPC_LOC_POS_VALID_SPEED_VERTICAL                 0x00000400
103#define RPC_LOC_POS_VALID_HEADING                        0x00000800
104#define RPC_LOC_POS_VALID_HOR_UNC_CIRCULAR               0x00001000
105#define RPC_LOC_POS_VALID_HOR_UNC_ELLI_SEMI_MAJ          0x00002000
106#define RPC_LOC_POS_VALID_HOR_UNC_ELLI_SEMI_MIN          0x00004000
107#define RPC_LOC_POS_VALID_HOR_UNC_ELLI_ORIENT_AZIMUTH    0x00008000
108#define RPC_LOC_POS_VALID_VERTICAL_UNC                   0x00010000
109#define RPC_LOC_POS_VALID_SPEED_UNC                      0x00020000
110#define RPC_LOC_POS_VALID_HEADING_UNC                    0x00040000
111#define RPC_LOC_POS_VALID_CONFIDENCE_HORIZONTAL          0x00080000
112#define RPC_LOC_POS_VALID_CONFIDENCE_VERTICAL            0x00100000
113#define RPC_LOC_POS_VALID_MAGNETIC_VARIATION             0x00200000
114#define RPC_LOC_POS_VALID_TECHNOLOGY_MASK                0x00400000
115
116#define RPC_LOC_POS_TECH_SATELLITE 0x00000001
117#define RPC_LOC_POS_TECH_CELLID    0x00000002
118#define RPC_LOC_POS_TECH_WIFI      0x00000004
119
120#define RPC_LOC_SV_INFO_VALID_SYSTEM         0x00000001
121#define RPC_LOC_SV_INFO_VALID_PRN            0x00000002
122#define RPC_LOC_SV_INFO_VALID_HEALTH_STATUS  0x00000004
123#define RPC_LOC_SV_INFO_VALID_PROCESS_STATUS 0x00000008
124#define RPC_LOC_SV_INFO_VALID_HAS_EPH        0x00000010
125#define RPC_LOC_SV_INFO_VALID_HAS_ALM        0x00000020
126#define RPC_LOC_SV_INFO_VALID_ELEVATION      0x00000040
127#define RPC_LOC_SV_INFO_VALID_AZIMUTH        0x00000080
128#define RPC_LOC_SV_INFO_VALID_SNR            0x00000100
129
130#define RPC_LOC_GNSS_INFO_VALID_POS_DOP           0x00000001
131#define RPC_LOC_GNSS_INFO_VALID_HOR_DOP           0x00000002
132#define RPC_LOC_GNSS_INFO_VALID_VERT_DOP          0x00000004
133#define RPC_LOC_GNSS_INFO_VALID_ALTITUDE_ASSUMED  0x00000008
134#define RPC_LOC_GNSS_INFO_VALID_SV_COUNT          0x00000010
135#define RPC_LOC_GNSS_INFO_VALID_SV_LIST           0x00000020
136
137#define RPC_LOC_NI_MAX_REQUESTOR_ID_LENGTH          200
138#define RPC_LOC_NI_SUPL_HASH_LENGTH                 8
139#define RPC_LOC_NI_SUPL_SLP_SESSION_ID_BYTE_LENGTH  4
140#define RPC_LOC_NI_MAX_CLIENT_NAME_LENGTH           64
141#define RPC_LOC_NI_MAX_EXT_CLIENT_ADDRESS           20
142#define RPC_LOC_NI_CODEWORD_LENGTH                  20
143
144#define RPC_LOC_NI_SUPL_QOP_VALID         0x01
145#define RPC_LOC_NI_SUPL_QOP_VERACC_VALID  0x02
146#define RPC_LOC_NI_SUPL_QOP_MAXAGE_VALID  0x04
147#define RPC_LOC_NI_SUPL_QOP_DELAY_VALID   0x08
148
149#define RPC_LOC_FIX_CRIT_VALID_RECURRENCE_TYPE                  0x00000001
150#define RPC_LOC_FIX_CRIT_VALID_PREFERRED_OPERATION_MODE         0x00000002
151#define RPC_LOC_FIX_CRIT_VALID_PREFERRED_ACCURACY               0x00000004
152#define RPC_LOC_FIX_CRIT_VALID_PREFERRED_RESPONSE_TIME          0x00000008
153#define RPC_LOC_FIX_CRIT_VALID_INTERMEDIATE_POS_REPORT_ENABLED  0x00000010
154#define RPC_LOC_FIX_CRIT_VALID_NOTIFY_TYPE                      0x00000020
155#define RPC_LOC_FIX_CRIT_VALID_MIN_INTERVAL                     0x00000040
156#define RPC_LOC_FIX_CRIT_VALID_MIN_DISTANCE                     0x00000080
157#define RPC_LOC_FIX_CRIT_VALID_MIN_DIST_SAMPLE_INTERVAL         0x00000100
158
159#define RPC_LOC_ASSIST_POS_VALID_TIMESTAMP_UTC                0x00000001
160#define RPC_LOC_ASSIST_POS_VALID_LATITUDE                     0x00000002
161#define RPC_LOC_ASSIST_POS_VALID_LONGITUDE                    0x00000004
162#define RPC_LOC_ASSIST_POS_VALID_ALTITUDE_WRT_ELLIPSOID       0x00000008
163#define RPC_LOC_ASSIST_POS_VALID_ALTITUDE_WRT_MEAN_SEA_LEVEL  0x00000010
164#define RPC_LOC_ASSIST_POS_VALID_HOR_UNC_CIRCULAR             0x00000020
165#define RPC_LOC_ASSIST_POS_VALID_VERT_UNC                     0x00000040
166#define RPC_LOC_ASSIST_POS_VALID_CONFIDENCE_HORIZONTAL        0x00000080
167#define RPC_LOC_ASSIST_POS_VALID_CONFIDENCE_VERTICAL          0x00000100
168#define RPC_LOC_ASSIST_POS_VALID_TIMESTAMP_AGE                0x00000200
169
170#define RPC_LOC_ASSIST_DATA_ALL         0xFFFFFFFF
171
172#define RPC_LOC_NMEA_MASK_ALL    0xffff
173#define RPC_LOC_NMEA_MASK_GGA    0x0001
174#define RPC_LOC_NMEA_MASK_RMC    0x0002
175#define RPC_LOC_NMEA_MASK_GSV    0x0004
176#define RPC_LOC_NMEA_MASK_GSA    0x0008
177#define RPC_LOC_NMEA_MASK_VTG    0x0010
178
179/* EFS data access */
180#define RPC_LOC_EFS_MAX_PATH_LEN_BYTES  64     /* Max file name length in bytes that can be written*/
181#define RPC_LOC_EFS_MAX_FILE_LEN_BYTES  2000   /* Max file size in bytes that can be written */
182
183/* WIPER valid information flag in log report */
184#define RPC_LOC_WIPER_LOG_TIME_VALID 0x01
185#define RPC_LOC_WIPER_LOG_POS_VALID 0x02
186#define RPC_LOC_WIPER_LOG_AP_SET_VALID 0x04
187
188/* General WIPER defines */
189#define RPC_LOC_WIPER_MAC_ADDR_LENGTH  6              // Do not change this number since it affects RPC and log packet sizes
190#define RPC_LOC_WIPER_MAX_REPORTED_APS_PER_LOG_MSG 50 // Do not change this number since it affects RPC and log packet sizes
191
192/* WIPER AP Qualifier */
193#define RPC_LOC_WIPER_AP_QUALIFIER_BEING_USED 0x1  /* AP is being used by WPS */
194#define RPC_LOC_WIPER_AP_QUALIFIER_HIDDEN_SSID 0x2 /* AP does not broadcast SSID */
195#define RPC_LOC_WIPER_AP_QUALIFIER_PRIVATE 0x4     /* AP has encryption turned on */
196#define RPC_LOC_WIPER_AP_QUALIFIER_INFRASTRUCTURE_MODE 0x8     /* AP is in infrastructure mode and not in ad-hoc/unknown mode */
197
198/* flags for notification */
199#define  RPC_LOC_NI_CLIENT_NAME_PRESENT             0x0001
200#define  RPC_LOC_NI_CLIENT_EXTADDR_PRESENT          0x0002
201#define  RPC_LOC_NI_DEF_LOCATION_TYPE_PRESENT       0x0010
202#define  RPC_LOC_NI_REQUESTOR_ID_PRESENT            0x0020
203#define  RPC_LOC_NI_CODEWORD_PRESENT                0x0040
204#define  RPC_LOC_NI_SERVICE_TYPE_ID_PRESENT         0x0080
205#define  RPC_LOC_NI_ENCODING_TYPE_PRESENT           0x0100
206
207/* below are for RPC_LOC_IOCTL_SET_LBS_APN_PROFILE data */
208/* values for apn_profiles[0].srv_system_type */
209#define LOC_APN_PROFILE_SRV_SYS_CDMA  0x01
210#define LOC_APN_PROFILE_SRV_SYS_HDR   0x02
211#define LOC_APN_PROFILE_SRV_SYS_GSM   0x04
212#define LOC_APN_PROFILE_SRV_SYS_WCDMA 0x08
213#define LOC_APN_PROFILE_SRV_SYS_LTE   0x10
214#define LOC_APN_PROFILE_SRV_SYS_MAX   0x1F
215/* values for apn_profiles[0].pdp_type */
216#define LOC_APN_PROFILE_PDN_TYPE_IPV4    0x01
217#define LOC_APN_PROFILE_PDN_TYPE_IPV6    0x02
218#define LOC_APN_PROFILE_PDN_TYPE_IPV4V6  0x03
219#define LOC_APN_PROFILE_PDN_TYPE_PPP     0x04
220#define LOC_APN_PROFILE_PDN_TYPE_MAX     0x04
221
222#ifdef __cplusplus
223}
224#endif
225
226#endif /* LOC_API_FIXUP_H */
227