GPS-enable gets too heavy at powerup, when loc_init is
synchronous, where loc goes to get the hardware handle
if AP init happens faster than the GPS hardware. The
loc init calling thread is from Android framework, and
it locks a mutex that in turn could lock up system server
main thread upon race conditions.
The second half of loc init, i.e. the reinit, is now moved
to loc worker thread. This should help release some of the
powerup timing pressure on the framework threads.
Added a message just for asynchrous Loc Init so as to execute
init specifically.
Change-Id: I369e461ca4ca61cea3a9729c84d24af4ffa8e51d
CRs-fixed: 472843
Removed FEATURE_DELEXT flag that is no longer
needed after adding the flags for this feature
to gps_extended.h
Change-Id: Id8a095309892e2eb328a02ef17e4aa1b1b54e815
qcom bsp will handle xtra/agps/ni/time through
qcom propreitary service, and non-qcom bsp will handle
xtra/gps/ni/time through android framework.
xtra url will be queried from modem on qcom bsp,
and read from gps.conf from non-qcom bsp.
Change-Id: Ib54a1596caa65f7aa0358f639640c3d1074980e7
In order to prevent the issue where the xtra server url
that stored in gps.conf is incorrect (like xtra.bin instead
of xtra2.bin) for a particular modem, I've made this change
so that the xtra server url can be queried through loc api.
CRs-fixed: 366599
Change-Id: If65de98d837f068fd61a235cbf1104026246e5a9
Moving these features out of afw allows these
features to still work on platforms that do not
allow changes to afw and it also gives us more
control.
Change-Id: I6923b302f93222dc10189c3a6a7b6ba2ec1a3378
Port back of an earlier patch applied to the GPS HAL
that was moved out of aosp (change id of the patch was
Icc302c91da4104679d2548e4527d0aee430f3761
Change-Id: I133f92e316872c60830df5553f31d34ecd9d7a84
This fixes the problem that GPS doesn't work until reboot after modem reset.
Bug: 7216911
Change-Id: Ibfee6a28850490548da2e0ccaefdabe9b826b5e9
Signed-off-by: Iliyan Malchev <malchev@google.com>
The current cleanup mismatches agps_init(), so that it the agps state
machines will get deleted in the cleanup but never get recreated next
time apgs_init() is called.
Bug 7216641
Change-Id: Iddba9fd0d90c790e658f14c42c8a25d22b8749c0
Since modem does not consistently send
SESSON_END/ENGINE_OFF event, always report
SESSION_END on stop gps and SESSION_BEGIN on
start gps so that the icon is turned on/off
correctly.
Bug 7185242
Change-Id: Ib3954529056a653d7057aedb489be1ccee9eaf1d
b/7175603
This caused one of the gps related libraries to be not built in the full tree,
causing GPS failure
Change-Id: Iff51c1a588a22f0b46b075ebf27d2b6493b97e40
Signed-off-by: Iliyan Malchev <malchev@google.com>
This is to support bringup efforts. This change will decouple
the dependencies between GPS HAL and proprietary QMI headers,
so that we can build HAL without any proprietary repos.
Change-Id: I7b836d09f4ac6b1a1bdb38f8d6a2bfb90bb5bf01
Signed-off-by: Iliyan Malchev <malchev@google.com>
Suppress the registering for QMI_LOC_EVENT_MASK_FIX_SESSION_STATE_V02
event from modem, that is normally responsible for generating
GPS_STATUS_SESSION_BEGIN and GPS_STATUS_SESSION_END, and instead
initiate these events from hal from when we get GPS_STATUS_ENGINE_ON
and GPS_STATUS_ENGINE_OFF.
Change-Id: I9d220bef7ee4f989a3982d888ed46279861f612d
HAL_MODULE_INFO_SYM was declared as read-only, but
the struct is written to by libhardware. This causes
a segfault when -Wl,-z,relro is enabled.
Fixed.
Change-Id: Ied24f54a294ea705b06754a419823d595e3def62
In some circumstances we were calling wait after we had been signalled, causing
us to wait until we are signalled again (while holding a wakelock).
Now we only want to wait in the deferred action thread if no events are pending
and only hold the wakelock while not waiting.
BUG: 3127617
Change-Id: I4c6886b2bbdcbcb2c0cf348d89bc5408f0d875b9
Signed-off-by: Mike Lockwood <lockwood@google.com>
Sometimes the engine does not send us the GPS_STATUS_ENGINE_OFF message,
so we end up blinking the GPS icon forever. Deferring the loc_eng_stop call
until the AGPS activity is done works around this problem.
Change-Id: Iad0d15323ff909c0d371f9db3a6e899e51375a99
Signed-off-by: Mike Lockwood <lockwood@android.com>
This avoids a race condition that can crash the BP if the GPS is disabled
in settings while it is running.
This also fixes a problem with the GPS icon in the status bar not
getting removed when the GPS is disabled.
BUG: 3005091
Change-Id: I539eef716231cefae3d4d0a8203135da9827b45d
Signed-off-by: Mike Lockwood <lockwood@android.com>
The API version can be chosen by specifying the AMSS version in the board config
by setting the BOARD_VENDOR_QCOM_GPS_LOC_API_AMSS_VERSION variable.
The existing GPS_LOC_API_HARDWARE has been renamed BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE
Change-Id: I25aa313d7f291b874d52dfb7edf151e280061438
Signed-off-by: Mike Lockwood <lockwood@android.com>
It is not safe to call into framework code from an RPC callback.
Change-Id: Idb85590f5648b85ba4dd352136f89652b3128fbe
Signed-off-by: Mike Lockwood <lockwood@android.com>