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 #include <gtest/gtest.h>
16 #include <servmgr_hdi.h>
17 #include "v1_0/iwlan_interface.h"
18 #include "wlan_callback_impl.h"
19 #include "wlan_impl.h"
20
21 #define HDF_LOG_TAG service_manager_test
22 using namespace testing::ext;
23
24 namespace HdiTest {
25 const int32_t WLAN_FREQ_MAX_NUM = 35;
26 const int32_t WLAN_TX_POWER = 160;
27 const int32_t DEFAULT_COMBO_SIZE = 6;
28 const int32_t WLAN_MAX_NUM_STA_WITH_AP = 4;
29 const uint32_t RESET_TIME = 20;
30 const uint32_t MEAS_CHANNEL_TIME = 10;
31 const char *WLAN_SERVICE_NAME = "wlan_interface_service";
32
33 class HdfWifiServiceCTest : public testing::Test {
34 public:
35 static void SetUpTestCase();
36 static void TearDownTestCase();
37 void SetUp();
38 void TearDown();
39 };
40
41 static struct IWlanInterface *g_wlanObj = nullptr;
42 struct IWlanCallback *g_wlanCallbackObj = nullptr;
SetUpTestCase()43 void HdfWifiServiceCTest::SetUpTestCase()
44 {
45 g_wlanObj = IWlanInterfaceGetInstance(WLAN_SERVICE_NAME, false);
46 g_wlanCallbackObj = WlanCallbackServiceGet();
47 ASSERT_TRUE(g_wlanObj != nullptr);
48 ASSERT_TRUE(g_wlanCallbackObj != nullptr);
49 }
50
TearDownTestCase()51 void HdfWifiServiceCTest::TearDownTestCase()
52 {
53 IWlanInterfaceReleaseInstance(WLAN_SERVICE_NAME, g_wlanObj, false);
54 WlanCallbackServiceRelease(g_wlanCallbackObj);
55 }
56
SetUp()57 void HdfWifiServiceCTest::SetUp()
58 {
59 int32_t rc = g_wlanObj->Start(g_wlanObj);
60 ASSERT_EQ(rc, HDF_SUCCESS);
61 }
62
TearDown()63 void HdfWifiServiceCTest::TearDown()
64 {
65 int32_t rc = g_wlanObj->Stop(g_wlanObj);
66 ASSERT_EQ(rc, HDF_SUCCESS);
67 }
68
69 /**
70 * @tc.name: GetSupportFeatureComboTest_001
71 * @tc.desc: Wifi hdi get support feature and combo function test
72 * @tc.type: FUNC
73 * @tc.require: AR000FRMJB
74 */
75 HWTEST_F(HdfWifiServiceCTest, GetSupportFeatureComboTest_001, TestSize.Level1)
76 {
77 uint8_t supType[PROTOCOL_80211_IFTYPE_NUM + 1] = {0};
78 uint32_t supTypeLen = PROTOCOL_80211_IFTYPE_NUM + 1;
79 uint64_t combo[DEFAULT_COMBO_SIZE] = {0};
80 uint32_t supTypeLenInvalid = 6;
81
82 int32_t rc = g_wlanObj->GetSupportFeature(g_wlanObj, supType, &supTypeLenInvalid);
83 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
84 rc = g_wlanObj->GetSupportFeature(g_wlanObj, supType, &supTypeLen);
85 ASSERT_EQ(rc, HDF_SUCCESS);
86 rc = g_wlanObj->GetSupportCombo(g_wlanObj, combo);
87 ASSERT_NE(rc, HDF_FAILURE);
88 }
89
90 /**
91 * @tc.name: CreateFeatureTest_002
92 * @tc.desc: Wifi hdi create feature function test
93 * @tc.type: FUNC
94 * @tc.require: AR000FRMJB
95 */
96 HWTEST_F(HdfWifiServiceCTest, CreateFeatureTest_002, TestSize.Level1)
97 {
98 struct HdfFeatureInfo ifeature;
99 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
100
101 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
102 ASSERT_EQ(rc, HDF_SUCCESS);
103 printf("ifname = %s\n", ifeature.ifName);
104 printf("type = %d\n", ifeature.type);
105 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
106 ASSERT_EQ(rc, HDF_SUCCESS);
107 }
108
109 /**
110 * @tc.name: GetFeatureByIfNameTest_003
111 * @tc.desc: Wifi hdi get feature by ifname function test
112 * @tc.type: FUNC
113 * @tc.require: AR000FRMJB
114 */
115 HWTEST_F(HdfWifiServiceCTest, GetFeatureByIfNameTest_003, TestSize.Level1)
116 {
117 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
118 struct HdfFeatureInfo ifeature;
119 const char *ifNameInvalid = "wlanTest";
120
121 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
122 ASSERT_EQ(rc, HDF_SUCCESS);
123 rc = g_wlanObj->GetFeatureByIfName(g_wlanObj, ifNameInvalid, &ifeature);
124 ASSERT_NE(rc, HDF_SUCCESS);
125 rc = g_wlanObj->GetFeatureByIfName(g_wlanObj, ifeature.ifName, &ifeature);
126 ASSERT_EQ(rc, HDF_SUCCESS);
127 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
128 ASSERT_EQ(rc, HDF_SUCCESS);
129 }
130
131 /**
132 * @tc.name: GetAssociatedStasTest_004
133 * @tc.desc: Wifi hdi get assoc stas function test
134 * @tc.type: FUNC
135 * @tc.require: AR000FRMJB
136 */
137 HWTEST_F(HdfWifiServiceCTest, GetAssociatedStasTest_004, TestSize.Level1)
138 {
139 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
140 struct HdfFeatureInfo ifeature;
141 struct HdfStaInfo staInfo[WLAN_MAX_NUM_STA_WITH_AP] = {{0}};
142 uint32_t staInfoLen = WLAN_MAX_NUM_STA_WITH_AP;
143 uint32_t num = 0;
144
145 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
146 ASSERT_EQ(rc, HDF_SUCCESS);
147 rc = g_wlanObj->GetAssociatedStas(g_wlanObj, &ifeature, staInfo, &staInfoLen, &num);
148 ASSERT_EQ(rc, HDF_SUCCESS);
149 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
150 ASSERT_EQ(rc, HDF_SUCCESS);
151 }
152
153 /**
154 * @tc.name: SetCountryCodeTest_005
155 * @tc.desc: Wifi hdi set country code function test
156 * @tc.type: FUNC
157 * @tc.require: AR000FRMJB
158 */
159 HWTEST_F(HdfWifiServiceCTest, SetCountryCodeTest_005, TestSize.Level1)
160 {
161 const char *code = "CN";
162 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
163 struct HdfFeatureInfo ifeature;
164 const char *codeDigital = "99";
165 uint32_t size = 2;
166
167 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
168 ASSERT_EQ(rc, HDF_SUCCESS);
169 rc = g_wlanObj->SetCountryCode(g_wlanObj, &ifeature, codeDigital, size);
170 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
171 ASSERT_TRUE(flag);
172 rc = g_wlanObj->SetCountryCode(g_wlanObj, &ifeature, code, size);
173 ASSERT_EQ(rc, HDF_SUCCESS);
174 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
175 ASSERT_EQ(rc, HDF_SUCCESS);
176 }
177
178 /**
179 * @tc.name: GetNetworkIfaceNameTest_006
180 * @tc.desc: Wifi hdi get network interface name function test on AP feature
181 * @tc.type: FUNC
182 * @tc.require: AR000FRMJB
183 */
184 HWTEST_F(HdfWifiServiceCTest, GetNetworkIfaceNameTest_006, TestSize.Level1)
185 {
186 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
187 struct HdfFeatureInfo ifeature;
188 char ifNames[IFNAMSIZ] = {0};
189
190 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
191 ASSERT_EQ(rc, HDF_SUCCESS);
192 rc = g_wlanObj->GetNetworkIfaceName(g_wlanObj, &ifeature, ifNames, IFNAMSIZ);
193 ASSERT_EQ(rc, HDF_SUCCESS);
194 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
195 ASSERT_EQ(rc, HDF_SUCCESS);
196 }
197
198 /**
199 * @tc.name: GetFeatureTypeTest_007
200 * @tc.desc: Wifi hdi get feature type function test on AP feature
201 * @tc.type: FUNC
202 * @tc.require: AR000FRMJB
203 */
204 HWTEST_F(HdfWifiServiceCTest, GetFeatureTypeTest_007, TestSize.Level1)
205 {
206 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
207 struct HdfFeatureInfo ifeature;
208 int32_t featureType;
209
210 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
211 ASSERT_EQ(rc, HDF_SUCCESS);
212 rc = g_wlanObj->GetFeatureType(g_wlanObj, &ifeature, &featureType);
213 ASSERT_EQ(rc, HDF_SUCCESS);
214 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
215 ASSERT_EQ(rc, HDF_SUCCESS);
216 }
217
218 /**
219 * @tc.name: SetMacAddressTest_008
220 * @tc.desc: Wifi hdi set mac addr function test on AP feature
221 * @tc.type: FUNC
222 * @tc.require: AR000FRMJB
223 */
224 HWTEST_F(HdfWifiServiceCTest, SetMacAddressTest_008, TestSize.Level1)
225 {
226 uint8_t mac[ETH_ADDR_LEN] = {0x12, 0x34, 0x56, 0x78, 0xab, 0xcd};
227 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
228 struct HdfFeatureInfo ifeature;
229 uint32_t macLen = ETH_ADDR_LEN;
230 uint8_t errorMac[ETH_ADDR_LEN] = {0x11, 0x34, 0x56, 0x78, 0xab, 0xcd};
231
232 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
233 ASSERT_EQ(rc, HDF_SUCCESS);
234 rc = g_wlanObj->SetMacAddress(g_wlanObj, &ifeature, errorMac, macLen);
235 ASSERT_NE(rc, HDF_SUCCESS);
236 rc = g_wlanObj->SetMacAddress(g_wlanObj, &ifeature, mac, macLen);
237 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT || rc == HDF_ERR_DEVICE_BUSY);
238 ASSERT_TRUE(flag);
239 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
240 ASSERT_EQ(rc, HDF_SUCCESS);
241 }
242
243 /**
244 * @tc.name: GetDeviceMacAddressTest_009
245 * @tc.desc: Wifi hdi get device mac addr function test on AP feature
246 * @tc.type: FUNC
247 * @tc.require: AR000FRMJB
248 */
249 HWTEST_F(HdfWifiServiceCTest, GetDeviceMacAddressTest_009, TestSize.Level1)
250 {
251 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
252 struct HdfFeatureInfo ifeature;
253 uint8_t mac[ETH_ADDR_LEN] = {0};
254 uint32_t macLen = ETH_ADDR_LEN;
255
256 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
257 ASSERT_EQ(rc, HDF_SUCCESS);
258 rc = g_wlanObj->GetDeviceMacAddress(g_wlanObj, &ifeature, mac, &macLen, ETH_ADDR_LEN);
259 ASSERT_EQ(rc, HDF_SUCCESS);
260 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
261 ASSERT_EQ(rc, HDF_SUCCESS);
262 }
263
264 /**
265 * @tc.name: GetFreqsWithBandTest_010
266 * @tc.desc: Wifi hdi get freqs function test on AP feature
267 * @tc.type: FUNC
268 * @tc.require: AR000FRMJB
269 */
270 HWTEST_F(HdfWifiServiceCTest, GetFreqsWithBandTest_010, TestSize.Level1)
271 {
272 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
273 struct HdfFeatureInfo ifeature;
274 struct HdfWifiInfo wifiInfo;
275 int32_t freq[WLAN_FREQ_MAX_NUM] = {0};
276 uint32_t freqLen = WLAN_FREQ_MAX_NUM ;
277 wifiInfo.band = IEEE80211_BAND_2GHZ;
278 wifiInfo.size = WLAN_FREQ_MAX_NUM;
279 struct HdfWifiInfo wifiInfoInvalid;
280 wifiInfoInvalid.band = IEEE80211_NUM_BANDS;
281 wifiInfoInvalid.size = WLAN_FREQ_MAX_NUM;
282 uint32_t i;
283
284 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
285 ASSERT_EQ(rc, HDF_SUCCESS);
286 rc = g_wlanObj->GetFreqsWithBand(g_wlanObj, &ifeature, &wifiInfoInvalid, freq, &freqLen);
287 ASSERT_NE(rc, HDF_SUCCESS);
288 rc = g_wlanObj->GetFreqsWithBand(g_wlanObj, &ifeature, &wifiInfo, freq, &freqLen);
289 ASSERT_EQ(rc, HDF_SUCCESS);
290 if (rc == HDF_SUCCESS) {
291 for (i = 0; i < freqLen; i++) {
292 printf("%s: freq[%d] = %d\n", __func__, i, freq[i]);
293 }
294 }
295
296 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
297 ASSERT_EQ(rc, HDF_SUCCESS);
298 }
299
300 /**
301 * @tc.name: SetTxPowerTest_011
302 * @tc.desc: Wifi hdi set tx power function test on AP feature
303 * @tc.type: FUNC
304 * @tc.require: AR000FRMJB
305 */
306 HWTEST_F(HdfWifiServiceCTest, SetTxPowerTest_011, TestSize.Level1)
307 {
308 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
309 struct HdfFeatureInfo ifeature;
310 int32_t power = WLAN_TX_POWER;
311
312 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
313 ASSERT_EQ(rc, HDF_SUCCESS);
314 rc = g_wlanObj->SetTxPower(g_wlanObj, &ifeature, power);
315 ASSERT_EQ(rc, HDF_SUCCESS);
316 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
317 ASSERT_EQ(rc, HDF_SUCCESS);
318 }
319
320 /**
321 * @tc.name: GetChipIdTest_012
322 * @tc.desc: Wifi hdi get chip id function test on STA feature
323 * @tc.type: FUNC
324 * @tc.require: AR000FRMJB
325 */
326 HWTEST_F(HdfWifiServiceCTest, GetChipIdTest_012, TestSize.Level1)
327 {
328 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
329 struct HdfFeatureInfo ifeature;
330 uint8_t chipId = 0;
331 uint8_t chipIdInvalid = 100;
332 unsigned int num = 0;
333 char ifNames[IFNAMSIZ] = {0};
334
335 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
336 ASSERT_EQ(rc, HDF_SUCCESS);
337 rc = g_wlanObj->GetChipId(g_wlanObj, &ifeature, &chipId);
338 ASSERT_EQ(rc, HDF_SUCCESS);
339 rc = g_wlanObj->GetIfNamesByChipId(g_wlanObj, chipIdInvalid, ifNames, IFNAMSIZ, &num);
340 ASSERT_NE(rc, HDF_SUCCESS);
341 rc = g_wlanObj->GetIfNamesByChipId(g_wlanObj, chipId, ifNames, IFNAMSIZ, &num);
342 printf("ifnames = %s\n", ifNames);
343 ASSERT_EQ(rc, HDF_SUCCESS);
344 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
345 ASSERT_EQ(rc, HDF_SUCCESS);
346 }
347
348 /**
349 * @tc.name: SetScanningMacAddressTest_013
350 * @tc.desc: Wifi hdi set scanning mac addr function test
351 * @tc.type: FUNC
352 * @tc.require: AR000FRMJB
353 */
354 HWTEST_F(HdfWifiServiceCTest, SetScanningMacAddressTest_013, TestSize.Level1)
355 {
356 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
357 struct HdfFeatureInfo ifeature;
358 uint8_t scanMac[ETH_ADDR_LEN] = {0x12, 0x34, 0x56, 0x78, 0xab, 0xcd};
359 uint32_t macLen = ETH_ADDR_LEN;
360
361 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
362 ASSERT_EQ(rc, HDF_SUCCESS);
363 rc = g_wlanObj->SetScanningMacAddress(g_wlanObj, &ifeature, scanMac, macLen);
364 ASSERT_NE(rc, HDF_FAILURE);
365 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
366 ASSERT_EQ(rc, HDF_SUCCESS);
367 }
368
369 /**
370 * @tc.name: GetNetdevInfoTest_014
371 * @tc.desc: Wifi hdi get netdev info function test
372 * @tc.type: FUNC
373 * @tc.require: AR000FRMJB
374 */
375 HWTEST_F(HdfWifiServiceCTest, GetNetdevInfoTest_014, TestSize.Level1)
376 {
377 int32_t rc;
378 struct HdfNetDeviceInfoResult netDeviceInfoResult;
379
380 (void)memset_s(
381 &netDeviceInfoResult, sizeof(struct HdfNetDeviceInfoResult), 0, sizeof(struct HdfNetDeviceInfoResult));
382 rc = g_wlanObj->GetNetDevInfo(g_wlanObj, (struct HdfNetDeviceInfoResult *)&netDeviceInfoResult);
383 ASSERT_EQ(rc, HDF_SUCCESS);
384 }
385
386 /**
387 * @tc.name: GetPowerModeTest_015
388 * @tc.desc: Wifi hdi get power mode function test
389 * @tc.type: FUNC
390 * @tc.require: AR000H60O7
391 */
392 HWTEST_F(HdfWifiServiceCTest, GetPowerModeTest_015, TestSize.Level1)
393 {
394 struct HdfFeatureInfo ifeature;
395 uint8_t mode = 0;
396
397 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_AP, &ifeature);
398 ASSERT_EQ(rc, HDF_SUCCESS);
399 rc = g_wlanObj->GetPowerMode(g_wlanObj, &ifeature, &mode);
400 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
401 ASSERT_TRUE(flag);
402 printf("mode = 0x%02x\n", mode);
403 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
404 ASSERT_EQ(rc, HDF_SUCCESS);
405 }
406
407 /**
408 * @tc.name: SetPowerModeTest_016
409 * @tc.desc: Wifi hdi set power mode function test
410 * @tc.type: FUNC
411 * @tc.require: AR000H60O7
412 */
413 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_016, TestSize.Level1)
414 {
415 struct HdfFeatureInfo ifeature;
416 uint8_t mode = WIFI_POWER_MODE_SLEEPING;
417
418 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_AP, &ifeature);
419 ASSERT_EQ(rc, HDF_SUCCESS);
420 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
421 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
422 ASSERT_TRUE(flag);
423 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
424 ASSERT_EQ(rc, HDF_SUCCESS);
425 }
426
427 /**
428 * @tc.name: RegisterEventCallbackTest_017
429 * @tc.desc: Wifi hdi register event call back function test
430 * @tc.type: FUNC
431 * @tc.require: AR000FRMJB
432 */
433 HWTEST_F(HdfWifiServiceCTest, RegisterEventCallbackTest_017, TestSize.Level1)
434 {
435 const char *ifName = "wlan0";
436 int32_t rc = g_wlanObj->RegisterEventCallback(g_wlanObj, g_wlanCallbackObj, ifName);
437 ASSERT_EQ(rc, HDF_SUCCESS);
438 }
439
440 /**
441 * @tc.name: ResetDriverTest_018
442 * @tc.desc: Wifi hdi reset driver function test
443 * @tc.type: FUNC
444 * @tc.require: AR000FRMJB
445 */
446 HWTEST_F(HdfWifiServiceCTest, ResetDriverTest_018, TestSize.Level1)
447 {
448 int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
449 struct HdfFeatureInfo ifeature;
450 const char *ifName = "wlan0";
451 uint8_t chipId = 0;
452 int32_t rc;
453
454 rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
455 ASSERT_EQ(rc, HDF_SUCCESS);
456 rc = g_wlanObj->GetChipId(g_wlanObj, &ifeature, &chipId);
457 ASSERT_EQ(rc, HDF_SUCCESS);
458 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
459 ASSERT_EQ(rc, HDF_SUCCESS);
460 rc = g_wlanObj->ResetDriver(g_wlanObj, chipId, ifName);
461 ASSERT_EQ(rc, HDF_SUCCESS);
462 sleep(RESET_TIME);
463 }
464
465 /**
466 * @tc.name: StartScanTest_019
467 * @tc.desc: Wifi hdi start scan function test
468 * @tc.type: FUNC
469 * @tc.require: AR000FRMJB
470 */
471 HWTEST_F(HdfWifiServiceCTest, StartScanTest_019, TestSize.Level1)
472 {
473 int32_t rc;
474 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
475 struct HdfFeatureInfo ifeature;
476 struct HdfWifiScan scan = {0};
477
478 rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
479 ASSERT_EQ(rc, HDF_SUCCESS);
480 rc = g_wlanObj->StartScan(g_wlanObj, &ifeature, &scan);
481 ASSERT_EQ(rc, HDF_SUCCESS);
482 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
483 ASSERT_EQ(rc, HDF_SUCCESS);
484 sleep(10);
485 }
486
487 /**
488 * @tc.name: UnregisterEventCallbackTest_020
489 * @tc.desc: Wifi hdi unreister event call back function test
490 * @tc.type: FUNC
491 * @tc.require: AR000FRMJB
492 */
493 HWTEST_F(HdfWifiServiceCTest, UnregisterEventCallbackTest_020, TestSize.Level1)
494 {
495 const char *ifName = "wlan0";
496 int32_t rc = g_wlanObj->UnregisterEventCallback(g_wlanObj, g_wlanCallbackObj, ifName);
497 ASSERT_EQ(rc, HDF_SUCCESS);
498 }
499 /**
500 * @tc.name: CreateFeatureTest_021
501 * @tc.desc: Wifi hdi create feature function test
502 * @tc.type: FUNC
503 * @tc.require: AR000H603L
504 */
505 HWTEST_F(HdfWifiServiceCTest, CreateFeatureTest_021, TestSize.Level1)
506 {
507 struct HdfFeatureInfo ifeature;
508 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
509 int32_t wlanTypeInvalid = PROTOCOL_80211_IFTYPE_NUM;
510
511 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanTypeInvalid, &ifeature);
512 ASSERT_EQ(rc, HDF_FAILURE);
513 rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
514 ASSERT_EQ(rc, HDF_SUCCESS);
515 printf("ifname = %s\n", ifeature.ifName);
516 printf("type = %d\n", ifeature.type);
517 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
518 ASSERT_EQ(rc, HDF_SUCCESS);
519 }
520
521 /**
522 * @tc.name: GetChipIdTest_022
523 * @tc.desc: Wifi hdi get chip id function test
524 * @tc.type: FUNC
525 * @tc.require: AR000H603L
526 */
527 HWTEST_F(HdfWifiServiceCTest, GetChipIdTest_022, TestSize.Level1)
528 {
529 const int32_t wlanType = PROTOCOL_80211_IFTYPE_AP;
530 struct HdfFeatureInfo ifeature;
531 uint8_t chipId = 0;
532
533 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
534 ASSERT_EQ(rc, HDF_SUCCESS);
535 rc = g_wlanObj->GetChipId(g_wlanObj, &ifeature, &chipId);
536 ASSERT_EQ(rc, HDF_SUCCESS);
537 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
538 ASSERT_EQ(rc, HDF_SUCCESS);
539 }
540
541 /**
542 * @tc.name: GetDeviceMacAddressTest_023
543 * @tc.desc: Wifi hdi get device mac addr function test on STA feature
544 * @tc.type: FUNC
545 * @tc.require: AR000H603L
546 */
547 HWTEST_F(HdfWifiServiceCTest, GetDeviceMacAddressTest_023, TestSize.Level1)
548 {
549 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
550 struct HdfFeatureInfo ifeature;
551 uint8_t mac[ETH_ADDR_LEN] = {0};
552 uint32_t macLen = ETH_ADDR_LEN;
553
554 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
555 ASSERT_EQ(rc, HDF_SUCCESS);
556 rc = g_wlanObj->GetDeviceMacAddress(g_wlanObj, &ifeature, mac, &macLen, ETH_ADDR_LEN);
557 ASSERT_EQ(rc, HDF_SUCCESS);
558 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
559 ASSERT_EQ(rc, HDF_SUCCESS);
560 }
561
562 /**
563 * @tc.name: GetFeatureByIfNameTest_024
564 * @tc.desc: Wifi hdi get feature by ifname function test
565 * @tc.type: FUNC
566 * @tc.require: AR000H603L
567 */
568 HWTEST_F(HdfWifiServiceCTest, GetFeatureByIfNameTest_024, TestSize.Level1)
569 {
570 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
571 struct HdfFeatureInfo ifeature;
572 const char *ifNameInvalid = "wlanTest";
573
574 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
575 ASSERT_EQ(rc, HDF_SUCCESS);
576 rc = g_wlanObj->GetFeatureByIfName(g_wlanObj, ifNameInvalid, &ifeature);
577 ASSERT_NE(rc, HDF_SUCCESS);
578 rc = g_wlanObj->GetFeatureByIfName(g_wlanObj, ifeature.ifName, &ifeature);
579 ASSERT_EQ(rc, HDF_SUCCESS);
580 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
581 ASSERT_EQ(rc, HDF_SUCCESS);
582 }
583
584 /**
585 * @tc.name: SetMacAddressTest_025
586 * @tc.desc: Wifi hdi set mac addr function test on STA feature
587 * @tc.type: FUNC
588 * @tc.require: AR000H603L
589 */
590 HWTEST_F(HdfWifiServiceCTest, SetMacAddressTest_025, TestSize.Level1)
591 {
592 uint8_t mac[ETH_ADDR_LEN] = {0x12, 0x34, 0x56, 0x78, 0xab, 0xcd};
593 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
594 struct HdfFeatureInfo ifeature;
595 uint32_t macLen = ETH_ADDR_LEN;
596 uint8_t errorMac[ETH_ADDR_LEN] = {0x11, 0x34, 0x56, 0x78, 0xab, 0xcd};
597
598 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
599 ASSERT_EQ(rc, HDF_SUCCESS);
600 rc = g_wlanObj->SetMacAddress(g_wlanObj, &ifeature, errorMac, macLen);
601 ASSERT_NE(rc, HDF_SUCCESS);
602 rc = g_wlanObj->SetMacAddress(g_wlanObj, &ifeature, mac, macLen);
603 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT || rc == HDF_ERR_DEVICE_BUSY);
604 ASSERT_TRUE(flag);
605 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
606 ASSERT_EQ(rc, HDF_SUCCESS);
607 }
608
609 /**
610 * @tc.name: GetPowerModeTest_026
611 * @tc.desc: Wifi hdi get power mode function test
612 * @tc.type: FUNC
613 * @tc.require: AR000H603L
614 */
615 HWTEST_F(HdfWifiServiceCTest, GetPowerModeTest_026, TestSize.Level1)
616 {
617 struct HdfFeatureInfo ifeature;
618 uint8_t mode = 0;
619
620 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_STATION, &ifeature);
621 ASSERT_EQ(rc, HDF_SUCCESS);
622 rc = g_wlanObj->GetPowerMode(g_wlanObj, &ifeature, &mode);
623 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
624 ASSERT_TRUE(flag);
625 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
626 ASSERT_EQ(rc, HDF_SUCCESS);
627 }
628
629 /**
630 * @tc.name: SetPowerModeTest_027
631 * @tc.desc: Wifi hdi set power mode function test
632 * @tc.type: FUNC
633 * @tc.require: AR000H603L
634 */
635 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_027, TestSize.Level1)
636 {
637 struct HdfFeatureInfo ifeature;
638 uint8_t mode = WIFI_POWER_MODE_GENERAL;
639
640 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_AP, &ifeature);
641 ASSERT_EQ(rc, HDF_SUCCESS);
642 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
643 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
644 ASSERT_TRUE(flag);
645 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
646 ASSERT_EQ(rc, HDF_SUCCESS);
647 }
648
649 /**
650 * @tc.name: SetPowerModeTest_028
651 * @tc.desc: Wifi hdi set power mode function test
652 * @tc.type: FUNC
653 * @tc.require: AR000H603L
654 */
655 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_028, TestSize.Level1)
656 {
657 struct HdfFeatureInfo ifeature;
658 uint8_t mode = WIFI_POWER_MODE_THROUGH_WALL;
659
660 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_AP, &ifeature);
661 ASSERT_EQ(rc, HDF_SUCCESS);
662 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
663 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
664 ASSERT_TRUE(flag);
665 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
666 ASSERT_EQ(rc, HDF_SUCCESS);
667 }
668
669 /**
670 * @tc.name: SetPowerModeTest_029
671 * @tc.desc: Wifi hdi set power mode function test
672 * @tc.type: FUNC
673 * @tc.require: AR000H603L
674 */
675 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_029, TestSize.Level1)
676 {
677 struct HdfFeatureInfo ifeature;
678 uint8_t mode = WIFI_POWER_MODE_NUM;
679
680 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_AP, &ifeature);
681 ASSERT_EQ(rc, HDF_SUCCESS);
682 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
683 ASSERT_NE(rc, HDF_SUCCESS);
684 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
685 ASSERT_EQ(rc, HDF_SUCCESS);
686 }
687
688 /**
689 * @tc.name: SetPowerModeTest_30
690 * @tc.desc: Wifi hdi set power mode function test
691 * @tc.type: FUNC
692 * @tc.require: AR000H603L
693 */
694 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_030, TestSize.Level1)
695 {
696 struct HdfFeatureInfo ifeature;
697 uint8_t mode = WIFI_POWER_MODE_SLEEPING;
698
699 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_STATION, &ifeature);
700 ASSERT_EQ(rc, HDF_SUCCESS);
701 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
702 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
703 ASSERT_TRUE(flag);
704 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
705 ASSERT_EQ(rc, HDF_SUCCESS);
706 }
707
708 /**
709 * @tc.name: SetPowerModeTest_031
710 * @tc.desc: Wifi hdi set power mode function test
711 * @tc.type: FUNC
712 * @tc.require: AR000H603L
713 */
714 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_031, TestSize.Level1)
715 {
716 struct HdfFeatureInfo ifeature;
717 uint8_t mode = WIFI_POWER_MODE_GENERAL;
718
719 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_STATION, &ifeature);
720 ASSERT_EQ(rc, HDF_SUCCESS);
721 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
722 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
723 ASSERT_TRUE(flag);
724 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
725 ASSERT_EQ(rc, HDF_SUCCESS);
726 }
727
728 /**
729 * @tc.name: SetPowerModeTest_032
730 * @tc.desc: Wifi hdi set power mode function test
731 * @tc.type: FUNC
732 * @tc.require: AR000H603L
733 */
734 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_032, TestSize.Level1)
735 {
736 struct HdfFeatureInfo ifeature;
737 uint8_t mode = WIFI_POWER_MODE_THROUGH_WALL;
738
739 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_STATION, &ifeature);
740 ASSERT_EQ(rc, HDF_SUCCESS);
741 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
742 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
743 ASSERT_TRUE(flag);
744 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
745 ASSERT_EQ(rc, HDF_SUCCESS);
746 }
747
748 /**
749 * @tc.name: SetPowerModeTest_033
750 * @tc.desc: Wifi hdi set power mode function test
751 * @tc.type: FUNC
752 * @tc.require: AR000H603L
753 */
754 HWTEST_F(HdfWifiServiceCTest, SetPowerModeTest_033, TestSize.Level1)
755 {
756 struct HdfFeatureInfo ifeature;
757 uint8_t mode = WIFI_POWER_MODE_NUM;
758
759 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, PROTOCOL_80211_IFTYPE_STATION, &ifeature);
760 ASSERT_EQ(rc, HDF_SUCCESS);
761 rc = g_wlanObj->SetPowerMode(g_wlanObj, &ifeature, mode);
762 ASSERT_NE(rc, HDF_SUCCESS);
763 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
764 ASSERT_EQ(rc, HDF_SUCCESS);
765 }
766
767 /**
768 * @tc.name: StartChannelMeasTest_034
769 * @tc.desc: Wifi hdi start channel meas and get meas result function test
770 * @tc.type: FUNC
771 * @tc.require: AR000H603J
772 */
773 HWTEST_F(HdfWifiServiceCTest, StartChannelMeasTest_034, TestSize.Level1)
774 {
775 const char *ifName = "wlan0";
776 struct MeasChannelParam measChannelParam;
777 struct MeasChannelResult measChannelResult = {0};
778
779 measChannelParam.channelId = 1;
780 measChannelParam.measTime = 15;
781 int32_t rc = g_wlanObj->StartChannelMeas(g_wlanObj, ifName, &measChannelParam);
782 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
783 ASSERT_TRUE(flag);
784 sleep(MEAS_CHANNEL_TIME);
785 rc = g_wlanObj->GetChannelMeasResult(g_wlanObj, ifName, &measChannelResult);
786 flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT || rc == HDF_DEV_ERR_NODATA);
787 ASSERT_TRUE(flag);
788 }
789
790 /**
791 * @tc.name: SetProjectionScreenParam_035
792 * @tc.desc: Wifi hdi set paramters to optimize projectino screen function test
793 * @tc.type: FUNC
794 * @tc.require: AR000HDUEE
795 */
796 HWTEST_F(HdfWifiServiceCTest, SetProjectionScreenParam_035, TestSize.Level1)
797 {
798 const char *ifName = "wlan0";
799 int32_t rc;
800 struct ProjectionScreenCmdParam param;
801 int8_t data = 0;
802 param.buf = &data;
803 param.bufLen = sizeof(data);
804
805 for (int i = CMD_CLOSE_GO_CAC; i <= CMD_ID_CTRL_ROAM_CHANNEL; i++) {
806 param.cmdId = i;
807 rc = g_wlanObj->SetProjectionScreenParam(g_wlanObj, ifName, ¶m);
808 bool flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
809 ASSERT_TRUE(flag);
810 }
811 }
812
813 /**
814 * @tc.name: SendCmdIoctl_036
815 * @tc.desc: Wifi hdi send ioctl command function test
816 * @tc.type: FUNC
817 * @tc.require: AR000HDUEE
818 */
819 HWTEST_F(HdfWifiServiceCTest, SendCmdIoctl_036, TestSize.Level1)
820 {
821 const char *ifName = "wlan0";
822 int32_t rc;
823 bool flag;
824
825 uint8_t deviceType = 5;
826 rc = g_wlanObj->WifiSendCmdIoctl(g_wlanObj, ifName, CMD_HID2D_MODULE_INIT, (const int8_t *)&deviceType,
827 sizeof(deviceType));
828 flag = ((rc == HDF_SUCCESS) || (rc == HDF_ERR_NOT_SUPPORT));
829 ASSERT_TRUE(flag);
830
831 uint8_t batterylevel = 50;
832 rc = g_wlanObj->WifiSendCmdIoctl(g_wlanObj, ifName, CMD_SET_BATTERY_LEVEL, (const int8_t *)&batterylevel,
833 sizeof(batterylevel));
834 flag = ((rc == HDF_SUCCESS) || (rc == HDF_ERR_NOT_SUPPORT));
835 ASSERT_TRUE(flag);
836
837 struct AdjustChannelInfo chanInfo;
838 chanInfo.msgId = 5;
839 chanInfo.chanNumber = 36;
840 chanInfo.bandwidth = 80;
841 chanInfo.switchType = 0;
842 rc = g_wlanObj->WifiSendCmdIoctl(g_wlanObj, ifName, CMD_SET_CHAN_ADJUST, (const int8_t *)&chanInfo,
843 sizeof(chanInfo));
844 flag = ((rc == HDF_SUCCESS) || (rc == HDF_ERR_NOT_SUPPORT));
845 ASSERT_TRUE(flag);
846 }
847
848 /**
849 * @tc.name: GetStaInfo_037
850 * @tc.desc: Wifi hdi get station information function test
851 * @tc.type: FUNC
852 * @tc.require:
853 */
854 HWTEST_F(HdfWifiServiceCTest, GetStaInfo_037, TestSize.Level1)
855 {
856 const char *ifName = "wlan0";
857 int32_t rc;
858 struct WifiStationInfo info;
859 bool flag;
860 uint8_t mac[ETH_ADDR_LEN] = {0};
861
862 rc = g_wlanObj->GetStaInfo(g_wlanObj, ifName, &info, mac, ETH_ADDR_LEN);
863 flag = (rc == HDF_SUCCESS || rc == HDF_ERR_NOT_SUPPORT);
864 ASSERT_TRUE(flag);
865 }
866
867 /**
868 * @tc.name: GetFeatureTypeTest_038
869 * @tc.desc: Wifi hdi get feature type function test on STA feature
870 * @tc.type: FUNC
871 * @tc.require:
872 */
873 HWTEST_F(HdfWifiServiceCTest, GetFeatureTypeTest_038, TestSize.Level1)
874 {
875 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
876 struct HdfFeatureInfo ifeature;
877 int32_t featureType;
878
879 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
880 ASSERT_EQ(rc, HDF_SUCCESS);
881 rc = g_wlanObj->GetFeatureType(g_wlanObj, &ifeature, &featureType);
882 ASSERT_EQ(rc, HDF_SUCCESS);
883 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
884 ASSERT_EQ(rc, HDF_SUCCESS);
885 }
886
887 /**
888 * @tc.name: GetFreqsWithBandTest_039
889 * @tc.desc: Wifi hdi get freqs function test on STA feature
890 * @tc.type: FUNC
891 * @tc.require:
892 */
893 HWTEST_F(HdfWifiServiceCTest, GetFreqsWithBandTest_039, TestSize.Level1)
894 {
895 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
896 struct HdfFeatureInfo ifeature;
897 struct HdfWifiInfo wifiInfo;
898 int32_t freq[WLAN_FREQ_MAX_NUM] = {0};
899 uint32_t freqLen = WLAN_FREQ_MAX_NUM;
900 wifiInfo.band = IEEE80211_BAND_2GHZ;
901 wifiInfo.size = WLAN_FREQ_MAX_NUM;
902 uint32_t i;
903
904 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
905 ASSERT_EQ(rc, HDF_SUCCESS);
906 rc = g_wlanObj->GetFreqsWithBand(g_wlanObj, &ifeature, &wifiInfo, freq, &freqLen);
907 ASSERT_EQ(rc, HDF_SUCCESS);
908 if (rc == HDF_SUCCESS) {
909 for (i = 0; i < freqLen; i++) {
910 printf("%s: freq[%d] = %d\n", __func__, i, freq[i]);
911 }
912 }
913
914 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
915 ASSERT_EQ(rc, HDF_SUCCESS);
916 }
917
918 /**
919 * @tc.name: GetNetworkIfaceNameTest_040
920 * @tc.desc: Wifi hdi get network interface name function test on STA feature
921 * @tc.type: FUNC
922 * @tc.require:
923 */
924 HWTEST_F(HdfWifiServiceCTest, GetNetworkIfaceNameTest_040, TestSize.Level1)
925 {
926 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
927 struct HdfFeatureInfo ifeature;
928 char ifNames[IFNAMSIZ] = {0};
929
930 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
931 ASSERT_EQ(rc, HDF_SUCCESS);
932 rc = g_wlanObj->GetNetworkIfaceName(g_wlanObj, &ifeature, ifNames, IFNAMSIZ);
933 ASSERT_EQ(rc, HDF_SUCCESS);
934 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
935 ASSERT_EQ(rc, HDF_SUCCESS);
936 }
937
938 /**
939 * @tc.name: SetTxPowerTest_041
940 * @tc.desc: Wifi hdi set tx power function test on STA feature
941 * @tc.type: FUNC
942 * @tc.require:
943 */
944 HWTEST_F(HdfWifiServiceCTest, SetTxPowerTest_041, TestSize.Level1)
945 {
946 const int32_t wlanType = PROTOCOL_80211_IFTYPE_STATION;
947 struct HdfFeatureInfo ifeature;
948 int32_t power = WLAN_TX_POWER;
949
950 int32_t rc = g_wlanObj->CreateFeature(g_wlanObj, wlanType, &ifeature);
951 ASSERT_EQ(rc, HDF_SUCCESS);
952 rc = g_wlanObj->SetTxPower(g_wlanObj, &ifeature, power);
953 ASSERT_EQ(rc, HDF_SUCCESS);
954 rc = g_wlanObj->DestroyFeature(g_wlanObj, &ifeature);
955 ASSERT_EQ(rc, HDF_SUCCESS);
956 }
957 };
958