diff options
Diffstat (limited to 'wifi/java/android/net')
-rw-r--r-- | wifi/java/android/net/wifi/wificond/WifiCondManager.java | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/wifi/java/android/net/wifi/wificond/WifiCondManager.java b/wifi/java/android/net/wifi/wificond/WifiCondManager.java index 283f2dd78abb..237f326d0200 100644 --- a/wifi/java/android/net/wifi/wificond/WifiCondManager.java +++ b/wifi/java/android/net/wifi/wificond/WifiCondManager.java @@ -245,6 +245,18 @@ public class WifiCondManager { * @param bandwidth The new bandwidth of the SoftAp. */ void onSoftApChannelSwitched(int frequencyMhz, @WifiAnnotations.Bandwidth int bandwidth); + + /** + * Invoked when the station connected to Any AP. + * @hide + */ + void onStaConnected(@NonNull String bssidStr); + + /** + * Invoked when the station disconnected to Any AP. + * @hide + */ + void onStaDisconnected(@NonNull String bssidStr); } /** @@ -600,6 +612,39 @@ public class WifiCondManager { } /** + * Unsubscribe scan for specific STA interface configured in wificond. + * Additionally, trigger stopPnoScan() before invalidating wificond scanner object. + * + * @return Returns true on success. + * @hide + */ + public boolean unsubscribeScan(@NonNull String ifaceName) { + if (getClientInterface(ifaceName) == null) { + Log.e(TAG, "No valid wificond client interface handler"); + return false; + } + + // stop any active pno scan + stopPnoScan(ifaceName); + + try { + IWifiScannerImpl scannerImpl = mWificondScanners.get(ifaceName); + if (scannerImpl != null) { + scannerImpl.unsubscribeScanEvents(); + scannerImpl.unsubscribePnoScanEvents(); + } + } catch (RemoteException e) { + Log.e(TAG, "Failed to unsubscribe wificond scanner due to remote exception"); + return false; + } + + mWificondScanners.remove(ifaceName); + mScanEventHandlers.remove(ifaceName); + mPnoScanEventHandlers.remove(ifaceName); + return true; + } + + /** * Tear down a specific client (STA) interface, initially configured using * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}. * @@ -1154,4 +1199,74 @@ public class WifiCondManager { mApInterfaceListeners.clear(); mSendMgmtFrameInProgress.set(false); } + + /** @hide **/ + public static class WifiGenerationCapabilities { + + public boolean htSupport2g = false; + public boolean vhtSupport2g = false; + public boolean staHeSupport2g = false; + public boolean sapHeSupport2g = false; + public boolean htSupport5g = false; + public boolean vhtSupport5g = false; + public boolean staHeSupport5g = false; + public boolean sapHeSupport5g = false; + + public WifiGenerationCapabilities() { + } + } + + /** + * Query the Wi-Fi generation capabilities for 2G and 5G bands. + * + * @return WifiGenerationCapabilities object, or null for error. + * @hide + */ + @Nullable public WifiGenerationCapabilities getWifiGenerationCapabilities() { + if (!retrieveWificondAndRegisterForDeath()) { + return null; + } + + int wifiGenerationCapaMask = 0; + try { + wifiGenerationCapaMask = mWificond.QcGetWifiGenerationCapabilities(); + } catch (RemoteException e1) { + Log.e(TAG, "Failed to request getWifiGenerationCapabilities due to remote exception"); + return null; + } + + if (wifiGenerationCapaMask == -1) { + Log.e(TAG, "Failed to get Wifi generation capabilities."); + return null; + } + + WifiGenerationCapabilities wifiGenerationCapa = new WifiGenerationCapabilities(); + + if ((wifiGenerationCapaMask & (1 << IWificond.QC_2G_HT_SUPPORT)) != 0) { + wifiGenerationCapa.htSupport2g = true; + } + if ((wifiGenerationCapaMask & (1 << IWificond.QC_2G_VHT_SUPPORT)) != 0) { + wifiGenerationCapa.vhtSupport2g = true; + } + if ((wifiGenerationCapaMask & (1 << IWificond.QC_2G_STA_HE_SUPPORT)) != 0) { + wifiGenerationCapa.staHeSupport2g = true; + } + if ((wifiGenerationCapaMask & (1 << IWificond.QC_2G_SAP_HE_SUPPORT)) != 0) { + wifiGenerationCapa.sapHeSupport2g = true; + } + if ((wifiGenerationCapaMask & (1 << IWificond.QC_5G_HT_SUPPORT)) != 0) { + wifiGenerationCapa.htSupport5g = true; + } + if ((wifiGenerationCapaMask & (1 << IWificond.QC_5G_VHT_SUPPORT)) != 0) { + wifiGenerationCapa.vhtSupport5g = true; + } + if ((wifiGenerationCapaMask & (1 << IWificond.QC_5G_STA_HE_SUPPORT)) != 0) { + wifiGenerationCapa.staHeSupport5g = true; + } + if ((wifiGenerationCapaMask & (1 << IWificond.QC_5G_SAP_HE_SUPPORT)) != 0) { + wifiGenerationCapa.sapHeSupport5g = true; + } + + return wifiGenerationCapa; + } } |