diff options
author | 2018-10-31 13:20:12 -0700 | |
---|---|---|
committer | 2018-11-08 13:34:41 -0800 | |
commit | ca70b7ba83ff4c0a9a91b52296ef089ab062e762 (patch) | |
tree | 8fe0e636885db1665b82d004777e71862f009500 | |
parent | e64d79e3a99e29be930a25167cc4a462371a1178 (diff) |
Implement IBufferClient hwbinder interface
Some boiler plate code for future use.
Test: "atest BufferHubBuffer_test" passed.
Bug: b/116681016
Change-Id: I12854ac6f553777451584e86a81f2e6064a12696
-rw-r--r-- | libs/ui/tests/BufferHubBuffer_test.cpp | 15 | ||||
-rw-r--r-- | services/bufferhub/Android.bp | 1 | ||||
-rw-r--r-- | services/bufferhub/BufferClient.cpp | 39 | ||||
-rw-r--r-- | services/bufferhub/BufferHubService.cpp | 15 | ||||
-rw-r--r-- | services/bufferhub/include/bufferhub/BufferClient.h | 41 | ||||
-rw-r--r-- | services/bufferhub/include/bufferhub/BufferHubService.h | 11 |
6 files changed, 107 insertions, 15 deletions
diff --git a/libs/ui/tests/BufferHubBuffer_test.cpp b/libs/ui/tests/BufferHubBuffer_test.cpp index a247e60103..606aee60cb 100644 --- a/libs/ui/tests/BufferHubBuffer_test.cpp +++ b/libs/ui/tests/BufferHubBuffer_test.cpp @@ -16,6 +16,7 @@ #define LOG_TAG "BufferHubBufferTest" +#include <android/frameworks/bufferhub/1.0/IBufferClient.h> #include <android/frameworks/bufferhub/1.0/IBufferHub.h> #include <gtest/gtest.h> #include <hidl/ServiceManagement.h> @@ -33,11 +34,11 @@ const int kFormat = HAL_PIXEL_FORMAT_RGBA_8888; const int kUsage = 0; const size_t kUserMetadataSize = 0; -} // namespace - using dvr::BufferHubDefs::IsBufferGained; using dvr::BufferHubDefs::kFirstClientBitMask; using dvr::BufferHubDefs::kMetadataHeaderSize; +using frameworks::bufferhub::V1_0::BufferHubStatus; +using frameworks::bufferhub::V1_0::IBufferClient; using frameworks::bufferhub::V1_0::IBufferHub; using hardware::hidl_handle; using hidl::base::V1_0::IBase; @@ -129,8 +130,14 @@ TEST_F(BufferHubBufferTest, ConnectHidlServer) { // TODO(b/116681016): Fill in real test once the interface gets implemented.. hidl_handle handle; - sp<IBase> interface = bufferhub->importBuffer(handle); - EXPECT_EQ(nullptr, interface.get()); + EXPECT_TRUE(bufferhub + ->importBuffer(handle, + [](const auto& client, const auto& ret) { + EXPECT_EQ(client, nullptr); + EXPECT_EQ(ret, BufferHubStatus::NO_ERROR); + }) + .isOk()); } +} // namespace } // namespace android diff --git a/services/bufferhub/Android.bp b/services/bufferhub/Android.bp index d03d833fd7..ca65e02538 100644 --- a/services/bufferhub/Android.bp +++ b/services/bufferhub/Android.bp @@ -22,6 +22,7 @@ cc_library_shared { "-Wextra", ], srcs: [ + "BufferClient.cpp", "BufferHubService.cpp", "BufferNode.cpp", ], diff --git a/services/bufferhub/BufferClient.cpp b/services/bufferhub/BufferClient.cpp new file mode 100644 index 0000000000..b3662b265b --- /dev/null +++ b/services/bufferhub/BufferClient.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2018 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 <bufferhub/BufferClient.h> +#include <hidl/HidlSupport.h> + +namespace android { +namespace frameworks { +namespace bufferhub { +namespace V1_0 { +namespace implementation { + +using hardware::hidl_handle; +using hardware::Void; + +Return<void> BufferClient::duplicate(duplicate_cb _hidl_cb) { + // TODO(b/118614157): implement token generation and registration + _hidl_cb(/*token=*/hidl_handle(), /*status=*/BufferHubStatus::NO_ERROR); + return Void(); +} + +} // namespace implementation +} // namespace V1_0 +} // namespace bufferhub +} // namespace frameworks +} // namespace android
\ No newline at end of file diff --git a/services/bufferhub/BufferHubService.cpp b/services/bufferhub/BufferHubService.cpp index 8be85a503a..86598e00ac 100644 --- a/services/bufferhub/BufferHubService.cpp +++ b/services/bufferhub/BufferHubService.cpp @@ -22,16 +22,21 @@ namespace bufferhub { namespace V1_0 { namespace implementation { -using ::android::status_t; -using ::android::hardware::Void; +using hardware::Void; Return<void> BufferHubService::allocateBuffer(const HardwareBufferDescription& /*description*/, - allocateBuffer_cb /*hidl_cb*/) { + const uint32_t /*userMetadataSize*/, + allocateBuffer_cb _hidl_cb) { + // TODO(b/118614333): implement buffer allocation + _hidl_cb(/*bufferClient=*/nullptr, /*status=*/BufferHubStatus::NO_ERROR); return Void(); } -Return<sp<IBase>> BufferHubService::importBuffer(const hidl_handle& /*nativeHandle*/) { - return nullptr; +Return<void> BufferHubService::importBuffer(const hidl_handle& /*nativeHandle*/, + importBuffer_cb _hidl_cb) { + // TODO(b/118614157): implement buffer import + _hidl_cb(/*bufferClient=*/nullptr, /*status=*/BufferHubStatus::NO_ERROR); + return Void(); } } // namespace implementation diff --git a/services/bufferhub/include/bufferhub/BufferClient.h b/services/bufferhub/include/bufferhub/BufferClient.h new file mode 100644 index 0000000000..14ea95c415 --- /dev/null +++ b/services/bufferhub/include/bufferhub/BufferClient.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2018 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. + */ + +#ifndef ANDROID_FRAMEWORKS_BUFFERHUB_V1_0_BUFFER_CLIENT_H +#define ANDROID_FRAMEWORKS_BUFFERHUB_V1_0_BUFFER_CLIENT_H + +#include <android/frameworks/bufferhub/1.0/IBufferClient.h> + +namespace android { +namespace frameworks { +namespace bufferhub { +namespace V1_0 { +namespace implementation { + +using hardware::Return; + +class BufferClient : public IBufferClient { +public: + Return<void> duplicate(duplicate_cb _hidl_cb) override; +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace bufferhub +} // namespace frameworks +} // namespace android + +#endif
\ No newline at end of file diff --git a/services/bufferhub/include/bufferhub/BufferHubService.h b/services/bufferhub/include/bufferhub/BufferHubService.h index b273e5b93c..5e0cff0a69 100644 --- a/services/bufferhub/include/bufferhub/BufferHubService.h +++ b/services/bufferhub/include/bufferhub/BufferHubService.h @@ -17,8 +17,8 @@ #ifndef ANDROID_FRAMEWORKS_BUFFERHUB_V1_0_BUFFER_HUB_SERVICE_H #define ANDROID_FRAMEWORKS_BUFFERHUB_V1_0_BUFFER_HUB_SERVICE_H +#include <android/frameworks/bufferhub/1.0/IBufferClient.h> #include <android/frameworks/bufferhub/1.0/IBufferHub.h> -#include <android/hardware/graphics/common/1.2/types.h> namespace android { namespace frameworks { @@ -26,17 +26,16 @@ namespace bufferhub { namespace V1_0 { namespace implementation { -using ::android::sp; using ::android::hardware::hidl_handle; using ::android::hardware::Return; using ::android::hardware::graphics::common::V1_2::HardwareBufferDescription; -using ::android::hidl::base::V1_0::IBase; class BufferHubService : public IBufferHub { public: - Return<void> allocateBuffer(const HardwareBufferDescription& /*description*/, - allocateBuffer_cb /*hidl_cb*/) override; - Return<sp<IBase>> importBuffer(const hidl_handle& /*nativeHandle*/) override; + Return<void> allocateBuffer(const HardwareBufferDescription& description, + const uint32_t userMetadataSize, + allocateBuffer_cb _hidl_cb) override; + Return<void> importBuffer(const hidl_handle& nativeHandle, importBuffer_cb _hidl_cb) override; }; } // namespace implementation |