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 public: 34 void RegisterCallStateCallback(EventCallback stateCallback); 35 void UnRegisterCallStateCallback(); 36 void RegisterCallEventCallback(EventCallback eventCallback); 37 void UnRegisterCallEventCallback(); 38 void RegisterDisconnectedCauseCallback(EventCallback eventCallback); 39 void UnRegisterDisconnectedCauseCallback(); 40 void RegisterCallOttRequestCallback(EventCallback ottRequestCallback); 41 void UnRegisterCallOttRequestCallback(); 42 int32_t RegisterGetWaitingCallback(EventCallback callback); 43 void UnRegisterGetWaitingCallback(); 44 int32_t RegisterSetWaitingCallback(EventCallback callback); 45 void UnRegisterSetWaitingCallback(); 46 int32_t RegisterGetRestrictionCallback(EventCallback callback); 47 void UnRegisterGetRestrictionCallback(); 48 int32_t RegisterSetRestrictionCallback(EventCallback callback); 49 void UnRegisterSetRestrictionCallback(); 50 int32_t RegisterGetTransferCallback(EventCallback callback); 51 void UnRegisterGetTransferCallback(); 52 int32_t RegisterSetTransferCallback(EventCallback callback); 53 void UnRegisterSetTransferCallback(); 54 int32_t RegisterStartRttCallback(EventCallback callback); 55 void UnRegisterStartRttCallback(); 56 int32_t RegisterStopRttCallback(EventCallback callback); 57 void UnRegisterStopRttCallback(); 58 void RegisterMmiCodeCallback(EventCallback eventCallback); 59 void UnRegisterMmiCodeCallback(); 60 int32_t UpdateCallStateInfo(const CallAttributeInfo &info); 61 int32_t UpdateCallEvent(const CallEventInfo &info); 62 int32_t UpdateCallDisconnectedCause(const DisconnectedDetails &details); 63 int32_t UpdateAsyncResultsInfo(const CallResultReportId reportId, AppExecFwk::PacMap &resultInfo); 64 int32_t OttCallRequest(OttCallRequestId requestId, AppExecFwk::PacMap &info); 65 int32_t RegisterUpdateCallMediaModeCallback(EventCallback callback); 66 void UnRegisterUpdateCallMediaModeCallback(); 67 int32_t UpdateMmiCodeResultsInfo(const MmiCodeInfo &info); 68 69 private: 70 static void ReportCallStateWork(uv_work_t *work, int32_t status); 71 static int32_t ReportCallState(CallAttributeInfo &info, EventCallback stateCallback); 72 static void ReportCallEventWork(uv_work_t *work, int32_t status); 73 static int32_t ReportCallEvent(CallEventInfo &info, EventCallback stateCallback); 74 static void ReportCallDisconnectedCauseWork(uv_work_t *work, int32_t status); 75 static int32_t ReportDisconnectedCause(const DisconnectedDetails &details, EventCallback eventCallback); 76 int32_t ReportGetWaitingInfo(AppExecFwk::PacMap &resultInfo); 77 int32_t ReportSetWaitingInfo(AppExecFwk::PacMap &resultInfo); 78 int32_t ReportGetRestrictionInfo(AppExecFwk::PacMap &resultInfo); 79 int32_t ReportSetRestrictionInfo(AppExecFwk::PacMap &resultInfo); 80 int32_t ReportGetTransferInfo(AppExecFwk::PacMap &resultInfo); 81 int32_t ReportSetTransferInfo(AppExecFwk::PacMap &resultInfo); 82 static void ReportWaitAndLimitInfoWork(uv_work_t *work, int32_t status); 83 static void ReportWaitAndLimitInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 84 static void ReportSupplementInfoWork(uv_work_t *work, int32_t status); 85 static void ReportSupplementInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 86 static void ReportExecutionResultWork(uv_work_t *work, int32_t status); 87 static void ReportExecutionResult(EventCallback &settingInfo, AppExecFwk::PacMap &resultInfo); 88 static void ReportStartRttInfoWork(uv_work_t *work, int32_t status); 89 static void ReportStartRttInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 90 static void ReportStopRttInfoWork(uv_work_t *work, int32_t status); 91 static void ReportStopRttInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 92 int32_t ReportStartRttInfo(AppExecFwk::PacMap &resultInfo); 93 int32_t ReportStopRttInfo(AppExecFwk::PacMap &resultInfo); 94 static void ReportCallOttWork(uv_work_t *work, int32_t status); 95 static int32_t ReportCallOtt( 96 EventCallback &settingInfo, AppExecFwk::PacMap &resultInfo, OttCallRequestId requestId); 97 int32_t ReportCallMediaModeInfo(AppExecFwk::PacMap &resultInfo); 98 static void ReportCallMediaModeInfoWork(uv_work_t *work, int32_t status); 99 static void ReportCallMediaModeInfo(AppExecFwk::PacMap &resultInfo, EventCallback supplementInfo); 100 static void ReportMmiCodeWork(uv_work_t *work, int32_t status); 101 static int32_t ReportMmiCode(MmiCodeInfo &info, EventCallback eventCallback); 102 103 private: 104 EventCallback stateCallback_; 105 EventCallback eventCallback_; 106 EventCallback callDisconnectCauseCallback_; 107 EventCallback ottRequestCallback_; 108 EventCallback getWaitingCallback_; 109 EventCallback setWaitingCallback_; 110 EventCallback getRestrictionCallback_; 111 EventCallback setRestrictionCallback_; 112 EventCallback getTransferCallback_; 113 EventCallback setTransferCallback_; 114 EventCallback startRttCallback_; 115 EventCallback stopRttCallback_; 116 EventCallback updateCallMediaModeCallback_; 117 EventCallback mmiCodeCallback_; 118 using CallResultReportIdProcessorFunc = int32_t (NapiCallAbilityCallback::*)(AppExecFwk::PacMap &resultInfo); 119 std::map<CallResultReportId, CallResultReportIdProcessorFunc> memberFuncMap_; 120 std::mutex mutex_; 121 }; 122 } // namespace Telephony 123 } // namespace OHOS 124 125 #endif // NAPI_CALL_ABILITY_CALLBACK_H 126