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