1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include <securec.h>
16 #include <hdf_base.h>
17 #include <hdf_log.h>
18 #include <osal_time.h>
19 #include <osal_mem.h>
20 #include "v1_1/iwpa_callback.h"
21 #include "v1_1/iwpa_interface.h"
22 #include "wpa_common_cmd.h"
23 #include "wpa_p2p_cmd.h"
24 #include "wpa_impl.h"
25 
26 struct WpaInterfaceService {
27     struct IWpaInterface interface;
28 };
29 
WpaInterfaceImplGetInstance(void)30 struct IWpaInterface *WpaInterfaceImplGetInstance(void)
31 {
32     struct WpaInterfaceService *service = (struct WpaInterfaceService *)OsalMemCalloc(
33         sizeof(struct WpaInterfaceService));
34     if (service == NULL) {
35         HDF_LOGE("%{public}s: malloc WpaInterfaceService obj failed!", __func__);
36         return NULL;
37     }
38 
39     service->interface.Start = WpaInterfaceStart;
40     service->interface.Stop = WpaInterfaceStop;
41     service->interface.AddWpaIface = WpaInterfaceAddWpaIface;
42     service->interface.RemoveWpaIface = WpaInterfaceRemoveWpaIface;
43     service->interface.Scan = WpaInterfaceScan;
44     service->interface.ScanResult= WpaInterfaceScanResult;
45     service->interface.AddNetwork = WpaInterfaceAddNetwork;
46     service->interface.RemoveNetwork = WpaInterfaceRemoveNetwork;
47     service->interface.DisableNetwork = WpaInterfaceDisableNetwork;
48     service->interface.SetNetwork = WpaInterfaceSetNetwork;
49     service->interface.ListNetworks = WpaInterfaceListNetworks;
50     service->interface.SelectNetwork = WpaInterfaceSelectNetwork;
51     service->interface.EnableNetwork = WpaInterfaceEnableNetwork;
52     service->interface.Reconnect = WpaInterfaceReconnect;
53     service->interface.Disconnect = WpaInterfaceDisconnect;
54     service->interface.SetPowerSave = WpaInterfaceSetPowerSave;
55     service->interface.AutoConnect = WpaInterfaceAutoConnect;
56     service->interface.WifiStatus  = WpaInterfaceWifiStatus;
57     service->interface.SaveConfig = WpaInterfaceSaveConfig;
58     service->interface.WpsPbcMode = WpaInterfaceWpsPbcMode;
59     service->interface.WpsPinMode = WpaInterfaceWpsPinMode;
60     service->interface.WpsCancel = WpaInterfaceWpsCancel;
61     service->interface.GetCountryCode = WpaInterfaceGetCountryCode;
62     service->interface.GetNetwork = WpaInterfaceGetNetwork;
63     service->interface.BlocklistClear = WpaInterfaceBlocklistClear;
64     service->interface.SetSuspendMode = WpaInterfaceSetSuspendMode;
65     service->interface.RegisterEventCallback = WpaInterfaceRegisterEventCallback;
66     service->interface.UnregisterEventCallback = WpaInterfaceUnregisterEventCallback;
67     service->interface.RegisterWpaEventCallback = WpaInterfaceRegisterEventCallback;
68     service->interface.UnregisterWpaEventCallback = WpaInterfaceUnregisterEventCallback;
69     service->interface.GetConnectionCapabilities = WpaInterfaceGetConnectionCapabilities;
70     service->interface.GetScanSsid = WpaInterfaceGetScanSsid;
71     service->interface.GetPskPassphrase = WpaInterfaceGetPskPassphrase;
72     service->interface.GetPsk = WpaInterfaceGetPsk;
73     service->interface.GetWepKey = WpaInterfaceGetWepKey;
74     service->interface.GetWepTxKeyIdx = WpaInterfaceGetWepTxKeyIdx;
75     service->interface.GetRequirePmf = WpaInterfaceGetRequirePmf;
76     service->interface.SetCountryCode = WpaInterfaceSetCountryCode;
77     service->interface.Reassociate = WpaInterfaceReassociate;
78     service->interface.StaShellCmd = WpaInterfaceStaShellCmd;
79 
80     service->interface.P2pSetSsidPostfixName = WpaInterfaceP2pSetSsidPostfixName;
81     service->interface.P2pSetWpsDeviceType = WpaInterfaceP2pSetWpsDeviceType;
82     service->interface.P2pSetWpsConfigMethods = WpaInterfaceP2pSetWpsConfigMethods;
83     service->interface.P2pSetGroupMaxIdle = WpaInterfaceP2pSetGroupMaxIdle;
84     service->interface.P2pSetWfdEnable = WpaInterfaceP2pSetWfdEnable;
85     service->interface.P2pSetPersistentReconnect = WpaInterfaceP2pSetPersistentReconnect;
86     service->interface.P2pSetWpsSecondaryDeviceType = WpaInterfaceP2pSetWpsSecondaryDeviceType;
87     service->interface.P2pSetupWpsPbc = WpaInterfaceP2pSetupWpsPbc;
88     service->interface.P2pSetupWpsPin = WpaInterfaceP2pSetupWpsPin;
89     service->interface.P2pSetPowerSave = WpaInterfaceP2pSetPowerSave;
90     service->interface.P2pSetDeviceName = WpaInterfaceP2pSetDeviceName;
91     service->interface.P2pSetWfdDeviceConfig = WpaInterfaceP2pSetWfdDeviceConfig;
92     service->interface.P2pSetRandomMac = WpaInterfaceP2pSetRandomMac;
93     service->interface.P2pStartFind = WpaInterfaceP2pStartFind;
94     service->interface.P2pSetExtListen = WpaInterfaceP2pSetExtListen;
95     service->interface.P2pSetListenChannel = WpaInterfaceP2pSetListenChannel;
96     service->interface.P2pProvisionDiscovery = WpaInterfaceP2pProvisionDiscovery;
97     service->interface.P2pAddGroup = WpaInterfaceP2pAddGroup;
98     service->interface.P2pAddService = WpaInterfaceP2pAddService;
99     service->interface.P2pRemoveService = WpaInterfaceP2pRemoveService;
100     service->interface.P2pStopFind = WpaInterfaceP2pStopFind;
101     service->interface.P2pFlush = WpaInterfaceP2pFlush;
102     service->interface.P2pFlushService = WpaInterfaceP2pFlushService;
103     service->interface.P2pRemoveNetwork = WpaInterfaceP2pRemoveNetwork;
104     service->interface.P2pSetGroupConfig = WpaInterfaceP2pSetGroupConfig;
105     service->interface.P2pInvite = WpaInterfaceP2pInvite;
106     service->interface.P2pReinvoke = WpaInterfaceP2pReinvoke;
107     service->interface.P2pGetDeviceAddress = WpaInterfaceP2pGetDeviceAddress;
108     service->interface.P2pReqServiceDiscovery = WpaInterfaceP2pReqServiceDiscovery;
109     service->interface.P2pCancelServiceDiscovery = WpaInterfaceP2pCancelServiceDiscovery;
110     service->interface.P2pRespServerDiscovery = WpaInterfaceP2pRespServerDiscovery;
111     service->interface.P2pConnect = WpaInterfaceP2pConnect;
112     service->interface.P2pHid2dConnect = WpaInterfaceP2pHid2dConnect;
113     service->interface.P2pSetServDiscExternal = WpaInterfaceP2pSetServDiscExternal;
114     service->interface.P2pRemoveGroup = WpaInterfaceP2pRemoveGroup;
115     service->interface.P2pCancelConnect = WpaInterfaceP2pCancelConnect;
116     service->interface.P2pGetGroupConfig = WpaInterfaceP2pGetGroupConfig;
117     service->interface.P2pAddNetwork = WpaInterfaceP2pAddNetwork;
118     service->interface.P2pGetPeer = WpaInterfaceP2pGetPeer;
119     service->interface.P2pGetGroupCapability = WpaInterfaceP2pGetGroupCapability;
120     service->interface.P2pListNetworks = WpaInterfaceP2pListNetworks;
121     service->interface.DeliverP2pData = WpaInterfaceDeliverP2pData;
122     service->interface.P2pSaveConfig = WpaInterfaceP2pSaveConfig;
123 
124     service->interface.VendorProcessCmd = WpaInterfaceVendorExtProcessCmd;
125 
126     return &service->interface;
127 }
128 
WpaInterfaceImplRelease(struct IWpaInterface * instance)129 void WpaInterfaceImplRelease(struct IWpaInterface *instance)
130 {
131     if (instance == NULL) {
132         return;
133     }
134     OsalMemFree(instance);
135 }
136