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