Add GnssNavigationMessage AIDL HAL (hardware/interfaces)
Bug: 201253590
Test: atest VtsHalGnssTargetTest
Change-Id: I3a12b69c2d03293d07c977eefdc6995323cb802b
diff --git a/gnss/aidl/vts/Android.bp b/gnss/aidl/vts/Android.bp
index 8582b62..4d81519 100644
--- a/gnss/aidl/vts/Android.bp
+++ b/gnss/aidl/vts/Android.bp
@@ -34,6 +34,7 @@
"GnssCallbackAidl.cpp",
"GnssGeofenceCallback.cpp",
"GnssMeasurementCallbackAidl.cpp",
+ "GnssNavigationMessageCallback.cpp",
"GnssPowerIndicationCallback.cpp",
"VtsHalGnssTargetTest.cpp",
],
diff --git a/gnss/aidl/vts/GnssNavigationMessageCallback.cpp b/gnss/aidl/vts/GnssNavigationMessageCallback.cpp
new file mode 100644
index 0000000..cf4a6eb
--- /dev/null
+++ b/gnss/aidl/vts/GnssNavigationMessageCallback.cpp
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+#define LOG_TAG "GnssNavMsgCallback"
+
+#include "GnssNavigationMessageCallback.h"
+#include <log/log.h>
+
+android::binder::Status GnssNavigationMessageCallback::gnssNavigationMessageCb(
+ const android::hardware::gnss::IGnssNavigationMessageCallback::GnssNavigationMessage& msg) {
+ ALOGD("gnssNavigationMessageCb. svid=%d, type=%d, status=%d, msgId=%d, subMsgId=%d, "
+ "data.size=%d",
+ msg.svid, (int)msg.type, (int)msg.status, msg.messageId, msg.submessageId,
+ (int)msg.data.size());
+ return android::binder::Status::ok();
+}
diff --git a/gnss/aidl/vts/GnssNavigationMessageCallback.h b/gnss/aidl/vts/GnssNavigationMessageCallback.h
new file mode 100644
index 0000000..55114ca
--- /dev/null
+++ b/gnss/aidl/vts/GnssNavigationMessageCallback.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 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/BnGnssNavigationMessageCallback.h>
+
+/** Implementation for IGnssNavigationMessageCallback. */
+class GnssNavigationMessageCallback
+ : public android::hardware::gnss::BnGnssNavigationMessageCallback {
+ public:
+ GnssNavigationMessageCallback() {}
+ ~GnssNavigationMessageCallback() {}
+
+ android::binder::Status gnssNavigationMessageCb(
+ const android::hardware::gnss::IGnssNavigationMessageCallback::GnssNavigationMessage&
+ message) override;
+};
diff --git a/gnss/aidl/vts/gnss_hal_test_cases.cpp b/gnss/aidl/vts/gnss_hal_test_cases.cpp
index 09f9412..830922c 100644
--- a/gnss/aidl/vts/gnss_hal_test_cases.cpp
+++ b/gnss/aidl/vts/gnss_hal_test_cases.cpp
@@ -25,6 +25,7 @@
#include "GnssBatchingCallback.h"
#include "GnssGeofenceCallback.h"
#include "GnssMeasurementCallbackAidl.h"
+#include "GnssNavigationMessageCallback.h"
#include "GnssPowerIndicationCallback.h"
#include "gnss_hal_test.h"
@@ -43,6 +44,7 @@
using android::hardware::gnss::IGnssGeofenceCallback;
using android::hardware::gnss::IGnssMeasurementCallback;
using android::hardware::gnss::IGnssMeasurementInterface;
+using android::hardware::gnss::IGnssNavigationMessageInterface;
using android::hardware::gnss::IGnssPowerIndication;
using android::hardware::gnss::IGnssPsds;
using android::hardware::gnss::PsdsType;
@@ -779,4 +781,15 @@
status = iGnssGeofence->setCallback(gnssGeofenceCallback);
ASSERT_TRUE(status.isOk());
}
+
+ sp<IGnssNavigationMessageInterface> iGnssNavMsgIface;
+ status = aidl_gnss_hal_->getExtensionGnssNavigationMessage(&iGnssNavMsgIface);
+ if (status.isOk() && iGnssNavMsgIface != nullptr) {
+ auto gnssNavMsgCallback = sp<GnssNavigationMessageCallback>::make();
+ status = iGnssNavMsgIface->setCallback(gnssNavMsgCallback);
+ ASSERT_TRUE(status.isOk());
+
+ status = iGnssNavMsgIface->close();
+ ASSERT_TRUE(status.isOk());
+ }
}