Wi-Fi/Hücresel Coex Kanalından Kaçınma

Android 12'de sunulan Wi-Fi/hücresel koex kanal önleme özelliği, hücresel kanallardan/hücresel kanallara parazit olabileceği durumlarda güvenli olmayan Wi-Fi kanallarını tanımlar ve kullanılmasını önler. Buna STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN) gibi arayüzler dahildir.

Bu sayfada aşağıdakiler tartışılmaktadır:

  • Hücresel modemin Android çerçevesine bildirmesi gereken bilgiler
  • Wi-Fi çerçevesinin kaçınılması gereken Wi-Fi kanallarını hesaplamak için kullandığı algoritmalar
  • Cihaz üreticilerinin Wi-Fi çerçevesi için sağlaması gereken yapılandırma tabloları
  • Kanaldan kaçınma özelliğiyle ilgili sistem API'leri, yapılandırmalar ve HAL API'leri
  • Kanaldan kaçınmayı işlemek için çerçeve davranışı
  • Kanaldan kaçınmayı ele almak için çip satıcısı davranışı
  • Kanaldan kaçınma için uygulama ayrıntıları
  • Kanaldan kaçınma davranışını doğrulamak için testler

Arka plan

LTE, 5G NR ve Lisanslı Yardımlı Erişim (LAA) gibi hücresel teknolojilere sahip cihazlar için, kullanılan hücresel kanallar, kullanımdaki Wi-Fi kanalını etkileyebilir. Bu, hücresel ve Wi-Fi kanalları kısa frekans ayrımı (komşu kanallar) içinde olduğunda veya harmonik ve intermodülasyon paraziti olduğunda meydana gelir.

Bu tür parazit, aynı anda bir anten iletirken diğeri alırken bir sorun haline gelir. Bu durumda, verici anten alıcı anteni doldurur ve alım kalitesini etkiler.

Bu belge, saldırgan ve kurban olarak parazite alıcı olarak müdahale verici değinmektedir. Ya saldıran veya kurban güvensiz bir kanal olarak adlandırılır Kablosuz kanalı.

Wi-Fi/hücresel koex kanal kaçınma özelliği, Wi-Fi çerçevesinden ayrılan özel kod ihtiyacını azaltan kanal kaçınma için tutarlı bir yaklaşım sağlar. Ayrıca özellik, cihaz üreticilerinin özelliği yapılandırmasına, etkinleştirmesine ve devre dışı bırakmasına ve geçersiz kılmasına olanak tanır.

Bu özellik, Wi-Fi kanallarını kontrol ederek kanaldan kaçınmayı gerçekleştirir. Wi-Fi kanalından kaçınma şeması, bir dizi dört soyut adım olarak tanımlanabilir:

  1. Modem, hücresel frekansta değişiklik olduğunu bildiriyor
  2. Coex kaçınma algoritması, güvenli olmayan Wi-Fi kanallarını hesaplar
  3. Coex kaçınma algoritması Wi-Fi hizmetini bilgilendirir
  4. Çerçeve veya sürücü uygun Wi-Fi eylemini gerçekleştirir

Kanal kaçınma şeması

Şekil 1. Kanal kaçınma şeması

Hücresel frekanstaki bir değişikliği bildirme

Telefon hizmeti, o anda kullanımda olan hücresel kanalları bildirir. İşletim hücresel frekans değiştirdiğinde, modem aracılığıyla telefon hizmetine bu bilgileri rapor IRadio::PhysicalChannelConfig . Bu bilgiler, lisanslı destekli erişim (LAA) ve taşıyıcı toplama (CA) için göstergeleri içerir.

Android 12, aşağıdaki alanlar 1.6 IRadio::PhysicalChannelConfig modemi doldurmak gerektiğini çok katlı formüller için gerekli bilgileri sağlamak.

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

Güvenli olmayan Wi-Fi kanallarını hesaplama

Modem, hücresel frekansta bir değişiklik bildirdiğinde, koex kanal algoritması, hücresel ve Wi-Fi kanalları arasındaki paraziti hesaplar ve hangi Wi-Fi kanalları grubunun güvenli olmadığını belirler.

Komşu ve harmonik / intermodülasyon: farklı formüller gerektiren müdahalenin çok türleri vardır. Anten ve cihazlar arasındaki yerleşimdeki fiziksel farklılıklar nedeniyle, her cihaz için komşuluk ve harmonik/intermodülasyon paraziti modelleri farklıdır. Bu hesaba için cihaz üreticileri girişim iki tip jenerik formüllerin içine fiş parametrelerine bir arama tablosu sağlamalıdır. Bu parametreler hücre bandı başına tanımlanır ve aktif hücre kanallarının bantları tarafından referans alınır.

Maksimum güç kap arama tablosunda tanımlanabilir. Bir maksimum güç sınırı tanımlanmışsa, sağlanan güç kapağı ile güvenli olmayan bir kanal iletim yapar. Güç sınırı yoksa kanal tam güçte iletim yapar.

Genel olarak, kanal kaçınma özelliği, performansı optimize etmek için güvenli olmayan Wi-Fi kanallarından kaçınmak için en iyi çaba yaklaşımını kullanır. Ancak belirli durumlarda (örneğin, taşıyıcı gereksinimleri nedeniyle), belirli arayüzlerin belirli hücresel bantlar için güvenli olmayan kanallardan kaçınması zorunludur. Bu gibi durumlarda, zorunlu kısıtlamalar bu Kablosuz Doğrudan (P2P), SoftAP ve farkında Wi-Fi (NAN) gibi bazı kanalları engellemek için olup değerlerini ihtiva eden bir bit maskesi olarak temsil edilir. Güvenli olmayan bir kanal, tüm kullanım durumları için bu kanalın kullanılmasına karşı bir öneri görevi görürken, zorunlu kısıtlamalar, zorunlu kaçınma için belirli kullanım durumlarını işaretler.

2,4 GHz veya 5 GHz bandının her kanalı güvensiz olarak işaretlenirse, arama tablosu en güvenli seçim olarak parazit yapan hücre bandı başına varsayılan bir 2,4 GHz kanalı veya varsayılan 5 GHz kanalı tanımlayabilir. Grubun geri kalanı güvensiz olarak bildirildiğinde, bu varsayılan kanallar güvenli olmayan kanallar olarak bildirilmez.

geçersiz kılma listesi

Parazitin büyük ölçüde bant genişliğine bağlı olduğu durumlarda formüle dayalı bir yaklaşım sınırlıdır (ve bu nedenle daha büyük bant genişliğine sahip kanallar güvenli olmayabilir, ancak daha küçük bant genişliğine sahip kanallar olmayabilir). LAA gibi durumlarda, hesaplamaları atlamak ve güvenli olmayan kanalların belirli bir listesini kullanmak faydalıdır.

Bunu yapmak için, belirli girişler için arama tablosundaki güvensiz kanalların geçersiz kılma listesi belirtebilirsiniz. Bir tablo girişindeki geçersiz kılma listesi, söz konusu hücre kanalı için hesaplamanın atlandığını ve eşleşen hücre kanalı için güvenli olmayan Wi-Fi kanallarının geçersiz kılma listesi tarafından belirtildiğini belirtir.

Bant genişliğine duyarlı durumlarda, geçersiz kılma listesinde belirli bant genişliklerine sahip belirli kanalları belirterek belirli bant genişliklerinden seçici olarak kaçınabilirsiniz. Bunun nedeni, her Wi-Fi kanal numarasının belirli bir bant genişliğine karşılık gelmesidir.

Geçersiz kılma listesi, her Wi-Fi bandı için bir kanal numaraları listesi veya önceden tanımlanmış kategori anahtar sözcükleri ile temsil edilir:

2g kategorileri:

  • all (tüm 2.4 GHz bant)

5g kategorileri:

  • all (tüm 5 GHz bant)
  • 20mhz (5 GHz 20MHz kanalları)
  • 40mhz (5 GHz 40MHz kanalları)
  • 80mhz (5 GHz 80MHz kanalları)
  • 160mhz (5 GHz 160MHz kanalları)

Komşu kanal paraziti

Kanal paraziti komşu belirlemek için, çok katlı kaçınma algoritması belirli bir eşiğin altına gitmez bir saldırgan ve kurban kanal arasındaki emin mesafe Af yapar.

Kanal paraziti

Bir saldırgan ve kurban kanalı arasında Şekil 2. Uzaktan

Eşik, cihazın fiziksel konfigürasyonu ve girişim yapan bant başına arama tablosu girişinde sağlanan eşik değeri ile belirlenir. Girişim yapmadığı düşünülen bantların tablo girişi yoktur ve güvenli olmayan kanalların hesaplanmasına gerek yoktur (çoğu zaman bu böyledir).

Komşu girişim parametreleri

  • wifiVictimMhz : Wi-Fi kurban için MHz mesafesi eşiği (hücre uplink)
  • cellVictimMhz : Hücre kurban MHz mesafe eşiği (hücre uydu-yer bağı)

Algoritma, her aktif hücre kanalı için aşağıdaki gibi davranır:

  1. Kanalın bandı için bir arama tablosu girişi bulmaya çalışır. Tablo girişi bulunamazsa, o hücre kanalı için güvenli olmayan kanallar olmadan döner.
  2. Hücresel banda bağlı olarak, hangi Wi-Fi bandının risk altında olduğunu ve parazitin bandın hangi tarafından geldiğini belirler (örneğin, daha düşük 2,4 GHz kanallar, daha yüksek 2,4 GHz kanallar, daha düşük 5 GHz kanallar).
  3. Eğer wifiVictimMhz mevcut olduğu ve hücre kanalı uydu hattı vardır ve

    1. Wi-Fi bandının alt kısmı risk altındaysa

      1. Hücre yukarı bağlantısının en yüksek frekansına wifiVictimMhz ekleyerek güvenli olmayan kanalların üst sınırını bulur.
      2. Alt kenarı sınırla örtüşen ilk 20Mhz Wi-Fi kanalını bulur.
      3. Wi-Fi kanalını, onu içeren her büyük bant genişliği kanalını (örneğin, 40Mhz, 80Mhz) ve aynı bandın her alt kanalını güvenli olmayan kanal olarak işaretler.
    2. Wi-Fi bandının üst kısmı risk altındaysa

      1. WifiVictimMhz'yi hücre yukarı bağlantısının en düşük frekansından çıkararak güvenli olmayan kanalların alt sınırını bulur.
      2. Üst kenarı sınırla çakışan ilk Wi-Fi kanalını bulur.
      3. Wi-Fi kanalını, onu içeren her büyük kanalı (örneğin, 40Mhz, 80Mhz) ve aynı bandın daha yüksek her kanalını güvenli olmayan kanal olarak işaretler.
  4. Eğer cellVictimMhz mevcut olduğu ve hücre kanalı uydu-yer bağı vardır.

    1. Gerçekleştirir kullanılarak 3 adım cellVictimMhz eşiği olarak ve hücre alt-bağlantı yerine hücre yukarı bağlantı karşılaştırır.
  5. Hesaplanan güvenli olmayan kanallara tablo girişinin güç üst sınırını uygular.

Güvenli olmayan kanal hesaplaması

Komşu kanal girişimi Şekil 3. güvenli olmayan bir kanal hesabı

Harmonik/intermodülasyon bozulması

Harmonik/intermodülasyon distorsiyonu için, coex motoru harmonik/intermodülasyon sinyalinin aralığını hesaplar ve potansiyel bir kurban kanalıyla sahip olduğu örtüşme yüzdesini değerlendirir. Örtüşme bir örtüşme eşiğini aşarsa, algoritma bunu güvenli olmayan bir durum olarak kabul eder. Bir kurban kanalındaki harmonik/intermodülasyon bozulmasının yüzde örtüşmesinin hesaplanması aşağıdaki denklem ile yapılır:

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

Harmonik bozulma durumunda, algoritma Wi-Fi kanallarını mağdur eden bir hücre uplink kanalının harmonik bozulmasını dikkate alır. Daha sonra yüksek distorsiyonu ve düşük distorsiyonu, hücre uplink frekanslarına ve harmonik derecesi $ N $'a dayalı harmonik değerlerle değiştirir.

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

Güvenli olmayan kanal hesaplama harmonik bozulması

Harmonik distorsiyon Şekil 4. güvenli olmayan bir kanal hesabı

İntermodülasyon durumunda, algoritma hücre uplink'inin intermodülasyon distorsiyonunu ve hücre downlink kanalını mağdur eden Wi-Fi kanalını dikkate alır. Daha sonra yüksek distorsiyon ve düşük distorsiyonu, hücre uplink frekanslarına, Wi-Fi frekanslarına ve iki intermodülasyon katsayısına ($ M $, $ N $) dayalı intermodülasyon değerleri ile değiştirir.

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

Güvenli olmayan kanal hesaplama intermodülasyon bozulması

Modülasyon bozulma için Şekil 5. güvenli olmayan bir kanal hesabı

Girişim yapan hücre bandı başına arama tablosunda $ M $, $ N $ ve çakışma değerlerini belirtebilirsiniz. Bir bant için girişim yoksa, o bant girişi için değerler tablodan çıkarılır. Wi-Fi 2.4GHz ve 5GHz bantları için bu değerlerin iki seti bağımsız olarak tanımlanabilir.

Komşu girişim algoritmasına benzer şekilde, algoritma, girişim yapan hücre bandı başına tanımlanan aynı güç sınırı değerini yeniden kullanır.

Algoritma, her aktif hücre kanalı için aşağıdaki gibi davranır:

  1. Hücre kanalının bandı için bir arama tablosu girişi bulmaya çalışır. Tablo girişi bulunamazsa, bu kanal için güvenli olmayan kanallar olmadan döner.
  2. Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 2.4GHz kanallarını bulur.

    1. 2.4GHz için harmonik N derecesini bulur.
    2. Harmonik yüksek frekansı ve harmonik düşük frekansı, N ve hücre yukarı bağlantısını temel alarak hesaplar.
    3. Aşağıdan gelen harmoniğin alt sınırı içindeki ilk 20MHz Wi-Fi kanalını bulur.
    4. Harmonik çakışmasını Wi-Fi kanalı üzerinden hesaplar ve çakışma 2,4 GHz Wi-Fi çakışma eşiğini aşarsa kanalı güvensiz olarak işaretler.
    5. Yukarıdan gelen harmoniğin üst sınırı içindeki ilk 20MHz Wi-Fi kanalını bulur.
    6. Harmonik çakışmasını Wi-Fi kanalı üzerinden hesaplar ve çakışma 2,4 GHz Wi-Fi çakışma eşiğini aşarsa kanalı güvensiz olarak işaretler.
    7. Aradaki her 20MHz kanalı güvenli olmayan kanal olarak işaretler.
  3. Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 5GHz kanallarını bulur.

    1. 5GHz için harmonik N derecesini bulur. N 0 ise, 5. adıma atlar.
    2. Harmonik yüksek frekansı ve harmonik düşük frekansı, N ve hücre yukarı bağlantısını temel alarak hesaplar.
    3. Güvenli olmayan 20Mhz kanalları bulur.

      1. Aşağıdan gelen harmoniğin alt sınırı içindeki ilk 20MHz Wi-Fi kanalını bulur.
      2. Harmonik çakışmasını Wi-Fi kanalı üzerinden hesaplar ve çakışma 2,4 GHz Wi-Fi çakışma eşiğini aşarsa kanalı güvensiz olarak işaretler.
      3. Yukarıdan gelen harmoniğin üst sınırı içindeki ilk 20MHz Wi-Fi kanalını bulur.
      4. Harmonik çakışmasını Wi-Fi kanalı üzerinden hesaplar ve çakışma 2,4 GHz Wi-Fi çakışma eşiğini aşarsa kanalı güvensiz olarak işaretler.
      5. Belirtilen güç kapağı ile aradaki her 20MHz kanalı güvenli olmayan bir kanal olarak işaretler.
    4. Güvenli olmayan 40MHz, 80MHz, 160MHz kanalları bulur

      1. Adım 3a'yı yineler ancak 40MHz, 80MHz, 160MHz ile.
      2. Harmonik kenardaki kanalların örtüşmelerini hesaplamak yerine, daha küçük oluşturucu kanallardan hesaplanan örtüşmeleri yeniden kullanır (örneğin, iki 20Mhz kanal 40Mhz kanal yapıyorsa ve %30 ve %90 örtüşüyorsa, ortalama %60 çakışmadır) 40Mhz kanal için).
  4. Parametreler tanımlanmışsa, intermodülasyondan güvenli olmayan 2.4GHz kanallarını bulur.

    1. 2.4GHz için N, M intermodülasyon katsayılarını bulur.
    2. Her 2.4GHz Wi-Fi kanalı için:

      1. N, M, hücre uplink ve Wi-Fi kanalına dayalı olarak intermodülasyon düşük frekansını ve intermodülasyon yüksek frekansını hesaplar.
      2. Hücre aşağı bağlantısı üzerinden intermodülasyonun örtüşmesini hesaplar ve örtüşme 2,4 GHz hücre örtüşme eşiğini aşarsa kanalı güvensiz olarak işaretler.
  5. Parametreler tanımlanmışsa, güvenli olmayan 5GHz kanallarını intermodülasyondan bulur.

    1. 5GHz Wi-Fi kanalları ve 5GHz hücre örtüşme eşiğini kullanarak 4. adımı tekrarlar.
  6. Hesaplanan güvenli olmayan kanallara tablo girişinin güç üst sınırını uygular.

Son sonuç

Komşu ve harmonik parazitten her iki güvenli olmayan kanal grubu hesaplandıktan sonra, her iki grubun birleşimi alınarak (çarpışma varsa alt güç başlığı seçilerek) ve varsa varsayılan kanallar setten çıkarılarak nihai set hesaplanır. hiçbir zorunlu kısıtlama uygulanmaz.

Algoritma aşağıdaki gibi davranır:

  1. Her 2,4 GHz Wi-Fi kanalı güvenli olmayan kanal olarak işaretlenirse, varsayılan 2,4 GHz Wi-Fi kanalını setten kaldırır.
  2. Her 5GHz Wi-Fi kanalı güvenli olmayan kanal olarak işaretlenirse, varsayılan 5GHz Wi-Fi kanalını setten kaldırır.
  3. Güvenli olmayan kanalların son kümesini döndürür.

Arama tablosu biçimi

Arama tabloları overlayable ayarlar string bulunan bir XML dosyasında temsil edilir config_wifiCoexTableFilepath ve aşağıdaki XSD ile tanımlanır.


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

Örnek XML tablosu

Aşağıdaki örnek bir XML arama tablosudur:


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

Taşıyıcı toplama

Taşıyıcı kümelenmesi (CA) için, her bir yukarı bağlantı/aşağı bağlantı için harmonik/intermodülasyon aralıkları, bağımsız olarak girişime neden olmak için yeterli örtüşme üretmeyebilir, ancak birleştirildiğinde yeterli örtüşme üretebilir. Algoritma, her harmonik/intermodülasyon aralığını bağımsız olarak ele alır ve döndürülen güvenli olmayan kanalların birleşimini alır. İntermodülasyon durumu için bu, her UL'nin her DL'deki intermodülasyon aralığının değerlendirilmesi anlamına gelir.

Algoritma, PCELL/PSCELL/SCELL'ler arasında hiçbir ayrım yapmaz ve bunları eşit olarak kabul eder.

Lisans Destekli Erişim

Lisans Destekli Erişim (LAA), 46 numaralı bant olarak tanımlanır. Algoritma bu bandı diğer bantlara benzer şekilde ele alır. Bu durumda, tam 5Ghz kanalları, arama tablosunda geçersiz kılma listesi olarak ayarlanabilir.

Taşıyıcı gereksinimlerine bağlı olarak, kanal kaçınma algoritması, tüm 5GHz Wi-Fi bandı için SoftAP ve Wi-Fi Direct (P2P) için zorunlu kısıtlamalar belirler. Algoritma, bu kullanım durumunda işlemek için, taşıyıcı yapılandırma değeri restrict_5g_softap_wifi_direct_for_laa tanımlanmalıdır. Hücre kanalı SAA açık ve varsa restrict_5g_softap_wifi_direct_for_laa olan true , algoritma döner tüm 5 Ghz bant ile güvensiz kanalların seti ve SoftAP ve Wi-Fi Direct (P2P) için zorunlu kısıtlama bayraklarını ayarlar.

Wi-Fi hizmetini bilgilendirme

Coex kanal algoritması güvenli olmayan kanalları hesapladıktan sonra, sistem uygulamalarınıza güvenli olmayan kanalları ve bunların kısıtlamalarını sağlamak için Android çerçevesinde tanımlanan aşağıdaki @SystemApi veri yapısını kullanın.

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

Aşağıdaki kullanın WifiManager @SystemApi yöntem ve güvensiz kanallar değiştiğinde güncellenen değerleri almak için uygulamaların etkinleştirilmesi konusunda geri arama.

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

Wi-Fi eylemi gerçekleştirme

Wi-Fi hizmeti, güvenli olmayan kanallar kümesi hakkında bilgi aldığında, bu kanallardan kaçınılmasını sağlamak için uygun eylemi gerçekleştirir. Bu bölüm, farklı senaryolarda Wi-Fi hizmetinin davranışını açıklar.

Sürücüyü bilgilendirmek

Sürücü, kanaldan kaçınmanın gerçekleştirilmesinde önemli bir role sahip olduğundan, güvenli olmayan kanalları sürücüye ve bellenime iletmek önemlidir. Bunu yapmak için, kullanmak 1.5::IWifiChip HAL API.

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

SoftAP

SoftAP, güvenli olmayan kanaldan kaçınma için ana kullanım durumudur. Aşağıdaki bölüm, ACS ile kanaldan kaçınmanın uygulanabileceği temel SoftAp senaryolarını özetlemektedir. Senaryolar, kanal kaçınma algoritmasının ve sürücü veya bellenimin davranışını açıklar.

ACS etkinken SoftAP'ı başlatma (henüz bir SoftAP yok)

  1. Kanallar güvenli değilse ve bir SoftAP kısıtlaması varsa

    1. Çerçeve, güvenli olmayan kanalları ACS listesinden kaldırır.
    2. Liste boşsa, çerçeve SoftAP'yi durdurur.
  2. Kanallar güvenli değilse ve herhangi bir kısıtlama yoksa

    1. Satıcı sürücüsü/ürün yazılımı, güvenli olmayan kanallara göre güvenli kanallara öncelik verir.

SoftAP, ACS etkin ve güvenli olmayan kanallar güncellendi

  1. SoftAP kanalı güvenli değilse ve bir SoftAP kısıtlaması varsa

    1. Çerçeve, güvenli olmayan kanalları kaldırarak ACS listesini günceller.
    2. Liste boşsa çerçeve SoftAP'ı kapatır.
  2. SoftAP kanalı güvenli değilse ve herhangi bir kısıtlama yoksa

    1. Çerçeve tarafından herhangi bir işlem yapılmaz. Satıcı sürücüsü/donanım yazılımı, güvenli olmayan kanallardan kaçınmayı veya kaçınılması mümkün değilse güç üst sınırını uygulamayı yönetir.

Doğrudan Wi-Fi (P2P)

  1. Wi-Fi Direct (P2P) kısıtlamalarına sahip güvenli olmayan kanallar varsa.

    1. Çerçeve istekleri wpa_supplicant HAL yöntemi kullanılarak güvenli olmayan kanallar önlemek için ISupplicantP2pIface::setDisallowedFrequencies() .
  2. Kısıtlama olmadan güvenli olmayan kanallar varsa.

    1. Wi-Fi Direct (P2P) kısıtlaması olmayan güvenli olmayan bir kanal kullanılıyorsa, satıcı sürücüsü/ürün yazılımı güç sınırını uygular.

Wi-Fi Uyumlu (NAN)

Çerçeve, Wi-Fi Aware (NAN) için kanal seçimine dahil değildir ve herhangi bir çerçeve eylemi yapılmaz. Wi-Fi Aware (NAN) kanal kaçınmasından satıcı sürücüsü/ürün yazılımı sorumludur.

Algoritmayı devre dışı bırakma

Varsayılan algoritma uygulama devre dışı bırakmak ve kaçınma için güvensiz kanalların kendi listesini iletmek istiyorsanız, bindirme yapılandırmak config_wifiDefaultCoexAlgorithmEnabled . Yer paylaşımı false olarak ayarlanırsa varsayılan algoritma devre dışı bırakılır. Ardından, aşağıdaki sistem API'sini kullanarak çerçeveye çekilecek güvenli olmayan kanalların bir listesini oluşturmak için kendi bant dışı tescilli algoritmanızı kullanabilirsiniz.

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

Uygulamayı doğrulama

Wi-Fi/hücresel koex kanal kaçınma özelliği uygulamanızı doğrulamak için aşağıdaki testleri kullanın.

CTS testleri

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

ACTS testleri

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

VTS testleri

  • wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)