From a977bcc18bf9ce5bfdf244dd5bb45daef0dd94ea Mon Sep 17 00:00:00 2001 From: Shinru Han Date: Fri, 7 Oct 2022 14:11:33 +0800 Subject: [PATCH] Add injectNiSuplMessageData() Test: atest VtsHalGnssTargetTest Bug: b/242105192 Change-Id: I32a87cbcad67fda032137ed5eb2181cd0266f171 --- .../current/android/hardware/gnss/IAGnssRil.aidl | 1 + gnss/aidl/android/hardware/gnss/IAGnssRil.aidl | 10 ++++++++++ gnss/aidl/default/AGnssRil.cpp | 12 ++++++++++++ gnss/aidl/default/AGnssRil.h | 2 ++ gnss/aidl/vts/gnss_hal_test_cases.cpp | 4 ++++ 5 files changed, 29 insertions(+) diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IAGnssRil.aidl b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IAGnssRil.aidl index 8930752f7f..c782b6f8ff 100644 --- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IAGnssRil.aidl +++ b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IAGnssRil.aidl @@ -39,6 +39,7 @@ interface IAGnssRil { void setRefLocation(in android.hardware.gnss.IAGnssRil.AGnssRefLocation agnssReflocation); void setSetId(in android.hardware.gnss.IAGnssRil.SetIdType type, in @utf8InCpp String setid); void updateNetworkState(in android.hardware.gnss.IAGnssRil.NetworkAttributes attributes); + void injectNiSuplMessageData(in byte[] msgData, in int slotIndex); const int NETWORK_CAPABILITY_NOT_METERED = 1; const int NETWORK_CAPABILITY_NOT_ROAMING = 2; @Backing(type="int") @VintfStability diff --git a/gnss/aidl/android/hardware/gnss/IAGnssRil.aidl b/gnss/aidl/android/hardware/gnss/IAGnssRil.aidl index 44847f0ab1..5f2e261fad 100644 --- a/gnss/aidl/android/hardware/gnss/IAGnssRil.aidl +++ b/gnss/aidl/android/hardware/gnss/IAGnssRil.aidl @@ -164,4 +164,14 @@ interface IAGnssRil { * */ void updateNetworkState(in NetworkAttributes attributes); + + /** + * Injects an SMS/WAP initiated SUPL message. + * + * @param msgData ASN.1 encoded SUPL INIT message. This is defined in + * UserPlane Location Protocol (Version 2.0.4). + * @param slotIndex Specifies the slot index (See + * android.telephony.SubscriptionManager#getSlotIndex()) of the SUPL connection. + */ + void injectNiSuplMessageData(in byte[] msgData, in int slotIndex); } diff --git a/gnss/aidl/default/AGnssRil.cpp b/gnss/aidl/default/AGnssRil.cpp index 2aa1abcb98..81b4f2a26e 100644 --- a/gnss/aidl/default/AGnssRil.cpp +++ b/gnss/aidl/default/AGnssRil.cpp @@ -17,6 +17,7 @@ #define LOG_TAG "AGnssRilAidl" #include "AGnssRil.h" +#include #include #include @@ -55,4 +56,15 @@ ndk::ScopedAStatus AGnssRil::updateNetworkState(const NetworkAttributes& attribu return ndk::ScopedAStatus::ok(); } +ndk::ScopedAStatus AGnssRil::injectNiSuplMessageData(const std::vector& msgData, + int slotIndex) { + ALOGD("AGnssRil::injectNiSuplMessageData: msgData:%d bytes slotIndex:%d", + static_cast(msgData.size()), slotIndex); + if (msgData.size() > 0) { + return ndk::ScopedAStatus::ok(); + } else { + return ndk::ScopedAStatus::fromServiceSpecificError(IGnss::ERROR_INVALID_ARGUMENT); + } +} + } // namespace aidl::android::hardware::gnss diff --git a/gnss/aidl/default/AGnssRil.h b/gnss/aidl/default/AGnssRil.h index e205b69763..76583ac38b 100644 --- a/gnss/aidl/default/AGnssRil.h +++ b/gnss/aidl/default/AGnssRil.h @@ -26,6 +26,8 @@ struct AGnssRil : public BnAGnssRil { ndk::ScopedAStatus setRefLocation(const AGnssRefLocation& agnssReflocation) override; ndk::ScopedAStatus setSetId(SetIdType type, const std::string& setid) override; ndk::ScopedAStatus updateNetworkState(const NetworkAttributes& attributes) override; + ndk::ScopedAStatus injectNiSuplMessageData(const std::vector& msgData, + int slotIndex) override; private: // Synchronization lock for sCallback diff --git a/gnss/aidl/vts/gnss_hal_test_cases.cpp b/gnss/aidl/vts/gnss_hal_test_cases.cpp index e2ad2780d8..7c0a4df6d5 100644 --- a/gnss/aidl/vts/gnss_hal_test_cases.cpp +++ b/gnss/aidl/vts/gnss_hal_test_cases.cpp @@ -1077,6 +1077,7 @@ TEST_P(GnssHalTest, TestAGnssExtension) { * 2. Sets AGnssRilCallback. * 3. Update network state to connected and then disconnected. * 4. Sets reference location. + * 5. Injects empty NI message data and verifies that it returns an error. */ TEST_P(GnssHalTest, TestAGnssRilExtension) { if (aidl_gnss_hal_->getInterfaceVersion() <= 1) { @@ -1120,6 +1121,9 @@ TEST_P(GnssHalTest, TestAGnssRilExtension) { status = iAGnssRil->setRefLocation(agnssReflocation); ASSERT_TRUE(status.isOk()); + + status = iAGnssRil->injectNiSuplMessageData(std::vector(), 0); + ASSERT_FALSE(status.isOk()); } /*