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
26struct WpaInterfaceService {
27    struct IWpaInterface interface;
28};
29
30struct 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
129void WpaInterfaceImplRelease(struct IWpaInterface *instance)
130{
131    if (instance == NULL) {
132        return;
133    }
134    OsalMemFree(instance);
135}
136