1 /* 2 * Copyright (c) 2022-2024 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 OHOS_AVSESSION_STUB_H 17 #define OHOS_AVSESSION_STUB_H 18 19 #include <map> 20 #include "iav_session.h" 21 #include "iremote_stub.h" 22 #include "want_agent.h" 23 #include "want_params.h" 24 #include "avsession_log.h" 25 #include "avsession_errors.h" 26 27 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 28 #include "avcast_controller.h" 29 #endif 30 31 namespace OHOS::AVSession { 32 class AVSessionStub : public IRemoteStub<IAVSession> { 33 public: 34 int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; 35 RegisterCallback(const std::shared_ptr<AVSessionCallback> & callback)36 int32_t RegisterCallback(const std::shared_ptr<AVSessionCallback>& callback) override 37 { 38 return ERR_NONE; 39 } 40 GetController()41 std::shared_ptr<AVSessionController> GetController() override 42 { 43 return nullptr; 44 } 45 46 #ifdef CASTPLUS_CAST_ENGINE_ENABLE GetAVCastController()47 std::shared_ptr<AVCastController> GetAVCastController() override 48 { 49 return nullptr; 50 } 51 #endif 52 53 private: 54 int32_t HandleGetSessionId(MessageParcel& data, MessageParcel& reply); 55 56 int32_t HandleGetSessionType(MessageParcel& data, MessageParcel& reply); 57 58 int32_t HandleSetAVCallMetaData(MessageParcel& data, MessageParcel& reply); 59 60 int32_t HandleSetAVCallState(MessageParcel& data, MessageParcel& reply); 61 62 int32_t HandleGetAVMetaData(MessageParcel& data, MessageParcel& reply); 63 64 int32_t SetImageData(AVMetaData& meta, const char *buffer, int twoImageLength); 65 66 int32_t HandleSetAVMetaData(MessageParcel& data, MessageParcel& reply); 67 68 int32_t HandleGetAVPlaybackState(MessageParcel& data, MessageParcel& reply); 69 70 int32_t HandleSetAVPlaybackState(MessageParcel& data, MessageParcel& reply); 71 72 int32_t HandleSetLaunchAbility(MessageParcel& data, MessageParcel& reply); 73 74 int32_t HandleGetExtras(MessageParcel& data, MessageParcel& reply); 75 76 int32_t HandleSetExtras(MessageParcel& data, MessageParcel& reply); 77 78 int32_t HandleGetController(MessageParcel& data, MessageParcel& reply); 79 80 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 81 int32_t HandleGetAVCastController(MessageParcel& data, MessageParcel& reply); 82 83 int32_t HandleReleaseCast(MessageParcel& data, MessageParcel& reply); 84 85 int32_t HandleStartCastDisplayListener(MessageParcel& data, MessageParcel& reply); 86 87 int32_t HandleStopCastDisplayListener(MessageParcel& data, MessageParcel& reply); 88 89 int32_t HandleGetAllCastDisplays(MessageParcel& data, MessageParcel& reply); 90 #endif 91 92 int32_t HandleRegisterCallbackInner(MessageParcel& data, MessageParcel& reply); 93 94 int32_t HandleActivate(MessageParcel& data, MessageParcel& reply); 95 96 int32_t HandleDeactivate(MessageParcel& data, MessageParcel& reply); 97 98 int32_t HandleIsActive(MessageParcel& data, MessageParcel& reply); 99 100 int32_t HandleDestroy(MessageParcel& data, MessageParcel& reply); 101 102 int32_t HandleAddSupportCommand(MessageParcel& data, MessageParcel& reply); 103 104 int32_t HandleDeleteSupportCommand(MessageParcel& data, MessageParcel& reply); 105 106 int32_t HandleSetSessionEvent(MessageParcel& data, MessageParcel& reply); 107 108 int32_t HandleGetAVQueueItems(MessageParcel& data, MessageParcel& reply); 109 110 int32_t HandleSetAVQueueItems(MessageParcel& data, MessageParcel& reply); 111 112 int32_t HandleGetAVQueueTitle(MessageParcel& data, MessageParcel& reply); 113 114 int32_t HandleSetAVQueueTitle(MessageParcel& data, MessageParcel& reply); 115 116 static bool CheckInterfaceToken(MessageParcel& data); 117 118 using HandlerFunc = std::function<int32_t(MessageParcel&, MessageParcel&)>; 119 std::map<uint32_t, HandlerFunc> handlers = { 120 {SESSION_CMD_GET_SESSION_ID, 121 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetSessionId(data, reply); }}, 122 {SESSION_CMD_GET_SESSION_TYPE, 123 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetSessionType(data, reply); }}, 124 {SESSION_CMD_GET_META_DATA, 125 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVMetaData(data, reply); }}, 126 {SESSION_CMD_SET_META_DATA, 127 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVMetaData(data, reply); }}, 128 {SESSION_CMD_GET_PLAYBACK_STATE, 129 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVPlaybackState(data, reply); }}, 130 {SESSION_CMD_SET_PLAYBACK_STATE, 131 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVPlaybackState(data, reply); }}, 132 {SESSION_CMD_GET_QUEUE_ITEMS, 133 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueItems(data, reply); }}, 134 {SESSION_CMD_SET_QUEUE_ITEMS, 135 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVQueueItems(data, reply); }}, 136 {SESSION_CMD_GET_QUEUE_TITLE, 137 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVQueueTitle(data, reply); }}, 138 {SESSION_CMD_SET_QUEUE_TITLE, 139 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVQueueTitle(data, reply); }}, 140 {SESSION_CMD_GET_EXTRAS, 141 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetExtras(data, reply); }}, 142 {SESSION_CMD_SET_EXTRAS, 143 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetExtras(data, reply); }}, 144 {SESSION_CMD_SET_LAUNCH_ABILITY, 145 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetLaunchAbility(data, reply); }}, 146 {SESSION_CMD_GET_CONTROLLER, 147 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetController(data, reply); }}, 148 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 149 {SESSION_CMD_GET_AVCAST_CONTROLLER, 150 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAVCastController(data, reply); }}, 151 {SESSION_CMD_START_CAST_DISPLAY_LISTENER, 152 [this](MessageParcel& data, MessageParcel& reply) { return HandleStartCastDisplayListener(data, reply); }}, 153 {SESSION_CMD_STOP_CAST_DISPLAY_LISTENER, 154 [this](MessageParcel& data, MessageParcel& reply) { return HandleStopCastDisplayListener(data, reply); }}, 155 {SESSION_CMD_GET_ALL_CAST_DISPLAYS, 156 [this](MessageParcel& data, MessageParcel& reply) { return HandleGetAllCastDisplays(data, reply); }}, 157 #endif 158 {SESSION_CMD_REGISTER_CALLBACK, 159 [this](MessageParcel& data, MessageParcel& reply) { return HandleRegisterCallbackInner(data, reply); }}, 160 {SESSION_CMD_ACTIVATE, 161 [this](MessageParcel& data, MessageParcel& reply) { return HandleActivate(data, reply); }}, 162 {SESSION_CMD_DEACTIVATE, 163 [this](MessageParcel& data, MessageParcel& reply) { return HandleDeactivate(data, reply); }}, 164 {SESSION_CMD_ISACTIVE, 165 [this](MessageParcel& data, MessageParcel& reply) { return HandleIsActive(data, reply); }}, 166 {SESSION_CMD_DESTROY, 167 [this](MessageParcel& data, MessageParcel& reply) { return HandleDestroy(data, reply); }}, 168 {SESSION_CMD_ADD_SUPPORT_COMMAND, 169 [this](MessageParcel& data, MessageParcel& reply) { return HandleAddSupportCommand(data, reply); }}, 170 {SESSION_CMD_DELETE_SUPPORT_COMMAND, 171 [this](MessageParcel& data, MessageParcel& reply) { return HandleDeleteSupportCommand(data, reply); }}, 172 {SESSION_CMD_SET_SESSION_EVENT, 173 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetSessionEvent(data, reply); }}, 174 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 175 {SESSION_CMD_RELEASE_CAST, 176 [this](MessageParcel& data, MessageParcel& reply) { return HandleReleaseCast(data, reply); }}, 177 #endif 178 {SESSION_CMD_SET_AVCALL_META_DATA, 179 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallMetaData(data, reply); }}, 180 {SESSION_CMD_SET_AVCALL_STATE, 181 [this](MessageParcel& data, MessageParcel& reply) { return HandleSetAVCallState(data, reply); }} 182 }; 183 std::map<uint32_t, std::string> mapCodeToFuncNameXCollie = { 184 {SESSION_CMD_GET_SESSION_ID, "HandleGetSessionId"}, 185 {SESSION_CMD_GET_SESSION_TYPE, "HandleGetSessionType"}, 186 {SESSION_CMD_GET_META_DATA, "HandleGetAVMetaData"}, 187 {SESSION_CMD_SET_META_DATA, "HandleSetAVMetaData"}, 188 {SESSION_CMD_GET_PLAYBACK_STATE, "HandleGetAVPlaybackState"}, 189 {SESSION_CMD_SET_PLAYBACK_STATE, "HandleSetAVPlaybackState"}, 190 {SESSION_CMD_GET_QUEUE_ITEMS, "HandleGetAVQueueItems"}, 191 {SESSION_CMD_SET_QUEUE_ITEMS, "HandleSetAVQueueItems"}, 192 {SESSION_CMD_GET_QUEUE_TITLE, "HandleGetAVQueueTitle"}, 193 {SESSION_CMD_SET_QUEUE_TITLE, "HandleSetAVQueueTitle"}, 194 {SESSION_CMD_GET_EXTRAS, "HandleGetExtras"}, 195 {SESSION_CMD_SET_EXTRAS, "HandleSetExtras"}, 196 {SESSION_CMD_SET_LAUNCH_ABILITY, "HandleSetLaunchAbility"}, 197 {SESSION_CMD_GET_CONTROLLER, "HandleGetController"}, 198 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 199 {SESSION_CMD_GET_AVCAST_CONTROLLER, "HandleGetAVCastController"}, 200 {SESSION_CMD_START_CAST_DISPLAY_LISTENER, "HandleStartCastDisplayListener"}, 201 {SESSION_CMD_STOP_CAST_DISPLAY_LISTENER, "HandleStopCastDisplayListener"}, 202 {SESSION_CMD_GET_ALL_CAST_DISPLAYS, "HandleGetAllCastDisplays"}, 203 #endif 204 {SESSION_CMD_REGISTER_CALLBACK, "HandleRegisterCallbackInner"}, 205 {SESSION_CMD_ACTIVATE, "HandleActivate"}, 206 {SESSION_CMD_DEACTIVATE, "HandleDeactivate"}, 207 {SESSION_CMD_ISACTIVE, "HandleIsActive"}, 208 {SESSION_CMD_DESTROY, "HandleDestroy"}, 209 {SESSION_CMD_ADD_SUPPORT_COMMAND, "HandleAddSupportCommand"}, 210 {SESSION_CMD_DELETE_SUPPORT_COMMAND, "HandleDeleteSupportCommand"}, 211 {SESSION_CMD_SET_SESSION_EVENT, "HandleSetSessionEvent"}, 212 #ifdef CASTPLUS_CAST_ENGINE_ENABLE 213 {SESSION_CMD_RELEASE_CAST, "HandleReleaseCast"}, 214 #endif 215 {SESSION_CMD_SET_AVCALL_META_DATA, "HandleSetAVCallMetaData"}, 216 {SESSION_CMD_SET_AVCALL_STATE, "HandleSetAVCallState"} 217 }; 218 219 int32_t MAX_IMAGE_SIZE = 10 * 1024 * 1024; 220 const size_t defaultIpcCapacity = 1048576; // Increase the IPC default capacity(200K) to 1M 221 }; 222 } 223 #endif // OHOS_AVSESSION_STUB_H 224