Unikanie kanałów współistnienia Wi-Fi i sieci komórkowej

Funkcja unikania kanałów współistnienia Wi-Fi i 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) i 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łów.
  • 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ą częstotliwość (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ą, nazywamy niebezpiecznym kanałem.

Funkcja unikania kanałów w przypadku współistnienia Wi-Fi i sieci komórkowej zapewnia spójne podejście do unikania kanałów, co zmniejsza potrzebę stosowania kodu zastrzeżonego, który odbiega od platformy Wi-Fi. Dodatkowo ta funkcja umożliwia producentom urządzeń konfigurowanie, włączanie i wyłączanie oraz zastępowanie tej funkcji.

Funkcja ta zapobiega zakłóceniom kanałów, kontrolując kanały Wi-Fi. Schemat unikania kanałów Wi-Fi można opisać jako serię 4 abstrakcyjnych kroków:

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

Schemat unikania kanałów

Rysunek 1. Schemat unikania kanałów

Zgłaszanie zmiany częstotliwości komórkowej

Usługa telefoniczna raportuje używane kanały komórkowe. Gdy zmieni się częstotliwość komórkowa, modem przesyła 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;

    /** 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 obliczy zakłócenia między kanałami komórkowymi i Wi-Fi oraz określi, które kanały Wi-Fi są niebezpieczne.

Istnieje kilka rodzajów zakłóceń, które wymagają różnych wzorów: sąsiednieharmoniczne/intermodulacyjne. Ze względu na fizyczne różnice w antenie i układzie między urządzeniami wzorce sąsiednich zakłóceń oraz zakłóceń harmonicznych i intermodulacyjnych są różne dla każdego urządzenia. Aby to uwzględnić, producenci urządzeń muszą udostępnić tabelę przeglądową, 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órki i są do nich odwoływane pasma aktywnych kanałów komórkowych.

W tabeli przeglądowej można zdefiniować maksymalny limit mocy. Jeśli jest zdefiniowany, niebezpieczny kanał nadaje z określonym limitem mocy. W przeciwnym razie kanał nadaje 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 przeglądowa 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 przeglądowej podać listę zastąpień niebezpiecznych kanałów. Lista zastąpień w pozycji tabeli wskazuje, że obliczenia dla tego konkretnego kanału komórki są pomijane. Zamiast tego lista zastąpień wyraźnie określa niebezpieczne kanały Wi-Fi dla pasującego kanału komórkowego.

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 sąsiednich kanałów

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.

Zakłócenia kanału

Rysunek 2. Odległość między kanałem sprawcy 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ół komórki)

W przypadku każdego aktywnego kanału komórkowego algorytm działa w ten sposób:

  1. W przypadku pasma kanału próbuje znaleźć wpis w tabeli przeglądowej. Jeśli nie znaleziono wpisu w tabeli, zwraca brak niebezpiecznych kanałów dla tego kanału komórkowego.
  2. 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. z dolnych kanałów 2,4 GHz, górnych kanałów 2,4 GHz, dolnych kanałów 5 GHz).
  3. Jeśli wifiVictimMhz jest obecny, a kanał komórkowy ma łącze wysyłające i

    1. Jeśli dolna część pasma Wi-Fi jest zagrożona:

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

      1. Znajduje dolną granicę niebezpiecznych kanałów, odejmując 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 niebezpieczny kanał.
  4. Jeśli występuje cellVictimMhz, a kanał komórkowy ma łącze w dół:

    1. W kroku 3 używa 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.
  5. Stosuje limit mocy z wpisu w tabeli do obliczonych niebezpiecznych kanałów.

Obliczanie niebezpiecznego kanału

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 procentowego pokrywania się z kanałem docelowym zniekształceń harmonicznych lub intermodulacyjnych odbywa się według tego wzoru:

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

W przypadku zniekształceń harmonicznych algorytm bierze pod uwagę zniekształcenia harmoniczne kanału transmisji danych z komórki, który zakłóca 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 $.

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

Zniekształcenia harmoniczne w obliczeniach dotyczących niebezpiecznych kanałów

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 $.

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

Obliczanie zniekształceń intermodulacyjnych w przypadku niebezpiecznego kanału

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ępują zakłócenia, 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:

  1. W przypadku pasma kanału komórkowego próbuje znaleźć wpis w tabeli przeglądowej. Jeśli nie znaleziono wpisu w tabeli, zwraca brak niebezpiecznych kanałów dla tego kanału.
  2. Wyszukuje niebezpieczne kanały 2,4 GHz z harmonii, jeśli zdefiniowano parametry.

    1. Znajduje stopień harmonicznej N dla częstotliwości 2,4 GHz.
    2. Oblicza harmoniczną wysoką częstotliwość i harmoniczną niską częstotliwość na podstawie N i łącza komórkowego.
    3. Wyszukuje pierwszy kanał Wi-Fi o częstotliwości 20 MHz, który znajduje się w dolnym zakresie harmonicznej pochodzącej z dołu.
    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 w paśmie 2,4 GHz.
    5. 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.
    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 w paśmie 2,4 GHz.
    7. Oznacza każdy kanał 20 MHz pomiędzy nimi jako niebezpieczny.
  3. Wyszukuje niebezpieczne kanały 5 GHz na podstawie harmonicznych, jeśli zdefiniowano parametry.

    1. Określa stopień harmonicznej N dla częstotliwości 5 GHz. Jeśli N = 0, przejdź do kroku 5.
    2. Oblicza harmoniczną wysoką częstotliwość i harmoniczną niską częstotliwość na podstawie N i łącza komórkowego.
    3. Wyszukuje niebezpieczne kanały 20 MHz.

      1. 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.
      2. 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.
      3. 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.
      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 20-megahercowy kanał pomiędzy jako niebezpieczny kanał z określonym limitem mocy.
    4. Wyszukiwanie niebezpiecznych kanałów 40 MHz, 80 MHz i 160 MHz

      1. Powtarza krok 3a, ale z częstotliwościami 40 MHz, 80 MHz i 160 MHz.
      2. 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 mają nakładanie się na poziomie 30% i 90%, to średnie nakładanie się kanału o szerokości 40 MHz wynosi 60%).
  4. Wyszukuje niebezpieczne kanały 2,4 GHz z intermodulacji, jeśli zdefiniowano parametry.

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

      1. Oblicza intermodulację niskiej częstotliwości i intermodulację wysokiej częstotliwości na podstawie N, M, łącza komórkowego i kanału Wi-Fi.
      2. Oblicza nakładanie się intermodulacji na komórkę w łączu w dół i oznacza kanał jako niebezpieczny, jeśli nakładanie się przekracza próg nakładania się komórki 2,4 GHz.
  5. Wyszukuje niebezpieczne kanały 5 GHz z intermodulacji, jeśli zdefiniowano parametry.

    1. Powtarza krok 4, używając kanałów Wi-Fi 5 GHz i progu nakładania się komórek 5 GHz.
  6. 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 są stosowane żadne obowiązkowe ograniczenia.

Algorytm działa w ten sposób:

  1. 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.
  2. Jeśli każdy kanał Wi-Fi 5 GHz jest oznaczony jako niebezpieczny, 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 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ę przeglądową 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 wysyłającego lub odbierającego mogą nie powodować wystarczającego nakładania się, aby powodować zakłócenia niezależnie, ale mogą powodować wystarczające nakładanie się w połączeniu. 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 UL na każdym 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 oznaczane numerem 46. Algorytm traktuje ten zakres podobnie jak inne zakresy. W takim przypadku pełne kanały 5 GHz można ustawić jako listę zastępczą w tabeli przeglądowej.

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 ma wartość true, algorytm zwraca zbiór niebezpiecznych kanałów z całym pasmem 5 GHz i ustawia flagi obowiązkowych ograniczeń dla SoftAP i Wi-Fi Direct (P2P).

Informowanie o usłudze Wi-Fi

Po obliczeniu przez algorytm kanałów współistnienia kanałów niebezpiecznych, aby przekazać aplikacjom systemowym kanały niebezpieczne 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<CoexUnsafeChannel> 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.

Poinformuj kierowcę

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. Aby to zrobić, 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.

Uruchomienie SoftAP z włączonym ACS (brak SoftAP)

  1. Jeśli kanały są niebezpieczne i obowiązuje ograniczenie SoftAP:

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

    1. Sterownik lub oprogramowanie sprzętowe dostawcy przyznaje wyższy priorytet bezpiecznym kanałom niż kanałom niebezpiecznym.

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

  1. Jeśli kanał SoftAP jest niebezpieczny i obowiązuje ograniczenie SoftAP:

    1. Platforma aktualizuje listę ACS, usuwając z niej niebezpieczne kanały.
    2. Jeśli lista jest pusta, platforma zamyka punkt dostępu SoftAP.
  2. Jeśli kanał SoftAP jest niebezpieczny i nie ma ograniczeń:

    1. 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)

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

    1. Framework wysyła żądanie wpa_supplicant, aby uniknąć niebezpiecznych kanałów przy użyciu metody HAL ISupplicantP2pIface::setDisallowedFrequencies().
  2. Jeśli istnieją niebezpieczne kanały bez ograniczeń:

    1. 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ść false, domyślny algorytm jest wyłączony. Następnie możesz użyć własnego zastrzeżonego algorytmu poza pasmem, aby wygenerować listę niebezpiecznych kanałów, które mają być przekazywane do platformy za pomocą tego systemowego interfejsu API.

public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
  int coexRestrictions);

Sprawdzanie poprawności implementacji

Aby sprawdzić, czy funkcja unikania kanałów w przypadku współistnienia Wi-Fi i 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)