1 /*
2  * Copyright (c) 2022-2023 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_DISPLAY_HOST_DRIVER_H
17 #define HDI_DISPLAY_HOST_DRIVER_H
18 
19 #include <hdf_device_desc.h>
20 #include <memory>
21 #include <message_parcel.h>
22 #include <string>
23 
24 #include "display_device.h"
25 #include "display_device_callback_proxy.h"
26 #include "display_device_common.h"
27 #include "display_device_service.h"
28 
29 namespace OHOS {
30 namespace Display {
31 namespace Device {
32 namespace Server {
33 using OHOS::MessageParcel;
34 class DisplayDeviceServerStub {
35 public:
36     DisplayDeviceServerStub();
37     ~DisplayDeviceServerStub() = default;
38     int32_t OnRemoteRequest(int cmdId, MessageParcel *data, MessageParcel *reply);
39     // device
40     int32_t RegHotPlugCallback(MessageParcel *data, MessageParcel *reply);
41     int32_t GetDisplayCapability(MessageParcel *data, MessageParcel *reply);
42     int32_t GetDisplaySupportedModes(MessageParcel *data, MessageParcel *reply);
43     int32_t GetDisplayMode(MessageParcel *data, MessageParcel *reply);
44     int32_t SetDisplayMode(MessageParcel *data, MessageParcel *reply);
45     int32_t GetDisplayPowerStatus(MessageParcel *data, MessageParcel *reply);
46     int32_t SetDisplayPowerStatus(MessageParcel *data, MessageParcel *reply);
47     int32_t GetDisplayBackLight(MessageParcel *data, MessageParcel *reply);
48     int32_t SetDisplayBackLight(MessageParcel *data, MessageParcel *reply);
49     int32_t GetDisplayProperty(MessageParcel *data, MessageParcel *reply);
50     int32_t SetDisplayProperty(MessageParcel *data, MessageParcel *reply);
51     int32_t PrepareDisplayLayers(MessageParcel *data, MessageParcel *reply);
52     int32_t GetDisplayCompChange(MessageParcel *data, MessageParcel *reply);
53     int32_t SetDisplayClientCrop(MessageParcel *data, MessageParcel *reply);
54     int32_t SetDisplayClientDestRect(MessageParcel *data, MessageParcel *reply);
55     int32_t SetDisplayClientBuffer(MessageParcel *data, MessageParcel *reply);
56     int32_t SetDisplayClientDamage(MessageParcel *data, MessageParcel *reply);
57     int32_t SetDisplayVsyncEnabled(MessageParcel *data, MessageParcel *reply);
58     int32_t RegDisplayVBlankCallback(MessageParcel *data, MessageParcel *reply);
59     int32_t GetDisplayReleaseFence(MessageParcel *data, MessageParcel *reply);
60     int32_t Commit(MessageParcel *data, MessageParcel *reply);
61     int32_t InvokeDisplayCmd(MessageParcel *data, MessageParcel *reply);
62     int32_t CreateVirtualDisplay(MessageParcel *data, MessageParcel *reply);
63     int32_t DestroyVirtualDisplay(MessageParcel *data, MessageParcel *reply);
64     int32_t SetVirtualDisplayBuffer(MessageParcel *data, MessageParcel *reply);
65     int32_t RegDisplayRefreshCallback(MessageParcel *data, MessageParcel *reply);
66     int32_t GetWriteBackFrame(MessageParcel *data, MessageParcel *reply);
67     int32_t CreateWriteBack(MessageParcel *data, MessageParcel *reply);
68     int32_t DestroyWriteBack(MessageParcel *data, MessageParcel *reply);
69     int32_t FileTest(MessageParcel *data, MessageParcel *reply);
70     int32_t SetProxyRemoteCallback(MessageParcel *data, MessageParcel *reply);
71     // layer
72     int32_t CreateLayer(MessageParcel *data, MessageParcel *reply);
73     int32_t SetLayerVisible(MessageParcel *data, MessageParcel *reply);
74     int32_t GetLayerVisibleState(MessageParcel *data, MessageParcel *reply);
75     int32_t SetLayerCrop(MessageParcel *data, MessageParcel *reply);
76     int32_t SetLayerZorder(MessageParcel *data, MessageParcel *reply);
77     int32_t GetLayerZorder(MessageParcel *data, MessageParcel *reply);
78     int32_t SetLayerPreMulti(MessageParcel *data, MessageParcel *reply);
79     int32_t GetLayerPreMulti(MessageParcel *data, MessageParcel *reply);
80     int32_t SetLayerAlpha(MessageParcel *data, MessageParcel *reply);
81     int32_t GetLayerAlpha(MessageParcel *data, MessageParcel *reply);
82     int32_t SetLayerColorKey(MessageParcel *data, MessageParcel *reply);
83     int32_t GetLayerColorKey(MessageParcel *data, MessageParcel *reply);
84     int32_t SetLayerPalette(MessageParcel *data, MessageParcel *reply);
85     int32_t GetLayerPalette(MessageParcel *data, MessageParcel *reply);
86     int32_t SetLayerCompression(MessageParcel *data, MessageParcel *reply);
87     int32_t GetLayerCompression(MessageParcel *data, MessageParcel *reply);
88     int32_t Flush(MessageParcel *data, MessageParcel *reply);
89     int32_t SetLayerVisibleRegion(MessageParcel *data, MessageParcel *reply);
90     int32_t SetLayerDirtyRegion(MessageParcel *data, MessageParcel *reply);
91     int32_t GetLayerBuffer(MessageParcel *data, MessageParcel *reply);
92     int32_t SetLayerBuffer(MessageParcel *data, MessageParcel *reply);
93     int32_t InvokeLayerCmd(MessageParcel *data, MessageParcel *reply);
94     int32_t SetLayerCompositionType(MessageParcel *data, MessageParcel *reply);
95     int32_t InitDisplay(MessageParcel *data, MessageParcel *reply);
96     int32_t DeinitDisplay(MessageParcel *data, MessageParcel *reply);
97     int32_t GetDisplayInfo(MessageParcel *data, MessageParcel *reply);
98     int32_t CloseLayer(MessageParcel *data, MessageParcel *reply);
99     int32_t SetLayerSize(MessageParcel *data, MessageParcel *reply);
100     int32_t GetLayerSize(MessageParcel *data, MessageParcel *reply);
101     int32_t SetTransformMode(MessageParcel *data, MessageParcel *reply);
102     int32_t WaitForVBlank(MessageParcel *data, MessageParcel *reply);
103     int32_t SnapShot(MessageParcel *data, MessageParcel *reply);
104     int32_t SetLayerBlendType(MessageParcel *data, MessageParcel *reply);
GetDescriptor()105     static inline const std::u16string &GetDescriptor()
106     {
107         return metaDescriptor_;
108     }
109 
110 private:
111     static inline const std::u16string metaDescriptor_ = IDisplayDevice::GetDescriptor();
112     int32_t SetCallBackObject(sptr<IRemoteObject> callbackRemote);
113     sptr<DisplayDeviceCallbackProxy> callbackRemote_;
114     std::unique_ptr<DisplayDeviceService> device_;
115 };
116 
117 using DisplayDeviceServerStubFunc = int32_t (DisplayDeviceServerStub::*)(MessageParcel *, MessageParcel *);
118 } // namespace Server
119 } // namespace Device
120 } // namespace Display
121 } // namespace OHOS
122 #endif // HDI_DISPLAY_HOST_DRIVER_H
123