########################################
# NLP/WIFI positioning options bit mask
########################################
# Enable NLP fixes for WIPER/ODCPI feature => WIPER = 0x1
# Enable free wifi scan injections for GEOFENCE => FREE_WIFI = 0x2
# Enable SUPL2 MLD wifi => SUPL_WIFI = 0x4
# Enable Attached Wifi AP info injection for GEOFENCE => FREE_AP_INFO = 0x8
# default = WIPER | FREE_WIFI | SUPL_WIFI | FREE_AP_INFO
NLP_WIFI_LISTENER_MODE = 0

##################################################
# Select WIFI Wait Timeout value in seconds for SUPL
##################################################
WIFI_WAIT_TIMEOUT_SELECT = 0

################################
# NLP Settings
################################
# NLP_MODE  1: GNP Only, 2: QNP Only, 3: Combo
# NLP_TOLERANCE_TIME_FIRST: Time in ms used in Combo mode
# to determine how much Tolerance for first position
# NLP_TOLERANCE_TIME_AFTER: Time in ms used in Combo mode
# to determine how much Tolerance for positions after first
# NLP_THRESHOLD: Sets how many failures needed before
# switching preferred NLP in Combo mode
# NLP_ACCURACY_MULTIPLE: Determines how far off the accuracy
# must be, in multiples, between two NLP location reports to
# be considered much worse accuracy. Used in switching logic
NLP_MODE = 1
NLP_TOLERANCE_TIME_FIRST = 5000
NLP_TOLERANCE_TIME_AFTER = 20000
NLP_THRESHOLD = 3
NLP_ACCURACY_MULTIPLE = 2

# Threshold period for ZPP triggers
ZPP_TRIGGER_THRESHOLD=10000

###################################
# GEOFENCE SERVICES
###################################
# If set to one of the defined values below, it will override
# the responsiveness for geofence services, which implements
# the Proximity Alert API. If not set to a value defined below,
# which is default, it will not override the responsivness.
# The geofence HAL API is unaffected by this value.
# GEOFENCE_SERVICES_RESPONSIVENESS_OVERRIDE Values:
# 1: LOW responsiveness
# 2: MEDIUM responsiveness
# 3: HIGH responsiveness
GEOFENCE_SERVICES_RESPONSIVENESS_OVERRIDE = 0

#####################################
# IZAT PREMIUM FEATURE SETTINGS
#####################################
#Possible states of a feature:
#DISABLED
#BASIC
#PREMIUM

#GTP_CELL_PROC valid options:
# AP
# MODEM
GTP_CELL_PROC=MODEM

#GTP_CELL valid modes:
# DISABLED
# BASIC
GTP_CELL=BASIC

#GTP_WIFI valid modes:
# DISABLED
# BASIC
GTP_WIFI=BASIC

#GTP_WAA valid modes:
# DISABLED
# BASIC
GTP_WAA=DISABLED

#SAP valid modes:
# DISABLED
# BASIC
# PREMIUM
SAP=BASIC

#PIP valid modes:
# DISABLED
# PREMIUM
PIP=DISABLED

#####################################
# Location process launcher settings
#####################################

#Values for PROCESS_STATE:
# ENABLED
# DISABLED

#FEATURE MASKS:
# GTP-WIFI 0X03
# GTP-CELL 0X0c
# GTP-WAA  0X300
# PIP      0x30
# SAP      0Xc0

#Values for PLATFORMS can be:
#1. Any valid values obtained from ro.board.platform separated by single space. For example: msm8960 msm8226
#2. all -> for All platforms

#Values for BASEBAND can be:
#1. Any valid values obtained from ro.baseband separated by single space. For example: sglte sglte2
#2. all -> for all basebands

PROCESS_NAME=/system/bin/garden_app
PROCESS_ARGUMENT=-u 0 -q 0 -j 0 -g 0 -l 0 -Z 0 -T 1
PROCESS_STATE=ENABLED
PROCESS_GROUPS=gps net_raw
PREMIUM_FEATURE=0
IZAT_FEATURE_MASK=0
PLATFORMS=all
BASEBAND=auto

PROCESS_NAME=/system/bin/gpsone_daemon
PROCESS_ARGUMENT=
PROCESS_STATE=DISABLED
PROCESS_GROUPS=inet net_raw
PREMIUM_FEATURE=0
IZAT_FEATURE_MASK=0
PLATFORMS=msm7630_fusion
BASEBAND=svlte2a sglte sglte2

PROCESS_NAME=/system/bin/location-mq
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=gps
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0x3f
PLATFORMS=all
BASEBAND=all

PROCESS_NAME=/system/bin/lowi-server
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=gps net_admin wifi inet qcom_diag net_raw
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0x33
PLATFORMS=all
BASEBAND=all

PROCESS_NAME=/system/bin/quipc_igsn
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=inet gps qcom_diag
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0x30
PLATFORMS=all
BASEBAND=all

PROCESS_NAME=/system/bin/quipc_main
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=gps net_admin wifi inet qcom_diag
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0x30
PLATFORMS=all
BASEBAND=all

PROCESS_NAME=/system/bin/xtwifi-inet-agent
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=inet gps
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0x0f
PLATFORMS=all
BASEBAND=all

PROCESS_NAME=/system/bin/xtwifi-client
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=net_admin wifi inet gps
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0x30f
PLATFORMS=all
BASEBAND=all

PROCESS_NAME=/system/vendor/bin/slim_ap_daemon
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=gps net_raw misc qcom_oncrpc
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0xf0
PLATFORMS=all
BASEBAND=all
