1c29fa5a6Sopenharmony_ci/* 2c29fa5a6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License. 5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at 6c29fa5a6Sopenharmony_ci * 7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c29fa5a6Sopenharmony_ci * 9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and 13c29fa5a6Sopenharmony_ci * limitations under the License. 14c29fa5a6Sopenharmony_ci */ 15c29fa5a6Sopenharmony_ci 16c29fa5a6Sopenharmony_ci#include "anco_channel_proxy.h" 17c29fa5a6Sopenharmony_ci 18c29fa5a6Sopenharmony_ci#include "message_option.h" 19c29fa5a6Sopenharmony_ci#include "mmi_log.h" 20c29fa5a6Sopenharmony_ci 21c29fa5a6Sopenharmony_ci#undef MMI_LOG_DOMAIN 22c29fa5a6Sopenharmony_ci#define MMI_LOG_DOMAIN MMI_LOG_HANDLER 23c29fa5a6Sopenharmony_ci#undef MMI_LOG_TAG 24c29fa5a6Sopenharmony_ci#define MMI_LOG_TAG "AncoChannelProxy" 25c29fa5a6Sopenharmony_ci 26c29fa5a6Sopenharmony_cinamespace OHOS { 27c29fa5a6Sopenharmony_cinamespace MMI { 28c29fa5a6Sopenharmony_ci 29c29fa5a6Sopenharmony_ciAncoChannelProxy::AncoChannelProxy(const sptr<IRemoteObject> &remoteObj) 30c29fa5a6Sopenharmony_ci : IRemoteProxy<IAncoChannel>(remoteObj) 31c29fa5a6Sopenharmony_ci{} 32c29fa5a6Sopenharmony_ci 33c29fa5a6Sopenharmony_ciint32_t AncoChannelProxy::SyncInputEvent(std::shared_ptr<PointerEvent> pointerEvent) 34c29fa5a6Sopenharmony_ci{ 35c29fa5a6Sopenharmony_ci CALL_INFO_TRACE; 36c29fa5a6Sopenharmony_ci CHKPR(pointerEvent, RET_ERR); 37c29fa5a6Sopenharmony_ci MessageParcel data; 38c29fa5a6Sopenharmony_ci if (!data.WriteInterfaceToken(IAncoChannel::GetDescriptor())) { 39c29fa5a6Sopenharmony_ci MMI_HILOGE("Failed to write descriptor"); 40c29fa5a6Sopenharmony_ci return RET_ERR; 41c29fa5a6Sopenharmony_ci } 42c29fa5a6Sopenharmony_ci if (!pointerEvent->WriteToParcel(data)) { 43c29fa5a6Sopenharmony_ci MMI_HILOGE("Failed to marshal PointerEvent"); 44c29fa5a6Sopenharmony_ci return RET_ERR; 45c29fa5a6Sopenharmony_ci } 46c29fa5a6Sopenharmony_ci MessageParcel reply; 47c29fa5a6Sopenharmony_ci MessageOption option; 48c29fa5a6Sopenharmony_ci sptr<IRemoteObject> remote = Remote(); 49c29fa5a6Sopenharmony_ci CHKPR(remote, RET_ERR); 50c29fa5a6Sopenharmony_ci int32_t ret = remote->SendRequest( 51c29fa5a6Sopenharmony_ci static_cast<uint32_t>(AncoRequestId::SYNC_POINTER_EVENT), data, reply, option); 52c29fa5a6Sopenharmony_ci if (ret != RET_OK) { 53c29fa5a6Sopenharmony_ci MMI_HILOGE("SendRequest fail, error:%{public}d", ret); 54c29fa5a6Sopenharmony_ci return ret; 55c29fa5a6Sopenharmony_ci } 56c29fa5a6Sopenharmony_ci READINT32(reply, ret, RET_ERR); 57c29fa5a6Sopenharmony_ci return ret; 58c29fa5a6Sopenharmony_ci} 59c29fa5a6Sopenharmony_ci 60c29fa5a6Sopenharmony_ciint32_t AncoChannelProxy::SyncInputEvent(std::shared_ptr<KeyEvent> keyEvent) 61c29fa5a6Sopenharmony_ci{ 62c29fa5a6Sopenharmony_ci CALL_INFO_TRACE; 63c29fa5a6Sopenharmony_ci CHKPR(keyEvent, RET_ERR); 64c29fa5a6Sopenharmony_ci MessageParcel data; 65c29fa5a6Sopenharmony_ci if (!data.WriteInterfaceToken(IAncoChannel::GetDescriptor())) { 66c29fa5a6Sopenharmony_ci MMI_HILOGE("Failed to write descriptor"); 67c29fa5a6Sopenharmony_ci return RET_ERR; 68c29fa5a6Sopenharmony_ci } 69c29fa5a6Sopenharmony_ci if (!keyEvent->WriteToParcel(data)) { 70c29fa5a6Sopenharmony_ci MMI_HILOGE("Failed to marshal KeyEvent"); 71c29fa5a6Sopenharmony_ci return RET_ERR; 72c29fa5a6Sopenharmony_ci } 73c29fa5a6Sopenharmony_ci MessageParcel reply; 74c29fa5a6Sopenharmony_ci MessageOption option; 75c29fa5a6Sopenharmony_ci sptr<IRemoteObject> remote = Remote(); 76c29fa5a6Sopenharmony_ci CHKPR(remote, RET_ERR); 77c29fa5a6Sopenharmony_ci int32_t ret = remote->SendRequest( 78c29fa5a6Sopenharmony_ci static_cast<uint32_t>(AncoRequestId::SYNC_KEY_EVENT), data, reply, option); 79c29fa5a6Sopenharmony_ci if (ret != RET_OK) { 80c29fa5a6Sopenharmony_ci MMI_HILOGE("SendRequest fail, error:%{public}d", ret); 81c29fa5a6Sopenharmony_ci return ret; 82c29fa5a6Sopenharmony_ci } 83c29fa5a6Sopenharmony_ci READINT32(reply, ret, RET_ERR); 84c29fa5a6Sopenharmony_ci return ret; 85c29fa5a6Sopenharmony_ci} 86c29fa5a6Sopenharmony_ci 87c29fa5a6Sopenharmony_ciint32_t AncoChannelProxy::UpdateWindowInfo(std::shared_ptr<AncoWindows> windows) 88c29fa5a6Sopenharmony_ci{ 89c29fa5a6Sopenharmony_ci CALL_INFO_TRACE; 90c29fa5a6Sopenharmony_ci CHKPR(windows, RET_ERR); 91c29fa5a6Sopenharmony_ci MessageParcel data; 92c29fa5a6Sopenharmony_ci if (!data.WriteInterfaceToken(IAncoChannel::GetDescriptor())) { 93c29fa5a6Sopenharmony_ci MMI_HILOGE("Failed to write descriptor"); 94c29fa5a6Sopenharmony_ci return RET_ERR; 95c29fa5a6Sopenharmony_ci } 96c29fa5a6Sopenharmony_ci if (!AncoWindows::Marshalling(*windows, data)) { 97c29fa5a6Sopenharmony_ci MMI_HILOGE("Failed to marshal windows"); 98c29fa5a6Sopenharmony_ci return RET_ERR; 99c29fa5a6Sopenharmony_ci } 100c29fa5a6Sopenharmony_ci MessageParcel reply; 101c29fa5a6Sopenharmony_ci MessageOption option; 102c29fa5a6Sopenharmony_ci sptr<IRemoteObject> remote = Remote(); 103c29fa5a6Sopenharmony_ci CHKPR(remote, RET_ERR); 104c29fa5a6Sopenharmony_ci int32_t ret = remote->SendRequest( 105c29fa5a6Sopenharmony_ci static_cast<uint32_t>(AncoRequestId::UPDATE_WINDOW_INFO), data, reply, option); 106c29fa5a6Sopenharmony_ci if (ret != RET_OK) { 107c29fa5a6Sopenharmony_ci MMI_HILOGE("SendRequest fail, error:%{public}d", ret); 108c29fa5a6Sopenharmony_ci return ret; 109c29fa5a6Sopenharmony_ci } 110c29fa5a6Sopenharmony_ci READINT32(reply, ret, RET_ERR); 111c29fa5a6Sopenharmony_ci return ret; 112c29fa5a6Sopenharmony_ci} 113c29fa5a6Sopenharmony_ci} // namespace MMI 114c29fa5a6Sopenharmony_ci} // namespace OHOS 115