Unikanie kanałów Wi-Fi i komórkowych

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. Dotyczy to interfejsów takich jak STA, SoftAp, Wi-Fi Direct (P2P) i Wi-Fi Aware (NAN).

Na tej stronie omówiono następujące tematy:

  • Informacje, które modem komórkowy musi zgłaszać do platformy Androida
  • 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
  • Systemowe interfejsy API, konfiguracje i interfejsy API HAL związane z funkcją unikania kanałów
  • Działanie platformy umożliwiającej unikanie kanałów
  • Zachowanie dostawcy chipów w przypadku unikania kanału
  • Szczegóły implementacji pomijania kanałów
  • Testy weryfikujące, jak unikać kanałów

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.

Tego rodzaju zakłócenia stają się problemem, gdy jedna antena przesyła, a inna w tym samym czasie odbiera sygnał. W tym przypadku antena nadawcza zapełnia ją, co wpływa na jakość odbioru.

W tym dokumencie nadajnik jest nazywany agresorem, a ofiarą jest odbiornik, w którym występują zakłócenia. 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 ta umożliwia producentom urządzeń konfigurowanie, włączanie, wyłączanie i zastępowanie tej funkcji.

Funkcja ta działa poprzez kontrolowanie kanałów Wi-Fi. Schemat unikania kanałów Wi-Fi można opisać jako serię 4 abstrakcyjnych kroków:

  1. Modem zgłasza zmianę częstotliwości komórkowej
  2. Algorytm unikania współdzielenia oblicza niebezpieczne kanały Wi-Fi
  3. Algorytm unikania współistnienia informuje usługę Wi-Fi
  4. Framework lub sterownik wykonuje odpowiednie działanie dotyczące Wi-Fi.

Schemat unikania kanałów

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ść pracy sieci komórkowej ulegnie zmianie, modem przekaże te informacje 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::PhysicalChannelConfigzawierają 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ąsiednieharmoniczne/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ą udostępnić tabelę przeglądową, która pozwala umieszczać parametry w ogólnych formułach określających te 2 rodzaje zakłóceń. Te parametry są definiowane dla poszczególnych pasm komórek i odwołują się do pasm aktywnych kanałów komórek.

Maksymalny limit mocy można zdefiniować w tabeli przeglądowej. 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) w przypadku niektórych interfejsów konieczne jest używanie bezpiecznych kanałów dla określonych pasm 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 w żadnym przypadku, 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 odniesień może zdefiniować domyślny kanał 2,4 GHz lub domyślny kanał 5 GHz w paśmie komórki z zakłóceniami 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 wzorcach 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 niebezpiecznych kanałów w tabeli podręcznej dla określonych wpisów. Lista zastąpień we wpisie tabeli informuje, że obliczenia dla danego kanału komórki są pomijane, a niebezpieczne kanały Wi-Fi dla pasującego kanału komórki są określone przez listę zastąpień.

W przypadku przypadków, w których liczy się przepustowość, możesz wybrać, których kanałów i przepustowości unikać, określając na liście zastąpień określone kanały z określonymi przepustowościami. Dzieje się tak, ponieważ każdy numer kanału Wi-Fi odpowiada określonej przepustowości.

Lista zastąpień jest reprezentowana przez numery kanałów lub wstępnie zdefiniowane słowa kluczowe 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 20 MHz w standardzie 5 GHz)
  • 40mhz (kanały 5 GHz 40 MHz)
  • 80mhz (5 GHz, 80 MHz)
  • 160mhz (kanały 160 MHz w sieci 5 GHz)

zakłócenia z sąsiednich kanałów,

Aby określić zakłócenia na sąsiednim kanale, algorytm unikania współkorzystania upewnia się, że odległość ΔF między kanałem agresora a kanałem ofiary nie spada poniżej określonego progresji.

Zakłócenia kanału

Rysunek 2. odległość między kanałem agresora a kanałem ofiary;

Próg jest określany na podstawie fizycznej konfiguracji urządzenia oraz wartości progowej podanej we wpisie w tabeli przeglądowej dla pasma zakłócającego. Pasma, które nie są uważane za zakłócające, nie mają wpisu w tabeli, a niebezpieczne kanały nie muszą być obliczane (w większości przypadków).

Sąsiednie parametry zakłócania

  • 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:

  1. Spróbuje znaleźć pozycję w tabeli odsyłań dla pasma kanału. Jeśli nie zostanie znaleziony wpis w tabeli, zwracany jest kanał komórki, dla którego nie ma żadnych niebezpiecznych kanałów.
  2. 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).
  3. Jeśli występuje wifiVictimMhz, a kanał komórkowy ma łącze wychodzące i

    1. Jeśli zagrożone jest dolne pasmo Wi-Fi

      1. Znajduje górny limit niebezpiecznych kanałów przez dodanie wifiVictimMhz do najwyższej częstotliwości łącza komórkowego.
      2. Znajduje pierwszy kanał Wi-Fi 20 MHz, którego dolna krawędź nakłada się na limit.
      3. 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.
    2. Jeśli górna część pasma Wi-Fi jest zagrożona

      1. Znajduje dolny limit kanałów niebezpiecznych przez odjęcie wifiVictimMhz od najniższej częstotliwości łącza komórkowego.
      2. Znajduje pierwszy kanał Wi-Fi, którego górna krawędź pokrywa się z limitem.
      3. 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.
  4. Jeśli występuje cellVictimMhz, a kanał komórki ma łącze w dół.

    1. Wykonuje krok 3 z wykorzystaniem cellVictimMhz jako progu, a następnie porównuje z pobieraniem z komórki zamiast z przesyłania za pomocą komórki.
  5. Stosuje limit mocy z kolumny tabeli do obliczonych kanałów niebezpiecznych.

Obliczenie niebezpiecznego kanału

Rysunek 3. Obliczanie niebezpiecznych kanałów w przypadku zakłóceń na sąsiednim kanale

zniekształcenie harmoniczne lub międzymodulacyjne;

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ę. Obliczanie procentowego nakładania się zniekształceń harmonicznych lub intermodulacji na kanale ofiary odbywa się za pomocą tego równania:

$$ overlap = \frac{min(distortion_{high}, victim_{high}) - max(distortion_{low}, victim_{low})}{victim_{bandwidth}} $$

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 duże i niskie zniekształcenia wartościami harmonicznymi opartymi na częstotliwościach łącza wychodzącego komórki i stopniu harmonicznym $ N $.

$$ harmonic_{high} = N * uplink_{high} $$
$$ harmonic_{low} = N * uplink_{low} $$

Niebezpieczne zniekształcenie harmoniczne obliczeń kanału

Rysunek 4. Obliczanie niebezpiecznego kanału przy zniekształceniach 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 NFB 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 $.

$$ intermod_{high} = |M*wifi_{high} + N*uplink_{high}| $$
$$ intermod_{low} = |M*wifi_{low} + N*uplink_{low}| $$

Niebezpieczne obliczenie kanału, zniekształcenie międzymodulacyjne

Rysunek 5. Obliczanie niebezpiecznego kanału przy zniekształcaniu intermodulacji

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 pasma komórkowego powodującego zakłócenia.

Algorytm działa w następujący sposób w przypadku każdego aktywnego kanału komórkowego:

  1. W przypadku pasma kanału komórkowego próbuje znaleźć wpis w tabeli odsyłacza. Jeśli nie znaleziono wpisu w tabeli, zwraca informację, że nie ma niebezpiecznych kanałów dla tego kanału.
  2. Wyszukuje niebezpieczne kanały 2,4 GHz z harmonicznych, jeśli zostały zdefiniowane parametry.

    1. Znajduje stopień harmoniczny N dla 2,4 GHz.
    2. Oblicza harmoniczną częstotliwość wysoką i harmoniczną częstotliwość niską na podstawie N i komórki w dół.
    3. 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.
    4. Oblicza pokrywające się zasięgi harmoniczne w kanale Wi-Fi i oznacza kanał jako niebezpieczny, jeśli przekracza on próg pokrywania się Wi-Fi 2,4 GHz.
    5. Znajduje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który mieści się w górnym przedziale harmonicznych.
    6. 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.
    7. Oznacza każdy kanał 20 MHz jako niebezpieczny.
  3. Jeśli parametry są zdefiniowane, znajduje niebezpieczne kanały 5 GHz z harmonicznych.

    1. Znajduje stopień harmoniczny N dla 5 GHz. Jeśli N to 0, przejdź do kroku 5.
    2. Oblicza harmoniczną częstotliwość wysoką i harmoniczną częstotliwość niską na podstawie N i komórki w dół.
    3. Znajduje niebezpieczne kanały 20 MHz.

      1. Znajduje pierwszy kanał Wi-Fi 20 MHz, który znajduje się w dolnej granicy harmonicznej dochodzącej od dołu.
      2. Oblicza pokrywanie się harmonicznych w obrębie kanału Wi-Fi i oznacza kanał jako niebezpieczny, jeśli przekracza on próg nakładania się Wi-Fi 2,4 GHz.
      3. 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.
      4. 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.
      5. Oznacza każdy kanał 20 MHz w tym zakresie jako kanał niebezpieczny z określonym limitem mocy.
    4. Wykrywa niebezpieczne kanały 40 MHz, 80 MHz i 160 MHz

      1. Powtórz krok 3a, ale z częstotliwościami 40 MHz, 80 MHz i 160 MHz.
      2. 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 o częstotliwości 20 MHz tworzą kanał o częstotliwości 40 MHz i mają nakładanie się na poziomie 30% i 90%, to średnie nakładanie się na poziomie 60% dla kanału 40 MHz).
  4. Znajduje niebezpieczne kanały 2,4 GHz w ramach intermodulacji, jeśli zostały zdefiniowane parametry.

    1. Znajduje współczynniki intermodulacji N i M dla 2, 4 GHz.
    2. Dla każdego kanału Wi-Fi 2,4 GHz:

      1. Oblicza niską częstotliwość intermodulacji i wysoką częstotliwość intermodulacji na podstawie kanału N, M, uplinku komórkowego i Wi-Fi.
      2. Oblicza pokrywające się zasięgi połączenia w komórce i oznacza kanał jako niebezpieczny, jeśli pokrywa się z przekroczeniem progu nakładania się komórek 2,4 GHz.
  5. Znajduje niebezpieczne kanały 5 GHz z intermodulacji, jeśli parametry są zdefiniowane.

    1. Powtórz krok 4, używając kanałów Wi-Fi 5 GHz i progresu pokrycia komórek 5 GHz.
  6. Stosuje limit mocy z kolumny 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 wybraniem niższego limitu mocy, jeśli występują kolizje) i usunięciem kanałów domyślnych ze zbioru, jeśli nie ma żadnych ograniczeń.

Algorytm działa w ten sposób:

  1. 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.
  2. Jeśli wszystkie kanały Wi-Fi 5 GHz są oznaczone jako niebezpieczne, usuwa domyślny kanał Wi-Fi 5 GHz z zestawu.
  3. Zwraca ostateczny zestaw niebezpiecznych kanałów.

Format tabeli przeglądowej

Tabele wyszukiwania są reprezentowane w pliku XML znajdującym się w przesłońowej konfiguracji ciągu config_wifiCoexTableFilepath i zdefiniowane przez ten plik 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

Przykładowa tabela przeglądowa 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 rozpatruje każdy zakres harmoniczny lub międzymodulacyjny osobno i wybiera z powracających kanałów te, które są niebezpieczne. W przypadku intermodulacji oznacza to ocenę zakresu intermodulacji każdego UL na każdym DL.

Algorytm nie rozróżnia kodó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 takim przypadku pełne kanały 5 GHz można ustawić jako listę zastąpień w tabeli przeglądowej.

W zależności od wymagań operatora algorytm unikania kanału 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łużyć ten przypadek użycia, musi być zdefiniowana wartość konfiguracji operatora 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, gdy zmieniają się niebezpieczne kanały, 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 HAL IWifiChip.

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 z 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)

  1. Jeśli kanały są niebezpieczne i istnieje ograniczenie SoftAP

    1. System usuwa niebezpieczne kanały z listy ACS.
    2. Jeśli lista jest pusta, framework zatrzymuje SoftAP.
  2. Jeśli kanały są niebezpieczne i nie ma ograniczeń

    1. Sterownik lub oprogramowanie udostępniane przez dostawcę mają wyższy priorytet bezpiecznym kanałom niż tym, które nie są bezpieczne.

SoftAP jest włączony z włączonym ACS, a niebezpieczne kanały są aktualizowane

  1. Jeśli kanał SoftAP nie jest bezpieczny i istnieje ograniczenie dotyczące SoftAP

    1. Platforma aktualizuje listę ACS, usuwając niebezpieczne kanały.
    2. Jeśli lista jest pusta, framework zamyka SoftAP.
  2. Jeśli kanał SoftAP jest niebezpieczny i nie ma żadnych ograniczeń

    1. Nie są podejmowane żadne działania. Sterownik lub oprogramowanie producenta obsługuje unikanie niebezpiecznych kanałów lub stosowanie ograniczeń mocy, jeśli unikanie nie jest możliwe.

Wi-Fi Direct (P2P)

  1. Jeśli istnieją niebezpieczne kanały z ograniczeniami Wi-Fi Direct (P2P).

    1. Framework prosi o wpa_supplicant, aby uniknąć niebezpiecznych kanałów za pomocą metody HAL: ISupplicantP2pIface::setDisallowedFrequencies().
  2. Jeśli są niebezpieczne kanały bez ograniczeń.

    1. Sterownik lub oprogramowanie zainstalowane przez dostawcę stosuje ograniczenie zasilania w przypadku korzystania z niebezpiecznego kanału bez ograniczenia Wi-Fi Direct (P2P).

Wi-Fi Aware (NAN)

Framework nie jest wykorzystywany do wyboru kanału w przypadku Wi-Fi Aware (NAN) i nie wykonuje żadnego działania. Za unikanie kanału Wi-Fi Aware (NAN) odpowiada sterownik dostawcy lub oprogramowanie układowe.

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 zastrzeżonego algorytmu spoza zakresu, aby wygenerować listę niebezpiecznych kanałów do pobrania do platformy, używając poniższego systemowego interfejsu API.

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 implementacja HIDL: wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)