1 /* 2 * Copyright (C) 2021-2022 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 NAPI_CALL_ABILITY_CALLBACK_H 17 #define NAPI_CALL_ABILITY_CALLBACK_H 18 19 #include <uv.h> 20 21 #include "pac_map.h" 22 #include "singleton.h" 23 24 #include "napi_call_manager_types.h" 25 26 namespace OHOS { 27 namespace Telephony { 28 /** 29 * Data sent asynchronously from the CallManager will be notified to JavaScript via NapiCallAbilityCallback. 30 */ 31 class NapiCallAbilityCallback { 32 DECLARE_DELAYED_SINGLETON(NapiCallAbilityCallback) 33 34 public: 35 void RegisterCallStateCallback(EventCallback stateCallback); 36 void UnRegisterCallStateCallback(); 37 void RegisterCallEventCallback(EventCallback eventCallback); 38 void UnRegisterCallEventCallback(); 39 void RegisterDisconnectedCauseCallback(EventCallback eventCallback); 40 void UnRegisterDisconnectedCauseCallback(); 41 void RegisterCallOttRequestCallback(EventCallback ottRequestCallback); 42 void UnRegisterCallOttRequestCallback(); 43 int32_t RegisterGetWaitingCallback(EventCallback callback); 44 void UnRegisterGetWaitingCallback(); 45 int32_t RegisterSetWaitingCallback(EventCallback callback); 46 void UnRegisterSetWaitingCallback(); 47 int32_t RegisterGetRestrictionCallback(EventCallback callback); 48 void UnRegisterGetRestrictionCallback(); 49 int32_t RegisterSetRestrictionCallback(EventCallback callback); 50 void UnRegisterSetRestrictionCallback(); 51 int32_t RegisterSetRestrictionPasswordCallback(EventCallback callback); 52 void UnRegisterSetRestrictionPasswordCallback(); 53 int32_t RegisterGetTransferCallback(EventCallback callback); 54 void UnRegisterGetTransferCallback(); 55 int32_t RegisterSetTransferCallback(EventCallback callback); 56 void UnRegisterSetTransferCallback(); 57 int32_t RegisterStartRttCallback(EventCallback callback); 58 void UnRegisterStartRttCallback(); 59 int32_t RegisterStopRttCallback(EventCallback callback); 60 void UnRegisterStopRttCallback(); 61 void RegisterMmiCodeCallback(EventCallback eventCallback); 62 void UnRegisterMmiCodeCallback(); 63 int32_t RegisterCloseUnFinishedUssdCallback(EventCallback callback); 64 void UnRegisterCloseUnFinishedUssdCallback(); 65 void RegisterAudioDeviceCallback(EventCallback eventCallback); 66 void UnRegisterAudioDeviceCallback(); 67 void RegisterPostDialDelay(EventCallback eventCallback); 68 void UnRegisterPostDialDelayCallback(); 69 int32_t UpdateCallStateInfo(const CallAttributeInfo &info); 70 int32_t UpdateCallEvent(const CallEventInfo &info); 71 int32_t UpdateCallDisconnectedCause(const DisconnectedDetails &details); 72 int32_t UpdateAsyncResultsInfo(const CallResultReportId reportId, AppExecFwk::PacMap &resultInfo); 73 int32_t OttCallRequest(OttCallRequestId requestId, AppExecFwk::PacMap &info); 74 int32_t RegisterUpdateCallMediaModeCallback(EventCallback callback); 75 void UnRegisterUpdateCallMediaModeCallback(); 76 int32_t UpdateMmiCodeResultsInfo(const MmiCodeInfo &info); 77 int32_t UpdateAudioDeviceInfo(const AudioDeviceInfo &info); 78 int32_t UpdatePostDialDelay(const std::string str); 79 80 private: 81 static void ReportCallStateWork(uv_work_t *work, int32_t status); 82 static int32_t ReportCallState(CallAttributeInfo &info, EventCallback stateCallback); 83 static void ReportCallEventWork(uv_work_t *work, int32_t status); 84 static int32_t ReportCallEvent(CallEventInfo &info, EventCallback stateCallback); 85 static void ReportCallDisconnectedCauseWork(uv_work_t *work, int32_t status); 86 static int32_t ReportDisconnectedCause(const DisconnectedDetails &details, EventCallback eventCallback); 87 int32_t ReportGetWaitingInfo(AppExecFwk::PacMap &resultInfo); 88 int32_t ReportSetWaitingInfo(AppExecFwk::PacMap &resultInfo); 89 int32_t ReportGetRestrictionInfo(AppExecFwk::PacMap &resultInfo); 90 int32_t ReportSetRestrictionInfo(AppExecFwk::PacMap &resultInfo); 91 int32_t ReportSetRestrictionPassword(AppExecFwk::PacMap &resultInfo); 92 int32_t ReportGetTransferInfo(AppExecFwk::PacMap &resultInfo); 93 int32_t ReportSetTransferInfo(AppExecFwk::PacMap &resultInfo); 94 static void ReportWaitAndLimitInfoWork(uv_work_t *work, int32_t status); 95 static void ReportWaitAndLimitInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 96 static void ReportSupplementInfoWork(uv_work_t *work, int32_t status); 97 static void ReportSupplementInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 98 static void ReportExecutionResultWork(uv_work_t *work, int32_t status); 99 static void ReportExecutionResult(EventCallback &settingInfo, AppExecFwk::PacMap &resultInfo); 100 static void ReportStartRttInfoWork(uv_work_t *work, int32_t status); 101 static void ReportStartRttInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 102 static void ReportStopRttInfoWork(uv_work_t *work, int32_t status); 103 static void ReportStopRttInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 104 int32_t ReportStartRttInfo(AppExecFwk::PacMap &resultInfo); 105 int32_t ReportStopRttInfo(AppExecFwk::PacMap &resultInfo); 106 static void ReportCallOttWork(uv_work_t *work, int32_t status); 107 static int32_t ReportCallOtt( 108 EventCallback &settingInfo, AppExecFwk::PacMap &resultInfo, OttCallRequestId requestId); 109 int32_t ReportCallMediaModeInfo(AppExecFwk::PacMap &resultInfo); 110 static void ReportCallMediaModeInfoWork(uv_work_t *work, int32_t status); 111 static void ReportCallMediaModeInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 112 static void ReportMmiCodeWork(uv_work_t *work, int32_t status); 113 static int32_t ReportMmiCode(MmiCodeInfo &info, EventCallback eventCallback); 114 int32_t ReportCloseUnFinishedUssdInfo(AppExecFwk::PacMap &resultInfo); 115 static void ReportAudioDeviceInfoWork(uv_work_t *work, int32_t status); 116 static int32_t ReportAudioDeviceInfo(AudioDeviceInfo &info, EventCallback eventCallback); 117 static void ReportPostDialDelayWork(uv_work_t *work, int32_t status); 118 static int32_t ReportPostDialDelay(std::string postDialStr, EventCallback eventCallback); 119 120 private: 121 EventCallback stateCallback_; 122 EventCallback eventCallback_; 123 EventCallback callDisconnectCauseCallback_; 124 EventCallback ottRequestCallback_; 125 EventCallback getWaitingCallback_; 126 EventCallback setWaitingCallback_; 127 EventCallback getRestrictionCallback_; 128 EventCallback setRestrictionCallback_; 129 EventCallback setRestrictionPasswordCallback_; 130 EventCallback getTransferCallback_; 131 EventCallback setTransferCallback_; 132 EventCallback startRttCallback_; 133 EventCallback stopRttCallback_; 134 EventCallback updateCallMediaModeCallback_; 135 EventCallback mmiCodeCallback_; 136 EventCallback closeUnfinishedUssdCallback_; 137 EventCallback audioDeviceCallback_; 138 EventCallback postDialDelayCallback_; 139 using CallResultReportIdProcessorFunc = int32_t (NapiCallAbilityCallback::*)(AppExecFwk::PacMap &resultInfo); 140 std::map<CallResultReportId, CallResultReportIdProcessorFunc> memberFuncMap_; 141 std::mutex mutex_; 142 }; 143 } // namespace Telephony 144 } // namespace OHOS 145 146 #endif // NAPI_CALL_ABILITY_CALLBACK_H 147