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