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 NATIVE_CALL_MANAGER_UTILS_H 17 #define NATIVE_CALL_MANAGER_UTILS_H 18 19 #include "napi/native_api.h" 20 #include "napi/native_node_api.h" 21 #include "napi_call_manager_types.h" 22 #include "string_ex.h" 23 #include "telephony_napi_common_error.h" 24 25 namespace OHOS { 26 namespace Telephony { 27 enum { 28 CALL_MANAGER_UNKNOWN_EVENT = 0, 29 CALL_MANAGER_DIAL_CALL, 30 CALL_MANAGER_ANSWER_CALL, 31 CALL_MANAGER_REJECT_CALL, 32 CALL_MANAGER_DISCONNECT_CALL, 33 CALL_MANAGER_HOLD_CALL, 34 CALL_MANAGER_UNHOLD_CALL, 35 CALL_MANAGER_SWITCH_CALL, 36 CALL_MANAGER_GET_CALL_WAITING, 37 CALL_MANAGER_SET_CALL_WAITING, 38 CALL_MANAGER_GET_CALL_RESTRICTION, 39 CALL_MANAGER_SET_CALL_RESTRICTION, 40 CALL_MANAGER_GET_CALL_TRANSFER, 41 CALL_MANAGER_SET_CALL_TRANSFER, 42 CALL_MANAGER_CAN_SET_CALL_TRANSFER_TIME, 43 CALL_MANAGER_ENABLE_IMS_SWITCH, 44 CALL_MANAGER_DISABLE_IMS_SWITCH, 45 CALL_MANAGER_IS_EMERGENCY_CALL, 46 CALL_MANAGER_IS_RINGING, 47 CALL_MANAGER_MUTE_RINGER, 48 CALL_MANAGER_CLOSE_UNFINISHED_USSD, 49 CALL_MANAGER_SET_VONR_STATE, 50 CALL_MANAGER_GET_VONR_STATE, 51 CALL_MANAGER_SET_CALL_RESTRICTION_PASSWORD, 52 CALL_MANAGER_SET_VOIP_CALL_STATE, 53 CALL_MANAGER_CONTROL_CAMERA, 54 CALL_MANAGER_SET_PREVIEW_WINDOW, 55 CALL_MANAGER_SET_DISPLAY_WINDOW, 56 CALL_MANAGER_SET_PAUSE_PICTURE, 57 CALL_MANAGER_SET_DEVICE_DIRECTION, 58 CALL_MANAGER_QUERY_CAMERA_CAPABILITIES, 59 CALL_MANAGER_CANCEL_CALL_UPGRADE, 60 }; 61 62 /** 63 * call_manager NAPI utility class. 64 */ 65 class NapiCallManagerUtils { 66 public: 67 static bool MatchValueType(napi_env env, napi_value value, napi_valuetype targetType); 68 static napi_value CreateUndefined(napi_env env); 69 static napi_value CreateErrorMessage(napi_env env, std::string msg); 70 static napi_value CreateErrorMessageWithErrorCode( 71 napi_env env, std::string message, int32_t errorCode = ERROR_DEFAULT); 72 static napi_value ToInt32Value(napi_env env, int32_t value); 73 static napi_value GetNamedProperty(napi_env env, napi_value object, const std::string &propertyName); 74 static std::string GetStringProperty(napi_env env, napi_value object, const std::string &propertyName); 75 static int32_t GetIntProperty(napi_env env, napi_value object, const std::string &propertyName); 76 static bool GetUssdIntProperty(napi_env env, napi_value object, const std::string &propertyName, int32_t &result); 77 static bool GetUssdStringProperty( 78 napi_env env, napi_value object, const std::string &propertyName, std::string &result); 79 static bool GetBoolProperty(napi_env env, napi_value object, const std::string &propertyName); 80 static void SetPropertyInt32(napi_env env, napi_value object, std::string name, int32_t value); 81 static void SetPropertyStringUtf8(napi_env env, napi_value object, std::string name, std::string value); 82 static void SetPropertyBoolean(napi_env env, napi_value object, std::string name, int32_t value); 83 static napi_value CreateEnumConstructor(napi_env env, napi_callback_info info); 84 static napi_value CreateErrorCodeAndMessageForJs(napi_env env, int32_t errorCode, int32_t eventId); 85 86 private: 87 static std::string GetEventName(int32_t eventId); 88 static std::string GetEventPermission(int32_t eventId); 89 }; 90 } // namespace Telephony 91 } // namespace OHOS 92 93 #endif