From d6d55a4948301d76a8489a5a166acd1b1385e4a1 Mon Sep 17 00:00:00 2001 From: Mike Cailean Date: Wed, 24 Apr 2019 11:33:20 -0700 Subject: Send SUPL notification to the framework for E911 sessions only (older modems) Change-Id: Icd317f6e4b042c31afc63011596689d5fb35135f CRs-fixed: 2441292 --- .../1.0/GnssVisibilityControl.cpp | 24 ++++++++++++++++++++++ .../visibility_control/1.0/GnssVisibilityControl.h | 2 ++ 2 files changed, 26 insertions(+) (limited to 'android') 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 GnssVisibilityControl::enableNfwLocationAccess(const hidl_vec<::android::hardware::hidl_string>& proxyApps) { @@ -131,6 +154,7 @@ Return 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 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; -- cgit v1.2.3