From 9a4b420d9ffd2fc587b7b1522e027b37978c69db Mon Sep 17 00:00:00 2001 From: hobbycao Date: Mon, 6 Jun 2022 20:02:45 +0800 Subject: [PATCH] feat: add buffer handle sequenceable for idl Signed-off-by: hobbycao --- .../sequenceable/buffer_handle/BUILD.gn | 38 ++++++++++ .../buffer_handle_sequenceable.cpp | 71 +++++++++++++++++++ .../buffer_handle_sequenceable.h | 50 +++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 uhdf2/model/display/sequenceable/buffer_handle/BUILD.gn create mode 100644 uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.cpp create mode 100644 uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.h diff --git a/uhdf2/model/display/sequenceable/buffer_handle/BUILD.gn b/uhdf2/model/display/sequenceable/buffer_handle/BUILD.gn new file mode 100644 index 0000000..aaf1db0 --- /dev/null +++ b/uhdf2/model/display/sequenceable/buffer_handle/BUILD.gn @@ -0,0 +1,38 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd. +# 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. + +import("//build/ohos.gni") +import("//drivers/adapter/uhdf2/uhdf.gni") + +config("buffer_handle_sequenceable_config") { + include_dirs = [ + "./", + "//drivers/peripheral/base", + ] +} + +ohos_shared_library("libbuffer_handle_sequenceable_1.0") { + sources = [ "buffer_handle_sequenceable.cpp" ] + + public_configs = [ ":buffer_handle_sequenceable_config" ] + + external_deps = [ + "graphic_chipsetsdk:buffer_handle", + "ipc:ipc_single", + "utils_base:utils", + ] + + install_images = [ chipset_base_dir ] + subsystem_name = "hdf" + part_name = "distributed_camera_device_driver" +} diff --git a/uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.cpp b/uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.cpp new file mode 100644 index 0000000..9fc898f --- /dev/null +++ b/uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * 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 "buffer_handle_sequenceable.h" + +#include +#include "buffer_handle_parcel.h" + +namespace OHOS { +namespace HDI { +namespace Sequenceable { +namespace V1_0 { +BufferHandleSequenceable::BufferHandleSequenceable() : bufferHandle_(nullptr) +{ +} + +BufferHandleSequenceable::BufferHandleSequenceable(BufferHandle *bufferHandle) + : bufferHandle_(bufferHandle) +{ +} + +BufferHandleSequenceable::~BufferHandleSequenceable() +{ +} + +bool BufferHandleSequenceable::Marshalling(Parcel &parcel) const +{ + if (bufferHandle_ == nullptr) { + return false; + } + + MessageParcel &reply = static_cast(parcel); + return WriteBufferHandle(reply, *bufferHandle_); +} + +sptr BufferHandleSequenceable::Unmarshalling(Parcel &parcel) +{ + MessageParcel &data = static_cast(parcel); + BufferHandle *bufferHandle = ReadBufferHandle(data); + if (bufferHandle == nullptr) { + return nullptr; + } + sptr bufferHandleSeq = new BufferHandleSequenceable(bufferHandle); + return bufferHandleSeq; +} + +BufferHandle *BufferHandleSequenceable::GetBufferHandle() +{ + return bufferHandle_; +} + +void BufferHandleSequenceable::SetBufferHandle(BufferHandle *bufferHandle) +{ + bufferHandle_ = bufferHandle; +} +} // namespace V1_0 +} // namespace Sequenceable +} // namespace HDI +} // namespace OHOS \ No newline at end of file diff --git a/uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.h b/uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.h new file mode 100644 index 0000000..7277dd2 --- /dev/null +++ b/uhdf2/model/display/sequenceable/buffer_handle/buffer_handle_sequenceable.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * 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 OHOS_HDI_BUFFER_HANDLE_SEQUENCE_H +#define OHOS_HDI_BUFFER_HANDLE_SEQUENCE_H + +#include + +#include "buffer_handle.h" + +namespace OHOS { +namespace HDI { +namespace Sequenceable { +namespace V1_0 { +using OHOS::Parcelable; +using OHOS::Parcel; +using OHOS::sptr; + +class BufferHandleSequenceable : public Parcelable { +public: + BufferHandleSequenceable(); + explicit BufferHandleSequenceable(BufferHandle *bufferHandle); + virtual ~BufferHandleSequenceable(); + + bool Marshalling(Parcel &parcel) const override; + static sptr Unmarshalling(Parcel &parcel); + + BufferHandle *GetBufferHandle(); + void SetBufferHandle(BufferHandle *bufferHandle); + +private: + BufferHandle *bufferHandle_; +}; +} // namespace V1_0 +} // namespace Sequenceable +} // namespace HDI +} // namespace OHOS +#endif \ No newline at end of file -- Gitee