Funkcja unikania kanałów Wi-Fi/komórkowych, wprowadzona w Androidzie 12, identyfikuje i unika korzystania z niebezpiecznych kanałów Wi-Fi w przypadkach, gdy mogą występować zakłócenia na kanałach komórkowych. Obejmuje to interfejsy takie jak STA, SoftAp, Wi-Fi Direct (P2P) i Wi-Fi Aware (NAN).
Na tej stronie znajdziesz informacje na te tematy:
- Informacje, które modem komórkowy musi zgłaszać do platformy Android
- algorytmy używane przez platformę Wi-Fi do obliczania kanałów Wi-Fi, których należy unikać;
- Tabele konfiguracji, które producenci urządzeń muszą udostępnić w ramach frameworku Wi-Fi
- Interfejsy API systemu, konfiguracje i interfejsy API HAL związane z funkcją unikania kanałów
- Zachowanie frameworku w przypadku unikania kanału
- Zachowanie dostawcy chipów w przypadku unikania kanału
- Szczegóły implementacji funkcji unikania kanałów
- Testy weryfikujące unikanie kanału
Tło
W przypadku urządzeń z technologiami telefonii komórkowych, takimi jak LTE, 5G NR i Licensed Assisted Access (LAA), używane kanały komórkowe mogą zakłócać używany kanał Wi-Fi. Dzieje się tak, gdy kanały komórkowe i Wi-Fi są oddalone od siebie o niewielką częstotliwość (są to sąsiednie kanały) lub gdy występują zakłócenia harmoniczne i intermodulacyjne.
Ten typ zakłóceń staje się problemem, gdy jedna antena transmituje, a druga odbiera sygnał w tym samym czasie. W takim przypadku antena nadawcza przeciąża antenę odbiorczą, co wpływa na jakość odbioru.
W tym dokumencie nadajnik powodujący zakłócenia jest określany jako agresor, a odbiornik, który doświadcza zakłóceń, jako ofiara. Kanał Wi-Fi, który jest agresorem lub ofiarą, jest nazywany niebezpiecznym kanałem.
Funkcja unikania kanałów współistnienia Wi-Fi/komórkowego zapewnia spójne podejście do unikania kanałów, co zmniejsza potrzebę korzystania z kodu zastrzeżonego, który odbiega od ram Wi-Fi. Dodatkowo funkcja umożliwia producentom urządzeń konfigurowanie, włączanie, wyłączanie i zastępowanie tej funkcji.
Funkcja ta działa poprzez unikanie kanałów i kontrolowanie kanałów Wi-Fi. Schemat unikania kanałów Wi-Fi można opisać jako serię 4 abstrakcyjnych kroków:
- Modem zgłasza zmianę częstotliwości komórkowej
- Algorytm unikania współistnienia oblicza niebezpieczne kanały Wi-Fi
- Algorytm unikania współistnienia informuje usługę Wi-Fi
- Framework lub sterownik wykonuje odpowiednie działanie dotyczące Wi-Fi.
Rysunek 1. Schemat unikania kanałów
Zgłaszanie zmiany częstotliwości komórkowej
Usługa telefonii podaje informacje o kanałach komórkowych, które są obecnie używane. Gdy częstotliwość operacyjna sieci komórkowej ulegnie zmianie, modem przekaże tę informację usłudze telefonicznej za pomocą IRadio::PhysicalChannelConfig
.
Te informacje obejmują wskazania dotyczące licencjonowanego wspomaganego dostępu (LAA) i agregacji operatora (CA).
Od Androida 12 te pola w polu 1.6 IRadio::PhysicalChannelConfig
zawierają wymagane informacje dla współdzielonych formuł, które modem musi wypełnić.
struct PhysicalChannelConfig {
/** Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING */
CellConnectionStatus status;
/** The radio technology for this physical channel */
RadioTechnology rat;
/** Downlink Absolute Radio Frequency Channel Number */
int32_t channelNumberDownlink;
/** Uplink Absolute Radio Frequency Channel Number */
int32_t channelNumberUplink;
/** Downlink cell bandwidth, in kHz */
int32_t cellBandwidthDownlink;hte
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplink;
}
Obliczanie niebezpiecznych kanałów Wi-Fi
Gdy modem zgłosi zmianę częstotliwości sieci komórkowej, algorytm kanału współdzielonego obliczy zakłócenia między kanałami sieci komórkowej i Wi-Fi oraz określi, które kanały Wi-Fi są niebezpieczne.
Istnieje kilka typów zakłóceń wymagających różnych wzorów: sąsiednie i harmoniczne/intermodulacyjne. Ze względu na fizyczne różnice w antenach i układzie między urządzeniami wzorce sąsiednich i harmonicznych zakłóceń oraz zakłóceń intermodulacyjnych są różne w przypadku każdego urządzenia. Aby to uwzględnić, producenci urządzeń muszą podać tabelę wyszukiwania, która umożliwia wstawianie parametrów do ogólnych wzorów dla 2 rodzajów zakłóceń. Te parametry są definiowane dla poszczególnych pasm komórek i odwołują się do pasm aktywnych kanałów komórek.
W tabeli wyszukiwania można zdefiniować maksymalną moc. Jeśli zdefiniowano maksymalną moc, kanał niebezpieczny transmituje z podawaną mocą. Jeśli nie ma limitu mocy, kanał transmituje z pełną mocą.
Ogólnie funkcja unikania kanałów stara się unikać niebezpiecznych kanałów Wi-Fi, aby zoptymalizować wydajność. W niektórych przypadkach (np. ze względu na wymagania operatora) konieczne jest używanie określonych interfejsów, aby uniknąć niebezpiecznych kanałów w przypadku niektórych pasm sieci komórkowych. W takich przypadkach obowiązkowe ograniczenia są reprezentowane jako maska bitowa zawierająca wartości określające, czy zablokować określone kanały, takie jak Wi-Fi Direct (P2P), SoftAp i Wi-Fi Aware (NAN). Niebezpieczny kanał jest zaleceniem, aby nie używać tego kanału we wszystkich przypadkach użycia, natomiast obowiązkowe ograniczenia oznaczają, że należy unikać określonych zastosowań.
Jeśli każdy kanał w paśmie 2,4 GHz lub 5 GHz jest oznaczony jako niebezpieczny, tabela wyszukiwania może zdefiniować domyślny kanał 2,4 GHz lub domyślny kanał 5 GHz w paśmie komórki powodującej zakłócenia jako najbezpieczniejszy wybór. Te domyślne kanały nie będą raportowane jako niebezpieczne, jeśli reszta pasma jest raportowana jako niebezpieczna.
Lista zastąpień
Podejście oparte na wzorach jest ograniczone w przypadkach, gdy zakłócenia są silnie zależne od przepustowości (a więc kanały o większej przepustowości mogą być niebezpieczne, ale nie kanały o mniejszej przepustowości). W niektórych przypadkach, np. w przypadku LAA, warto pominąć obliczenia i użyć określonej listy niebezpiecznych kanałów.
W tym celu możesz podać listę zastąpienia z niebezpiecznymi kanałami w tabeli podręcznej dla określonych wpisów. Lista zastąpienia w rekordzie tabeli oznacza, że pomija się obliczenia dotyczące danego kanału komórki i że niebezpieczne kanały Wi-Fi dla pasującego kanału komórki są określone na liście zastąpienia.
W przypadku przypadków, w których liczy się przepustowość, możesz wybrać, których kanałów i przepustowości unikać, określając je na liście zastąpień. Dzieje się tak, ponieważ każdy numer kanału Wi-Fi odpowiada określonej przepustowości.
Lista zastąpień jest reprezentowana przez listę numerów kanałów lub wstępnie zdefiniowanych słów kluczowych kategorii dla każdego pasma Wi-Fi:
Kategorie 2G:
all
(cały zakres 2,4 GHz)
Kategorie 5G:
all
(cały pasmo 5 GHz)20mhz
(kanały 20 MHz w standardzie 5 GHz)40mhz
(kanały 5 GHz 40 MHz)80mhz
(kanały 80 MHz w zakresie 5 GHz)160mhz
(kanały 160 MHz w sieci 5 GHz)
zakłócenia z sąsiednich kanałów,
Aby określić zakłócenia z sąsiednich kanałów, algorytm unikania współdzielenia zapewnia, że odległość ΔF między kanałem agresora a kanałem ofiary nie spada poniżej określonego progresu.
Rysunek 2. odległość między kanałem agresora a kanałem ofiary;
Próg jest określany przez konfigurację fizyczną urządzenia i wartość progową podawaną w każdym wpisie tabeli przeglądowej dla danego pasma zakłóceń. Pasma, które są uważane za niezakłócające, nie mają wpisu w tabeli, a niebezpieczne kanały nie muszą być obliczane (w większości przypadków).
Parametry zakłóceń z sąsiednich urządzeń
wifiVictimMhz
: próg odległości w MHz w przypadku ofiary ataku Wi-Fi (komórka w dół)cellVictimMhz
: próg odległości w MHz dla komórki ofiary (komórka w dół)
W przypadku każdego aktywnego kanału komórek algorytm działa w ten sposób:
- Spróbuje znaleźć pozycję w tabeli odsyłań dla pasma kanału. Jeśli nie znaleziono wpisu w tabeli, zwraca informację, że nie ma żadnych niebezpiecznych kanałów dla tego kanału komórki.
- Na podstawie pasma sieci komórkowej określa, które pasmo Wi-Fi jest zagrożone i z którego końca pasma pochodzą zakłócenia (np. z niższych kanałów 2, 4 GHz, wyższych kanałów 2, 4 GHz lub niższych kanałów 5 GHz).
Jeśli
wifiVictimMhz
jest obecny, a kanał komórki ma łącze w górę iJeśli zagrożone jest dolne pasmo Wi-Fi
- Znajduje górny limit niebezpiecznych kanałów przez dodanie
wifiVictimMhz
do najwyższej częstotliwości łącza komórkowego. - Znajduje pierwszy kanał Wi-Fi 20 MHz, którego dolna krawędź pokrywa się z granicą.
- Oznacza kanał Wi-Fi, każdy kanał o większej przepustowości, który zawiera ten kanał (np. 40 MHz, 80 MHz) oraz wszystkie niższe kanały w tym samym paśmie co kanał niebezpieczny.
- Znajduje górny limit niebezpiecznych kanałów przez dodanie
Jeśli górna część pasma Wi-Fi jest zagrożona
- Znajduje dolny limit kanałów niebezpiecznych przez odjęcie wifiVictimMhz od najniższej częstotliwości łącza komórkowego.
- Znajduje pierwszy kanał Wi-Fi, którego górna krawędź pokrywa się z limitem.
- Oznacza kanał Wi-Fi, każdy większy kanał, który go zawiera (np. 40 MHz, 80 MHz), oraz każdy wyższy kanał w tym samym paśmie co kanał niebezpieczny.
Jeśli występuje
cellVictimMhz
, a kanał komórki ma łącze w dół.- Wykonuje krok 3, używając wartości
cellVictimMhz
jako progu i porównuje ją z wartością z kanału w dół, a nie z kanału w górę.
- Wykonuje krok 3, używając wartości
Stosuje limit mocy dla pozycji w tabeli do obliczonych kanałów niebezpiecznych.
Rysunek 3. Obliczanie niebezpiecznych kanałów w przypadku zakłóceń na sąsiednim kanale
zniekształcenie harmoniczne lub intermodulacyjne;
W przypadku zniekształceń harmonicznych lub intermodulacyjnych silnik współczynnika oblicza zakres sygnału harmonicznego lub intermodulacyjnego i ocenia odsetek nakładania się z potencjalnym kanałem ofiary. Jeśli nakładanie się wykracza poza próg nakładania się, algorytm uznaje to za niebezpieczną sytuację. Obliczenie procentowego pokrycia harmonicznej lub zniekształcenia intermodulacyjnego na kanale ofiary odbywa się za pomocą tego wzoru:
W przypadku zniekształcania harmonicznego algorytm uwzględnia zniekształcenie harmoniczne kanału w sieci komórkowej, które wpływa na kanały Wi-Fi. Następnie zastępuje wartości wysokiego i niskiego zniekształcenia wartościami harmonicznymi na podstawie częstotliwości uplinku komórkowego i stopnia harmonicznego $ N $.
Rysunek 4. Obliczanie niebezpiecznego kanału dla zniekształceń harmonicznych
W przypadku intermodulacji algorytm uwzględnia zniekształcenie intermodulacyjne kanału w górę i kanału Wi-Fi, które powoduje zniekształcenie kanału w dół. Następnie zastępuje wartości THD i NLD wartościami intermodulacji na podstawie częstotliwości uplinku komórkowego, częstotliwości Wi-Fi oraz dwóch współczynników intermodulacji $ M$ i $N $.
Rysunek 5. Obliczanie nieprawidłowego kanału dla zniekształceń międzymodulacyjnych
W tabeli przeglądowej możesz określić wartości $ M $, $ N $ i nakładanie się w ramach pasma komórek zakłócających. Jeśli w przypadku danego pasma nie ma zakłóceń, wartości są pomijane w tabeli dla tego wpisu. Można zdefiniować 2 zbiory tych wartości dla pasm Wi-Fi 2,4 GHz i 5 GHz.
Podobnie jak w przypadku algorytmu dotyczącego zakłóceń z sąsiednich komórek, algorytm ten ponownie używa tej samej wartości limitu mocy określonej dla każdego pasma komórkowego powodującego zakłócenia.
W przypadku każdego aktywnego kanału komórek algorytm działa w ten sposób:
- W przypadku pasma kanału komórki próbuje znaleźć wpis w tabeli. Jeśli nie znaleziono wpisu w tabeli, zwraca informację, że nie ma niebezpiecznych kanałów dla tego kanału.
Jeśli parametry są zdefiniowane, wykrywa niebezpieczne kanały 2,4 GHz z harmonicznych.
- Znajduje stopień harmoniczny N dla 2,4 GHz.
- Oblicza harmoniczną częstotliwość wysoką i harmoniczną częstotliwość niską na podstawie N i komórki w górę.
- Znajduje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który mieści się w dolnej granicy harmonicznej pochodzącej z poziomu poniżej.
- Oblicza nakładanie się harmonicznej na kanał Wi-Fi i oznacza kanał jako niebezpieczny, jeśli nakładanie się przekracza próg nakładania się Wi-Fi 2,4 GHz.
- Znajduje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który mieści się w górnej granicy harmonicznej pochodzącej z góry.
- Oblicza nakładanie się harmonicznej na kanał Wi-Fi i oznacza kanał jako niebezpieczny, jeśli nakładanie się przekracza próg nakładania się Wi-Fi 2,4 GHz.
- Oznacza każdy kanał 20 MHz jako niebezpieczny.
Jeśli parametry są zdefiniowane, znajduje niebezpieczne kanały 5 GHz z harmonicznych.
- Znajduje stopień harmoniczny N dla 5 GHz. Jeśli N = 0, przejdź do kroku 5.
- Oblicza harmoniczną częstotliwość wysoką i harmoniczną częstotliwość niską na podstawie N i komórki w górę.
Znajduje niebezpieczne kanały 20 MHz.
- Znajduje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który mieści się w dolnej granicy harmonicznej pochodzącej z poziomu poniżej.
- Oblicza nakładanie się harmonicznej na kanał Wi-Fi i oznacza kanał jako niebezpieczny, jeśli nakładanie się przekracza próg nakładania się Wi-Fi 2,4 GHz.
- Znajduje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który mieści się w górnej granicy harmonicznej pochodzącej z góry.
- Oblicza nakładanie się harmonicznej na kanał Wi-Fi i oznacza kanał jako niebezpieczny, jeśli nakładanie się przekracza próg nakładania się Wi-Fi 2,4 GHz.
- Oznacza każdy kanał 20 MHz w tym zakresie jako kanał niebezpieczny z określonym limitem mocy.
Wykrywa niebezpieczne kanały 40 MHz, 80 MHz i 160 MHz
- Powtórz krok 3a, ale z częstotliwościami 40 MHz, 80 MHz i 160 MHz.
- Zamiast obliczania nakładania się kanałów na krawędzi harmonicznej, ponownie używa obliczonego nakładania się mniejszych kanałów składowych (jeśli na przykład 2 kanały 20 MHz tworzą kanał 40 MHz i mają 30% oraz 90% pokrycia, to średnie pokrycie dla kanału 40 MHz wynosi 60%).
Znajduje niebezpieczne kanały 2,4 GHz z intermodulacji, jeśli parametry są zdefiniowane.
- Znajduje współczynniki intermodulacji N i M dla 2, 4 GHz.
W przypadku każdego kanału Wi-Fi 2,4 GHz:
- Oblicza niską i wysoką częstotliwość intermodulacji na podstawie kanału N, M, komórkowego i Wi-Fi.
- Oblicza nakładanie się intermodulacji na komórkę w dół łącze i oznacza kanał jako niebezpieczny, jeśli nakładanie się przekracza próg nakładania się komórki 2,4 GHz.
Znajduje niebezpieczne kanały 5 GHz z intermodulacji, jeśli parametry są zdefiniowane.
- Powtórz krok 4, używając kanałów Wi-Fi 5 GHz i progresu pokrycia komórek 5 GHz.
Stosuje limit mocy dla pozycji w tabeli do obliczonych kanałów niebezpiecznych.
Wynik końcowy
Po obliczeniu obu zbiorów niebezpiecznych kanałów z zakłóceń sąsiednich i harmonicznych obliczany jest ostatni zbiór, który jest sumą zbiorów (z wybranym niższym ograniczeniem mocy, jeśli występują kolizje) i z którego usuwane są kanały domyślne, jeśli nie ma żadnych ograniczeń.
Algorytm działa w ten sposób:
- Jeśli wszystkie kanały Wi-Fi 2,4 GHz są oznaczone jako niebezpieczne, usuwa domyślny kanał Wi-Fi 2,4 GHz z zestawu.
- Jeśli wszystkie kanały Wi-Fi 5 GHz są oznaczone jako niebezpieczne, usuwa domyślny kanał Wi-Fi 5 GHz z zestawu.
- Zwraca ostateczny zestaw niebezpiecznych kanałów.
Format tabeli przeglądowej
Tabele wyszukiwania są reprezentowane w pliku XML znajdującym się w przesłońowej łańcuchowej konfiguracji config_wifiCoexTableFilepath
i zdefiniowane w tym pliku XSD.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xsd:element name="table">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="entry" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="entry">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rat" type="ratType"/>
<xsd:element name="band" type="xsd:int"/>
<xsd:element name="powerCapDbm" type="xsd:int" minOccurs="0"/>
<xsd:choice>
<xsd:element ref="params"/>
<xsd:element ref="override"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="ratType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="LTE"/>
<xsd:enumeration value="NR"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Define coex algorithm parameters -->
<xsd:element name="params">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="neighborThresholds" minOccurs="0"/>
<xsd:element name="harmonicParams2g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="harmonicParams5g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="intermodParams2g" type="intermodParams" minOccurs="0"/>
<xsd:element name="intermodParams5g" type="intermodParams" minOccurs="0"/>
<xsd:element ref="defaultChannels" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="neighborThresholds">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wifiVictimMhz" type="xsd:int" minOccurs="0"/>
<xsd:element name="cellVictimMhz" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="harmonicParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="intermodParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="M" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="defaultChannels">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="default2g" type="xsd:int" minOccurs="0"/>
<xsd:element name="default5g" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Define algorithm override lists -->
<xsd:element name="override">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="override2g" minOccurs="0"/>
<xsd:element ref="override5g" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override2g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory2g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override5g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory5g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="overrideCategory2g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="overrideCategory5g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
<xsd:enumeration value="20Mhz"/>
<xsd:enumeration value="40Mhz"/>
<xsd:enumeration value="80Mhz"/>
<xsd:enumeration value="160Mhz"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Przykładowa tabela XML
Poniżej znajduje się przykładowa tabela wyszukiwania XML:
<table>
<!-- Entry using algorithm parameters -->
<entry>
<rat>LTE</rat>
<band>40</band>
<powerCapDbm>50</powerCapDbm>
<params>
<neighborThresholds>
<wifiVictimMhz>25</wifiVictimMhz>
<cellVictimMhz>40</cellVictimMhz>
</neighborThresholds>
<harmonicParams2g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams2g>
<harmonicParams5g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams5g>
<intermodParams2g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams2g>
<intermodParams5g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams5g>
<defaultChannels>
<default2g>6</default2g>
<default5g>36</default5g>
</defaultChannels>
</params>
</entry>
<!-- Entry using the override list -->
<entry>
<rat>LTE</rat>
<band>41</band>
<powerCapDbm>50</powerCapDbm>
<override>
<override2g>
<channel>6</channel>
<channel>11</channel>
...
</override2g>
<override5g>
<category>40Mhz</category>
<channel>34</channel>
...
</override5g>
</override>
</entry>
</table>
Agregacja operatorów
W przypadku agregacji nośników (CA) zakresy harmonicznych lub intermodulacyjnych poszczególnych kanałów w górę lub w dół mogą nie zapewniać wystarczającego pokrycia, aby powodować zakłócenia niezależnie, ale mogą zapewniać wystarczające pokrycie po połączeniu. Algorytm uwzględnia każdy zakres harmonicznych lub intermodulacyjnych niezależnie i tworzy z nich sumy. W przypadku intermodulacji oznacza to ocenę zakresu intermodulacji każdego UL na każdym DL.
Algorytm nie rozróżnia formatów PCELL, PSCELL ani SCELL i traktuje je jako równe.
Dostęp w ramach licencji
Dostęp z pomocy licencji (LAA) jest identyfikowany jako pasmo 46. Algorytm traktuje ten pasek podobnie jak inne paski. W tym przypadku w tabeli odwołania można ustawić listę kanałów 5 GHz jako listę zastępczą.
W zależności od wymagań operatora algorytm unikania kanałów ustawia obowiązkowe ograniczenia dotyczące SoftAP i Wi-Fi Direct (P2P) na całym paśmie Wi-Fi 5 GHz. Aby algorytm mógł obsłużyć ten przypadek użycia, musisz zdefiniować wartość parametru carrier_config restrict_5g_softap_wifi_direct_for_laa
. Jeśli kanał komórkowy jest na LAA, a restrict_5g_softap_wifi_direct_for_laa
to true
, algorytm zwraca zestaw niebezpiecznych kanałów z całego pasma 5 GHz i ustawia obowiązkowe flagi ograniczeń dla SoftAP i Wi-Fi Direct (P2P).
Informacja o usłudze Wi-Fi
Gdy algorytm współistniejących kanałów obliczy niebezpieczne kanały, możesz udostępnić aplikacjom systemowym te kanały i ich ograniczenia, używając tej struktury danych @SystemApi zdefiniowanej w ramach Androida.
public final class CoexUnsafeChannel {
public static final int POWER_CAP_NONE
public @WifiAnnotations.WifiBandBasic int getBand();
public int getChannel();
// Returns the specified power cap in dBm, or POWER_CAP_NONE if not specified.
public int getPowerCapDbm();
}
Aby umożliwić aplikacjom uzyskiwanie zaktualizowanych wartości po zmianie niebezpiecznych kanałów, użyj tych metod WifiManager
@SystemApi i wywołania zwrotnego.
public static final int COEX_RESTRICTION_WIFI_DIRECT;
public static final int COEX_RESTRICTION_SOFTAP;
public static final int COEX_RESTRICTION_WIFI_AWARE;
// Register a CoexCallback to listen on onCoexUnsafeChannelsChanged callbacks. The callback will be called whenever the unsafe channels change, as well as immediately after registering to get the current values.
public void registerCoexCallback(Executor executor, CoexCallback callback);
public void unregisterCoexCallback(CoexCallback callback);
public abstract static class CoexCallback {
//Gets called whenever getCoexUnsafeChannels()/getCoexRestrictions() have updated values
public void onCoexUnsafeChannelsChanged(List<CoexUnsafeChannels> unsafeChannels, int restrictions);
}
Wykonaj działanie dotyczące Wi-Fi
Gdy usługa Wi-Fi otrzyma informacje o zbiorze niebezpiecznych kanałów, podejmie odpowiednie działania, aby uniknąć tych kanałów. W tej sekcji opisano działanie usługi Wi-Fi w różnych scenariuszach.
Poinformuj kierowcę
Ponieważ sterownik odgrywa główną rolę w omijaniu kanałów, konieczne jest przekazanie informacji o niebezpiecznych kanałach do sterownika i oprogramowania układowego. Aby to zrobić, użyj interfejsu IWifiChip
HAL API.
W przypadku AIDL:
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
W przypadku HIDL (1.5 lub nowszej wersji):
setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
bitfield<IfaceType> restrictions);
SoftAP
SoftAP jest głównym przypadkiem użycia do unikania niebezpiecznych kanałów. W tej sekcji opisaliśmy kluczowe scenariusze dotyczące SoftAp, w których można stosować unikanie kanałów za pomocą ACS. Scenariusze opisują działanie algorytmu unikania kanałów oraz sterownika lub oprogramowania układowego.
Uruchomić SoftAP z włączonym ACS (SoftAP nie jest jeszcze uruchomiony)
Jeśli kanały są niebezpieczne i istnieje ograniczenie SoftAP
- System usuwa niebezpieczne kanały z listy ACS.
- Jeśli lista jest pusta, framework zatrzymuje SoftAP.
Jeśli kanały są niebezpieczne i nie ma żadnych ograniczeń
- Sterownik dostawcy lub oprogramowanie układowe dają priorytet bezpiecznym kanałom nad niebezpiecznymi.
SoftAP jest włączony z włączonym ACS, a niebezpieczne kanały są aktualizowane
Jeśli kanał SoftAP jest niebezpieczny i jest na niego nałożone ograniczenie
- Platforma aktualizuje listę ACS, usuwając niebezpieczne kanały.
- Jeśli lista jest pusta, framework zamyka SoftAP.
Jeśli kanał SoftAP jest niebezpieczny i nie ma żadnych ograniczeń
- Nie są podejmowane żadne działania. Producent sterownika lub oprogramowania sprzętowego zajmuje się unikaniem niebezpiecznych kanałów lub stosowaniem ograniczeń mocy, jeśli unikanie nie jest możliwe.
Wi-Fi Direct (P2P)
Jeśli istnieją niebezpieczne kanały z ograniczeniami Wi-Fi Direct (P2P).
- Framework prosi o
wpa_supplicant
, aby uniknąć niebezpiecznych kanałów za pomocą metody HALISupplicantP2pIface::setDisallowedFrequencies()
.
- Framework prosi o
Jeśli są niebezpieczne kanały bez ograniczeń.
- W przypadku korzystania z niebezpiecznego kanału bez ograniczenia Wi-Fi Direct (P2P) limit mocy jest stosowany przez sterownik lub oprogramowanie sprzętowe.
Wi-Fi Aware (NAN)
Framework nie jest zaangażowany w wybór kanału w przypadku Wi-Fi Aware (NAN) i nie podejmuje żadnych działań. Za unikanie kanału Wi-Fi Aware (NAN) odpowiada sterownik dostawcy lub oprogramowanie sprzętowe.
Wyłączanie algorytmu
Jeśli chcesz wyłączyć domyślną implementację algorytmu i przekazać własną listę niebezpiecznych kanałów, skonfiguruj nakładkę config_wifiDefaultCoexAlgorithmEnabled
. Jeśli wartość nakładki to Fałsz, algorytm domyślny jest wyłączony. Następnie możesz użyć własnego algorytmu poza pasmem, aby wygenerować listę niebezpiecznych kanałów, które chcesz podłączyć do frameworku za pomocą podanego niżej interfejsu API systemu.
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
Sprawdzanie implementacji
Aby zweryfikować implementację funkcji unikania współistnienia kanałów Wi-Fi/komórkowych, wykonaj te testy.
Testy CTS
WifiManagerTest.java
testCoexMethodsShouldFailNoPermission()
testListenOnCoexUnsafeChannels()
Testy ACTS
WifiManagerTest.py
test_set_get_coex_unsafe_channels()
Testy VTS
Jeśli implementujesz AIDL:
wifi_chip_aidl_test.cpp
TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
Jeśli implementujesz HIDL:
wifi_chip_hidl_test.cpp
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)