Android 12 introduce la concorrenza AP/AP Wi-Fi, che consente ai dispositivi di creare due interfacce punto di accesso (AP). Questa funzionalità consente ai dispositivi di supportare il tethering tramite un hotspot Wi-Fi (soft AP) a doppia banda simultanea (DBS). Per informazioni dettagliate sul supporto del tethering tramite un singolo hotspot Wi-Fi, consulta Supporto hotspot Wi-Fi (Soft AP).
Questa pagina descrive il comportamento del dispositivo quando questa funzionalità è attivata e i dettagli di implementazione per i produttori e i fornitori di dispositivi.
Come funziona
Quando la concorrenza AP/AP Wi-Fi è supportata, il dispositivo può creare due interfacce AP, ad esempio un'interfaccia che funziona sulla banda a 2, 4 GHz e un'altra sulla banda a 5 GHz. I client possono quindi connettersi a ciascuna delle interfacce dell'AP.
L'HAL Wi-Fi genera un'unica interfaccia in bridge con le due interfacce AP e la espone allo stack Wi-Fi e di connettività quando lo stack attiva un soft AP. Dopo l'attivazione dell'AP soft, l'HAL Wi-Fi indica che sono disponibili due interfacce e aggiorna le informazioni (ad esempio canale di funzionamento, larghezza di banda e BSSID) per ogni AP.
Per risparmiare energia, il framework disattiva un AP inutilizzato (2, 4 GHz, 5 GHz o 6 GHz) dopo un periodo di inattività. Il framework considera un AP inattivo quando non è connesso alcun client. I produttori di dispositivi possono personalizzare la durata di questo periodo di inattività. Per ulteriori informazioni, consulta Personalizzare il periodo di inattività.
I dispositivi supportano la concorrenza AP/AP Wi-Fi utilizzando una delle seguenti configurazioni di soft AP bridge:
- Configurazione di due bande (il canale viene selezionato automaticamente dal framework o dal driver)
- Configurazione di due canali su un AP dual band
Requisiti
Per implementare la concorrenza AP/AP Wi-Fi, i dispositivi devono soddisfare i seguenti requisiti:
Il chip o il firmware Wi-Fi deve supportare due connessioni AP contemporaneamente. Il firmware deve supportare tutte le combinazioni di canali e bande per entrambe le connessioni. Per evitare problemi di prestazioni, ti consigliamo di utilizzare un chip Wi-Fi compatibile con DBS 2x2+2x2.
Il dispositivo deve supportare i seguenti metodi nell'HAL del fornitore Wi-Fi:
IWifiChip.createBridgedApIface()
IWifiChip.removeIfaceInstanceFromBridgedApIface()
IWifiApIface.resetToFactoryMacAddress()
IWifiApIface.getBridgedInstances()
Implementazione
Per implementare la concorrenza AP/AP Wi-Fi:
Attiva almeno una delle seguenti funzioni (disattivate per impostazione predefinita) utilizzando gli overlay delle risorse di runtime:
config_wifiBridgedSoftApSupported
: supporta più AP collegati in bridge.config_wifiStaWithBridgedSoftApConcurrencySupported
: supporta la concorrenza di una stazione (STA) e di più AP in bridge.
Per i dispositivi che utilizzano l'AIDL Wi-Fi HAL o l'HIDL Wi-Fi HAL 1.6, definisci
AP_BRIDGED
nella combinazione di interfacce Wi-Fi HAL. Per maggiori dettagli, consulta Contemporaneità multi-interfaccia Wi-Fi.Configura la configurazione del soft AP in bridge chiamando uno dei seguenti metodi:
Registra un callback per ottenere le funzionalità del dispositivo utilizzando
WifiManager#registerSoftApCallback
. Il callbackSoftApCallback
fornisce i seguenti metodi per una configurazione del soft AP in bridge:SoftApCallback#onInfoChanged
: fornisce informazioni sulle istanze soft AP in esecuzione.SoftApCallback#onConnectedClientsChanged
: fornisce un elenco dei client connessi per un'istanza di soft AP.
Personalizzare il periodo di inattività
Per personalizzare la durata del periodo di inattività, configura il seguente overlay, che si trova in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
config_wifiFrameworkSoftApShutDownIdleInstanceInBridgedModeTimeoutMillisecond
: l'intervallo di tempo del timeout di spegnimento predefinito. Valido solo seSoftApConfiguration#setBridgedModeOpportunisticShutdownEnabled
è attivato.(Disponibile dalla versione 13)
config_wifiFrameworkSoftApDisableBridgedModeShutdownIdleInstanceWhenCharging
: indica se disattivare il timer di spegnimento per inattività durante la ricarica.