1bc2ed2b3Sopenharmony_ci/* 2bc2ed2b3Sopenharmony_ci * Copyright (C) 2022 - 2023 Huawei Device Co., Ltd. 3bc2ed2b3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4bc2ed2b3Sopenharmony_ci * you may not use this file except in compliance with the License. 5bc2ed2b3Sopenharmony_ci * You may obtain a copy of the License at 6bc2ed2b3Sopenharmony_ci * 7bc2ed2b3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8bc2ed2b3Sopenharmony_ci * 9bc2ed2b3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10bc2ed2b3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11bc2ed2b3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12bc2ed2b3Sopenharmony_ci * See the License for the specific language governing permissions and 13bc2ed2b3Sopenharmony_ci * limitations under the License. 14bc2ed2b3Sopenharmony_ci */ 15bc2ed2b3Sopenharmony_ci#include "nfc_controller_proxy.h" 16bc2ed2b3Sopenharmony_ci 17bc2ed2b3Sopenharmony_ci#ifdef VENDOR_APPLICATIONS_ENABLED 18bc2ed2b3Sopenharmony_ci#include "iquery_app_info_callback.h" 19bc2ed2b3Sopenharmony_ci#endif 20bc2ed2b3Sopenharmony_ci 21bc2ed2b3Sopenharmony_ci#include "loghelper.h" 22bc2ed2b3Sopenharmony_ci#include "ndef_msg_callback_stub.h" 23bc2ed2b3Sopenharmony_ci#include "nfc_controller_callback_stub.h" 24bc2ed2b3Sopenharmony_ci#include "nfc_sdk_common.h" 25bc2ed2b3Sopenharmony_ci#include "nfc_service_ipc_interface_code.h" 26bc2ed2b3Sopenharmony_ci 27bc2ed2b3Sopenharmony_cinamespace OHOS { 28bc2ed2b3Sopenharmony_cinamespace NFC { 29bc2ed2b3Sopenharmony_ciconst std::string NFC_INTERFACE_TOKEN = "ohos.nfc.INfcController"; 30bc2ed2b3Sopenharmony_cistatic sptr<NfcControllerCallBackStub> g_nfcControllerCallbackStub = 31bc2ed2b3Sopenharmony_ci sptr<NfcControllerCallBackStub>(new (std::nothrow) NfcControllerCallBackStub()); 32bc2ed2b3Sopenharmony_cistatic sptr<NdefMsgCallbackStub> g_ndefMsgCallbackStub = 33bc2ed2b3Sopenharmony_ci sptr<NdefMsgCallbackStub>(new (std::nothrow) NdefMsgCallbackStub()); 34bc2ed2b3Sopenharmony_ci 35bc2ed2b3Sopenharmony_ciNfcControllerProxy ::~NfcControllerProxy() {} 36bc2ed2b3Sopenharmony_ci 37bc2ed2b3Sopenharmony_ciint NfcControllerProxy::TurnOn() 38bc2ed2b3Sopenharmony_ci{ 39bc2ed2b3Sopenharmony_ci MessageParcel data; 40bc2ed2b3Sopenharmony_ci MessageParcel reply; 41bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 42bc2ed2b3Sopenharmony_ci ErrorLog("Write interface token error"); 43bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 44bc2ed2b3Sopenharmony_ci } 45bc2ed2b3Sopenharmony_ci MessageOption option; 46bc2ed2b3Sopenharmony_ci int statusCode = SendRequestExpectReplyNoneAndStatusCode( 47bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_TURN_ON), data, reply, option); 48bc2ed2b3Sopenharmony_ci if (statusCode == ERR_NONE) { 49bc2ed2b3Sopenharmony_ci statusCode = reply.ReadInt32(); 50bc2ed2b3Sopenharmony_ci } 51bc2ed2b3Sopenharmony_ci InfoLog("NfcControllerProxy::TurnOn statusCode = 0x%{public}X", statusCode); 52bc2ed2b3Sopenharmony_ci return statusCode; 53bc2ed2b3Sopenharmony_ci} 54bc2ed2b3Sopenharmony_ci 55bc2ed2b3Sopenharmony_ciint NfcControllerProxy::TurnOff() 56bc2ed2b3Sopenharmony_ci{ 57bc2ed2b3Sopenharmony_ci MessageParcel data; 58bc2ed2b3Sopenharmony_ci MessageParcel reply; 59bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 60bc2ed2b3Sopenharmony_ci ErrorLog("Write interface token error"); 61bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 62bc2ed2b3Sopenharmony_ci } 63bc2ed2b3Sopenharmony_ci MessageOption option; 64bc2ed2b3Sopenharmony_ci int statusCode = SendRequestExpectReplyNoneAndStatusCode( 65bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_TURN_OFF), data, reply, option); 66bc2ed2b3Sopenharmony_ci if (statusCode == ERR_NONE) { 67bc2ed2b3Sopenharmony_ci statusCode = reply.ReadInt32(); 68bc2ed2b3Sopenharmony_ci } 69bc2ed2b3Sopenharmony_ci InfoLog("NfcControllerProxy::TurnOff statusCode = 0x%{public}X", statusCode); 70bc2ed2b3Sopenharmony_ci return statusCode; 71bc2ed2b3Sopenharmony_ci} 72bc2ed2b3Sopenharmony_ci 73bc2ed2b3Sopenharmony_ciint NfcControllerProxy::GetState() 74bc2ed2b3Sopenharmony_ci{ 75bc2ed2b3Sopenharmony_ci int state = NFC::KITS::STATE_OFF; 76bc2ed2b3Sopenharmony_ci MessageParcel data; 77bc2ed2b3Sopenharmony_ci MessageOption option; 78bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 79bc2ed2b3Sopenharmony_ci ErrorLog("Write interface token error"); 80bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 81bc2ed2b3Sopenharmony_ci } 82bc2ed2b3Sopenharmony_ci int res = SendRequestExpectReplyInt(static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_GET_STATE), 83bc2ed2b3Sopenharmony_ci data, option, state); 84bc2ed2b3Sopenharmony_ci if (res != ERR_NONE) { 85bc2ed2b3Sopenharmony_ci ErrorLog("It is failed To Get State with Res(%{public}d).", res); 86bc2ed2b3Sopenharmony_ci return NFC::KITS::STATE_OFF; 87bc2ed2b3Sopenharmony_ci } 88bc2ed2b3Sopenharmony_ci return state; 89bc2ed2b3Sopenharmony_ci} 90bc2ed2b3Sopenharmony_ci 91bc2ed2b3Sopenharmony_ciint NfcControllerProxy::IsNfcOpen(bool &isOpen) 92bc2ed2b3Sopenharmony_ci{ 93bc2ed2b3Sopenharmony_ci MessageParcel data; 94bc2ed2b3Sopenharmony_ci MessageOption option; 95bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 96bc2ed2b3Sopenharmony_ci ErrorLog("Write interface token error"); 97bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 98bc2ed2b3Sopenharmony_ci } 99bc2ed2b3Sopenharmony_ci return SendRequestExpectReplyBool(static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_IS_NFC_OPEN), 100bc2ed2b3Sopenharmony_ci data, option, isOpen); 101bc2ed2b3Sopenharmony_ci} 102bc2ed2b3Sopenharmony_ci 103bc2ed2b3Sopenharmony_ciKITS::ErrorCode NfcControllerProxy::RegisterCallBack( 104bc2ed2b3Sopenharmony_ci const sptr<INfcControllerCallback> &callback, 105bc2ed2b3Sopenharmony_ci const std::string& type) 106bc2ed2b3Sopenharmony_ci{ 107bc2ed2b3Sopenharmony_ci MessageParcel data; 108bc2ed2b3Sopenharmony_ci MessageParcel reply; 109bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 110bc2ed2b3Sopenharmony_ci if (g_nfcControllerCallbackStub == nullptr) { 111bc2ed2b3Sopenharmony_ci ErrorLog("%{public}s:g_nfcControllerCallbackStub is nullptr", __func__); 112bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 113bc2ed2b3Sopenharmony_ci } 114bc2ed2b3Sopenharmony_ci g_nfcControllerCallbackStub->RegisterCallBack(callback); 115bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 116bc2ed2b3Sopenharmony_ci ErrorLog("Write interface token error"); 117bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 118bc2ed2b3Sopenharmony_ci } 119bc2ed2b3Sopenharmony_ci if (!data.WriteString(type)) { 120bc2ed2b3Sopenharmony_ci ErrorLog("Write type error"); 121bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 122bc2ed2b3Sopenharmony_ci } 123bc2ed2b3Sopenharmony_ci data.WriteInt32(0); 124bc2ed2b3Sopenharmony_ci if (!data.WriteRemoteObject(g_nfcControllerCallbackStub->AsObject())) { 125bc2ed2b3Sopenharmony_ci ErrorLog("RegisterCallBack WriteRemoteObject failed!"); 126bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 127bc2ed2b3Sopenharmony_ci } 128bc2ed2b3Sopenharmony_ci 129bc2ed2b3Sopenharmony_ci int error = SendRequestExpectReplyNone( 130bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_REGISTER_CALLBACK), 131bc2ed2b3Sopenharmony_ci data, option); 132bc2ed2b3Sopenharmony_ci if (error != ERR_NONE) { 133bc2ed2b3Sopenharmony_ci ErrorLog("RegisterCallBack failed, error code is %{public}d", error); 134bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 135bc2ed2b3Sopenharmony_ci } 136bc2ed2b3Sopenharmony_ci return KITS::ERR_NONE; 137bc2ed2b3Sopenharmony_ci} 138bc2ed2b3Sopenharmony_ci 139bc2ed2b3Sopenharmony_ciKITS::ErrorCode NfcControllerProxy::UnRegisterCallBack(const std::string& type) 140bc2ed2b3Sopenharmony_ci{ 141bc2ed2b3Sopenharmony_ci MessageParcel data; 142bc2ed2b3Sopenharmony_ci MessageParcel reply; 143bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 144bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 145bc2ed2b3Sopenharmony_ci ErrorLog("Write interface token error"); 146bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 147bc2ed2b3Sopenharmony_ci } 148bc2ed2b3Sopenharmony_ci if (!data.WriteString(type)) { 149bc2ed2b3Sopenharmony_ci ErrorLog("Write type error"); 150bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 151bc2ed2b3Sopenharmony_ci } 152bc2ed2b3Sopenharmony_ci data.WriteInt32(0); 153bc2ed2b3Sopenharmony_ci int error = SendRequestExpectReplyNone( 154bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_UNREGISTER_CALLBACK), 155bc2ed2b3Sopenharmony_ci data, option); 156bc2ed2b3Sopenharmony_ci if (error != ERR_NONE) { 157bc2ed2b3Sopenharmony_ci ErrorLog("RegisterCallBack failed, error code is %{public}d", error); 158bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 159bc2ed2b3Sopenharmony_ci } 160bc2ed2b3Sopenharmony_ci return KITS::ERR_NONE; 161bc2ed2b3Sopenharmony_ci} 162bc2ed2b3Sopenharmony_ci 163bc2ed2b3Sopenharmony_ciOHOS::sptr<IRemoteObject> NfcControllerProxy::GetTagServiceIface() 164bc2ed2b3Sopenharmony_ci{ 165bc2ed2b3Sopenharmony_ci DebugLog("GetTagServiceIface start!"); 166bc2ed2b3Sopenharmony_ci MessageParcel reply; 167bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 168bc2ed2b3Sopenharmony_ci MessageParcel data; 169bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 170bc2ed2b3Sopenharmony_ci ErrorLog("GetTagServiceIface, Write interface token error"); 171bc2ed2b3Sopenharmony_ci return nullptr; 172bc2ed2b3Sopenharmony_ci } 173bc2ed2b3Sopenharmony_ci int32_t res = Remote()->SendRequest(static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_GET_TAG_INTERFACE), 174bc2ed2b3Sopenharmony_ci data, reply, option); 175bc2ed2b3Sopenharmony_ci if (res != ERR_NONE) { 176bc2ed2b3Sopenharmony_ci ErrorLog("GetTagServiceIface SendRequest err %{public}d", res); 177bc2ed2b3Sopenharmony_ci return nullptr; 178bc2ed2b3Sopenharmony_ci } 179bc2ed2b3Sopenharmony_ci sptr<OHOS::IRemoteObject> remoteObject = reply.ReadRemoteObject(); 180bc2ed2b3Sopenharmony_ci return remoteObject; 181bc2ed2b3Sopenharmony_ci} 182bc2ed2b3Sopenharmony_ci 183bc2ed2b3Sopenharmony_ciKITS::ErrorCode NfcControllerProxy::RegNdefMsgCb(const sptr<INdefMsgCallback> &callback) 184bc2ed2b3Sopenharmony_ci{ 185bc2ed2b3Sopenharmony_ci MessageParcel data; 186bc2ed2b3Sopenharmony_ci MessageParcel reply; 187bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 188bc2ed2b3Sopenharmony_ci if (g_ndefMsgCallbackStub == nullptr) { 189bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegNdefMsgCb:g_ndefMsgCallbackStub is nullptr"); 190bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 191bc2ed2b3Sopenharmony_ci } 192bc2ed2b3Sopenharmony_ci g_ndefMsgCallbackStub->RegisterCallback(callback); 193bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 194bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegNdefMsgCb Write interface token error"); 195bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 196bc2ed2b3Sopenharmony_ci } 197bc2ed2b3Sopenharmony_ci if (!data.WriteRemoteObject(g_ndefMsgCallbackStub->AsObject())) { 198bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegNdefMsgCb WriteRemoteObject failed!"); 199bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 200bc2ed2b3Sopenharmony_ci } 201bc2ed2b3Sopenharmony_ci 202bc2ed2b3Sopenharmony_ci int error = SendRequestExpectReplyNone( 203bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_REG_NDEF_MSG_CALLBACK), 204bc2ed2b3Sopenharmony_ci data, option); 205bc2ed2b3Sopenharmony_ci if (error != ERR_NONE) { 206bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegNdefMsgCb failed, error code is %{public}d", error); 207bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 208bc2ed2b3Sopenharmony_ci } 209bc2ed2b3Sopenharmony_ci return KITS::ERR_NONE; 210bc2ed2b3Sopenharmony_ci} 211bc2ed2b3Sopenharmony_ci 212bc2ed2b3Sopenharmony_ci#ifdef VENDOR_APPLICATIONS_ENABLED 213bc2ed2b3Sopenharmony_ciKITS::ErrorCode NfcControllerProxy::RegQueryApplicationCb(sptr<IQueryAppInfoCallback> callback) 214bc2ed2b3Sopenharmony_ci{ 215bc2ed2b3Sopenharmony_ci MessageParcel data; 216bc2ed2b3Sopenharmony_ci MessageParcel reply; 217bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 218bc2ed2b3Sopenharmony_ci if (callback == nullptr) { 219bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegQueryApplicationCb failed, callback is null."); 220bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 221bc2ed2b3Sopenharmony_ci } 222bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 223bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegQueryApplicationCb failed, write interface token error."); 224bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 225bc2ed2b3Sopenharmony_ci } 226bc2ed2b3Sopenharmony_ci if (!data.WriteRemoteObject(callback->AsObject())) { 227bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegQueryApplicationCb WriteRemoteObject failed!"); 228bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 229bc2ed2b3Sopenharmony_ci } 230bc2ed2b3Sopenharmony_ci int error = SendRequestExpectReplyNone( 231bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_QUERY_APP_INFO_MSG_CALLBACK), 232bc2ed2b3Sopenharmony_ci data, option); 233bc2ed2b3Sopenharmony_ci if (error != ERR_NONE) { 234bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegQueryApplicationCb failed, error code: %{public}d.", error); 235bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 236bc2ed2b3Sopenharmony_ci } 237bc2ed2b3Sopenharmony_ci return KITS::ERR_NONE; 238bc2ed2b3Sopenharmony_ci} 239bc2ed2b3Sopenharmony_ci 240bc2ed2b3Sopenharmony_ciKITS::ErrorCode NfcControllerProxy::RegCardEmulationNotifyCb(sptr<IOnCardEmulationNotifyCb> callback) 241bc2ed2b3Sopenharmony_ci{ 242bc2ed2b3Sopenharmony_ci MessageParcel data; 243bc2ed2b3Sopenharmony_ci MessageParcel reply; 244bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 245bc2ed2b3Sopenharmony_ci if (callback == nullptr) { 246bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegCardEmulationNotifyCb failed, callback is null."); 247bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 248bc2ed2b3Sopenharmony_ci } 249bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 250bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegCardEmulationNotifyCb failed, write interface token error."); 251bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 252bc2ed2b3Sopenharmony_ci } 253bc2ed2b3Sopenharmony_ci if (!data.WriteRemoteObject(callback->AsObject())) { 254bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegCardEmulationNotifyCb WriteRemoteObject failed!"); 255bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 256bc2ed2b3Sopenharmony_ci } 257bc2ed2b3Sopenharmony_ci int error = SendRequestExpectReplyNone( 258bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_ON_CARD_EMULATION_NOTIFY), 259bc2ed2b3Sopenharmony_ci data, option); 260bc2ed2b3Sopenharmony_ci if (error != ERR_NONE) { 261bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::RegCardEmulationNotifyCb failed, error code: %{public}d.", error); 262bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 263bc2ed2b3Sopenharmony_ci } 264bc2ed2b3Sopenharmony_ci return KITS::ERR_NONE; 265bc2ed2b3Sopenharmony_ci} 266bc2ed2b3Sopenharmony_ciKITS::ErrorCode NfcControllerProxy::NotifyEventStatus(int eventType, int arg1, std::string arg2) 267bc2ed2b3Sopenharmony_ci{ 268bc2ed2b3Sopenharmony_ci MessageParcel data; 269bc2ed2b3Sopenharmony_ci MessageParcel reply; 270bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 271bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 272bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::NotifyEventStatus failed, write interface token error."); 273bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 274bc2ed2b3Sopenharmony_ci } 275bc2ed2b3Sopenharmony_ci if (!data.WriteInt32(eventType)) { 276bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::NotifyEventStatus Write event type failed!"); 277bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 278bc2ed2b3Sopenharmony_ci } 279bc2ed2b3Sopenharmony_ci if (!data.WriteInt32(arg1)) { 280bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::NotifyEventStatus Write arg1 failed!"); 281bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 282bc2ed2b3Sopenharmony_ci } 283bc2ed2b3Sopenharmony_ci 284bc2ed2b3Sopenharmony_ci if (!data.WriteString(arg2)) { 285bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::NotifyEventStatus Write arg2 failed!"); 286bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 287bc2ed2b3Sopenharmony_ci } 288bc2ed2b3Sopenharmony_ci data.WriteInt32(0); 289bc2ed2b3Sopenharmony_ci int error = SendRequestExpectReplyNone( 290bc2ed2b3Sopenharmony_ci static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_VENDOR_NOTIFY), 291bc2ed2b3Sopenharmony_ci data, option); 292bc2ed2b3Sopenharmony_ci if (error != ERR_NONE) { 293bc2ed2b3Sopenharmony_ci ErrorLog("NfcControllerProxy::NotifyEventStatus failed, error code: %{public}d.", error); 294bc2ed2b3Sopenharmony_ci return KITS::ERR_NFC_PARAMETERS; 295bc2ed2b3Sopenharmony_ci } 296bc2ed2b3Sopenharmony_ci return KITS::ERR_NONE; 297bc2ed2b3Sopenharmony_ci} 298bc2ed2b3Sopenharmony_ci#endif 299bc2ed2b3Sopenharmony_ci 300bc2ed2b3Sopenharmony_ciOHOS::sptr<IRemoteObject> NfcControllerProxy::GetHceServiceIface() 301bc2ed2b3Sopenharmony_ci{ 302bc2ed2b3Sopenharmony_ci DebugLog("GetHceServiceIface start!"); 303bc2ed2b3Sopenharmony_ci MessageParcel reply; 304bc2ed2b3Sopenharmony_ci MessageOption option(MessageOption::TF_SYNC); 305bc2ed2b3Sopenharmony_ci MessageParcel data; 306bc2ed2b3Sopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 307bc2ed2b3Sopenharmony_ci ErrorLog("GetHceServiceIface, Write interface token error"); 308bc2ed2b3Sopenharmony_ci return nullptr; 309bc2ed2b3Sopenharmony_ci } 310bc2ed2b3Sopenharmony_ci int32_t res = Remote()->SendRequest(static_cast<uint32_t>(NfcServiceIpcInterfaceCode::COMMAND_GET_HCE_INTERFACE), 311bc2ed2b3Sopenharmony_ci data, reply, option); 312bc2ed2b3Sopenharmony_ci if (res != ERR_NONE) { 313bc2ed2b3Sopenharmony_ci ErrorLog("GetHceServiceIface SendRequest err %{public}d", res); 314bc2ed2b3Sopenharmony_ci return nullptr; 315bc2ed2b3Sopenharmony_ci } 316bc2ed2b3Sopenharmony_ci sptr<OHOS::IRemoteObject> remoteObject = reply.ReadRemoteObject(); 317bc2ed2b3Sopenharmony_ci return remoteObject; 318bc2ed2b3Sopenharmony_ci} 319bc2ed2b3Sopenharmony_ci} // namespace NFC 320bc2ed2b3Sopenharmony_ci} // namespace OHOS 321