mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Add default (mock) Contexthub HAL 1.1 impl
Current implementation exposes a mock context hub, but with no nanoapps. Bug: 135951924 Test: compile only (will be covered by VTS in a follow-up) Change-Id: I7a13527f303ce1bcacac8c6be9f081b0838cdc68
This commit is contained in:
42
contexthub/1.1/default/Android.bp
Normal file
42
contexthub/1.1/default/Android.bp
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.
|
||||
*/
|
||||
|
||||
cc_binary {
|
||||
name: "android.hardware.contexthub@1.1-service.mock",
|
||||
defaults: ["hidl_defaults"],
|
||||
vendor: true,
|
||||
relative_install_path: "hw",
|
||||
init_rc: ["android.hardware.contexthub@1.1-service.rc"],
|
||||
srcs: [
|
||||
"Contexthub.cpp",
|
||||
"service.cpp",
|
||||
],
|
||||
cflags: [
|
||||
"-Wall",
|
||||
"-Werror",
|
||||
],
|
||||
shared_libs: [
|
||||
"android.hardware.contexthub@1.0",
|
||||
"android.hardware.contexthub@1.1",
|
||||
"libbase",
|
||||
"libcutils",
|
||||
"libhardware",
|
||||
"libhidlbase",
|
||||
"liblog",
|
||||
"libutils",
|
||||
],
|
||||
vintf_fragments: ["android.hardware.contexthub@1.1.xml"],
|
||||
}
|
||||
109
contexthub/1.1/default/Contexthub.cpp
Normal file
109
contexthub/1.1/default/Contexthub.cpp
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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 "Contexthub.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace contexthub {
|
||||
namespace V1_1 {
|
||||
namespace implementation {
|
||||
|
||||
using ::android::hardware::contexthub::V1_0::ContextHub;
|
||||
using ::android::hardware::contexthub::V1_0::HubAppInfo;
|
||||
using ::android::hardware::contexthub::V1_0::Result;
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr uint32_t kMockHubId = 0;
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
Return<void> Contexthub::getHubs(getHubs_cb _hidl_cb) {
|
||||
ContextHub hub = {};
|
||||
hub.name = "Mock Context Hub";
|
||||
hub.vendor = "AOSP";
|
||||
hub.toolchain = "n/a";
|
||||
hub.platformVersion = 1;
|
||||
hub.toolchainVersion = 1;
|
||||
hub.hubId = kMockHubId;
|
||||
hub.peakMips = 1;
|
||||
hub.peakPowerDrawMw = 1;
|
||||
hub.maxSupportedMsgLen = 4096;
|
||||
hub.chrePlatformId = UINT64_C(0x476f6f6754000000);
|
||||
hub.chreApiMajorVersion = 1;
|
||||
hub.chreApiMinorVersion = 4;
|
||||
|
||||
// Report a single mock hub
|
||||
std::vector<ContextHub> hubs;
|
||||
hubs.push_back(hub);
|
||||
|
||||
_hidl_cb(hubs);
|
||||
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;
|
||||
}
|
||||
|
||||
// We don't expose any nanoapps, therefore all nanoapp-related API calls return with BAD_PARAMS
|
||||
Return<Result> Contexthub::sendMessageToHub(uint32_t /*hubId*/, const ContextHubMsg& /*msg*/) {
|
||||
return Result::BAD_PARAMS;
|
||||
}
|
||||
|
||||
Return<Result> Contexthub::loadNanoApp(uint32_t /*hubId*/, const NanoAppBinary& /*appBinary*/,
|
||||
uint32_t /*transactionId*/) {
|
||||
return Result::BAD_PARAMS;
|
||||
}
|
||||
|
||||
Return<Result> Contexthub::unloadNanoApp(uint32_t /*hubId*/, uint64_t /*appId*/,
|
||||
uint32_t /*transactionId*/) {
|
||||
return Result::BAD_PARAMS;
|
||||
}
|
||||
|
||||
Return<Result> Contexthub::enableNanoApp(uint32_t /*hubId*/, uint64_t /*appId*/,
|
||||
uint32_t /*transactionId*/) {
|
||||
return Result::BAD_PARAMS;
|
||||
}
|
||||
|
||||
Return<Result> Contexthub::disableNanoApp(uint32_t /*hubId*/, uint64_t /*appId*/,
|
||||
uint32_t /*transactionId*/) {
|
||||
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;
|
||||
}
|
||||
|
||||
Return<void> Contexthub::onSettingChanged(Setting /*setting*/, SettingValue /*newValue*/) {
|
||||
return Void();
|
||||
}
|
||||
|
||||
} // namespace implementation
|
||||
} // namespace V1_1
|
||||
} // namespace contexthub
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
56
contexthub/1.1/default/Contexthub.h
Normal file
56
contexthub/1.1/default/Contexthub.h
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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/contexthub/1.1/IContexthub.h>
|
||||
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace contexthub {
|
||||
namespace V1_1 {
|
||||
namespace implementation {
|
||||
|
||||
class Contexthub : public V1_1::IContexthub {
|
||||
using ContextHubMsg = ::android::hardware::contexthub::V1_0::ContextHubMsg;
|
||||
using IContexthubCallback = ::android::hardware::contexthub::V1_0::IContexthubCallback;
|
||||
using NanoAppBinary = ::android::hardware::contexthub::V1_0::NanoAppBinary;
|
||||
using Result = ::android::hardware::contexthub::V1_0::Result;
|
||||
|
||||
public:
|
||||
// Methods from V1_0::IContexthub
|
||||
Return<void> getHubs(getHubs_cb _hidl_cb) override;
|
||||
Return<Result> registerCallback(uint32_t hubId,
|
||||
const ::android::sp<IContexthubCallback>& cb) override;
|
||||
Return<Result> sendMessageToHub(uint32_t hubId, const ContextHubMsg& msg) override;
|
||||
Return<Result> loadNanoApp(uint32_t hubId, const NanoAppBinary& appBinary,
|
||||
uint32_t transactionId) override;
|
||||
Return<Result> unloadNanoApp(uint32_t hubId, uint64_t appId, uint32_t transactionId) override;
|
||||
Return<Result> enableNanoApp(uint32_t hubId, uint64_t appId, uint32_t transactionId) override;
|
||||
Return<Result> disableNanoApp(uint32_t hubId, uint64_t appId, uint32_t transactionId) 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
|
||||
} // namespace V1_1
|
||||
} // namespace contexthub
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
3
contexthub/1.1/default/OWNERS
Normal file
3
contexthub/1.1/default/OWNERS
Normal file
@@ -0,0 +1,3 @@
|
||||
arthuri@google.com
|
||||
bduddie@google.com
|
||||
stange@google.com
|
||||
@@ -0,0 +1,6 @@
|
||||
service vendor.contexthub-hal-1-1-mock /vendor/bin/hw/android.hardware.contexthub@1.1-service.mock
|
||||
interface android.hardware.contexthub@1.0::IContexthub default
|
||||
interface android.hardware.contexthub@1.1::IContexthub default
|
||||
class hal
|
||||
user system
|
||||
group system
|
||||
11
contexthub/1.1/default/android.hardware.contexthub@1.1.xml
Normal file
11
contexthub/1.1/default/android.hardware.contexthub@1.1.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<manifest version="1.0" type="device">
|
||||
<hal format="hidl">
|
||||
<name>android.hardware.contexthub</name>
|
||||
<transport>hwbinder</transport>
|
||||
<version>1.1</version>
|
||||
<interface>
|
||||
<name>IContexthub</name>
|
||||
<instance>default</instance>
|
||||
</interface>
|
||||
</hal>
|
||||
</manifest>
|
||||
42
contexthub/1.1/default/service.cpp
Normal file
42
contexthub/1.1/default/service.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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 "android.hardware.contexthub@1.1-service"
|
||||
|
||||
#include <android/hardware/contexthub/1.1/IContexthub.h>
|
||||
#include <hidl/HidlTransportSupport.h>
|
||||
#include <log/log.h>
|
||||
#include <utils/StrongPointer.h>
|
||||
#include "Contexthub.h"
|
||||
|
||||
using ::android::hardware::configureRpcThreadpool;
|
||||
using ::android::hardware::joinRpcThreadpool;
|
||||
using ::android::hardware::contexthub::V1_1::IContexthub;
|
||||
using ::android::hardware::contexthub::V1_1::implementation::Contexthub;
|
||||
|
||||
int main() {
|
||||
configureRpcThreadpool(1, true /* callerWillJoin */);
|
||||
|
||||
::android::sp<IContexthub> contexthub = new Contexthub();
|
||||
if (contexthub->registerAsService() != ::android::OK) {
|
||||
ALOGE("Failed to register Contexthub HAL instance");
|
||||
return 1;
|
||||
}
|
||||
|
||||
joinRpcThreadpool();
|
||||
ALOGE("Service exited");
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user