Funkcja unikania kanałów współistnienia Wi-Fi/sieci komórkowej, wprowadzona w Androidzie 12, identyfikuje i unika używania niebezpiecznych kanałów Wi-Fi w przypadkach, w których mogą występować zakłócenia z kanałów komórkowych lub do nich. Obejmuje to interfejsy takie jak STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN).
Na tej stronie znajdziesz informacje na te tematy:
- Informacje, które modem komórkowy musi zgłaszać do platformy Androida
- Algorytmy, których platforma Wi-Fi używa do obliczania kanałów Wi-Fi, których należy unikać
- Tabele konfiguracji, które producenci urządzeń muszą udostępniać w przypadku platformy Wi-Fi
- Interfejsy API systemu, konfiguracje i interfejsy API HAL związane z funkcją unikania kanałów
- Działanie platformy w przypadku unikania kanału
- Zachowanie dostawcy układu scalonego w przypadku unikania kanału
- Szczegóły implementacji unikania kanałów
- Testy weryfikujące zachowanie związane z unikaniem kanałów
Tło
W przypadku urządzeń z technologiami komórkowymi, 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ą różnicę częstotliwości (sąsiadujące kanały) lub gdy występują zakłócenia harmoniczne i intermodulacyjne.
Ten rodzaj zakłóceń staje się problemem, gdy jedna antena nadaje, a druga odbiera w tym samym czasie. W takim przypadku antena nadawcza zalewa antenę odbiorczą, co wpływa na jakość odbioru.
W tym dokumencie nadajnik powodujący zakłócenia jest nazywany agresorem, a odbiornik, który doświadcza zakłóceń, jest nazywany ofiarą. Kanał Wi-Fi, który jest agresorem lub ofiarą, nazywany jest niebezpiecznym kanałem.
Funkcja unikania kanałów współistnienia Wi-Fi/sieci komórkowej zapewnia spójne podejście do unikania kanałów, co zmniejsza potrzebę stosowania kodu własnościowego, który odbiega od struktury Wi-Fi. Dodatkowo ta funkcja umożliwia producentom urządzeń konfigurowanie, włączanie i wyłączanie oraz zastępowanie tej funkcji.
Funkcja ta zapobiega nakładaniu się kanałów, kontrolując kanały 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 związane z Wi-Fi.
Rysunek 1. Schemat unikania kanałów
Zgłaszanie zmiany częstotliwości komórkowej
Usługa telefoniczna zgłasza obecnie używane kanały komórkowe. Gdy zmieni się częstotliwość komórkowa, modem przekaże te informacje do usługi telefonicznej za pomocą interfejsu IRadio::PhysicalChannelConfig
.
Obejmuje to wskazania dotyczące licencjonowanego dostępu wspomaganego (LAA) i agregacji nośnych (CA).
Od Androida 12 te pola w 1.6 IRadio::PhysicalChannelConfig
zawierają wymagane informacje dla formuł współistnienia, które musi wypełnić modem.
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 komórkowej, algorytm kanału koegzystencji oblicza zakłócenia między kanałami komórkowymi a kanałami Wi-Fi i określa, które zestawy kanałów Wi-Fi są niebezpieczne.
Istnieje kilka rodzajów zakłóceń, które wymagają różnych wzorów: sąsiednie i harmoniczne/intermodulacyjne. Ze względu na fizyczne różnice w antenie i układzie między urządzeniami wzorce zakłóceń sąsiednich oraz harmonicznych i intermodulacyjnych są różne dla każdego urządzenia. Aby to uwzględnić, producenci urządzeń muszą udostępnić 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 każdego pasma komórkowego i są do nich odwoływane pasma aktywnych kanałów komórkowych.
W tabeli wyszukiwania można zdefiniować maksymalny limit mocy. Jeśli zdefiniowano maksymalny limit mocy, niebezpieczny kanał będzie transmitować z podanym limitem mocy. Jeśli nie ma limitu mocy, kanał będzie transmitować z pełną mocą.
Ogólnie rzecz biorąc, funkcja unikania kanałów wykorzystuje najlepsze dostępne metody, aby unikać niebezpiecznych kanałów Wi-Fi i optymalizować wydajność. Jednak w niektórych przypadkach (np. ze względu na wymagania operatora) niektóre interfejsy muszą unikać niebezpiecznych kanałów w przypadku niektórych pasm komórkowych. W takich przypadkach obowiązkowe ograniczenia są reprezentowane jako maska bitowa zawierająca wartości określające, czy należy zabronić korzystania z określonych kanałów, takich jak Wi-Fi Direct (P2P), SoftAp i Wi-Fi Aware (NAN). Oznaczenie „niebezpieczny kanał” jest zaleceniem, aby nie używać danego kanału w żadnym przypadku, a obowiązkowe ograniczenia wskazują konkretne przypadki użycia, których należy bezwzględnie unikać.
Jeśli wszystkie kanały pasma 2,4 GHz lub 5 GHz są oznaczone jako niebezpieczne, tabela wyszukiwania może zdefiniować domyślny kanał 2,4 GHz lub domyślny kanał 5 GHz dla każdego pasma komórkowego, które powoduje zakłócenia, jako najbezpieczniejszy wybór. Te domyślne kanały nie są zgłaszane jako niebezpieczne, gdy reszta pasma jest zgłaszana jako niebezpieczna.
Lista zastąpień
Podejście oparte na wzorach jest ograniczone w przypadkach, gdy zakłócenia są w dużym stopniu zależne od przepustowości (w związku z tym kanały o większej przepustowości mogą być niebezpieczne, ale kanały o mniejszej przepustowości nie). 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 w przypadku niektórych wpisów w tabeli wyszukiwania podać listę zastąpień niebezpiecznych kanałów. Lista zastąpień w pozycji tabeli oznacza, że obliczenia dla danego kanału komórkowego są pomijane, a niebezpieczne kanały Wi-Fi dla pasującego kanału komórkowego są określone przez listę zastąpień.
W przypadku zastosowań wymagających dużej przepustowości możesz selektywnie unikać określonych przepustowości, podając określone kanały z określonymi przepustowościami 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 predefiniowanych słów kluczowych kategorii dla każdego pasma Wi-Fi:
Kategorie 2G:
all
(całe pasmo 2,4 GHz)
Kategorie 5G:
all
(całe pasmo 5 GHz)20mhz
(kanały 5 GHz 20 MHz)40mhz
(kanały 5 GHz 40 MHz)80mhz
(kanały 5 GHz 80 MHz)160mhz
(kanały 5 GHz 160 MHz)
Zakłócenia w sąsiednich kanałach
Aby określić zakłócenia sąsiednich kanałów, algorytm unikania współistnienia sprawdza, czy odległość ΔF między kanałem zakłócającym a kanałem zakłócanym nie jest mniejsza od określonego progu.
Rysunek 2. Odległość między kanałem agresora a kanałem ofiary
Próg jest określany przez fizyczną konfigurację urządzenia i wartość progową podaną w pozycji tabeli przeglądowej dla każdego pasma zakłócającego. Pasma, które nie powodują zakłóceń, nie mają wpisu w tabeli, a niebezpieczne kanały nie muszą być obliczane (w większości przypadków).
Parametry zakłóceń sąsiednich
wifiVictimMhz
: próg odległości w MHz dla ofiary Wi-Fi (łącze komórkowe w kierunku stacji bazowej)cellVictimMhz
: próg odległości w MHz dla komórki będącej ofiarą (łącze w dół)
W przypadku każdego aktywnego kanału komórkowego algorytm działa w ten sposób:
- W przypadku pasma kanału próbuje znaleźć wpis w tabeli wyszukiwania. Jeśli nie znaleziono wpisu w tabeli, zwraca wartość bez niebezpiecznych kanałów dla tego kanału komórkowego.
- Na podstawie pasma komórkowego określa, które pasmo Wi-Fi jest zagrożone, i z której strony pasma pochodzą zakłócenia (np. niższe kanały 2,4 GHz, wyższe kanały 2,4 GHz, niższe kanały 5 GHz).
Jeśli
wifiVictimMhz
jest obecny, a kanał komórkowy ma łącze wysyłające iJeśli dolna część pasma Wi-Fi jest zagrożona
- Znajduje górny limit niebezpiecznych kanałów, dodając
wifiVictimMhz
do najwyższej częstotliwości łącza komórkowego. - Znajduje pierwszy kanał Wi-Fi o szerokości 20 MHz, którego dolna krawędź pokrywa się z limitem.
- Oznacza kanał Wi-Fi, każdy kanał o większej przepustowości, który go zawiera (np. 40 MHz, 80 MHz), oraz każdy niższy kanał w tym samym paśmie co niebezpieczny kanał.
- Znajduje górny limit niebezpiecznych kanałów, dodając
Jeśli górna część pasma Wi-Fi jest zagrożona
- Znajduje dolną granicę niebezpiecznych kanałów, odejmując 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 niebezpieczny kanał.
Jeśli występuje
cellVictimMhz
, a kanał komórkowy ma łącze w dół.- Wykonuje krok 3, używając wartości progowej
cellVictimMhz
, i porównuje ją z szybkością pobierania danych z komórki zamiast z szybkością wysyłania danych do komórki.
- Wykonuje krok 3, używając wartości progowej
Stosuje limit mocy wpisu w tabeli do obliczonych niebezpiecznych kanałów.
Rysunek 3. Obliczanie niebezpiecznego kanału w przypadku zakłóceń z sąsiedniego kanału
Zniekształcenia harmoniczne lub intermodulacyjne
W przypadku zniekształceń harmonicznych lub intermodulacyjnych silnik współistnienia oblicza zakres sygnału harmonicznego lub intermodulacyjnego i określa procent nakładania się z potencjalnym kanałem ofiary. Jeśli nakładanie się przekracza próg nakładania się, algorytm uznaje to za niebezpieczną sytuację. Obliczenie procentu nakładania się zniekształceń harmonicznych lub intermodulacyjnych na kanał docelowy odbywa się za pomocą tego równania:
W przypadku zniekształceń harmonicznych algorytm bierze pod uwagę zniekształcenia harmoniczne kanału transmisji danych z komórki, które wpływają na kanały Wi-Fi. Następnie zastępuje zniekształcenia wysokie i niskie wartościami harmonicznymi na podstawie częstotliwości łącza komórkowego i stopnia harmonicznego $ N $.
Rysunek 4. Obliczanie niebezpiecznego kanału w przypadku zniekształceń harmonicznych
W przypadku intermodulacji algorytm uwzględnia zniekształcenia intermodulacyjne łącza komórkowego w kierunku do stacji bazowej oraz kanał Wi-Fi, który zakłóca kanał łącza komórkowego w kierunku do urządzenia. Następnie zastępuje zniekształcenia wysokie i niskie wartościami intermodulacji na podstawie częstotliwości łącza komórkowego, częstotliwości Wi-Fi i dwóch współczynników intermodulacji $ M $ i $ N $.
Rysunek 5. Obliczanie niebezpiecznego kanału w przypadku zniekształceń intermodulacyjnych
W tabeli przeglądowej możesz określić wartości $ M $, $ N $ i wartości nakładania dla każdego pasma komórki zakłócającej. Jeśli w przypadku danego pasma nie występuje interferencja, wartości są pomijane w tabeli dla tego pasma. Dwa zestawy tych wartości dla pasm Wi-Fi 2,4 GHz i 5 GHz można zdefiniować niezależnie.
Podobnie jak w przypadku algorytmu zakłóceń sąsiednich, algorytm ponownie wykorzystuje tę samą wartość limitu mocy zdefiniowaną dla pasma komórki zakłócającej.
W przypadku każdego aktywnego kanału komórkowego algorytm działa w ten sposób:
- W przypadku pasma kanału komórkowego próbuje znaleźć wpis w tabeli wyszukiwania. Jeśli nie znaleziono wpisu w tabeli, zwraca wartość bez niebezpiecznych kanałów dla tego kanału.
Wyszukuje niebezpieczne kanały 2,4 GHz z harmonii, jeśli zdefiniowano parametry.
- Określa stopień harmonicznej N dla częstotliwości 2,4 GHz.
- Oblicza harmoniczną wysoką częstotliwość i harmoniczną niską częstotliwość na podstawie wartości N i łącza komórkowego.
- Wyszukuje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który znajduje się w dolnym zakresie harmonicznej pochodzącej z dołu.
- 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 w paśmie 2,4 GHz.
- Wyszukuje 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 w paśmie 2,4 GHz.
- Oznacza każdy kanał 20 MHz pomiędzy nimi jako niebezpieczny.
Wyszukuje niebezpieczne kanały 5 GHz na podstawie harmonicznych, jeśli zdefiniowano parametry.
- Określa stopień harmonicznej N dla częstotliwości 5 GHz. Jeśli N = 0, przejdź do kroku 5.
- Oblicza harmoniczną wysoką częstotliwość i harmoniczną niską częstotliwość na podstawie wartości N i łącza komórkowego.
Wyszukuje niebezpieczne kanały 20 MHz.
- Wyszukuje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który mieści się w dolnej granicy harmonicznej pochodzącej z dołu.
- 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.
- Wyszukuje 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 20-megahercowy kanał pomiędzy nimi jako niebezpieczny kanał z określonym limitem mocy.
Wyszukiwanie niebezpiecznych kanałów 40 MHz, 80 MHz i 160 MHz
- Powtarza krok 3a, ale z częstotliwościami 40 MHz, 80 MHz i 160 MHz.
- Zamiast obliczać nakładanie się kanałów na krawędzi harmonicznej, ponownie wykorzystuje obliczone nakładanie się mniejszych kanałów składowych (np. jeśli dwa kanały o szerokości 20 MHz tworzą kanał o szerokości 40 MHz i nakładają się w 30% i 90%, to średnia nakładania się kanału o szerokości 40 MHz wynosi 60%).
Wyszukuje niebezpieczne kanały 2,4 GHz z intermodulacji, jeśli zdefiniowano parametry.
- Znajduje współczynniki intermodulacji N i M dla częstotliwości 2, 4 GHz.
Dla każdego kanału Wi-Fi 2,4 GHz:
- Oblicza częstotliwość niską i wysoką intermodulacji na podstawie wartości N, M, kanału komórkowego wysyłania i kanału Wi-Fi.
- Oblicza nakładanie się intermodulacji na komórkę w kierunku do urządzenia i oznacza kanał jako niebezpieczny, jeśli nakładanie się przekracza próg nakładania się komórki 2,4 GHz.
Wyszukuje niebezpieczne kanały 5 GHz z intermodulacji, jeśli zdefiniowano parametry.
- Powtarza krok 4, używając kanałów Wi-Fi 5 GHz i progu nakładania się komórek 5 GHz.
Stosuje limit mocy wpisu w tabeli do obliczonych niebezpiecznych kanałów.
Wynik końcowy
Po obliczeniu obu zestawów niebezpiecznych kanałów z sąsiednich i harmonicznych zakłóceń obliczany jest zestaw końcowy przez połączenie obu zestawów (i wybranie niższego limitu mocy w przypadku kolizji) oraz usunięcie z zestawu kanałów domyślnych, jeśli nie ma zastosowanych obowiązkowych ograniczeń.
Algorytm działa w ten sposób:
- Jeśli każdy kanał Wi-Fi 2,4 GHz jest oznaczony jako niebezpieczny, usuwa domyślny kanał Wi-Fi 2,4 GHz ze zbioru.
- Jeśli każdy kanał Wi-Fi 5 GHz jest oznaczony jako niebezpieczny, 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 ciągu konfiguracyjnym config_wifiCoexTableFilepath
, który można nakładać, i są zdefiniowane przez ten schemat 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 znajdziesz przykładową tabelę 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 nośnych
W przypadku agregacji nośnych (CA) zakresy harmoniczne lub intermodulacyjne dla każdego łącza w górę lub w dół mogą nie pokrywać się w wystarczającym stopniu, aby powodować zakłócenia niezależnie od siebie, ale mogą pokrywać się w wystarczającym stopniu, gdy są połączone. Algorytm rozpatruje każdy zakres harmonicznych lub intermodulacji niezależnie i wybiera sumę zwróconych niebezpiecznych kanałów. W przypadku intermodulacji oznacza to ocenę zakresu intermodulacji każdego łącza UL na każdym łączu DL.
Algorytm nie rozróżnia komórek PCELL, PSCELL ani SCELL i traktuje je jako równoważne.
Dostęp wspomagany przez licencję
Pasmo LAA jest oznaczone numerem 46. Algorytm traktuje ten zakres podobnie jak inne zakresy. W takim przypadku pełną listę kanałów 5 GHz można ustawić jako listę zastępczą w tabeli wyszukiwania.
W zależności od wymagań operatora algorytm unikania kanałów ustawia obowiązkowe ograniczenia dotyczące SoftAP i Wi-Fi Direct (P2P) w całym paśmie Wi-Fi 5 GHz. Aby algorytm mógł obsługiwać ten przypadek użycia, musi być zdefiniowana wartość restrict_5g_softap_wifi_direct_for_laa
parametru carrier
config. Jeśli kanał komórkowy jest w LAA, a restrict_5g_softap_wifi_direct_for_laa
to true
, algorytm zwraca zestaw niebezpiecznych kanałów z całym pasmem 5 GHz i ustawia flagi obowiązkowych ograniczeń dla SoftAP i Wi-Fi Direct (P2P).
Informowanie usługi Wi-Fi
Gdy algorytm kanałów współistniejących obliczy niebezpieczne kanały, aby przekazać aplikacjom systemowym niebezpieczne kanały i ich ograniczenia, użyj tej struktury danych @SystemApi zdefiniowanej w platformie Android.
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();
}
Użyj tych metod WifiManager
@SystemApi i wywołania zwrotnego, aby umożliwić aplikacjom uzyskiwanie zaktualizowanych wartości, gdy zmienią się niebezpieczne kanały.
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 związane z Wi-Fi
Gdy usługa Wi-Fi otrzyma informacje o zestawie niebezpiecznych kanałów, podejmie odpowiednie działania, aby ich unikać. W tej sekcji opisujemy działanie usługi Wi-Fi w różnych sytuacjach.
Powiadomienie kierowcy
Kierowca odgrywa ważną rolę w unikaniu kanałów, dlatego ważne jest, aby przekazywać informacje o niebezpiecznych kanałach kierowcy i oprogramowaniu sprzętowemu. W tym celu użyj tego interfejsu IWifiChip
HAL API.
W przypadku AIDL:
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
W przypadku HIDL (wersja 1.5 lub nowsza):
setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
bitfield<IfaceType> restrictions);
SoftAP
SoftAP to główny przypadek użycia unikania niebezpiecznych kanałów. W tej sekcji opisujemy główne scenariusze SoftAp, w których można zastosować unikanie kanałów za pomocą ACS. Scenariusze opisują działanie algorytmu unikania kanałów oraz sterownika lub oprogramowania układowego.
Uruchom SoftAP z włączonym ACS (brak jeszcze SoftAP)
Jeśli kanały są niebezpieczne i obowiązuje ograniczenie SoftAP
- Platforma usuwa z listy ACS niebezpieczne kanały.
- Jeśli lista jest pusta, platforma zatrzymuje SoftAP.
Jeśli kanały są niebezpieczne i nie ma ograniczeń
- Sterownik lub oprogramowanie sprzętowe dostawcy przyznaje wyższy priorytet bezpiecznym kanałom niż kanałom niebezpiecznym.
Punkt dostępu SoftAP jest włączony z włączonym ACS, a niebezpieczne kanały są aktualizowane.
Jeśli kanał SoftAP jest niebezpieczny i istnieje ograniczenie SoftAP
- Framework aktualizuje listę ACS, usuwając z niej niebezpieczne kanały.
- Jeśli lista jest pusta, platforma zamyka SoftAP.
Jeśli kanał SoftAP jest niebezpieczny i nie ma ograniczeń
- Platforma nie podejmuje żadnych działań. Unikanie niebezpiecznych kanałów lub stosowanie limitu mocy, jeśli unikanie nie jest możliwe, jest obsługiwane przez sterownik lub oprogramowanie dostawcy.
Wi-Fi Direct (P2P)
Jeśli istnieją niebezpieczne kanały z ograniczeniami Wi-Fi Direct (P2P).
- Framework wysyła żądanie
wpa_supplicant
, aby uniknąć niebezpiecznych kanałów przy użyciu metody HALISupplicantP2pIface::setDisallowedFrequencies()
.
- Framework wysyła żądanie
Jeśli istnieją niebezpieczne kanały bez ograniczeń.
- Sterownik lub oprogramowanie sprzętowe dostawcy stosuje limit mocy, jeśli używany jest niebezpieczny kanał bez ograniczeń Wi-Fi Direct (P2P).
Wi-Fi Aware (NAN)
Platforma nie bierze udziału w wyborze kanału w przypadku Wi-Fi Aware (NAN) i nie podejmuje żadnych działań. Za unikanie kanałów Wi-Fi Aware (NAN) odpowiada sterownik lub oprogramowanie sprzętowe dostawcy.
Wyłącz algorytm
Jeśli chcesz wyłączyć domyślną implementację algorytmu i przekazać własną listę niebezpiecznych kanałów, których należy unikać, skonfiguruj nakładkę config_wifiDefaultCoexAlgorithmEnabled
. Jeśli nakładka ma wartość Fałsz, domyślny algorytm jest wyłączony. Następnie możesz użyć własnego algorytmu poza pasmem, aby wygenerować listę niebezpiecznych kanałów, które mają być przekazywane do platformy za pomocą tego interfejsu API systemu:
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
Sprawdzanie poprawności implementacji
Aby sprawdzić, czy funkcja unikania kanałów współistnienia Wi-Fi/sieci komórkowej działa prawidłowo, przeprowadź te testy.
Testy CTS
WifiManagerTest.java
testCoexMethodsShouldFailNoPermission()
testListenOnCoexUnsafeChannels()
Testy ACTS
WifiManagerTest.py
test_set_get_coex_unsafe_channels()
Testy VTS
Jeśli zaimplementowano AIDL:
wifi_chip_aidl_test.cpp
TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
Jeśli HIDL jest zaimplementowany:
wifi_chip_hidl_test.cpp
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)