diff options
Diffstat (limited to 'contexthub/aidl/default/ContextHub.cpp')
-rw-r--r-- | contexthub/aidl/default/ContextHub.cpp | 68 |
1 files changed, 51 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(); } |