Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 100aa5ed authored by Anthony Stange's avatar Anthony Stange
Browse files

Add new contexthub HAL 1.2 methods to default impl

Bug: 166846988
Test: Run VTS against default HAL
Change-Id: I158a49e54f340a2ba25f79894d6ec465070326f8
parent 6c77c354
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -23,10 +23,29 @@ namespace contexthub {
namespace V1_1 {
namespace implementation {

using ::android::hardware::contexthub::V1_0::Result;

Return<void> Contexthub::onSettingChanged(Setting /*setting*/, SettingValue /*newValue*/) {
    return Void();
}

Return<Result> Contexthub::registerCallback(uint32_t hubId, const sp<IContexthubCallback>& cb) {
    if (hubId == kMockHubId) {
        mCallback = cb;
        return Result::OK;
    }
    return Result::BAD_PARAMS;
}

Return<Result> Contexthub::queryApps(uint32_t hubId) {
    if (hubId == kMockHubId && mCallback != nullptr) {
        std::vector<HubAppInfo> nanoapps;
        mCallback->handleAppsInfo(nanoapps);
        return Result::OK;
    }
    return Result::BAD_PARAMS;
}

}  // namespace implementation
}  // namespace V1_1
}  // namespace contexthub
+10 −0
Original line number Diff line number Diff line
@@ -27,9 +27,19 @@ namespace implementation {

class Contexthub
    : public ::android::hardware::contexthub::V1_X::implementation::ContextHub<IContexthub> {
    using Result = ::android::hardware::contexthub::V1_0::Result;

  public:
    // Methods from V1_0::IContexthub
    Return<Result> registerCallback(uint32_t hubId, const sp<IContexthubCallback>& cb) override;

    Return<Result> queryApps(uint32_t hubId) override;

    // Methods from V1_1::IContexthub
    Return<void> onSettingChanged(Setting setting, SettingValue newValue) override;

  private:
    sp<IContexthubCallback> mCallback;
};

}  // namespace implementation
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ cc_binary {
    ],
    header_libs: [
        "android.hardware.contexthub@1.X-common-impl",
        "android.hardware.contexthub@1.X-common-utils",
    ],
    vintf_fragments: ["android.hardware.contexthub@1.2.xml"],
}
+31 −7
Original line number Diff line number Diff line
@@ -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*/) {
+15 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#pragma once

#include "ContextHub.h"
#include "IContextHubCallbackWrapper.h"

#include <android/hardware/contexthub/1.2/IContexthub.h>

@@ -29,20 +30,32 @@ class Contexthub
    : 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
Loading