Vermeidung von Wi-Fi/Mobilfunk-Coex-Kanälen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Die in Android 12 eingeführte Funktion zur Vermeidung von Wi-Fi-/Mobilfunk-Coex-Kanälen identifiziert und vermeidet die Verwendung unsicherer Wi-Fi-Kanäle in Fällen, in denen es zu Interferenzen von/zu Mobilfunkkanälen kommen könnte. Dazu gehören Schnittstellen wie STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN).

Auf dieser Seite wird Folgendes behandelt:

  • Informationen, die das Mobilfunkmodem an das Android-Framework melden muss
  • Algorithmen, die das Wi-Fi-Framework verwendet, um zu vermeidende Wi-Fi-Kanäle zu berechnen
  • Konfigurationstabellen, die Gerätehersteller für das Wi-Fi-Framework bereitstellen müssen
  • System-APIs, Konfigurationen und HAL-APIs im Zusammenhang mit der Kanalvermeidungsfunktion
  • Framework-Verhalten zum Umgang mit Kanalvermeidung
  • Verhalten des Chipanbieters zur Handhabung der Kanalvermeidung
  • Implementierungsdetails zur Kanalvermeidung
  • Tests zur Validierung des Kanalvermeidungsverhaltens

Hintergrund

Bei Geräten mit Mobilfunktechnologien wie LTE, 5G NR und Licensed Assisted Access (LAA) können die verwendeten Mobilfunkkanäle den verwendeten Wi-Fi-Kanal stören. Dies tritt auf, wenn sich die Mobilfunk- und Wi-Fi-Kanäle in einem kurzen Frequenzabstand befinden (benachbarte Kanäle) oder wenn harmonische und Intermodulationsstörungen vorliegen.

Diese Art von Interferenz wird zu einem Problem, wenn eine Antenne gleichzeitig sendet und eine andere empfängt. In diesem Fall überflutet die Sendeantenne die Empfangsantenne und beeinträchtigt deren Empfangsqualität.

Dieses Dokument bezeichnet den störenden Sender als Angreifer und den Empfänger, der die Störung erfährt, als Opfer . Der Wi-Fi-Kanal, der entweder der Angreifer oder das Opfer ist, wird als unsicherer Kanal bezeichnet .

Die Wi-Fi/Mobilfunk-Coex-Kanalvermeidungsfunktion bietet einen konsistenten Ansatz zur Kanalvermeidung, wodurch der Bedarf an proprietärem Code reduziert wird, der vom Wi-Fi-Framework abweicht. Darüber hinaus ermöglicht die Funktion den Geräteherstellern, die Funktion zu konfigurieren, zu aktivieren und zu deaktivieren und außer Kraft zu setzen.

Die Funktion führt eine Kanalvermeidung durch, indem sie die Wi-Fi-Kanäle steuert. Das Schema zur Vermeidung von Wi-Fi-Kanälen kann als eine Reihe von vier abstrakten Schritten beschrieben werden:

  1. Modem meldet Änderung der Mobilfunkfrequenz
  2. Coex-Vermeidungsalgorithmus berechnet unsichere Wi-Fi-Kanäle
  3. Der Coex-Vermeidungsalgorithmus informiert den Wi-Fi-Dienst
  4. Framework oder Treiber führt entsprechende Wi-Fi-Aktion aus

Kanalvermeidungsschema

Abbildung 1. Kanalvermeidungsschema

Meldung einer Änderung der Mobilfunkfrequenz

Der Telefondienst meldet die derzeit verwendeten Mobilfunkkanäle. Wenn sich die Mobilfunkbetriebsfrequenz ändert, meldet das Modem diese Informationen über IRadio::PhysicalChannelConfig an den Telefoniedienst. Diese Informationen umfassen Hinweise für lizenzierten unterstützten Zugang (LAA) und Trägeraggregation (CA).

Ab Android 12 stellen die folgenden Felder in 1.6 IRadio::PhysicalChannelConfig erforderliche Informationen für die Coex-Formeln bereit, die das Modem ausfüllen muss.

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;
}

Berechnung unsicherer WLAN-Kanäle

Wenn das Modem eine Änderung der Mobilfunkfrequenz meldet, berechnet der Coex-Kanalalgorithmus die Interferenz zwischen Mobilfunk- und Wi-Fi-Kanälen und bestimmt, welche Gruppe von Wi-Fi-Kanälen unsicher ist.

Es gibt mehrere Arten von Interferenzen, die unterschiedliche Formeln erfordern: benachbarte und harmonische/Intermodulation . Aufgrund der physikalischen Unterschiede in Antenne und Layout zwischen den Geräten sind die Muster benachbarter und harmonischer/Intermodulationsinterferenzen für jedes Gerät unterschiedlich. Um dies zu berücksichtigen, müssen Gerätehersteller eine Nachschlagetabelle bereitstellen, um Parameter in generische Formeln für die beiden Arten von Störungen einzufügen. Diese Parameter werden pro Zellband definiert und von den Bändern der aktiven Zellkanäle referenziert.

In der Nachschlagetabelle kann eine maximale Leistungsobergrenze definiert werden. Wenn eine maximale Leistungsobergrenze definiert ist, sendet ein unsicherer Kanal mit der bereitgestellten Leistungsobergrenze. Wenn es keine Leistungsbegrenzung gibt, überträgt der Kanal mit voller Leistung.

Im Allgemeinen verwendet die Kanalvermeidungsfunktion einen Best-Effort-Ansatz, um unsichere Wi-Fi-Kanäle zu vermeiden und die Leistung zu optimieren. Aber in bestimmten Fällen (z. B. aufgrund von Betreiberanforderungen) ist es für bestimmte Schnittstellen obligatorisch, unsichere Kanäle für bestimmte Mobilfunkbänder zu vermeiden. In solchen Fällen werden obligatorische Einschränkungen als Bitmaske dargestellt, die Werte enthält, ob bestimmte Kanäle wie Wi-Fi Direct (P2P), SoftAp und Wi-Fi Aware (NAN) verboten werden sollen. Während ein unsicherer Kanal als Empfehlung dient, diesen Kanal für alle Anwendungsfälle nicht zu verwenden, markieren obligatorische Einschränkungen bestimmte Anwendungsfälle für eine obligatorische Vermeidung.

Wenn jeder Kanal des 2,4-GHz- oder 5-GHz-Bands als unsicher markiert ist, kann die Nachschlagetabelle einen standardmäßigen 2,4-GHz-Kanal oder einen standardmäßigen 5-GHz-Kanal pro störendem Zellenband als die sicherste Wahl definieren. Diese Standardkanäle werden nicht als unsichere Kanäle gemeldet, wenn der Rest des Bandes als unsicher gemeldet wird.

Liste überschreiben

Ein formelhafter Ansatz ist in Fällen begrenzt, in denen die Interferenz stark bandbreitenabhängig ist (und somit Kanäle mit größerer Bandbreite unsicher sein können, Kanäle mit kleinerer Bandbreite jedoch nicht). In Fällen wie bei LAA ist es vorteilhaft, die Berechnungen zu überspringen und eine bestimmte Liste unsicherer Kanäle zu verwenden.

Dazu können Sie für bestimmte Einträge eine Override-Liste unsicherer Kanäle in der Lookup-Tabelle angeben. Eine Aufhebungsliste in einem Tabelleneintrag bedeutet, dass die Berechnung für diesen bestimmten Zellenkanal übersprungen wird und dass die unsicheren Wi-Fi-Kanäle für den übereinstimmenden Zellenkanal durch die Aufhebungsliste spezifiziert sind.

Für bandbreitensensible Fälle können Sie gezielt bestimmte Bandbreiten vermeiden, indem Sie in der Override-Liste bestimmte Kanäle mit bestimmten Bandbreiten angeben. Dies liegt daran, dass jede Wi-Fi-Kanalnummer einer bestimmten Bandbreite entspricht.

Die Überschreibungsliste wird durch eine Liste von Kanalnummern oder vordefinierten Kategorieschlüsselwörtern für jedes Wi-Fi-Band dargestellt:

2g Kategorien:

  • all (gesamtes 2,4-GHz-Band)

5g-Kategorien:

  • all (gesamtes 5GHz-Band)
  • 20 20mhz (5 GHz 20 MHz Kanäle)
  • 40 40mhz (5 GHz 40 MHz Kanäle)
  • 80 80mhz (5 GHz 80 MHz Kanäle)
  • 160mhz (5 GHz 160 MHz Kanäle)

Nachbarkanalinterferenz

Um Nachbarkanalinterferenzen zu bestimmen, stellt der Koex-Vermeidungsalgorithmus sicher, dass der Abstand ΔF zwischen einem Aggressor- und einem Opferkanal nicht unter einen bestimmten Schwellenwert sinkt .

Kanalstörung

Abbildung 2. Entfernung zwischen einem Angreifer- und einem Opferkanal

Der Schwellwert wird durch die physische Konfiguration des Geräts und den Schwellwert bestimmt, der in dem Nachschlagetabelleneintrag pro störendem Band bereitgestellt wird. Bänder, die als nicht störend gelten, haben keinen Tabelleneintrag und unsichere Kanäle müssen nicht berechnet werden (dies ist meistens der Fall).

Benachbarte Interferenzparameter

  • wifiVictimMhz : MHz-Entfernungsschwelle für ein Wi-Fi-Opfer (Zellen-Uplink)
  • cellVictimMhz : MHz-Entfernungsschwelle für ein Zellopfer (Zell-Downlink)

Der Algorithmus verhält sich für jeden aktiven Zellkanal wie folgt:

  1. Versucht für das Band des Kanals, einen Nachschlagetabelleneintrag zu finden. Wenn kein Tabelleneintrag gefunden wird, wird ohne unsichere Kanäle für diesen Zellkanal zurückgesendet.
  2. Identifiziert basierend auf dem Mobilfunkband, welches Wi-Fi-Band gefährdet ist und von welcher Seite des Bandes die Störung kommt (z. B. niedrigere 2,4-GHz-Kanäle, höhere 2,4-GHz-Kanäle, niedrigere 5-GHz-Kanäle).
  3. Wenn wifiVictimMhz vorhanden ist und der Zellkanal Uplink hat und

    1. Wenn der untere Teil des WLAN-Bandes gefährdet ist

      1. Findet die Obergrenze unsicherer Kanäle durch Hinzufügen von wifiVictimMhz zur höchsten Frequenz des Zellen-Uplinks.
      2. Findet den ersten 20-MHz-WLAN-Kanal, dessen Unterkante das Limit überlappt.
      3. Markiert den Wi-Fi-Kanal, jeden Kanal mit größerer Bandbreite, der ihn enthält (z. B. 40 MHz, 80 MHz), und jeden niedrigeren Kanal desselben Bands als unsicheren Kanal.
    2. Wenn der obere Teil des WLAN-Bandes gefährdet ist

      1. Findet die untere Grenze unsicherer Kanäle durch Subtrahieren von wifiVictimMhz von der niedrigsten Frequenz des Zellen-Uplinks.
      2. Findet den ersten WLAN-Kanal, dessen Oberkante die Grenze überlappt.
      3. Markiert den Wi-Fi-Kanal, jeden größeren Kanal, der ihn enthält (z. B. 40 MHz, 80 MHz), und jeden höheren Kanal desselben Bands als unsicheren Kanal.
  4. Wenn cellVictimMhz vorhanden ist und der Zellkanal Downlink hat.

    1. Führt Schritt 3 unter Verwendung von cellVictimMhz als Schwellenwert aus und vergleicht mit dem Zellen-Downlink anstelle des Zellen-Uplinks.
  5. Wendet die Leistungsobergrenze des Tabelleneintrags auf die berechneten unsicheren Kanäle an.

Unsichere Kanalberechnung

Abbildung 3. Unsichere Kanalberechnung für Nachbarkanalstörungen

Harmonische/Intermodulationsverzerrung

Für Oberwellen-/Intermodulationsverzerrungen berechnet die Coex-Engine den Bereich des Oberwellen-/Intermodulationssignals und wertet die prozentuale Überlappung aus, die es mit einem potenziellen Opferkanal hat. Wenn die Überlappung einen Überlappungsschwellenwert überschreitet, betrachtet der Algorithmus dies als eine unsichere Situation. Die Berechnung der prozentualen Überlappung der Oberwellen-/Intermodulationsverzerrung auf einem Opferkanal erfolgt mit der folgenden Gleichung:

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

Im Fall der harmonischen Verzerrung berücksichtigt der Algorithmus die harmonische Verzerrung eines Zellen-Uplink-Kanals, der Wi-Fi-Kanäle zum Opfer fällt. Es ersetzt dann die Verzerrung hoch und die Verzerrung niedrig durch die harmonischen Werte basierend auf den Zellen-Uplink-Frequenzen und einem harmonischen Grad $ N $.

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

Unsichere Kanalberechnung harmonische Verzerrung

Abbildung 4. Unsichere Kanalberechnung für harmonische Verzerrung

Im Fall der Intermodulation berücksichtigt der Algorithmus die Intermodulationsverzerrung des Zellen-Uplinks und des Wi-Fi-Kanals, die den Zellen-Downlink-Kanal zum Opfer fallen. Es ersetzt dann die Verzerrung hoch und die Verzerrung niedrig durch die Intermodulationswerte basierend auf den Zellen-Uplink-Frequenzen, Wi-Fi-Frequenzen und den zwei Intermodulationskoeffizienten $M$, $N$.

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

Unsichere Kanalberechnung Intermodulationsverzerrung

Abbildung 5. Unsichere Kanalberechnung für Intermodulationsverzerrung

Sie können $ M $, $ N $ und Überlappungswerte in der Nachschlagetabelle pro störendem Zellenband angeben. Wenn es für ein Band keine Interferenz gibt, werden die Werte aus der Tabelle für diesen Bandeintrag weggelassen. Zwei Sätze dieser Werte für die Wi-Fi-2,4-GHz- und 5-GHz-Bänder können unabhängig voneinander definiert werden.

Ähnlich wie beim benachbarten Interferenzalgorithmus verwendet der Algorithmus denselben Leistungsbegrenzungswert, der pro störendem Zellenband definiert ist.

Der Algorithmus verhält sich für jeden aktiven Zellkanal wie folgt:

  1. Für das Band des Zellenkanals versucht er, einen Nachschlagetabelleneintrag zu finden. Wenn kein Tabelleneintrag gefunden wird, werden keine unsicheren Kanäle für diesen Kanal zurückgegeben.
  2. Findet die unsicheren 2,4-GHz-Kanäle anhand von Oberschwingungen, wenn Parameter definiert sind.

    1. Findet den harmonischen Grad N für 2,4 GHz.
    2. Berechnet die harmonische Hochfrequenz und die harmonische Niederfrequenz basierend auf N und dem Zellen-Uplink.
    3. Findet den ersten 20-MHz-WLAN-Kanal, der sich innerhalb der unteren Grenze der von unten kommenden Oberwelle befindet.
    4. Berechnet die Überlappung der Harmonischen über den Wi-Fi-Kanal und markiert den Kanal als unsicher, wenn die Überlappung den 2,4-GHz-Wi-Fi-Überlappungsschwellenwert überschreitet.
    5. Findet den ersten 20-MHz-WLAN-Kanal, der innerhalb der Obergrenze der von oben kommenden Harmonischen liegt.
    6. Berechnet die Überlappung der Harmonischen über den Wi-Fi-Kanal und markiert den Kanal als unsicher, wenn die Überlappung den 2,4-GHz-Wi-Fi-Überlappungsschwellenwert überschreitet.
    7. Markiert jeden 20-MHz-Kanal dazwischen als unsicheren Kanal.
  3. Findet die unsicheren 5-GHz-Kanäle anhand von Oberschwingungen, wenn Parameter definiert sind.

    1. Findet den harmonischen Grad N für 5 GHz. Wenn N 0 ist, springt zu Schritt 5.
    2. Berechnet die harmonische Hochfrequenz und die harmonische Niederfrequenz basierend auf N und dem Zellen-Uplink.
    3. Findet unsichere 20-MHz-Kanäle.

      1. Findet den ersten 20-MHz-WLAN-Kanal, der sich innerhalb der unteren Grenze der von unten kommenden Oberwelle befindet.
      2. Berechnet die Überlappung der Harmonischen über den Wi-Fi-Kanal und markiert den Kanal als unsicher, wenn die Überlappung den 2,4-GHz-Wi-Fi-Überlappungsschwellenwert überschreitet.
      3. Findet den ersten 20-MHz-WLAN-Kanal, der innerhalb der Obergrenze der von oben kommenden Harmonischen liegt.
      4. Berechnet die Überlappung der Harmonischen über den Wi-Fi-Kanal und markiert den Kanal als unsicher, wenn die Überlappung den 2,4-GHz-Wi-Fi-Überlappungsschwellenwert überschreitet.
      5. Markiert jeden 20-MHz-Kanal dazwischen als unsicheren Kanal mit der angegebenen Leistungsobergrenze.
    4. Findet unsichere 40-MHz-, 80-MHz- und 160-MHz-Kanäle

      1. Wiederholt Schritt 3a, aber mit 40 MHz, 80 MHz, 160 MHz.
      2. Anstatt die Überlappungen der Kanäle an der harmonischen Kante zu berechnen, werden die berechneten Überlappungen von den kleineren Teilkanälen wiederverwendet (wenn beispielsweise zwei 20-MHz-Kanäle einen 40-MHz-Kanal bilden und 30 % und 90 % überlappen, dann beträgt der Durchschnitt 60 % Überlappung für den 40-MHz-Kanal).
  4. Findet die unsicheren 2,4-GHz-Kanäle durch Intermodulation, wenn Parameter definiert sind.

    1. Findet die Intermodulationskoeffizienten N, M für 2,4 GHz.
    2. Für jeden 2,4-GHz-WLAN-Kanal:

      1. Berechnet die niedrige Intermodulationsfrequenz und die hohe Intermodulationsfrequenz basierend auf N, M, Zellen-Uplink und Wi-Fi-Kanal.
      2. Berechnet die Überlappung der Intermodulation über den Zellen-Downlink und markiert den Kanal als unsicher, wenn die Überlappung den 2,4-GHz-Zellenüberlappungsschwellenwert überschreitet.
  5. Findet die unsicheren 5-GHz-Kanäle durch Intermodulation, wenn Parameter definiert sind.

    1. Wiederholt Schritt 4 mit den 5-GHz-WLAN-Kanälen und dem 5-GHz-Zellenüberlappungsschwellenwert.
  6. Wendet die Leistungsobergrenze des Tabelleneintrags auf die berechneten unsicheren Kanäle an.

Endergebnis

Nachdem beide Sätze unsicherer Kanäle aus benachbarten und harmonischen Interferenzen berechnet wurden, wird der endgültige Satz berechnet, indem die Vereinigung beider Sätze genommen wird (und bei Kollisionen die niedrigere Leistungsobergrenze ausgewählt wird) und die Standardkanäle aus dem Satz entfernt werden, falls vorhanden keine verbindlichen Beschränkungen angewendet.

Der Algorithmus verhält sich wie folgt:

  1. Wenn jeder 2,4-GHz-WLAN-Kanal als unsicherer Kanal markiert ist, wird der standardmäßige 2,4-GHz-WLAN-Kanal aus dem Set entfernt.
  2. Wenn jeder 5-GHz-WLAN-Kanal als unsicherer Kanal markiert ist, wird der standardmäßige 5-GHz-WLAN-Kanal aus dem Satz entfernt.
  3. Gibt den letzten Satz unsicherer Kanäle zurück.

Nachschlagetabellenformat

Die Nachschlagetabellen werden in einer XML-Datei dargestellt, die sich in der überlagerbaren Konfigurationszeichenfolge config_wifiCoexTableFilepath befindet und durch die folgende XSD definiert wird.


<?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>

Beispiel XML-Tabelle

Das Folgende ist ein Beispiel für eine XML-Nachschlagetabelle:


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

Carrier-Aggregation

Für die Trägeraggregation (CA) erzeugen die Oberschwingungs-/Intermodulationsbereiche für jede Aufwärtsstrecke/Abwärtsstrecke möglicherweise keine ausreichende Überlappung, um unabhängig voneinander Interferenzen zu verursachen, können jedoch bei Kombination eine ausreichende Überlappung erzeugen. Der Algorithmus betrachtet jeden Oberschwingungs-/Intermodulationsbereich unabhängig und nimmt die Vereinigung der zurückgegebenen unsicheren Kanäle. Für den Intermodulationsfall bedeutet dies, die Intermodulationsreichweite jeder UL auf jede DL zu bewerten.

Der Algorithmus unterscheidet nicht zwischen PCELL/PSCELL/SCELLs und behandelt sie als gleich.

Lizenzunterstützter Zugriff

License Assisted Access (LAA) wird als Band Nr. 46 identifiziert. Der Algorithmus behandelt dieses Band ähnlich wie andere Bänder. In diesem Fall können die vollen 5-GHz-Kanäle als Override-Liste in der Lookup-Tabelle eingestellt werden.

Abhängig von den Betreiberanforderungen legt der Kanalvermeidungsalgorithmus obligatorische Einschränkungen für SoftAP und Wi-Fi Direct (P2P) für das gesamte 5-GHz-Wi-Fi-Band fest. Damit der Algorithmus diesen Anwendungsfall verarbeiten kann, muss der Netzbetreiber-Konfigurationswert „ restrict_5g_softap_wifi_direct_for_laa “ definiert werden. Wenn sich der Zellkanal auf LAA befindet und „ restrict_5g_softap_wifi_direct_for_laa “ auf „ true “ gesetzt ist, gibt der Algorithmus den Satz unsicherer Kanäle mit dem gesamten 5-GHz-Band zurück und setzt die obligatorischen Beschränkungs-Flags für SoftAP und Wi-Fi Direct (P2P).

Wi-Fi-Dienst informieren

Nachdem der Coex-Kanalalgorithmus die unsicheren Kanäle berechnet hat, verwenden Sie die folgende @SystemApi-Datenstruktur, die im Android-Framework definiert ist, um Ihre System-Apps mit den unsicheren Kanälen und ihren Einschränkungen bereitzustellen.

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();
}

Verwenden Sie die folgenden WifiManager @SystemApi-Methoden und Rückrufe, damit die Apps aktualisierte Werte erhalten, wenn sich die unsicheren Kanäle ändern.

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);
}

Durchführen einer Wi-Fi-Aktion

Wenn der Wi-Fi-Dienst Informationen über den Satz unsicherer Kanäle erhält, führt er die entsprechende Aktion aus, um sicherzustellen, dass diese Kanäle vermieden werden. Dieser Abschnitt beschreibt das Verhalten des Wi-Fi-Dienstes in verschiedenen Szenarien.

Fahrer informieren

Da der Treiber eine wichtige Rolle bei der Kanalvermeidung spielt, ist es wichtig, die unsicheren Kanäle an den Treiber und die Firmware zu übermitteln. Verwenden Sie dazu die 1.5::IWifiChip HAL-API.

setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
  bitfield<IfaceType> restrictions);

SoftAP

SoftAP ist der Hauptanwendungsfall für die Vermeidung unsicherer Kanäle. Der folgende Abschnitt umreißt die wichtigsten SoftAp-Szenarien, in denen Kanalvermeidung mit ACS angewendet werden kann. Die Szenarien beschreiben das Verhalten des Kanalvermeidungsalgorithmus und des Treibers oder der Firmware.

SoftAP mit aktiviertem ACS starten (noch kein SoftAP aktiv)

  1. Wenn Kanäle unsicher sind und eine SoftAP-Einschränkung vorliegt

    1. Das Framework entfernt unsichere Kanäle aus der ACS-Liste.
    2. Wenn die Liste leer ist, stoppt das Framework SoftAP.
  2. Wenn Kanäle unsicher sind und es keine Einschränkungen gibt

    1. Der Treiber/die Firmware des Herstellers gibt den sicheren Kanälen Vorrang vor den unsicheren Kanälen.

SoftAP ist mit aktiviertem ACS aktiv und unsichere Kanäle werden aktualisiert

  1. Wenn der SoftAP-Kanal unsicher ist und eine SoftAP-Einschränkung vorliegt

    1. Das Framework aktualisiert die ACS-Liste, indem es die unsicheren Kanäle entfernt.
    2. Wenn die Liste leer ist, schließt das Framework SoftAP.
  2. Wenn der SoftAP-Kanal unsicher ist und keine Einschränkungen bestehen

    1. Das Framework ergreift keine Aktion. Der Treiber/die Firmware des Anbieters übernimmt die Vermeidung der unsicheren Kanäle oder die Anwendung der Leistungsobergrenze, wenn eine Vermeidung nicht möglich ist.

Wi-Fi Direct (P2P)

  1. Wenn es unsichere Kanäle mit Einschränkungen für Wi-Fi Direct (P2P) gibt.

    1. Das Framework fordert wpa_supplicant auf, die unsicheren Kanäle mithilfe der HAL-Methode ISupplicantP2pIface::setDisallowedFrequencies() zu vermeiden.
  2. Wenn es unsichere Kanäle ohne Einschränkungen gibt.

    1. Der Treiber/die Firmware des Anbieters wendet die Leistungsobergrenze an, wenn ein unsicherer Kanal ohne Einschränkung von Wi-Fi Direct (P2P) verwendet wird.

WLAN-fähig (NAN)

Das Framework ist nicht an der Kanalauswahl für Wi-Fi Aware (NAN) beteiligt, und es werden keine Frameworkmaßnahmen ergriffen. Der Treiber/die Firmware des Anbieters ist für die Vermeidung von Wi-Fi Aware (NAN)-Kanälen verantwortlich.

Deaktivieren des Algorithmus

Wenn Sie die Implementierung des Standardalgorithmus deaktivieren und Ihre eigene Liste unsicherer Kanäle zur Vermeidung übergeben möchten, konfigurieren Sie das Overlay config_wifiDefaultCoexAlgorithmEnabled . Wenn das Overlay auf „false“ gesetzt ist, ist der Standardalgorithmus deaktiviert. Sie können dann Ihren eigenen proprietären Out-of-Band-Algorithmus verwenden, um eine Liste mit unsicheren Kanälen zu generieren, die Sie mit der folgenden System-API an das Framework anschließen können.

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

Validierung der Implementierung

Verwenden Sie die folgenden Tests, um Ihre Implementierung der Funktion zur Vermeidung von Wi-Fi-/Mobilfunk-Coex-Kanälen zu validieren.

CTS-Tests

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

ACTS-Tests

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

VTS-Tests

  • wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)