Reland "Add IAGnssRil AIDL HAL (hardware/interfaces)"
Bug: 205185251
Bug: 182975915
Test: atest VtsHalGnssTargetTest
Change-Id: I7f8d0b367c68ba870d0a222aee4ee4b5b93cc936
diff --git a/gnss/aidl/vts/AGnssRilCallbackAidl.cpp b/gnss/aidl/vts/AGnssRilCallbackAidl.cpp
new file mode 100644
index 0000000..4e4166d
--- /dev/null
+++ b/gnss/aidl/vts/AGnssRilCallbackAidl.cpp
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "AGnssRilCallbackAidl.h"
+#include <log/log.h>
+
+android::binder::Status AGnssRilCallbackAidl::requestSetIdCb(int setIdflag) {
+ ALOGI("requestSetIdCb setIdflag %d", setIdflag);
+ return android::binder::Status::ok();
+}
+
+android::binder::Status AGnssRilCallbackAidl::requestRefLocCb() {
+ ALOGI("requestRefLocCb");
+ return android::binder::Status::ok();
+}
diff --git a/gnss/aidl/vts/AGnssRilCallbackAidl.h b/gnss/aidl/vts/AGnssRilCallbackAidl.h
new file mode 100644
index 0000000..74b34ee
--- /dev/null
+++ b/gnss/aidl/vts/AGnssRilCallbackAidl.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <android/hardware/gnss/BnAGnssRilCallback.h>
+
+/** Implementation for IAGnssRilCallback. */
+class AGnssRilCallbackAidl : public android::hardware::gnss::BnAGnssRilCallback {
+ public:
+ AGnssRilCallbackAidl(){};
+ ~AGnssRilCallbackAidl(){};
+ android::binder::Status requestSetIdCb(int setIdflag) override;
+ android::binder::Status requestRefLocCb() override;
+};
diff --git a/gnss/aidl/vts/Android.bp b/gnss/aidl/vts/Android.bp
index b23a646..9e4b1c5 100644
--- a/gnss/aidl/vts/Android.bp
+++ b/gnss/aidl/vts/Android.bp
@@ -31,6 +31,7 @@
"gnss_hal_test.cpp",
"gnss_hal_test_cases.cpp",
"AGnssCallbackAidl.cpp",
+ "AGnssRilCallbackAidl.cpp",
"GnssAntennaInfoCallbackAidl.cpp",
"GnssBatchingCallback.cpp",
"GnssCallbackAidl.cpp",
diff --git a/gnss/aidl/vts/gnss_hal_test_cases.cpp b/gnss/aidl/vts/gnss_hal_test_cases.cpp
index f5f0aa4..962d4bf 100644
--- a/gnss/aidl/vts/gnss_hal_test_cases.cpp
+++ b/gnss/aidl/vts/gnss_hal_test_cases.cpp
@@ -28,6 +28,7 @@
#include <android/hardware/gnss/visibility_control/IGnssVisibilityControl.h>
#include <cutils/properties.h>
#include "AGnssCallbackAidl.h"
+#include "AGnssRilCallbackAidl.h"
#include "GnssAntennaInfoCallbackAidl.h"
#include "GnssBatchingCallback.h"
#include "GnssGeofenceCallback.h"
@@ -45,6 +46,7 @@
using android::hardware::gnss::GnssMeasurement;
using android::hardware::gnss::GnssPowerStats;
using android::hardware::gnss::IAGnss;
+using android::hardware::gnss::IAGnssRil;
using android::hardware::gnss::IGnss;
using android::hardware::gnss::IGnssAntennaInfo;
using android::hardware::gnss::IGnssAntennaInfoCallback;
@@ -862,6 +864,42 @@
}
/*
+ * TestAGnssRilExtension:
+ * 1. Gets the IAGnssRil extension.
+ * 2. Sets AGnssRilCallback.
+ * 3. Sets reference location.
+ */
+TEST_P(GnssHalTest, TestAGnssRilExtension) {
+ if (aidl_gnss_hal_->getInterfaceVersion() == 1) {
+ return;
+ }
+ sp<IAGnssRil> iAGnssRil;
+ auto status = aidl_gnss_hal_->getExtensionAGnssRil(&iAGnssRil);
+ ASSERT_TRUE(status.isOk());
+ ASSERT_TRUE(iAGnssRil != nullptr);
+
+ auto agnssRilCallback = sp<AGnssRilCallbackAidl>::make();
+ status = iAGnssRil->setCallback(agnssRilCallback);
+ ASSERT_TRUE(status.isOk());
+
+ // Set RefLocation
+ IAGnssRil::AGnssRefLocationCellID agnssReflocationCellId;
+ agnssReflocationCellId.type = IAGnssRil::AGnssRefLocationType::LTE_CELLID;
+ agnssReflocationCellId.mcc = 466;
+ agnssReflocationCellId.mnc = 97;
+ agnssReflocationCellId.lac = 46697;
+ agnssReflocationCellId.cid = 59168142;
+ agnssReflocationCellId.pcid = 420;
+ agnssReflocationCellId.tac = 11460;
+ IAGnssRil::AGnssRefLocation agnssReflocation;
+ agnssReflocation.type = IAGnssRil::AGnssRefLocationType::LTE_CELLID;
+ agnssReflocation.cellID = agnssReflocationCellId;
+
+ status = iAGnssRil->setRefLocation(agnssReflocation);
+ ASSERT_TRUE(status.isOk());
+}
+
+/*
* GnssDebugValuesSanityTest:
* Ensures that GnssDebug values make sense.
*/