1 /* 2 * Copyright (c) 2023 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 INTERFACES_KITS_WIFI_MANAGER_INCLUDE_WIFI_MANAGER_ADDON_H 17 #define INTERFACES_KITS_WIFI_MANAGER_INCLUDE_WIFI_MANAGER_ADDON_H 18 19 #include "napi_edm_error.h" 20 #include "napi_edm_common.h" 21 #include "napi/native_common.h" 22 #include "napi/native_node_api.h" 23 #include "napi/native_api.h" 24 #include "want.h" 25 #include "wifi_manager_proxy.h" 26 #include "wifi_msg.h" 27 28 namespace OHOS { 29 namespace EDM { 30 struct AsyncIsWifiActiveCallbackInfo : AsyncCallbackInfo { 31 OHOS::AppExecFwk::ElementName elementName; 32 }; 33 34 struct AsyncSetWifiProfileCallbackInfo : AsyncCallbackInfo { 35 OHOS::AppExecFwk::ElementName elementName; 36 OHOS::Wifi::WifiDeviceConfig wifiDeviceConfig; 37 }; 38 39 enum class IpType { 40 STATIC = 0, 41 DHCP, 42 UNKNOWN, 43 }; 44 45 enum class SecurityType { 46 // Invalid security type. 47 SEC_TYPE_INVALID = 0, 48 // Open. 49 SEC_TYPE_OPEN = 1, 50 // Wired Equivalent Privacy (WEP). 51 SEC_TYPE_WEP = 2, 52 // Pre-shared key (PSK). 53 SEC_TYPE_PSK = 3, 54 // Simultaneous Authentication of Equals (SAE). 55 SEC_TYPE_SAE = 4, 56 // EAP authentication. 57 SEC_TYPE_EAP = 5, 58 // SUITE_B_192 192 bit level. 59 SEC_TYPE_EAP_SUITE_B = 6, 60 // Opportunistic Wireless Encryption. 61 SEC_TYPE_OWE = 7, 62 // WAPI certificate to be specified. 63 SEC_TYPE_WAPI_CERT = 8, 64 // WAPI pre-shared key to be specified. 65 SEC_TYPE_WAPI_PSK = 9, 66 }; 67 68 enum class EapMethod { 69 EAP_NONE = 0, 70 EAP_PEAP = 1, 71 EAP_TLS = 2, 72 EAP_TTLS = 3, 73 EAP_PWD = 4, 74 EAP_SIM = 5, 75 EAP_AKA = 6, 76 EAP_AKA_PRIME = 7, 77 EAP_UNAUTH_TLS = 8, 78 }; 79 80 class WifiManagerAddon { 81 public: 82 WifiManagerAddon() = default; 83 ~WifiManagerAddon() = default; 84 85 static napi_value Init(napi_env env, napi_value exports); 86 private: 87 static bool JsObjToDeviceConfig(napi_env env, napi_value object, Wifi::WifiDeviceConfig &config); 88 static void ConvertEncryptionMode(int32_t securityType, Wifi::WifiDeviceConfig &config); 89 static bool ProcessIpType(int32_t ipType, napi_env env, napi_value object, Wifi::WifiIpConfig &ipConfig); 90 static bool ConfigStaticIp(napi_env env, napi_value object, Wifi::WifiIpConfig &ipConfig); 91 static bool ProcessEapConfig(napi_env env, napi_value object, Wifi::WifiEapConfig &eapConfig); 92 static bool ProcessEapPeapConfig(napi_env env, napi_value object, Wifi::WifiEapConfig &eapConfig); 93 static bool ProcessEapTlsConfig(napi_env env, napi_value object, Wifi::WifiEapConfig &eapConfig); 94 static napi_value IsWifiActive(napi_env env, napi_callback_info info); 95 static napi_value SetWifiProfile(napi_env env, napi_callback_info info); 96 static void NativeIsWifiActive(napi_env env, void *data); 97 static void NativeSetWifiProfile(napi_env env, void *data); 98 static void CreateWifiSecurityTypeObject(napi_env env, napi_value value); 99 static void CreateIpTypeObject(napi_env env, napi_value value); 100 static void CreateEapMethodObject(napi_env env, napi_value value); 101 static void CreatePhase2MethodObject(napi_env env, napi_value value); 102 static napi_value SetWifiDisabled(napi_env env, napi_callback_info info); 103 static napi_value IsWifiDisabled(napi_env env, napi_callback_info info); 104 }; 105 } // namespace EDM 106 } // namespace OHOS 107 108 #endif // INTERFACES_KITS_WIFI_MANAGER_INCLUDE_WIFI_MANAGER_ADDON_H 109