Kablosuz ağ/hücresel ortak deneyim kanalından kaçınma

Android 12'de kullanıma sunulan kablosuz ağ/hücresel birlikte çalışabilirlik kanalından kaçınma özelliği, hücresel kanallardan veya hücresel kanallara parazit gelebileceği durumlarda güvenli olmayan kablosuz ağ kanallarını tespit edip kullanmayı engeller. Buna STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN) gibi arayüzler dahildir.

Bu sayfada aşağıdakiler ele alınmaktadır:

  • Hücresel modemin Android çerçevesine bildirmesi gereken bilgiler
  • Kablosuz çerçevesinin, kaçınılması gereken kablosuz kanalları hesaplamak için kullandığı algoritmalar
  • Cihaz üreticilerinin kablosuz ağ çerçevesi için sağlaması gereken yapılandırma tabloları
  • Kanal kaçırma özelliğiyle ilgili sistem API'leri, yapılandırmalar ve HAL API'leri
  • Kanaldan kaçınma sorununu ele almayla ilgili çerçeve davranışı
  • Kanal kaçınmasını ele almak için çip tedarikçisi davranışı
  • Kanal kaçırmayla ilgili uygulama ayrıntıları
  • Kanaldan kaçınma davranışını doğrulama testleri

Arka plan

LTE, 5G NR ve Lisanslı Destekli Erişim (LAA) gibi hücresel teknolojilere sahip cihazlarda, kullanılan hücresel kanallar kullanılan kablosuz kanalı etkileyebilir. Bu durum, hücresel ve kablosuz ağ kanalları kısa frekans aralığında olduğunda (bitişik kanallar) veya harmonik ve modülasyon girişimi olduğunda ortaya çıkar.

Bu tür girişim, bir anten aynı anda hem yayın yaparken hem de aldığında sorun oluşturur. Bu durumda, verici anten alıcı anteni doldurur ve alıcının sinyal kalitesini etkiler.

Bu belgede, girişim yapan verici saldırgan, girişimden etkilenen alıcı ise mağdur olarak adlandırılmaktadır. Saldırgan veya kurban olan kablosuz kanal, güvenli olmayan kanal olarak adlandırılır.

Kablosuz ağ/hücresel birlikte çalışabilirlik kanal kaçırma özelliği, kanal kaçırma için tutarlı bir yaklaşım sunarak kablosuz ağ çerçevesinden farklı olan özel kodlara duyulan ihtiyacı azaltır. 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, kablosuz ağ kanallarını kontrol ederek kanal kaçırma işlemi gerçekleştirir. Kablosuz ağ kanalından kaçınma şeması, dört soyut adımdan oluşan bir dizi olarak açıklanabilir:

  1. Modem, hücresel sıklıktaki değişikliği bildiriyor
  2. Coex avoidance algoritması, güvenli olmayan kablosuz kanalları hesaplar
  3. Birlikte çalışmayı önleme algoritması, kablosuz ağ hizmetini bilgilendirir
  4. Çerçeve veya sürücü uygun kablosuz işlemi gerçekleştirir

Kanal kaçırma şeması

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

Hücresel sıklıktaki bir değişikliği bildirme

Telefon hizmeti, şu anda kullanılan hücresel kanalları bildirir. Çalışmayan hücresel frekans değiştiğinde modem bu bilgileri IRadio::PhysicalChannelConfig üzerinden telefon hizmetine bildirir. Bu bilgiler, lisanslı destekli erişim (LAA) ve operatör birleştirme (CA) ile ilgili göstergeleri içerir.

Android 12'den itibaren 1.6 IRadio::PhysicalChannelConfig aşağıdaki alanlar, modemin doldurması gereken birlikte çalışma 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 kablosuz kanalları hesaplama

Modem, hücresel frekansta bir değişiklik bildirdiğinde birlikte çalışma kanalı algoritması, hücresel ve kablosuz ağ kanalları arasındaki girişimi hesaplar ve hangi kablosuz ağ kanallarının güvenli olmadığını belirler.

Farklı formüller gerektiren birden fazla girişim türü vardır: yakın ve harmonik/ara modülasyon. Cihazlar arasındaki anten ve düzendeki fiziksel farklılıklar nedeniyle, her cihazın komşu ve harmonik/modülasyon girişimi kalıpları farklıdır. Bu durumu hesaba katmak için cihaz üreticileri, parametreleri iki tür girişim için genel formüllere takmak üzere bir arama tablosu sağlamalıdır. Bu parametreler hücre bandı başına tanımlanır ve etkin hücre kanallarının bantları tarafından referans verilir.

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

Genel olarak kanaldan kaçınma özelliği, performansı optimize etmek için güvenli olmayan kablosuz kanallardan kaçınmak amacıyla en iyi çaba yaklaşımını kullanır. Ancak bazı durumlarda (ör. operatör şartları 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 dair değerleri içeren bir bit maskesi olarak temsil edilir. Güvenli olmayan bir kanal, tüm kullanım alanları için bu kanalın kullanılmasına karşı bir öneri olarak işlev görür. Zorunlu kısıtlamalar ise belirli kullanım alanlarının zorunlu olarak kaçınılması gerektiğini işaret eder.

2,4 GHz veya 5 GHz bandının her kanalı güvenli olarak işaretlenirse arama tablosu, en güvenli seçenek olarak girişimci hücre bandı başına varsayılan bir 2,4 GHz kanalı veya varsayılan bir 5 GHz kanalı tanımlayabilir. Bu varsayılan kanallar, kanalın geri kalanı güvenli olmadığında güvenli olmayan kanal olarak raporlanmaz.

Geçersiz kılma listesi

Formülsel yaklaşım, girişimin büyük ölçüde bant genişliğine bağlı olduğu durumlarda sınırlıdır (bu nedenle, bant genişliği daha yüksek olan kanallar güvenli olmayabilir ancak bant genişliği daha düşük olan kanallar güvenli olabilir). LAA gibi durumlarda, hesaplamaları atlayıp güvenli olmayan kanalların belirli bir listesini kullanmak faydalıdır.

Bunu yapmak için belirli girişler için arama tablosunda güvenli olmayan kanalların üstbilgi listesini belirtebilirsiniz. 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 kablosuz kanalların geçersiz kılma listesi tarafından belirtildiğini gösterir.

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

Geçersiz kılma listesi, her kablosuz bant için kanal numaralarının veya önceden tanımlanmış kategori anahtar kelimelerinin listesiyle temsil edilir:

2g kategorileri:

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

5G kategorileri:

  • all (5 GHz bandını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 birlikte çalışabilme önleyici algoritma, saldırgan ve kurban kanal arasındaki mesafenin ΔF belirli bir eşik değerinin altına düşmemesini sağlar.

Kanal girişimi

Şekil 2. Saldırgan ve mağdur kanal arasındaki mesafe

Eşik, cihazın fiziksel yapılandırmasına ve girişim yapan bant başına arama tablosu girişinde sağlanan eşik değerine göre belirlenir. Girişime yol açmayan olarak kabul edilen bantların tablo girişi yoktur ve güvenli olmayan kanalların hesaplanması gerekmez (çoğu zaman bu durum geçerlidir).

Komşu girişim parametreleri

  • wifiVictimMhz: Kablosuz kurbanı için MHz mesafe eşiği (hücre yayını)
  • cellVictimMhz: Hücre mağduru için MHz mesafe eşiği (hücre yayını)

Algoritma, her etkin hücre kanalı için aşağıdaki şekilde çalışır:

  1. Kanalın bandı için bir arama tablosu girişi bulmaya çalışır. Tablo girişi bulunamazsa söz konusu hücre kanalı için güvenli olmayan kanallar döndürülmez.
  2. Hücresel banda bağlı olarak, hangi kablosuz bandın risk altında olduğunu ve parazitin bandın hangi tarafından geldiğini (ör. 2,4 GHz'in alt kanalları, 2,4 GHz'in üst kanalları, 5 GHz'in alt kanalları) belirler.
  3. wifiVictimMhz mevcutsa ve hücre kanalında uplink varsa ve

    1. Kablosuz aralığın alt kısmı risk altındaysa

      1. Hücre uplink'inin en yüksek sıklığına wifiVictimMhz ekleyerek güvenli olmayan kanalların üst sınırını bulur.
      2. Alt kenarı sınırla örtüşen ilk 20 MHz Wi-Fi kanalını bulur.
      3. Kablosuz ağ kanalını, bu kanalı içeren her daha geniş bant genişliği kanalını (ör. 40 MHz, 80 MHz) ve güvenli olmayan kanalla aynı banttaki her alt kanalı işaretler.
    2. Kablosuz aralığın üst kısmı risk altındaysa

      1. wifiVictimMhz değerini hücresel uplink'in en düşük frekansından çıkararak güvenli olmayan kanalların alt sınırını bulur.
      2. Üst kenarı sınırla örtüşen ilk kablosuz kanalı bulur.
      3. Kablosuz ağ kanalını, bu kanalı içeren her büyük kanalı (ör. 40 MHz, 80 MHz) ve güvenli olmayan kanalla aynı banttaki her yüksek kanalı işaretler.
  4. cellVictimMhz mevcutsa ve hücre kanalında aşağı bağlantı varsa.

    1. Eşik olarak cellVictimMhz'ü kullanarak 3. adımı gerçekleştirir ve hücresel uplink yerine hücresel downlink ile karşılaştırır.
  5. Tablo girişinin güç sınırını, hesaplanan güvenli olmayan kanallara uygular.

Güvenli olmayan kanal hesaplaması

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

Harmonik veya girişim bozulması

Harmonik veya girişim modülasyonu bozulmasında, birlikte çalışma motoru harmonik veya girişim modülasyonu sinyalinin aralığını hesaplar ve potansiyel bir kurban kanalıyla sahip olduğu çakışma yüzdesini değerlendirir. Örtüşme, bir örtüşme eşiğini aşarsa algoritma bunu güvenli olmayan bir durum olarak değerlendirir. Bir mağdur kanaldaki harmonik veya girişim modülasyonu bozulmasının yüzde çakışması aşağıdaki denklemle hesaplanır:

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

Armonik bozulma durumunda algoritma, kablosuz ağ kanallarını mağdur eden bir hücresel yayın kanalının armonik bozulmasını dikkate alır. Ardından, yüksek bozulma ve düşük bozulma değerlerini hücre uplink frekanslarına ve bir harmonik derecesine ($ N $) dayalı harmonik değerlerle değiştirir.

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

Güvenli olmayan kanal hesaplaması harmonik bozulma

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

Modülasyon girişimi durumunda algoritma, hücresel yayın kanalının modülasyon girişimi bozulmasını ve hücresel alıcı kanalını mağdur eden kablosuz ağ kanalını dikkate alır. Ardından, yüksek bozulma ve düşük bozulma değerlerini hücresel uplink frekanslarına, kablosuz frekanslara ve iki girişim modülasyonu katsayısına ($ M $, $ N $) dayalı girişim modülasyonu değerleriyle değiştirir.

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

Güvenli olmayan kanal hesaplaması girişim bozulması

Şekil 5. Modülasyon girişimi bozulması için güvenli olmayan kanal hesaplaması

Etkileyen hücre bandı başına arama tablosunda $ M $, $ N $ ve çakışma değerlerini belirtebilirsiniz. Bir bantta parazit yoksa değerler, ilgili bant girişi için tablodan çıkarılır. Kablosuz 2,4 GHz ve 5 GHz bantları için bu değerlerin iki grubu 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 etkin hücre kanalı için aşağıdaki şekilde çalışı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 döndürülmez.
  2. Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 2,4 GHz kanallarını bulur.

    1. 2,4 GHz için harmonik derece N'yi bulur.
    2. N ve hücresel uplink'e göre harmonik yüksek frekansı ve harmonik düşük frekansı hesaplar.
    3. Aşağıdan gelen harmoniğin alt sınırı içinde olan ilk 20 MHz kablosuz ağ kanalını bulur.
    4. Harmoniklerin kablosuz kanal üzerindeki çakışmasını hesaplar ve çakışma 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli olmayan olarak işaretler.
    5. Yukarıdan gelen harmoniğin üst sınırı içinde olan ilk 20 MHz Wi-Fi kanalını bulur.
    6. Harmoniklerin kablosuz kanal üzerindeki çakışma oranını hesaplar ve çakışma oranı 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli olmayan 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 derece N'yi bulur. N 0 ise 5. adıma atlar.
    2. N ve hücresel uplink'e göre 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ı içinde olan ilk 20 MHz Wi-Fi kanalını bulur.
      2. Harmoniğin kablosuz kanal üzerindeki çakışma oranını hesaplar ve çakışma 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli olmayan olarak işaretler.
      3. Yukarıdan gelen harmoniğin üst sınırı içinde olan ilk 20 MHz Wi-Fi kanalını bulur.
      4. Harmoniğin kablosuz kanal üzerindeki çakışma oranını hesaplar ve çakışma oranı 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli olmayan olarak işaretler.
      5. Aradaki her 20 MHz kanalı, belirtilen güç sınırına sahip güvenli olmayan bir kanal olarak işaretler.
    4. Güvenli olmayan 40 MHz, 80 MHz, 160 MHz kanalları bulur

      1. 3a adımını 40 MHz, 80 MHz ve 160 MHz ile tekrarlayın.
      2. Harmonik kenardaki kanalların çakışmalarını hesaplamak yerine, daha küçük bileşen kanallardan hesaplanan çakışmaların yeniden kullanılmasını sağlar (örneğin, iki 20 MHz kanal 40 MHz kanal oluşturuyorsa ve% 30 ve% 90 çakışma varsa 40 MHz kanal için ortalama çakışma% 60'tır).
  4. Parametreler tanımlanmışsa girişimden kaynaklanan güvenli olmayan 2,4 GHz kanallarını bulur.

    1. 2,4 GHz için N, M girişim katsayılarını bulur.
    2. Her 2,4 GHz kablosuz ağ kanalı için:

      1. N, M, hücresel uplink ve kablosuz kanala göre girişim düşük frekansını ve girişim yüksek frekansını hesaplar.
      2. Hücre yayını üzerinden girişim modülasyonunun örtüşmesini hesaplar ve örtüşme 2,4 GHz hücre örtüşme eşiğini aşarsa kanalı güvenli olmayan olarak işaretler.
  5. Parametreler tanımlanmışsa girişimden kaynaklanan güvenli olmayan 5 GHz kanallarını bulur.

    1. 5 GHz kablosuz kanalları ve 5 GHz hücre çakışması eşiğini kullanarak 4. adımı tekrarlayın.
  6. Tablo girişinin güç sınırını, hesaplanan güvenli olmayan kanallara uygular.

Nihai sonuç

Komşu ve harmonik girişimden kaynaklanan her iki güvenli olmayan kanal grubu da hesaplandıktan sonra, nihai grup, her iki grubun birleşimi alınarak (ve çakışmalar varsa daha düşük güç sınırı seçilerek) ve zorunlu kısıtlama uygulanmıyorsa varsayılan kanallar gruptan kaldırılarak hesaplanır.

Algoritma şu şekilde çalışır:

  1. Tüm 2,4 GHz kablosuz kanalları güvenli olmayan kanal olarak işaretlenmişse varsayılan 2,4 GHz kablosuz kanalını listeden kaldırır.
  2. Tüm 5 GHz kablosuz kanalları güvenli olmayan kanal olarak işaretlenirse varsayılan 5 GHz kablosuz kanalını gruptan kaldırır.
  3. Son güvenli olmayan kanal grubunu döndürür.

Arama tablosu biçimi

Arama tabloları, config_wifiCoexTableFilepath yer paylaşımlı yapılandırma dizesinde bulunan bir XML dosyasında temsil edilir 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ğı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>

Operatör birleştirme

Taşıyıcı toplama (CA) için her bir yukarı bağlantı veya aşağı bağlantının harmonik veya girişim modülasyonu aralıkları bağımsız olarak girişime neden olacak kadar çakışma oluşturmayabilir ancak birleştirildiğinde yeterli çakışma oluşturabilir. Algoritma, her harmonik veya girişim aralığını ayrı ayrı dikkate alır ve döndürülen güvenli olmayan kanalların birleşimini alır. Birbirine karışma durumunda bu, her UL'nin her DL'ye olan girişim aralığını değerlendirmek anlamına gelir.

Algoritma, PCELL, PSCELL veya SCELL arasında ayrım yapmaz ve bunları eşit olarak değerlendirir.

Lisans Destekli Erişim

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

Kanal kaçırma algoritması, operatör koşullarına bağlı olarak 5 GHz kablosuz ağın tamamı için SoftAP ve Wi-Fi Direct (P2P) üzerinde zorunlu kısıtlamalar belirler. Algoritmanın bu kullanım alanını işleyebilmesi için operatör yapılandırma değeri restrict_5g_softap_wifi_direct_for_laa tanımlanmalıdır. Hücre kanalı LAA'daysa ve restrict_5g_softap_wifi_direct_for_laa true ise algoritma, 5 GHz bandının tamamıyla birlikte güvenli olmayan kanallar grubunu döndürür ve SoftAP ile Wi-Fi Direct (P2P) için zorunlu kısıtlama işaretlerini ayarlar.

Kablosuz ağ hizmetini bilgilendirme

Ortak kanal algoritması güvenli olmayan kanalları hesapladıktan sonra, sistem uygulamalarınıza güvenli olmayan kanalları ve 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üncel değerleri almasını sağlamak için aşağıdaki WifiManager @SystemApi yöntemlerini ve geri çağırma işlevini 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);
}

Kablosuz işlemi gerçekleştirme

Kablosuz ağ hizmeti, güvenli olmayan kanallar grubu hakkında bilgi aldığında bu kanallardan kaçınılmasını sağlamak için uygun işlemi gerçekleştirir. Bu bölümde, kablosuz bağlantı hizmetinin farklı senaryolardaki davranışı açıklanmaktadır.

Sürücüyü bilgilendirin

Sürücü, kanaldan kaçınma işleminde önemli bir rol oynadığından güvenli olmayan kanalların sürücüye ve donanım yazılımına iletilmesi gerekir. Bunun için aşağıdaki IWifiChip HAL API'sini kullanın.

AIDL için:

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

HIDL (1.5 veya üzeri) için:

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

SoftAP

SoftAP, güvenli olmayan kanallardan kaçınma için ana kullanım alanıdır. Aşağıdaki bölümde, ACS ile kanal kaçırma özelliğinin uygulanabileceği temel SoftAp senaryoları özetlenmiştir. Senaryolar, kanaldan kaçınma algoritmasının ve sürücünün ya da donanım yazılımının davranışını açıklar.

ACS etkinken SoftAP'yi başlatma (henüz SoftAP etkin değil)

  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'yi durdurur.
  2. Kanallar güvenli değilse ve herhangi bir kısıtlama yoksa

    1. Tedarikçi sürücü veya donanım yazılımı, güvenli kanallara güvenli olmayan kanallara göre öncelik verir.

ACS etkinken SoftAP açık ve güvenli olmayan kanallar güncellendi

  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'yi 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. Tedarikçi sürücü veya donanım yazılımı, güvenli olmayan kanallardan kaçınma veya kaçınma mümkün değilse güç sınırını uygulama işlemlerini yönetir.

Wi-Fi Direct (P2P)

  1. Kablosuz Direkt (P2P) kısıtlamaları olan güvenli olmayan kanallar varsa

    1. Çerçeve, HAL yöntemini kullanarak güvenli olmayan kanallardan kaçınmak için wpa_supplicant'ten ISupplicantP2pIface::setDisallowedFrequencies() isteği gönderir.
  2. Kısıtlamasız güvenli olmayan kanallar varsa.

    1. Kablosuz Doğrudan Bağlantı (P2P) kısıtlaması olmayan güvenli olmayan bir kanal kullanılıyorsa tedarikçi sürücüsü veya donanım yazılımı güç sınırını uygular.

Wi-Fi Aware (NAN)

Çerçeve, Wi-Fi Aware (NAN) için kanal seçiminde yer almaz ve çerçeve işlemi yapılmaz. Wi-Fi Aware (NAN) kanalından kaçınma işleminden tedarikçi sürücü veya donanım yazılımı sorumludur.

Algoritmayı devre dışı bırakma

Varsayılan algoritma uygulamasını devre dışı bırakmak ve güvenli olmayan kanalların kendi listenizi göndermek istiyorsanız yer paylaşımını yapılandırınconfig_wifiDefaultCoexAlgorithmEnabled. Yer paylaşımı yanlış olarak ayarlanırsa varsayılan algoritma devre dışı bırakılır. Ardından, aşağıdaki sistem API'sini kullanarak çerçeveye aktarılacak güvenli olmayan kanalların listesini oluşturmak için kendi bant dışı özel algoritmanızı kullanabilirsiniz.

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

Uygulamayı doğrulama

Kablosuz/hücresel birlikte çalışabilir kanal kaçırma özelliğini 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 uygulanıyorsa: wifi_chip_aidl_test.cpp

    • TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
  • HIDL uygulanıyorsa: wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)