• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, &param);
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