1f1549183Sopenharmony_ciFrom 79428c1a372c39ecabf310802bd6025fbfed6971 Mon Sep 17 00:00:00 2001 2f1549183Sopenharmony_ciFrom: zhaoshenghua <zhaoshenghua1@huawei.com> 3f1549183Sopenharmony_ciDate: Tue, 27 Aug 2024 10:33:20 +0800 4f1549183Sopenharmony_ciSubject: [PATCH 4/4] fix codecheck 5f1549183Sopenharmony_ci 6f1549183Sopenharmony_ciSigned-off-by: zhaoshenghua <zhaoshenghua1@huawei.com> 7f1549183Sopenharmony_ci--- 8f1549183Sopenharmony_ci wifi/frameworks/cj/BUILD.gn | 6 +- 9f1549183Sopenharmony_ci wifi/frameworks/cj/include/ffi_structs.h | 48 ++--- 10f1549183Sopenharmony_ci wifi/frameworks/cj/include/wifi_callback.h | 5 + 11f1549183Sopenharmony_ci wifi/frameworks/cj/include/wifi_ffi.h | 27 --- 12f1549183Sopenharmony_ci wifi/frameworks/cj/src/wifi_ffi.cpp | 218 ++++++++++++--------- 13f1549183Sopenharmony_ci 5 files changed, 150 insertions(+), 154 deletions(-) 14f1549183Sopenharmony_ci 15f1549183Sopenharmony_cidiff --git a/wifi/frameworks/cj/BUILD.gn b/wifi/frameworks/cj/BUILD.gn 16f1549183Sopenharmony_ciindex a83ae447e..c56e3973c 100644 17f1549183Sopenharmony_ci--- a/wifi/frameworks/cj/BUILD.gn 18f1549183Sopenharmony_ci+++ b/wifi/frameworks/cj/BUILD.gn 19f1549183Sopenharmony_ci@@ -34,12 +34,12 @@ ohos_shared_library("cj_wifi_ffi") { 20f1549183Sopenharmony_ci "$WIFI_ROOT_DIR/frameworks/native/src", 21f1549183Sopenharmony_ci "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_toolkit/net_helper", 22f1549183Sopenharmony_ci "$WIFI_ROOT_DIR/utils/inc", 23f1549183Sopenharmony_ci- "./include" 24f1549183Sopenharmony_ci+ "./include", 25f1549183Sopenharmony_ci ] 26f1549183Sopenharmony_ci 27f1549183Sopenharmony_ci sources = [ 28f1549183Sopenharmony_ci- "src/wifi_ffi.cpp", 29f1549183Sopenharmony_ci "src/wifi_callback.cpp", 30f1549183Sopenharmony_ci+ "src/wifi_ffi.cpp", 31f1549183Sopenharmony_ci ] 32f1549183Sopenharmony_ci 33f1549183Sopenharmony_ci deps = [ "$WIFI_ROOT_DIR/frameworks/native:wifi_sdk" ] 34f1549183Sopenharmony_ci@@ -67,4 +67,4 @@ ohos_shared_library("cj_wifi_ffi") { 35f1549183Sopenharmony_ci innerapi_tags = [ "platformsdk" ] 36f1549183Sopenharmony_ci part_name = "wifi" 37f1549183Sopenharmony_ci subsystem_name = "communication" 38f1549183Sopenharmony_ci-} 39f1549183Sopenharmony_ci\ No newline at end of file 40f1549183Sopenharmony_ci+} 41f1549183Sopenharmony_cidiff --git a/wifi/frameworks/cj/include/ffi_structs.h b/wifi/frameworks/cj/include/ffi_structs.h 42f1549183Sopenharmony_ciindex e1f0d9b23..a729dbdcc 100644 43f1549183Sopenharmony_ci--- a/wifi/frameworks/cj/include/ffi_structs.h 44f1549183Sopenharmony_ci+++ b/wifi/frameworks/cj/include/ffi_structs.h 45f1549183Sopenharmony_ci@@ -20,14 +20,12 @@ 46f1549183Sopenharmony_ci #include "cj_ffi/cj_common_ffi.h" 47f1549183Sopenharmony_ci 48f1549183Sopenharmony_ci extern "C" { 49f1549183Sopenharmony_ci- struct CWifiInfoElem 50f1549183Sopenharmony_ci- { 51f1549183Sopenharmony_ci+ struct CWifiInfoElem { 52f1549183Sopenharmony_ci uint32_t eid; 53f1549183Sopenharmony_ci CArrUI8 content; 54f1549183Sopenharmony_ci }; 55f1549183Sopenharmony_ci 56f1549183Sopenharmony_ci- struct CWifiScanInfo 57f1549183Sopenharmony_ci- { 58f1549183Sopenharmony_ci+ struct CWifiScanInfo { 59f1549183Sopenharmony_ci char *ssid; 60f1549183Sopenharmony_ci char *bssid; 61f1549183Sopenharmony_ci int32_t bssidType; 62f1549183Sopenharmony_ci@@ -46,15 +44,12 @@ extern "C" { 63f1549183Sopenharmony_ci bool isHiLinkNetwork; 64f1549183Sopenharmony_ci }; 65f1549183Sopenharmony_ci 66f1549183Sopenharmony_ci- struct WifiScanInfoArr 67f1549183Sopenharmony_ci- { 68f1549183Sopenharmony_ci+ struct WifiScanInfoArr { 69f1549183Sopenharmony_ci CWifiScanInfo *head; 70f1549183Sopenharmony_ci int64_t size; 71f1549183Sopenharmony_ci }; 72f1549183Sopenharmony_ci 73f1549183Sopenharmony_ci- // TODO figure out clientCertAlias 74f1549183Sopenharmony_ci- struct CWifiEapConfig 75f1549183Sopenharmony_ci- { 76f1549183Sopenharmony_ci+ struct CWifiEapConfig { 77f1549183Sopenharmony_ci int32_t eapMethod; /* EAP authentication mode:PEAP/TLS/TTLS/PWD/SIM/AKA/AKA' */ 78f1549183Sopenharmony_ci int32_t phase2Method; /* Second stage authentication method */ 79f1549183Sopenharmony_ci char *identity; /* Identity information */ 80f1549183Sopenharmony_ci@@ -73,16 +68,14 @@ extern "C" { 81f1549183Sopenharmony_ci bool isNone; 82f1549183Sopenharmony_ci }; 83f1549183Sopenharmony_ci 84f1549183Sopenharmony_ci- struct CWifiWapiConfig 85f1549183Sopenharmony_ci- { 86f1549183Sopenharmony_ci+ struct CWifiWapiConfig { 87f1549183Sopenharmony_ci int32_t wapiPskType; 88f1549183Sopenharmony_ci char *wapiAsCert; 89f1549183Sopenharmony_ci char *wapiUserCert; 90f1549183Sopenharmony_ci bool isNone; 91f1549183Sopenharmony_ci }; 92f1549183Sopenharmony_ci 93f1549183Sopenharmony_ci- struct CIpInfo 94f1549183Sopenharmony_ci- { 95f1549183Sopenharmony_ci+ struct CIpInfo { 96f1549183Sopenharmony_ci uint32_t ipAddress; 97f1549183Sopenharmony_ci uint32_t gateway; 98f1549183Sopenharmony_ci uint32_t netmask; 99f1549183Sopenharmony_ci@@ -92,8 +85,7 @@ extern "C" { 100f1549183Sopenharmony_ci uint32_t leaseDuration; 101f1549183Sopenharmony_ci }; 102f1549183Sopenharmony_ci 103f1549183Sopenharmony_ci- struct CIpv6Info 104f1549183Sopenharmony_ci- { 105f1549183Sopenharmony_ci+ struct CIpv6Info { 106f1549183Sopenharmony_ci char *linkIpV6Address; 107f1549183Sopenharmony_ci char *globalIpV6Address; 108f1549183Sopenharmony_ci char *randomGlobalIpV6Address; 109f1549183Sopenharmony_ci@@ -105,8 +97,7 @@ extern "C" { 110f1549183Sopenharmony_ci char *secondDNS; 111f1549183Sopenharmony_ci }; 112f1549183Sopenharmony_ci 113f1549183Sopenharmony_ci- struct CWifiP2PConfig 114f1549183Sopenharmony_ci- { 115f1549183Sopenharmony_ci+ struct CWifiP2PConfig { 116f1549183Sopenharmony_ci char *deviceAddress; 117f1549183Sopenharmony_ci char *passphrase; 118f1549183Sopenharmony_ci char *groupName; 119f1549183Sopenharmony_ci@@ -115,15 +106,13 @@ extern "C" { 120f1549183Sopenharmony_ci int32_t deviceAddressType; 121f1549183Sopenharmony_ci }; 122f1549183Sopenharmony_ci 123f1549183Sopenharmony_ci- struct CWifiP2PLinkedInfo 124f1549183Sopenharmony_ci- { 125f1549183Sopenharmony_ci+ struct CWifiP2PLinkedInfo { 126f1549183Sopenharmony_ci int32_t connectState; 127f1549183Sopenharmony_ci bool isGroupOwner; 128f1549183Sopenharmony_ci char *groupOwnerAddr; 129f1549183Sopenharmony_ci }; 130f1549183Sopenharmony_ci 131f1549183Sopenharmony_ci- struct CWifiP2pDevice 132f1549183Sopenharmony_ci- { 133f1549183Sopenharmony_ci+ struct CWifiP2pDevice { 134f1549183Sopenharmony_ci char *deviceName; 135f1549183Sopenharmony_ci char *deviceAddress; 136f1549183Sopenharmony_ci char *primaryDeviceType; 137f1549183Sopenharmony_ci@@ -132,14 +121,12 @@ extern "C" { 138f1549183Sopenharmony_ci int32_t deviceAddressType; 139f1549183Sopenharmony_ci }; 140f1549183Sopenharmony_ci 141f1549183Sopenharmony_ci- struct WifiP2pDeviceArr 142f1549183Sopenharmony_ci- { 143f1549183Sopenharmony_ci+ struct WifiP2pDeviceArr { 144f1549183Sopenharmony_ci CWifiP2pDevice *head; 145f1549183Sopenharmony_ci int64_t size; 146f1549183Sopenharmony_ci }; 147f1549183Sopenharmony_ci 148f1549183Sopenharmony_ci- struct CWifiP2PGroupInfo 149f1549183Sopenharmony_ci- { 150f1549183Sopenharmony_ci+ struct CWifiP2PGroupInfo { 151f1549183Sopenharmony_ci bool isP2pGo; 152f1549183Sopenharmony_ci CWifiP2pDevice ownerInfo; 153f1549183Sopenharmony_ci char *passphrase; 154f1549183Sopenharmony_ci@@ -152,8 +139,7 @@ extern "C" { 155f1549183Sopenharmony_ci char *goIpAddress; 156f1549183Sopenharmony_ci }; 157f1549183Sopenharmony_ci 158f1549183Sopenharmony_ci- struct CWifiLinkedInfo 159f1549183Sopenharmony_ci- { 160f1549183Sopenharmony_ci+ struct CWifiLinkedInfo { 161f1549183Sopenharmony_ci char *ssid; 162f1549183Sopenharmony_ci char *bssid; 163f1549183Sopenharmony_ci int32_t rssi; 164f1549183Sopenharmony_ci@@ -175,8 +161,7 @@ extern "C" { 165f1549183Sopenharmony_ci bool isHiLinkNetwork; 166f1549183Sopenharmony_ci }; 167f1549183Sopenharmony_ci 168f1549183Sopenharmony_ci- struct CWifiDeviceConfig 169f1549183Sopenharmony_ci- { 170f1549183Sopenharmony_ci+ struct CWifiDeviceConfig { 171f1549183Sopenharmony_ci int32_t securityType; 172f1549183Sopenharmony_ci int32_t bssidType; 173f1549183Sopenharmony_ci bool isHiddenSsid; 174f1549183Sopenharmony_ci@@ -187,13 +172,10 @@ extern "C" { 175f1549183Sopenharmony_ci CWifiWapiConfig wapiConfig; 176f1549183Sopenharmony_ci }; 177f1549183Sopenharmony_ci 178f1549183Sopenharmony_ci- struct WifiDeviceConfigArr 179f1549183Sopenharmony_ci- { 180f1549183Sopenharmony_ci+ struct WifiDeviceConfigArr { 181f1549183Sopenharmony_ci CWifiDeviceConfig *head; 182f1549183Sopenharmony_ci int64_t size; 183f1549183Sopenharmony_ci }; 184f1549183Sopenharmony_ci } 185f1549183Sopenharmony_ci 186f1549183Sopenharmony_ci- 187f1549183Sopenharmony_ci- 188f1549183Sopenharmony_ci #endif // CJ_WIFI_FFI_STRUCTS_H 189f1549183Sopenharmony_ci\ No newline at end of file 190f1549183Sopenharmony_cidiff --git a/wifi/frameworks/cj/include/wifi_callback.h b/wifi/frameworks/cj/include/wifi_callback.h 191f1549183Sopenharmony_ciindex dd49d04a9..e0af2d08c 100644 192f1549183Sopenharmony_ci--- a/wifi/frameworks/cj/include/wifi_callback.h 193f1549183Sopenharmony_ci+++ b/wifi/frameworks/cj/include/wifi_callback.h 194f1549183Sopenharmony_ci@@ -13,6 +13,9 @@ 195f1549183Sopenharmony_ci * limitations under the License. 196f1549183Sopenharmony_ci */ 197f1549183Sopenharmony_ci 198f1549183Sopenharmony_ci+#ifndef CJ_WIFI_CALLBACK_H 199f1549183Sopenharmony_ci+#define CJ_WIFI_CALLBACK_H 200f1549183Sopenharmony_ci+ 201f1549183Sopenharmony_ci #include <shared_mutex> 202f1549183Sopenharmony_ci 203f1549183Sopenharmony_ci #include "ffi_structs.h" 204f1549183Sopenharmony_ci@@ -63,3 +66,5 @@ private: 205f1549183Sopenharmony_ci OHOS::sptr<OHOS::ISystemAbilityStatusChange> mSaStatusListener = nullptr; 206f1549183Sopenharmony_ci }; 207f1549183Sopenharmony_ci } 208f1549183Sopenharmony_ci+ 209f1549183Sopenharmony_ci+#endif 210f1549183Sopenharmony_ci\ No newline at end of file 211f1549183Sopenharmony_cidiff --git a/wifi/frameworks/cj/include/wifi_ffi.h b/wifi/frameworks/cj/include/wifi_ffi.h 212f1549183Sopenharmony_ciindex e89d095ad..41eb646e5 100644 213f1549183Sopenharmony_ci--- a/wifi/frameworks/cj/include/wifi_ffi.h 214f1549183Sopenharmony_ci+++ b/wifi/frameworks/cj/include/wifi_ffi.h 215f1549183Sopenharmony_ci@@ -19,33 +19,6 @@ 216f1549183Sopenharmony_ci #include "cj_ffi/cj_common_ffi.h" 217f1549183Sopenharmony_ci #include "ffi_structs.h" 218f1549183Sopenharmony_ci 219f1549183Sopenharmony_ci-char *MallocCString(const std::string &origin); 220f1549183Sopenharmony_ci- 221f1549183Sopenharmony_ci-enum class SecTypeCj { 222f1549183Sopenharmony_ci- /** Invalid security type */ 223f1549183Sopenharmony_ci- SEC_TYPE_INVALID = 0, 224f1549183Sopenharmony_ci- /** Open */ 225f1549183Sopenharmony_ci- SEC_TYPE_OPEN = 1, 226f1549183Sopenharmony_ci- /** Wired Equivalent Privacy (WEP) */ 227f1549183Sopenharmony_ci- SEC_TYPE_WEP = 2, 228f1549183Sopenharmony_ci- /** Pre-shared key (PSK) */ 229f1549183Sopenharmony_ci- SEC_TYPE_PSK = 3, 230f1549183Sopenharmony_ci- /** Simultaneous Authentication of Equals (SAE) */ 231f1549183Sopenharmony_ci- SEC_TYPE_SAE = 4, 232f1549183Sopenharmony_ci- /** EAP authentication. */ 233f1549183Sopenharmony_ci- SEC_TYPE_EAP = 5, 234f1549183Sopenharmony_ci- /** SUITE_B_192 192 bit level. */ 235f1549183Sopenharmony_ci- SEC_TYPE_EAP_SUITE_B = 6, 236f1549183Sopenharmony_ci-#ifdef ENABLE_NAPI_WIFI_MANAGER 237f1549183Sopenharmony_ci- /** Opportunistic Wireless Encryption. */ 238f1549183Sopenharmony_ci- SEC_TYPE_OWE = 7, 239f1549183Sopenharmony_ci-#endif 240f1549183Sopenharmony_ci- /** WAPI certificate to be specified. */ 241f1549183Sopenharmony_ci- SEC_TYPE_WAPI_CERT = 8, 242f1549183Sopenharmony_ci- /** WAPI pre-shared key to be specified. */ 243f1549183Sopenharmony_ci- SEC_TYPE_WAPI_PSK = 9, 244f1549183Sopenharmony_ci-}; 245f1549183Sopenharmony_ci- 246f1549183Sopenharmony_ci extern "C" { 247f1549183Sopenharmony_ci FFI_EXPORT int32_t FfiWifiIsWifiActive(bool &ret); 248f1549183Sopenharmony_ci FFI_EXPORT WifiScanInfoArr FfiWifiGetScanInfoList(int32_t &ret); 249f1549183Sopenharmony_cidiff --git a/wifi/frameworks/cj/src/wifi_ffi.cpp b/wifi/frameworks/cj/src/wifi_ffi.cpp 250f1549183Sopenharmony_ciindex 35f3b10a9..cc88c220b 100644 251f1549183Sopenharmony_ci--- a/wifi/frameworks/cj/src/wifi_ffi.cpp 252f1549183Sopenharmony_ci+++ b/wifi/frameworks/cj/src/wifi_ffi.cpp 253f1549183Sopenharmony_ci@@ -33,6 +33,31 @@ std::shared_ptr<WifiScan> cjWifiScanPtr = WifiScan::GetInstance(WIFI_SCAN_ABILIT 254f1549183Sopenharmony_ci std::shared_ptr<WifiP2p> cjWifiP2pPtr = WifiP2p::GetInstance(WIFI_P2P_ABILITY_ID); 255f1549183Sopenharmony_ci static const std::string EAP_METHOD[] = { "NONE", "PEAP", "TLS", "TTLS", "PWD", "SIM", "AKA", "AKA'" }; 256f1549183Sopenharmony_ci 257f1549183Sopenharmony_ci+enum class SecTypeCj { 258f1549183Sopenharmony_ci+ /** Invalid security type */ 259f1549183Sopenharmony_ci+ SEC_TYPE_INVALID = 0, 260f1549183Sopenharmony_ci+ /** Open */ 261f1549183Sopenharmony_ci+ SEC_TYPE_OPEN = 1, 262f1549183Sopenharmony_ci+ /** Wired Equivalent Privacy (WEP) */ 263f1549183Sopenharmony_ci+ SEC_TYPE_WEP = 2, 264f1549183Sopenharmony_ci+ /** Pre-shared key (PSK) */ 265f1549183Sopenharmony_ci+ SEC_TYPE_PSK = 3, 266f1549183Sopenharmony_ci+ /** Simultaneous Authentication of Equals (SAE) */ 267f1549183Sopenharmony_ci+ SEC_TYPE_SAE = 4, 268f1549183Sopenharmony_ci+ /** EAP authentication. */ 269f1549183Sopenharmony_ci+ SEC_TYPE_EAP = 5, 270f1549183Sopenharmony_ci+ /** SUITE_B_192 192 bit level. */ 271f1549183Sopenharmony_ci+ SEC_TYPE_EAP_SUITE_B = 6, 272f1549183Sopenharmony_ci+#ifdef ENABLE_NAPI_WIFI_MANAGER 273f1549183Sopenharmony_ci+ /** Opportunistic Wireless Encryption. */ 274f1549183Sopenharmony_ci+ SEC_TYPE_OWE = 7, 275f1549183Sopenharmony_ci+#endif 276f1549183Sopenharmony_ci+ /** WAPI certificate to be specified. */ 277f1549183Sopenharmony_ci+ SEC_TYPE_WAPI_CERT = 8, 278f1549183Sopenharmony_ci+ /** WAPI pre-shared key to be specified. */ 279f1549183Sopenharmony_ci+ SEC_TYPE_WAPI_PSK = 9, 280f1549183Sopenharmony_ci+}; 281f1549183Sopenharmony_ci+ 282f1549183Sopenharmony_ci static std::string EapMethod2Str(const int& method) 283f1549183Sopenharmony_ci { 284f1549183Sopenharmony_ci if (method < 0 || method >= static_cast<int>(sizeof(EAP_METHOD) / sizeof(EAP_METHOD[0]))) { 285f1549183Sopenharmony_ci@@ -133,44 +158,45 @@ static void ProcessPassphrase(const SecTypeCj& securityType, WifiDeviceConfig& c 286f1549183Sopenharmony_ci } 287f1549183Sopenharmony_ci } 288f1549183Sopenharmony_ci 289f1549183Sopenharmony_ci-static void NativeInfoElems2Cj(const std::vector<WifiInfoElem>& infoElems, CWifiScanInfo &info) 290f1549183Sopenharmony_ci+static void SetInfoElemContent(WifiInfoElem &infoElem, CWifiInfoElem &cinfo) 291f1549183Sopenharmony_ci { 292f1549183Sopenharmony_ci int valueStep = 2; 293f1549183Sopenharmony_ci- int64_t size = static_cast<int64_t>(infoElems.size()); 294f1549183Sopenharmony_ci- if (size > 0) { 295f1549183Sopenharmony_ci- info.infoElems = static_cast<CWifiInfoElem *>(malloc(sizeof(CWifiInfoElem) * size)); 296f1549183Sopenharmony_ci- if (info.infoElems == nullptr) { 297f1549183Sopenharmony_ci- info.elemsSize = 0; 298f1549183Sopenharmony_ci+ const char *uStr = &infoElem.content[0]; 299f1549183Sopenharmony_ci+ size_t len = infoElem.content.size(); 300f1549183Sopenharmony_ci+ size_t inLen = static_cast<size_t>(infoElem.content.size() * valueStep + 1); 301f1549183Sopenharmony_ci+ char *buf = static_cast<char *>(calloc(inLen + 1, sizeof(char))); 302f1549183Sopenharmony_ci+ if (buf == nullptr) { 303f1549183Sopenharmony_ci+ return; 304f1549183Sopenharmony_ci+ } 305f1549183Sopenharmony_ci+ int pos = 0; 306f1549183Sopenharmony_ci+ for (size_t k = 0; k < len; ++k) { 307f1549183Sopenharmony_ci+ pos = (k << 1); 308f1549183Sopenharmony_ci+ if (snprintf_s(buf + pos, inLen - pos, inLen - pos - 1, "%02x", uStr[k]) < 0) { 309f1549183Sopenharmony_ci+ free(buf); 310f1549183Sopenharmony_ci+ buf = NULL; 311f1549183Sopenharmony_ci return; 312f1549183Sopenharmony_ci } 313f1549183Sopenharmony_ci- info.elemsSize = size; 314f1549183Sopenharmony_ci- for (int64_t i = 0; i < size; i++) { 315f1549183Sopenharmony_ci- CWifiInfoElem elem; 316f1549183Sopenharmony_ci- elem.eid = infoElems[i].id; 317f1549183Sopenharmony_ci- 318f1549183Sopenharmony_ci- const char *uStr = &infoElems[i].content[0]; 319f1549183Sopenharmony_ci- size_t len = infoElems[i].content.size(); 320f1549183Sopenharmony_ci- size_t inLen = static_cast<size_t>(infoElems[i].content.size() * valueStep + 1); 321f1549183Sopenharmony_ci- char *buf = (char *)calloc(inLen + 1, sizeof(char)); 322f1549183Sopenharmony_ci- if (buf == nullptr) { 323f1549183Sopenharmony_ci- elem.content = CArrUI8{.head = nullptr, .size = 0}; 324f1549183Sopenharmony_ci- info.infoElems[i] = elem; 325f1549183Sopenharmony_ci- continue; 326f1549183Sopenharmony_ci- } 327f1549183Sopenharmony_ci- int pos = 0; 328f1549183Sopenharmony_ci- for (size_t k = 0; k < len; ++k) { 329f1549183Sopenharmony_ci- pos = (k << 1); 330f1549183Sopenharmony_ci- if (snprintf_s(buf + pos, inLen - pos, inLen - pos - 1, "%02x", uStr[k]) < 0) { 331f1549183Sopenharmony_ci- free(buf); 332f1549183Sopenharmony_ci- buf = NULL; 333f1549183Sopenharmony_ci- elem.content = CArrUI8{.head = nullptr, .size = 0}; 334f1549183Sopenharmony_ci- info.infoElems[i] = elem; 335f1549183Sopenharmony_ci- continue; 336f1549183Sopenharmony_ci- } 337f1549183Sopenharmony_ci- } 338f1549183Sopenharmony_ci- elem.content = CArrUI8{.head = reinterpret_cast<uint8_t *>(buf), .size = inLen - 1}; // TODO check size 339f1549183Sopenharmony_ci- info.infoElems[i] = elem; 340f1549183Sopenharmony_ci- } 341f1549183Sopenharmony_ci+ } 342f1549183Sopenharmony_ci+ cinfo.content.head = reinterpret_cast<uint8_t *>(buf); 343f1549183Sopenharmony_ci+ cinfo.content.size = inLen - 1; 344f1549183Sopenharmony_ci+} 345f1549183Sopenharmony_ci+ 346f1549183Sopenharmony_ci+static void NativeInfoElems2Cj(const std::vector<WifiInfoElem>& infoElems, CWifiScanInfo &info) 347f1549183Sopenharmony_ci+{ 348f1549183Sopenharmony_ci+ info.infoElems == nullptr; 349f1549183Sopenharmony_ci+ info.elemsSize = 0; 350f1549183Sopenharmony_ci+ int64_t size = static_cast<int64_t>(infoElems.size()); 351f1549183Sopenharmony_ci+ if (size <= 0) { 352f1549183Sopenharmony_ci+ return; 353f1549183Sopenharmony_ci+ } 354f1549183Sopenharmony_ci+ info.infoElems = static_cast<CWifiInfoElem *>(malloc(sizeof(CWifiInfoElem) * size)); 355f1549183Sopenharmony_ci+ if (info.infoElems == nullptr) { 356f1549183Sopenharmony_ci+ return; 357f1549183Sopenharmony_ci+ } 358f1549183Sopenharmony_ci+ info.elemsSize = size; 359f1549183Sopenharmony_ci+ for (int64_t i = 0; i < size; i++) { 360f1549183Sopenharmony_ci+ info.infoElems[i] = CWifiInfoElem{ .eid = infoElems[i].id, .content = CArrUI8{.head = nullptr, .size = 0}}; 361f1549183Sopenharmony_ci+ SetInfoElemContent(infoElems[i], info.infoElems[i]); 362f1549183Sopenharmony_ci } 363f1549183Sopenharmony_ci } 364f1549183Sopenharmony_ci 365f1549183Sopenharmony_ci@@ -187,7 +213,7 @@ static int32_t ScanInfo2Cj(const std::vector<WifiScanInfo>& scanInfos, WifiScanI 366f1549183Sopenharmony_ci infos.size = size; 367f1549183Sopenharmony_ci 368f1549183Sopenharmony_ci uint32_t idx = 0; 369f1549183Sopenharmony_ci- for(auto& each : scanInfos) { 370f1549183Sopenharmony_ci+ for (auto& each : scanInfos) { 371f1549183Sopenharmony_ci CWifiScanInfo info; 372f1549183Sopenharmony_ci info.ssid = MallocCString(each.ssid); 373f1549183Sopenharmony_ci info.bssid = MallocCString(each.bssid); 374f1549183Sopenharmony_ci@@ -275,6 +301,38 @@ static int Str2EapMethod(const std::string &str) 375f1549183Sopenharmony_ci return 0; 376f1549183Sopenharmony_ci } 377f1549183Sopenharmony_ci 378f1549183Sopenharmony_ci+static void EapConfig2C(WifiEapConfig &wifiEapConfig, CWifiEapConfig &eapConfig) 379f1549183Sopenharmony_ci+{ 380f1549183Sopenharmony_ci+ eapConfig.eapMethod = Str2EapMethod(wifiEapConfig.eap); 381f1549183Sopenharmony_ci+ eapConfig.phase2Method = static_cast<int>(wifiEapConfig.phase2Method); 382f1549183Sopenharmony_ci+ eapConfig.identity = MallocCString(wifiEapConfig.identity); 383f1549183Sopenharmony_ci+ eapConfig.anonymousIdentity = MallocCString(wifiEapConfig.anonymousIdentity); 384f1549183Sopenharmony_ci+ eapConfig.password = MallocCString(wifiEapConfig.password); 385f1549183Sopenharmony_ci+ eapConfig.caCertAlias = MallocCString(wifiEapConfig.caCertAlias); 386f1549183Sopenharmony_ci+ eapConfig.caPath = MallocCString(wifiEapConfig.caCertPath); 387f1549183Sopenharmony_ci+ eapConfig.clientCertAlias = MallocCString(wifiEapConfig.caCertAlias); 388f1549183Sopenharmony_ci+ CArrUI8 arr{.head = nullptr, .size = 0}; 389f1549183Sopenharmony_ci+ int64_t size = wifiEapConfig.certEntry.size(); 390f1549183Sopenharmony_ci+ if (size > 0) { 391f1549183Sopenharmony_ci+ arr.head = static_cast<uint8_t *>(malloc(sizeof(uint8_t) * size)); 392f1549183Sopenharmony_ci+ if (arr.head != nullptr) { 393f1549183Sopenharmony_ci+ uint32_t idx = 0; 394f1549183Sopenharmony_ci+ for (auto& each : wifiEapConfig.certEntry) { 395f1549183Sopenharmony_ci+ arr.head[idx] = each; 396f1549183Sopenharmony_ci+ idx++; 397f1549183Sopenharmony_ci+ } 398f1549183Sopenharmony_ci+ } 399f1549183Sopenharmony_ci+ } 400f1549183Sopenharmony_ci+ eapConfig.certEntry = arr; 401f1549183Sopenharmony_ci+ eapConfig.certPassword = MallocCString(wifiEapConfig.certPassword); 402f1549183Sopenharmony_ci+ eapConfig.altSubjectMatch = MallocCString(wifiEapConfig.altSubjectMatch); 403f1549183Sopenharmony_ci+ eapConfig.domainSuffixMatch = MallocCString(wifiEapConfig.domainSuffixMatch); 404f1549183Sopenharmony_ci+ eapConfig.realm = MallocCString(wifiEapConfig.realm); 405f1549183Sopenharmony_ci+ eapConfig.plmn = MallocCString(wifiEapConfig.plmn); 406f1549183Sopenharmony_ci+ eapConfig.eapSubId = wifiEapConfig.eapSubId; 407f1549183Sopenharmony_ci+ eapConfig.isNone = false; 408f1549183Sopenharmony_ci+} 409f1549183Sopenharmony_ci+ 410f1549183Sopenharmony_ci static void DeviceConfig2C(WifiDeviceConfig &config, CWifiDeviceConfig &cfg) 411f1549183Sopenharmony_ci { 412f1549183Sopenharmony_ci UpdateSecurityTypeAndPreSharedKey(config); 413f1549183Sopenharmony_ci@@ -288,32 +346,7 @@ static void DeviceConfig2C(WifiDeviceConfig &config, CWifiDeviceConfig &cfg) 414f1549183Sopenharmony_ci SecTypeCj type = ConvertKeyMgmtToSecType(config.keyMgmt); 415f1549183Sopenharmony_ci cfg.securityType = static_cast<int32_t>(type); 416f1549183Sopenharmony_ci if (type == SecTypeCj::SEC_TYPE_EAP || type == SecTypeCj::SEC_TYPE_EAP_SUITE_B) { 417f1549183Sopenharmony_ci- cfg.eapConfig.eapMethod = Str2EapMethod(config.wifiEapConfig.eap); 418f1549183Sopenharmony_ci- cfg.eapConfig.phase2Method = static_cast<int>(config.wifiEapConfig.phase2Method); 419f1549183Sopenharmony_ci- cfg.eapConfig.identity = MallocCString(config.wifiEapConfig.identity); 420f1549183Sopenharmony_ci- cfg.eapConfig.anonymousIdentity = MallocCString(config.wifiEapConfig.anonymousIdentity); 421f1549183Sopenharmony_ci- cfg.eapConfig.password = MallocCString(config.wifiEapConfig.password); 422f1549183Sopenharmony_ci- cfg.eapConfig.caCertAlias = MallocCString(config.wifiEapConfig.caCertAlias); 423f1549183Sopenharmony_ci- cfg.eapConfig.caPath = MallocCString(config.wifiEapConfig.caCertPath); 424f1549183Sopenharmony_ci- cfg.eapConfig.clientCertAlias = MallocCString(config.wifiEapConfig.caCertAlias); // ? 425f1549183Sopenharmony_ci- CArrUI8 arr{.head = nullptr, .size = 0}; 426f1549183Sopenharmony_ci- int64_t size = config.wifiEapConfig.certEntry.size(); 427f1549183Sopenharmony_ci- arr.head = static_cast<uint8_t *>(malloc(sizeof(uint8_t) * size)); 428f1549183Sopenharmony_ci- if (arr.head != nullptr) { 429f1549183Sopenharmony_ci- uint32_t idx = 0; 430f1549183Sopenharmony_ci- for (auto& each : config.wifiEapConfig.certEntry) { 431f1549183Sopenharmony_ci- arr.head[idx] = each; 432f1549183Sopenharmony_ci- idx++; 433f1549183Sopenharmony_ci- } 434f1549183Sopenharmony_ci- } 435f1549183Sopenharmony_ci- cfg.eapConfig.certEntry = arr; 436f1549183Sopenharmony_ci- cfg.eapConfig.certPassword = MallocCString(config.wifiEapConfig.certPassword); 437f1549183Sopenharmony_ci- cfg.eapConfig.altSubjectMatch = MallocCString(config.wifiEapConfig.altSubjectMatch); 438f1549183Sopenharmony_ci- cfg.eapConfig.domainSuffixMatch = MallocCString(config.wifiEapConfig.domainSuffixMatch); 439f1549183Sopenharmony_ci- cfg.eapConfig.realm = MallocCString(config.wifiEapConfig.realm); 440f1549183Sopenharmony_ci- cfg.eapConfig.plmn = MallocCString(config.wifiEapConfig.plmn); 441f1549183Sopenharmony_ci- cfg.eapConfig.eapSubId = config.wifiEapConfig.eapSubId; 442f1549183Sopenharmony_ci- cfg.eapConfig.isNone = false; 443f1549183Sopenharmony_ci+ EapConfig2C(config.wifiEapConfig, cfg.eapConfig); 444f1549183Sopenharmony_ci } 445f1549183Sopenharmony_ci if (type == SecTypeCj::SEC_TYPE_WAPI_CERT || type == SecTypeCj::SEC_TYPE_WAPI_PSK) { 446f1549183Sopenharmony_ci cfg.wapiConfig.wapiPskType = config.wifiWapiConfig.wapiPskType; 447f1549183Sopenharmony_ci@@ -525,31 +558,35 @@ int32_t FfiWifiGetCurrentGroup(CWifiP2PGroupInfo &info) 448f1549183Sopenharmony_ci } 449f1549183Sopenharmony_ci WifiP2pGroupInfo groupInfo; 450f1549183Sopenharmony_ci ErrCode code = cjWifiP2pPtr->GetCurrentGroup(groupInfo); 451f1549183Sopenharmony_ci- if (code == WIFI_OPT_SUCCESS) { 452f1549183Sopenharmony_ci- info.isP2pGo = groupInfo.IsGroupOwner(); 453f1549183Sopenharmony_ci- DeviceInfo2Cj(groupInfo.GetOwner(), info.ownerInfo); 454f1549183Sopenharmony_ci- info.passphrase = MallocCString(groupInfo.GetPassphrase()); 455f1549183Sopenharmony_ci- info.interfaceName = MallocCString(groupInfo.GetInterface()); 456f1549183Sopenharmony_ci- info.groupName = MallocCString(groupInfo.GetGroupName()); 457f1549183Sopenharmony_ci- info.goIpAddress = MallocCString(groupInfo.GetGoIpAddress()); 458f1549183Sopenharmony_ci- info.networkId = groupInfo.GetNetworkId(); 459f1549183Sopenharmony_ci- info.frequency = groupInfo.GetFrequency(); 460f1549183Sopenharmony_ci- info.clientSize = 0; 461f1549183Sopenharmony_ci- if (!groupInfo.IsClientDevicesEmpty()) { 462f1549183Sopenharmony_ci- const std::vector<OHOS::Wifi::WifiP2pDevice>& vecDevices = groupInfo.GetClientDevices(); 463f1549183Sopenharmony_ci- int64_t size = static_cast<int64_t>(vecDevices.size()); 464f1549183Sopenharmony_ci- info.clientDevices = static_cast<CWifiP2pDevice *>(malloc(sizeof(CWifiP2pDevice) * size)); 465f1549183Sopenharmony_ci- if (info.clientDevices != nullptr) { 466f1549183Sopenharmony_ci- info.clientSize = size; 467f1549183Sopenharmony_ci- uint32_t idx = 0; 468f1549183Sopenharmony_ci- for (auto& each : vecDevices) { 469f1549183Sopenharmony_ci- CWifiP2pDevice device; 470f1549183Sopenharmony_ci- DeviceInfo2Cj(each, device); 471f1549183Sopenharmony_ci- info.clientDevices[idx] = device; 472f1549183Sopenharmony_ci- idx++; 473f1549183Sopenharmony_ci- } 474f1549183Sopenharmony_ci- } 475f1549183Sopenharmony_ci- } 476f1549183Sopenharmony_ci+ if (code != WIFI_OPT_SUCCESS) { 477f1549183Sopenharmony_ci+ return code; 478f1549183Sopenharmony_ci+ } 479f1549183Sopenharmony_ci+ info.isP2pGo = groupInfo.IsGroupOwner(); 480f1549183Sopenharmony_ci+ DeviceInfo2Cj(groupInfo.GetOwner(), info.ownerInfo); 481f1549183Sopenharmony_ci+ info.passphrase = MallocCString(groupInfo.GetPassphrase()); 482f1549183Sopenharmony_ci+ info.interfaceName = MallocCString(groupInfo.GetInterface()); 483f1549183Sopenharmony_ci+ info.groupName = MallocCString(groupInfo.GetGroupName()); 484f1549183Sopenharmony_ci+ info.goIpAddress = MallocCString(groupInfo.GetGoIpAddress()); 485f1549183Sopenharmony_ci+ info.networkId = groupInfo.GetNetworkId(); 486f1549183Sopenharmony_ci+ info.frequency = groupInfo.GetFrequency(); 487f1549183Sopenharmony_ci+ info.clientSize = 0; 488f1549183Sopenharmony_ci+ info.clientDevices = nullptr; 489f1549183Sopenharmony_ci+ if (groupInfo.IsClientDevicesEmpty()) { 490f1549183Sopenharmony_ci+ return code; 491f1549183Sopenharmony_ci+ } 492f1549183Sopenharmony_ci+ const std::vector<OHOS::Wifi::WifiP2pDevice>& vecDevices = groupInfo.GetClientDevices(); 493f1549183Sopenharmony_ci+ int64_t size = static_cast<int64_t>(vecDevices.size()); 494f1549183Sopenharmony_ci+ info.clientDevices = static_cast<CWifiP2pDevice *>(malloc(sizeof(CWifiP2pDevice) * size)); 495f1549183Sopenharmony_ci+ if (info.clientDevices == nullptr) { 496f1549183Sopenharmony_ci+ return code; 497f1549183Sopenharmony_ci+ } 498f1549183Sopenharmony_ci+ info.clientSize = size; 499f1549183Sopenharmony_ci+ uint32_t idx = 0; 500f1549183Sopenharmony_ci+ for (auto& each : vecDevices) { 501f1549183Sopenharmony_ci+ CWifiP2pDevice device; 502f1549183Sopenharmony_ci+ DeviceInfo2Cj(each, device); 503f1549183Sopenharmony_ci+ info.clientDevices[idx] = device; 504f1549183Sopenharmony_ci+ idx++; 505f1549183Sopenharmony_ci } 506f1549183Sopenharmony_ci return code; 507f1549183Sopenharmony_ci } 508f1549183Sopenharmony_ci@@ -669,7 +706,8 @@ int32_t FfiWifiAddCandidateConfig(CWifiDeviceConfig cfg, int32_t &ret) 509f1549183Sopenharmony_ci config.wifiEapConfig.caCertPath = std::string(cfg.eapConfig.caPath); 510f1549183Sopenharmony_ci config.wifiEapConfig.clientCert = std::string(cfg.eapConfig.clientCertAlias); 511f1549183Sopenharmony_ci config.wifiEapConfig.privateKey = std::string(cfg.eapConfig.clientCertAlias); 512f1549183Sopenharmony_ci- config.wifiEapConfig.certEntry = std::vector<uint8_t>(cfg.eapConfig.certEntry.head, cfg.eapConfig.certEntry.head + cfg.eapConfig.certEntry.size); 513f1549183Sopenharmony_ci+ config.wifiEapConfig.certEntry = std::vector<uint8_t>(cfg.eapConfig.certEntry.head, 514f1549183Sopenharmony_ci+ cfg.eapConfig.certEntry.head + cfg.eapConfig.certEntry.size); 515f1549183Sopenharmony_ci if (strncpy_s(config.wifiEapConfig.certPassword, sizeof(config.wifiEapConfig.certPassword), 516f1549183Sopenharmony_ci cfg.eapConfig.certPassword, strlen(cfg.eapConfig.certPassword)) != EOK) { 517f1549183Sopenharmony_ci WIFI_LOGE("%{public}s: failed to copy", __func__); 518f1549183Sopenharmony_ci@@ -706,14 +744,13 @@ WifiDeviceConfigArr FfiWifiGetCandidateConfigs(int32_t &code) 519f1549183Sopenharmony_ci int64_t size = static_cast<int64_t>(vecDeviceConfigs.size()); 520f1549183Sopenharmony_ci if (code == WIFI_OPT_SUCCESS && size > 0) { 521f1549183Sopenharmony_ci WIFI_LOGI("Get candidate device configs size: %{public}zu", vecDeviceConfigs.size()); 522f1549183Sopenharmony_ci- // transform 523f1549183Sopenharmony_ci arr.head = static_cast<CWifiDeviceConfig *>(malloc(sizeof(CWifiDeviceConfig) * size)); 524f1549183Sopenharmony_ci if (arr.head == nullptr) { 525f1549183Sopenharmony_ci code = WIFI_OPT_FAILED; 526f1549183Sopenharmony_ci return arr; 527f1549183Sopenharmony_ci } 528f1549183Sopenharmony_ci arr.size = size; 529f1549183Sopenharmony_ci- for(int64_t i = 0; i < size; i++) { 530f1549183Sopenharmony_ci+ for (int64_t i = 0; i < size; i++) { 531f1549183Sopenharmony_ci CWifiDeviceConfig cfg; 532f1549183Sopenharmony_ci DeviceConfig2C(vecDeviceConfigs[i], cfg); 533f1549183Sopenharmony_ci arr.head[i] = cfg; 534f1549183Sopenharmony_ci@@ -739,6 +776,5 @@ int32_t FfiWifiWifiOff(char* type) 535f1549183Sopenharmony_ci } 536f1549183Sopenharmony_ci return CjEventRegister::GetInstance().UnRegister(eventType); 537f1549183Sopenharmony_ci } 538f1549183Sopenharmony_ci- 539f1549183Sopenharmony_ci } 540f1549183Sopenharmony_ci-} 541f1549183Sopenharmony_ci\ No newline at end of file 542f1549183Sopenharmony_ci+} //OHOS::Wifi 543f1549183Sopenharmony_ci\ No newline at end of file 544f1549183Sopenharmony_ci-- 545f1549183Sopenharmony_ci2.34.1 546f1549183Sopenharmony_ci 547