Add new contexthub HAL 1.2 methods to default impl
Bug: 166846988
Test: Run VTS against default HAL
Change-Id: I158a49e54f340a2ba25f79894d6ec465070326f8
diff --git a/contexthub/1.2/default/Android.bp b/contexthub/1.2/default/Android.bp
index 49b54fc..0a31325 100644
--- a/contexthub/1.2/default/Android.bp
+++ b/contexthub/1.2/default/Android.bp
@@ -41,6 +41,7 @@
],
header_libs: [
"android.hardware.contexthub@1.X-common-impl",
+ "android.hardware.contexthub@1.X-common-utils",
],
vintf_fragments: ["android.hardware.contexthub@1.2.xml"],
}
diff --git a/contexthub/1.2/default/Contexthub.cpp b/contexthub/1.2/default/Contexthub.cpp
index 8bc028e..db0c5bc 100644
--- a/contexthub/1.2/default/Contexthub.cpp
+++ b/contexthub/1.2/default/Contexthub.cpp
@@ -17,23 +17,47 @@
#include <vector>
-using ::android::hardware::contexthub::V1_0::Result;
-
namespace android {
namespace hardware {
namespace contexthub {
namespace V1_2 {
namespace implementation {
-// TODO(b/166846988): Implement new methods.
-Return<Result> Contexthub::registerCallback_1_2(uint32_t /* hubId */,
- const sp<IContexthubCallback>& /* cb */) {
- return Result::UNKNOWN_FAILURE;
+using ::android::hardware::contexthub::V1_0::Result;
+using ::android::hardware::contexthub::V1_X::implementation::IContextHubCallbackWrapperV1_0;
+using ::android::hardware::contexthub::V1_X::implementation::IContextHubCallbackWrapperV1_2;
+
+Return<Result> Contexthub::registerCallback(uint32_t hubId,
+ const sp<V1_0::IContexthubCallback>& cb) {
+ if (hubId == kMockHubId) {
+ mCallback = new IContextHubCallbackWrapperV1_0(cb);
+ return Result::OK;
+ }
+ return Result::BAD_PARAMS;
}
+Return<Result> Contexthub::queryApps(uint32_t hubId) {
+ if (hubId == kMockHubId && mCallback != nullptr) {
+ std::vector<V1_2::HubAppInfo> nanoapps;
+ mCallback->handleAppsInfo(nanoapps);
+ return Result::OK;
+ }
+ return Result::BAD_PARAMS;
+}
+
+Return<Result> Contexthub::registerCallback_1_2(uint32_t hubId,
+ const sp<V1_2::IContexthubCallback>& cb) {
+ if (hubId == kMockHubId) {
+ mCallback = new IContextHubCallbackWrapperV1_2(cb);
+ return Result::OK;
+ }
+ return Result::BAD_PARAMS;
+}
+
+// We don't expose any nanoapps, therefore all nanoapp-related API calls return with BAD_PARAMS
Return<Result> Contexthub::sendMessageToHub_1_2(uint32_t /* hubId */,
const ContextHubMsg& /* msg */) {
- return Result::UNKNOWN_FAILURE;
+ return Result::BAD_PARAMS;
}
Return<void> Contexthub::onSettingChanged(SettingV1_1 /*setting*/, SettingValue /*newValue*/) {
diff --git a/contexthub/1.2/default/Contexthub.h b/contexthub/1.2/default/Contexthub.h
index c85d3b3..8b89824 100644
--- a/contexthub/1.2/default/Contexthub.h
+++ b/contexthub/1.2/default/Contexthub.h
@@ -16,6 +16,7 @@
#pragma once
#include "ContextHub.h"
+#include "IContextHubCallbackWrapper.h"
#include <android/hardware/contexthub/1.2/IContexthub.h>
@@ -29,20 +30,32 @@
: public ::android::hardware::contexthub::V1_X::implementation::ContextHub<IContexthub> {
using ContextHubMsg = ::android::hardware::contexthub::V1_2::ContextHubMsg;
using IContexthubCallback = ::android::hardware::contexthub::V1_2::IContexthubCallback;
+ using IContextHubCallbackWrapperBase =
+ ::android::hardware::contexthub::V1_X::implementation::IContextHubCallbackWrapperBase;
using Result = ::android::hardware::contexthub::V1_0::Result;
using SettingValue = ::android::hardware::contexthub::V1_1::SettingValue;
using SettingV1_1 = ::android::hardware::contexthub::V1_1::Setting;
public:
- Return<Result> registerCallback_1_2(uint32_t hubId, const sp<IContexthubCallback>& cb) override;
+ // Methods from V1_0::IContexthub
+ Return<Result> registerCallback(uint32_t hubId,
+ const sp<V1_0::IContexthubCallback>& cb) override;
- Return<Result> sendMessageToHub_1_2(uint32_t hubId, const ContextHubMsg& msg) override;
+ Return<Result> queryApps(uint32_t hubId) override;
// Methods from V1_1::IContexthub
Return<void> onSettingChanged(SettingV1_1 setting, SettingValue newValue) override;
// Methods from V1_2::IContexthub
Return<void> onSettingChanged_1_2(Setting setting, SettingValue newValue) override;
+
+ Return<Result> registerCallback_1_2(uint32_t hubId,
+ const sp<V1_2::IContexthubCallback>& cb) override;
+
+ Return<Result> sendMessageToHub_1_2(uint32_t hubId, const ContextHubMsg& msg) override;
+
+ private:
+ sp<IContextHubCallbackWrapperBase> mCallback;
};
} // namespace implementation