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

Android 12'de sunulan Wi-Fi/hücresel koeks kanal önleme özelliği, hücresel kanallardan/kanallara girişim olabileceği durumlarda güvenli olmayan Wi-Fi kanallarını tespit eder 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
  • Kaçınılması gereken Wi-Fi kanallarını hesaplamak için Wi-Fi çerçevesinin kullandığı algoritmalar
  • Cihaz üreticilerinin Wi-Fi çerçevesi için sağlaması gereken yapılandırma tabloları
  • Kanal kaçınma özelliğiyle ilgili sistem API'leri, yapılandırmaları ve HAL API'leri
  • Kanaldan kaçınmayı ele almak için çerçeve davranışı
  • Kanaldan kaçınmaya yönelik çip satıcısı davranışı
  • Kanallardan kaçınmaya yönelik uygulama ayrıntıları
  • Kanaldan kaçınma davranışını doğrulamaya yönelik testler

Arka plan

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

Bu tür bir girişim, bir anten aynı anda iletim yaparken ve diğeri alırken sorun haline gelir. Bu durumda, verici anten alıcı anteni sular altında bırakarak alım kalitesini etkiler.

Bu belge, müdahale eden vericiyi saldırgan olarak ve müdahaleyi deneyimleyen alıcıyı da mağdur olarak ifade etmektedir. Saldırgan veya mağdur olan Wi-Fi kanalına güvensiz kanal denir.

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

Bu özellik, Wi-Fi kanallarını kontrol ederek kanal önleme işlemini gerçekleştirir. Wi-Fi kanalı önleme şeması dört soyut adımdan oluşan bir dizi olarak tanımlanabilir:

  1. Modem hücresel frekansta değişiklik bildiriyor
  2. Coex önleme algoritması, güvenli olmayan Wi-Fi kanallarını hesaplar
  3. Coex önleme algoritması Wi-Fi servisini bilgilendiriyor
  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 değişikliği bildirme

Telefon hizmeti, o anda kullanımda olan hücresel kanalları bildirir. Çalışan hücresel frekans değiştiğinde modem bu bilgiyi IRadio::PhysicalChannelConfig aracılığıyla telefon servisine bildirir. Bu bilgiler, lisanslı yardımlı erişim (LAA) ve taşıyıcı toplama (CA) için göstergeleri içerir.

Android 12'den itibaren, 1.6 IRadio::PhysicalChannelConfig aşağıdaki alanlar, modemin doldurması gereken koex formülleri için gerekli bilgileri sağlar.

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, ortak kanal algoritması hücresel ve Wi-Fi kanalları arasındaki girişimi hesaplar ve hangi Wi-Fi kanalı grubunun güvenli olmadığını belirler.

Farklı formüller gerektiren birden fazla girişim türü vardır: komşu ve harmonik/ara modülasyon . Cihazlar arasındaki anten ve düzendeki fiziksel farklılıklar nedeniyle, her cihaz için komşu ve harmonik/modülasyonlar arası girişim desenleri farklıdır. Bunu hesaba katmak için cihaz üreticilerinin, parametreleri iki tür girişim için genel formüllere eklemek üzere bir arama tablosu sağlamaları gerekir. Bu parametreler hücre bandı başına tanımlanır ve aktif hücre kanallarının bantları tarafından referans alınır.

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

Genel olarak kanal kaçınma özelliği, performansı optimize etmek amacıyla güvenli olmayan Wi-Fi kanallarından kaçınmak için en iyi çaba yaklaşımını kullanır. Ancak bazı durumlarda (örneğin, taşıyıcı gereklilikleri nedeniyle), belirli arayüzlerin belirli hücresel bantlar için güvenli olmayan kanallardan kaçınması zorunludur. Bu gibi durumlarda zorunlu kısıtlamalar , Wi-Fi Direct (P2P), SoftAp ve Wi-Fi Aware (NAN) gibi belirli kanalların yasaklanıp yasaklanmayacağına ilişkin değerleri içeren bir bit maskesi olarak temsil edilir. Güvenli olmayan bir kanal, bu kanalın tüm kullanım durumları için 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ındaki her kanal güvensiz olarak işaretlenirse, arama tablosu en güvenli seçenek olarak girişim yapan hücre bandı başına varsayılan 2,4 GHz kanal veya varsayılan 5 GHz kanal tanımlayabilir. Bandın geri kalanının güvensiz olduğu bildirildiğinde, bu varsayılan kanallar güvensiz kanallar olarak raporlanmaz.

Listeyi geçersiz kıl

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 dolayısıyla daha büyük bant genişliğine sahip kanallar güvenli olmayabilir ancak daha küçük bant genişliğine sahip kanallar güvenli 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şlere yönelik arama tablosunda güvenli olmayan kanalların geçersiz kılınacak listesini belirleyebilirsiniz. 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 belirlendiğ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 kanal numaraları veya önceden tanımlanmış kategori anahtar sözcüklerinden oluşan bir listeyle temsil edilir:

2g kategorileri:

  • all (2,4 GHz bandın tamamı)

5g kategorileri:

  • all (5 GHz bandın tamamı)
  • 20mhz (5 GHz 20 MHz kanallar)
  • 40mhz (5 GHz 40 MHz kanallar)
  • 80mhz (5 GHz 80 MHz kanallar)
  • 160mhz (5 GHz 160 MHz kanallar)

Komşu kanal girişimi

Komşu kanal girişimini belirlemek için eşeksenli kaçınma algoritması, saldırgan ve kurban kanal arasındaki ΔF mesafesinin belirli bir eşiğin altına girmemesini sağlar.

Kanal girişimi

Şekil 2. Saldırgan ve kurban kanalı arasındaki mesafe

Eşik, cihazın fiziksel konfigürasyonu ve müdahale eden bant başına arama tablosu girişinde sağlanan eşik değeri ile belirlenir. Müdahale etmediği düşünülen bantların tablo girişi yoktur ve güvenli olmayan kanalların hesaplanmasına gerek yoktur (bu çoğu zaman geçerlidir).

Komşu girişim parametreleri

  • wifiVictimMhz : Bir Wi-Fi kurbanı için MHz mesafe eşiği (hücre uplink)
  • cellVictimMhz : Bir hücre kurbanı için MHz mesafe eşiği (hücre aşağı bağlantısı)

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

  1. Kanalın grubu 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 geri 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 tanımlar (örneğin, daha düşük 2,4 GHz kanallar, daha yüksek 2,4 GHz kanallar, daha düşük 5 GHz kanallar).
  3. wifiVictimMhz mevcutsa ve hücre kanalında yukarı bağlantı varsa ve

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

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

      1. WifiVictimMhz'yi hücre uplink'inin en düşük frekansından çıkararak güvenli olmayan kanalların alt sınırını bulur.
      2. Üst kenarı limitle örtüşen ilk Wi-Fi kanalını bulur.
      3. Wi-Fi kanalını, onu içeren her büyük kanalı (örneğin, 40M hz, 80 Mhz) ve aynı banttaki her yüksek kanalı güvenli olmayan kanal olarak işaretler.
  4. cellVictimMhz mevcutsa ve hücre kanalında downlink varsa.

    1. Eşik olarak cellVictimMhz kullanarak 3. adımı gerçekleştirir ve hücre yukarı bağlantısı yerine hücre aşağı bağlantısını karşılaştırır.
  5. Hesaplanan güvenli olmayan kanallara tablo girişinin güç sınırını uygular.

Güvenli olmayan kanal hesaplaması

Şekil 3. Komşu kanal girişimi için güvenli olmayan kanal hesaplaması

Harmonik/modülasyonlar arası bozulma

Harmonik/intermodülasyon distorsiyonu için koex motoru, harmonik/intermodülasyon sinyalinin aralığını hesaplar ve potansiyel kurban kanalıyla sahip olduğu örtüşme yüzdesini değerlendirir. Örtüşme örtüşme eşiğini aşarsa algoritma bunu güvenli olmayan bir durum olarak değerlendirir. Kurban kanaldaki harmonik/modülasyonlar arası distorsiyonun örtüşme yüzdesinin hesaplanması aşağıdaki denklemle gerçekleştirilir:

$$ 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 yukarı bağlantı kanalının harmonik bozulmasını dikkate alır. Daha sonra yüksek distorsiyonu ve düşük distorsiyonu, hücre yukarı bağlantı frekanslarına ve $ N $ harmonik derecesine dayalı harmonik değerlerle değiştirir.

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

Güvenli olmayan kanal hesaplama harmonik bozulması

Şekil 4. Harmonik bozulma için güvenli olmayan kanal hesaplaması

İntermodülasyon durumunda, algoritma, hücre uplink'inin intermodülasyon distorsiyonunu ve Wi-Fi kanalının hücre downlink kanalını mağdur etmesini dikkate alır. Daha sonra yüksek distorsiyon ve düşük distorsiyonu, hücre yukarı bağlantı frekanslarına, Wi-Fi frekanslarına ve iki intermodülasyon katsayısı $ M $, $ N $'a dayanan 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 hesaplaması intermodülasyon bozulması

Şekil 5. Modüllerarası distorsiyon için güvenli olmayan kanal hesaplaması

Müdahale eden hücre bandı başına arama tablosunda $ M $, $ N $ ve örtüşme değerlerini belirleyebilirsiniz. Bir bant için herhangi bir girişim yoksa, o bant girişi için değerler tablodan çıkarılır. Wi-Fi 2,4 GHz ve 5 GHz bantları için bu değerlerin iki kümesi 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 geri döner.
  2. Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 2,4 GHz kanalları bulur.

    1. 2,4 GHz için harmonik N derecesini bulur.
    2. N'ye ve hücre yukarı bağlantısına dayalı olarak harmonik yüksek frekansı ve harmonik düşük frekansı hesaplar.
    3. Aşağıdan gelen harmoniğin alt sınırında yer alan ilk 20 MHz Wi-Fi kanalını bulur.
    4. Harmoniklerin Wi-Fi kanalı üzerindeki örtüşmesini hesaplar ve örtüşmenin 2,4 GHz Wi-Fi örtüşme eşiğini aşması durumunda kanalı güvensiz olarak işaretler.
    5. Yukarıdan gelen harmoniğin üst sınırındaki ilk 20 MHz Wi-Fi kanalını bulur.
    6. Harmoniklerin Wi-Fi kanalı üzerindeki örtüşmesini hesaplar ve örtüşmenin 2,4 GHz Wi-Fi örtüşme eşiğini aşması durumunda kanalı güvensiz olarak işaretler.
    7. Aradaki her 20 MHz kanalı güvenli olmayan kanal olarak işaretler.
  3. Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 5 GHz kanallarını bulur.

    1. 5 GHz için harmonik N derecesini bulur. N 0 ise 5. adıma atlanır.
    2. N'ye ve hücre yukarı bağlantısına dayalı olarak harmonik yüksek frekansı ve harmonik düşük frekansı hesaplar.
    3. Güvenli olmayan 20 Mhz kanalları bulur.

      1. Aşağıdan gelen harmoniğin alt sınırında yer alan ilk 20 MHz Wi-Fi kanalını bulur.
      2. Harmoniklerin Wi-Fi kanalı üzerindeki örtüşmesini hesaplar ve örtüşmenin 2,4 GHz Wi-Fi örtüşme eşiğini aşması durumunda kanalı güvensiz olarak işaretler.
      3. Yukarıdan gelen harmoniğin üst sınırındaki ilk 20 MHz Wi-Fi kanalını bulur.
      4. Harmoniklerin Wi-Fi kanalı üzerindeki örtüşmesini hesaplar ve örtüşmenin 2,4 GHz Wi-Fi örtüşme eşiğini aşması durumunda kanalı güvensiz olarak işaretler.
      5. Belirtilen güç sınırına sahip, aradaki her 20 MHz kanalı güvenli olmayan kanal olarak işaretler.
    4. Güvenli olmayan 40 MHz, 80 MHz, 160 MHz kanalları bulur

      1. Adım 3a'yı tekrarlar ancak 40 MHz, 80 MHz, 160 MHz ile.
      2. Harmonik kenardaki kanalların örtüşmelerini hesaplamak yerine, daha küçük kurucu kanallardan hesaplanan örtüşmeleri yeniden kullanır (örneğin, iki 20 MHz kanal 40 MHz'lik bir kanal oluşturuyorsa ve %30 ve %90 örtüşmeye sahipse, o zaman ortalama 60 olur) 40 Mhz kanalı için örtüşme yüzdesi).
  4. Parametreler tanımlanmışsa intermodülasyondan güvenli olmayan 2,4 GHz kanalları bulur.

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

      1. N, M, hücre uplink'i 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ı üzerindeki intermodülasyonun örtüşmesini hesaplar ve örtüşmenin 2,4 GHz hücre örtüşme eşiğini aşması durumunda kanalı güvensiz olarak işaretler.
  5. Parametreler tanımlanmışsa intermodülasyondan güvenli olmayan 5 GHz kanalları bulur.

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

Son sonuç

Komşu ve harmonik girişimlerden kaynaklanan güvenli olmayan kanalların her iki seti de hesaplandıktan sonra, her iki setin birleşimi alınarak (ve çarpışmalar varsa daha düşük güç sınırı seçilerek) ve varsa varsayılan kanalların setten çıkarılmasıyla son set hesaplanır. hiçbir zorunlu kısıtlama uygulanmamıştır.

Algoritma şu şekilde 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 5 GHz Wi-Fi kanalı güvenli olmayan kanal olarak işaretlenirse varsayılan 5 GHz 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ı, yer paylaşılabilir yapılandırma dizesi config_wifiCoexTableFilepath bulunan bir XML dosyasında temsil edilir ve aşağıdaki XSD tarafından 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ğıda örnek bir XML arama tablosu verilmiştir:


<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ı toplama (CA) için, her bir yukarı bağlantı/aşağı bağlantıya yönelik harmonik/ara modülasyon aralıkları, bağımsız olarak girişime neden olacak yeterli örtüşme üretmeyebilir, ancak birleştirildiğinde yeterli örtüşme üretebilir. Algoritma, her bir harmonik/modülasyonlar arası aralığı bağımsız olarak dikkate alır ve geri dönen güvenli olmayan kanalların birleşimini alır. İntermodülasyon durumu için bu, her UL'nin her DL üzerindeki 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 ele alır.

Lisans Destekli Erişim

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

Taşıyıcı gereksinimlerine bağlı olarak kanal kaçınma algoritması, 5 GHz Wi-Fi bandının tamamı için SoftAP ve Wi-Fi Direct (P2P) üzerinde zorunlu kısıtlamalar belirler. Algoritmanın bu kullanım durumunu ele alması için, taşıyıcı yapılandırma değeri restrict_5g_softap_wifi_direct_for_laa tanımlanmalıdır. Hücre kanalı LAA üzerindeyse ve restrict_5g_softap_wifi_direct_for_laa true ise, algoritma 5 Ghz bandın tamamıyla güvenli olmayan kanallar kümesini döndürür ve SoftAP ve Wi-Fi Direct (P2P) için zorunlu kısıtlama işaretlerini 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();
}

Güvenli olmayan kanallar değiştiğinde uygulamaların güncellenmiş değerleri almasını sağlamak için aşağıdaki WifiManager @SystemApi yöntemlerini ve geri aramayı kullanın.

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

Wi-Fi hizmeti, güvenli olmayan kanallar kümesi hakkında bilgi aldığında, bu kanalların engellenmesini sağlamak için uygun eylemi gerçekleştirir. Bu bölümde Wi-Fi hizmetinin farklı senaryolardaki davranışı açıklanmaktadır.

Sürücüyü bilgilendirme

Kanal kaçınmanın gerçekleştirilmesinde sürücünün önemli bir rolü olduğundan, güvenli olmayan kanalları sürücüye ve ürün yazılımına iletmek önemlidir. Bunu yapmak için aşağıdaki IWifiChip HAL API'sini kullanın.

AIDL için:

void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
  in int restrictions)

HIDL için (1,5 veya üzeri):

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

SoftAP

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

SoftAP'ı ACS etkinken başlatma (henüz hiçbir SoftAP kurulmadı)

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

    1. Çerçeve, güvenli olmayan kanalları ACS listesinden kaldırır.
    2. Liste boşsa çerçeve SoftAP'i 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 durumda ve güvenli olmayan kanallar güncelleniyor

  1. SoftAP kanalı güvenli değilse ve 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'i 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ü/ürün yazılımı, güvenli olmayan kanallardan kaçınmayı veya kaçınmanın mümkün olmadığı durumlarda güç kapağını uygulamayı yönetir.

Wi-Fi Doğrudan (P2P)

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

    1. Çerçeve wpa_supplicant HAL yöntemini kullanarak ISupplicantP2pIface::setDisallowedFrequencies() yöntemini kullanarak güvenli olmayan kanalları engellemesini ister.
  2. Kısıtlama olmadan güvenli olmayan kanallar varsa.

    1. Satıcı sürücüsü/ürün yazılımı, Wi-Fi Direct (P2P) kısıtlaması olmayan güvenli olmayan bir kanal kullanılırsa 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 gerçekleştirilmez. Satıcı sürücüsü/ürün yazılımı, Wi-Fi Aware (NAN) kanalının önlenmesinden sorumludur.

Algoritmayı devre dışı bırakma

Varsayılan algoritma uygulamasını devre dışı bırakmak ve kaçınmak için kendi güvenli olmayan kanallar listenizi iletmek istiyorsanız config_wifiDefaultCoexAlgorithmEnabled kaplamasını yapılandırın. Kaplama yanlış olarak ayarlanırsa varsayılan algoritma devre dışı bırakılır. Daha sonra, aşağıdaki sistem API'sini kullanarak çerçeveye bağlanacak güvenli olmayan kanalların bir listesini oluşturmak için kendi bant dışı özel algoritmanızı kullanabilirsiniz.

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

Uygulamanın doğrulanması

Wi-Fi/hücresel ortak kanal önleme ö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

  • AIDL uygulandıysa: wifi_chip_aidl_test.cpp

    • TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
  • HIDL uygulandıysa: wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)