summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Ishiguro <arthuri@google.com>2021-10-26 17:25:19 +0000
committerArthur Ishiguro <arthuri@google.com>2021-10-28 19:50:42 +0000
commit94e1aa21e50c4d25fbafbca08f8f4a821a3f0c27 (patch)
treed1668372d9e5c52e2a6405bfd734b9b35c185444
parentc37f38d465e8193bcb7103fe450404b947454d1b (diff)
Update AIDL Context Hub default impl
Functionality matches default HIDL impl. Bug: 194285834 Test: Presubmit Change-Id: Ia84fe1eea93eea27a4c047360cc2a79a4decdbab
-rw-r--r--contexthub/aidl/default/ContextHub.cpp68
-rw-r--r--contexthub/aidl/default/include/contexthub-impl/ContextHub.h4
2 files changed, 55 insertions, 17 deletions
diff --git a/contexthub/aidl/default/ContextHub.cpp b/contexthub/aidl/default/ContextHub.cpp
index 1b5660832b..1fbccc5333 100644
--- a/contexthub/aidl/default/ContextHub.cpp
+++ b/contexthub/aidl/default/ContextHub.cpp
@@ -21,38 +21,50 @@ namespace android {
namespace hardware {
namespace contexthub {
-// TODO(b/194285834): Implement AIDL HAL
+::ndk::ScopedAStatus ContextHub::getContextHubs(std::vector<ContextHubInfo>* out_contextHubInfos) {
+ ContextHubInfo hub = {};
+ hub.name = "Mock Context Hub";
+ hub.vendor = "AOSP";
+ hub.toolchain = "n/a";
+ hub.id = kMockHubId;
+ hub.peakMips = 1;
+ hub.maxSupportedMessageLengthBytes = 4096;
+ hub.chrePlatformId = UINT64_C(0x476f6f6754000000);
+ hub.chreApiMajorVersion = 1;
+ hub.chreApiMinorVersion = 6;
+
+ out_contextHubInfos->push_back(hub);
-::ndk::ScopedAStatus ContextHub::getContextHubs(
- std::vector<ContextHubInfo>* /* out_contextHubInfos */) {
return ndk::ScopedAStatus::ok();
}
+// We don't expose any nanoapps for the default impl, therefore all nanoapp-related APIs fail.
::ndk::ScopedAStatus ContextHub::loadNanoapp(int32_t /* in_contextHubId */,
const NanoappBinary& /* in_appBinary */,
- int32_t /* in_transactionId */,
- bool* /* _aidl_return */) {
+ int32_t /* in_transactionId */, bool* _aidl_return) {
+ *_aidl_return = false;
return ndk::ScopedAStatus::ok();
}
::ndk::ScopedAStatus ContextHub::unloadNanoapp(int32_t /* in_contextHubId */,
int64_t /* in_appId */,
- int32_t /* in_transactionId */,
- bool* /* _aidl_return */) {
+ int32_t /* in_transactionId */, bool* _aidl_return) {
+ *_aidl_return = false;
return ndk::ScopedAStatus::ok();
}
::ndk::ScopedAStatus ContextHub::disableNanoapp(int32_t /* in_contextHubId */,
int64_t /* in_appId */,
int32_t /* in_transactionId */,
- bool* /* _aidl_return */) {
+ bool* _aidl_return) {
+ *_aidl_return = false;
return ndk::ScopedAStatus::ok();
}
::ndk::ScopedAStatus ContextHub::enableNanoapp(int32_t /* in_contextHubId */,
int64_t /* in_appId */,
- int32_t /* in_transactionId */,
- bool* /* _aidl_return */) {
+ int32_t /* in_transactionId */, bool* _aidl_return) {
+ *_aidl_return = false;
return ndk::ScopedAStatus::ok();
}
@@ -60,20 +72,42 @@ namespace contexthub {
return ndk::ScopedAStatus::ok();
}
-::ndk::ScopedAStatus ContextHub::queryNanoapps(int32_t /* in_contextHubId */,
- bool* /* _aidl_return */) {
+::ndk::ScopedAStatus ContextHub::queryNanoapps(int32_t in_contextHubId, bool* _aidl_return) {
+ if (in_contextHubId == kMockHubId && mCallback != nullptr) {
+ std::vector<NanoappInfo> nanoapps;
+ mCallback->handleNanoappInfo(nanoapps);
+ *_aidl_return = true;
+ } else {
+ *_aidl_return = false;
+ }
+
return ndk::ScopedAStatus::ok();
}
-::ndk::ScopedAStatus ContextHub::registerCallback(
- int32_t /* in_contextHubId */, const std::shared_ptr<IContextHubCallback>& /* in_cb */,
- bool* /* _aidl_return */) {
+::ndk::ScopedAStatus ContextHub::registerCallback(int32_t in_contextHubId,
+ const std::shared_ptr<IContextHubCallback>& in_cb,
+ bool* _aidl_return) {
+ if (in_contextHubId == kMockHubId) {
+ mCallback = in_cb;
+ *_aidl_return = true;
+ } else {
+ *_aidl_return = false;
+ }
return ndk::ScopedAStatus::ok();
}
-::ndk::ScopedAStatus ContextHub::sendMessageToHub(int32_t /* in_contextHubId */,
+::ndk::ScopedAStatus ContextHub::sendMessageToHub(int32_t in_contextHubId,
const ContextHubMessage& /* in_message */,
- bool* /* _aidl_return */) {
+ bool* _aidl_return) {
+ if (in_contextHubId == kMockHubId) {
+ // Return true here to indicate that the HAL has accepted the message.
+ // Successful delivery of the message to a nanoapp should be handled at
+ // a higher level protocol.
+ *_aidl_return = true;
+ } else {
+ *_aidl_return = false;
+ }
+
return ndk::ScopedAStatus::ok();
}
diff --git a/contexthub/aidl/default/include/contexthub-impl/ContextHub.h b/contexthub/aidl/default/include/contexthub-impl/ContextHub.h
index 980cee5cd3..0dbb61bc3a 100644
--- a/contexthub/aidl/default/include/contexthub-impl/ContextHub.h
+++ b/contexthub/aidl/default/include/contexthub-impl/ContextHub.h
@@ -41,6 +41,10 @@ class ContextHub : public BnContextHub {
::ndk::ScopedAStatus sendMessageToHub(int32_t in_contextHubId,
const ContextHubMessage& in_message,
bool* _aidl_return) override;
+
+ private:
+ static constexpr uint32_t kMockHubId = 0;
+ std::shared_ptr<IContextHubCallback> mCallback;
};
} // namespace contexthub