summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorMike Cailean <mcailean@codeaurora.org>2019-04-24 11:33:20 -0700
committerMike Cailean <mcailean@codeaurora.org>2019-04-30 09:27:41 -0700
commitd6d55a4948301d76a8489a5a166acd1b1385e4a1 (patch)
treee52294314ee4a87d70bd7761178a120658f620ef /android
parent9b1ce8887233de61c476bff6d114be9b4ac9aa68 (diff)
downloadgps-d6d55a4948301d76a8489a5a166acd1b1385e4a1.tar.gz
Send SUPL notification to the framework for
E911 sessions only (older modems) Change-Id: Icd317f6e4b042c31afc63011596689d5fb35135f CRs-fixed: 2441292
Diffstat (limited to 'android')
-rw-r--r--android/visibility_control/1.0/GnssVisibilityControl.cpp24
-rw-r--r--android/visibility_control/1.0/GnssVisibilityControl.h2
2 files changed, 26 insertions, 0 deletions
diff --git a/android/visibility_control/1.0/GnssVisibilityControl.cpp b/android/visibility_control/1.0/GnssVisibilityControl.cpp
index 82e465c..5a8c697 100644
--- a/android/visibility_control/1.0/GnssVisibilityControl.cpp
+++ b/android/visibility_control/1.0/GnssVisibilityControl.cpp
@@ -66,6 +66,13 @@ void GnssVisibilityControl::nfwStatusCb(GnssNfwNotification notification) {
}
}
+bool GnssVisibilityControl::isInEmergencySession() {
+ if (nullptr != spGnssVisibilityControl) {
+ return spGnssVisibilityControl->isE911Session();
+ }
+ return false;
+}
+
static void convertGnssNfwNotification(GnssNfwNotification& in,
IGnssVisibilityControlCallback::NfwNotification& out)
{
@@ -97,6 +104,22 @@ void GnssVisibilityControl::statusCb(GnssNfwNotification notification) {
}
}
+bool GnssVisibilityControl::isE911Session() {
+
+ if (mGnssVisibilityControlCbIface != nullptr) {
+ auto r = mGnssVisibilityControlCbIface->isInEmergencySession();
+ if (!r.isOk()) {
+ LOC_LOGw("Error invoking NFW status cb %s", r.description().c_str());
+ return false;
+ } else {
+ return (r);
+ }
+ } else {
+ LOC_LOGw("setCallback has not been called yet");
+ return false;
+ }
+}
+
// Methods from ::android::hardware::gnss::visibility_control::V1_0::IGnssVisibilityControl follow.
Return<bool> GnssVisibilityControl::enableNfwLocationAccess(const hidl_vec<::android::hardware::hidl_string>& proxyApps) {
@@ -131,6 +154,7 @@ Return<bool> GnssVisibilityControl::setCallback(const ::android::sp<::android::h
NfwCbInfo cbInfo = {};
cbInfo.visibilityControlCb = (void*)nfwStatusCb;
+ cbInfo.isInEmergencySession = (void*)isInEmergencySession;
mGnss->getGnssInterface()->nfwInit(cbInfo);
diff --git a/android/visibility_control/1.0/GnssVisibilityControl.h b/android/visibility_control/1.0/GnssVisibilityControl.h
index 4eaea51..9c26e38 100644
--- a/android/visibility_control/1.0/GnssVisibilityControl.h
+++ b/android/visibility_control/1.0/GnssVisibilityControl.h
@@ -68,9 +68,11 @@ struct GnssVisibilityControl : public IGnssVisibilityControl {
Return<bool> setCallback(const ::android::sp<::android::hardware::gnss::visibility_control::V1_0::IGnssVisibilityControlCallback>& callback) override;
void statusCb(GnssNfwNotification notification);
+ bool isE911Session();
/* Data call setup callback passed down to GNSS HAL implementation */
static void nfwStatusCb(GnssNfwNotification notification);
+ static bool isInEmergencySession();
private:
Gnss* mGnss = nullptr;