1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef HDI_PARCEL_UTILS_V1_0_H
17 #define HDI_PARCEL_UTILS_V1_0_H
18 
19 #include <message_parcel.h>
20 #include "hdf_sbuf_ipc.h"
21 #include "display_type.h"
22 #include "hdf_log.h"
23 
24 namespace OHOS {
25 namespace HDI {
26 namespace Display {
27 namespace V1_0 {
28 class ParcelUtils {
29 public:
UnpackAllocInfo(MessageParcel & data,AllocInfo * pAllocInfo)30     static int32_t UnpackAllocInfo(MessageParcel &data, AllocInfo *pAllocInfo)
31     {
32         if (pAllocInfo == nullptr) {
33             return DISPLAY_NULL_PTR;
34         }
35         pAllocInfo->width  = data.ReadUint32();
36         pAllocInfo->height = data.ReadUint32();
37         pAllocInfo->usage  = data.ReadUint64();
38         pAllocInfo->format = static_cast<PixelFormat>(data.ReadUint32());
39         pAllocInfo->expectedSize = data.ReadUint32();
40         return DISPLAY_SUCCESS;
41     }
42 
PackAllocInfo(MessageParcel & data,const AllocInfo * pAllocInfo)43     static int32_t PackAllocInfo(MessageParcel &data, const AllocInfo *pAllocInfo)
44     {
45         if (pAllocInfo == nullptr) {
46             return DISPLAY_NULL_PTR;
47         }
48         if (!data.WriteUint32(pAllocInfo->width)) {
49             HDF_LOGE("%{public}s: write AllocInfo width failed", __func__);
50             return DISPLAY_PARAM_ERR;
51         }
52         if (!data.WriteUint32(pAllocInfo->height)) {
53             HDF_LOGE("%{public}s: write AllocInfo height failed", __func__);
54             return DISPLAY_PARAM_ERR;
55         }
56         if (!data.WriteUint64(pAllocInfo->usage)) {
57             HDF_LOGE("%{public}s: write AllocInfo usage failed", __func__);
58             return DISPLAY_PARAM_ERR;
59         }
60         if (!data.WriteUint32(pAllocInfo->format)) {
61             HDF_LOGE("%{public}s: write AllocInfo format failed", __func__);
62             return DISPLAY_PARAM_ERR;
63         }
64         if (!data.WriteUint32(pAllocInfo->expectedSize)) {
65             HDF_LOGE("%{public}s: write AllocInfo type failed", __func__);
66             return DISPLAY_PARAM_ERR;
67         }
68         return DISPLAY_SUCCESS;
69     }
70 };
71 } // namespace V1_0
72 } // namespace Display
73 } // namespace HDI
74 } // namespace OHOS
75 
76 #endif // HDI_PARCEL_UTILS_V1_0_H
77