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 kullanmaz. 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ı
- Kanaldan kaçınma özelliğiyle ilgili sistem API'leri, yapılandırmaları ve HAL API'leri
- Kanaldan kaçınmayla ilgili çerçeve davranışı
- Kanaldan kaçınma sorununu ele almak için çip tedarikçisi davranışı
- Kanal kaçırmayla ilgili uygulama ayrıntıları
- Kanaldan kaçınma davranışını doğrulamaya yönelik testler
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 kanaldan kaçınma şeması, dört soyut adımdan oluşan bir diziyle açıklanabilir:
- Modem raporları hücresel frekansta değişiyor
- Coex avoidance algoritması, güvenli olmayan kablosuz kanalları hesaplar
- Birlikte çalışmayı önleme algoritması, kablosuz ağ hizmetini bilgilendirir
- Çerçeve veya sürücü uygun kablosuz işlemi gerçekleştiriyor
Şekil 1. Kanal kaçırma şeması
Hücresel sıklıktaki bir değişikliği bildirme
Telefon hizmeti, kullanılmakta olan hücresel kanalları bildirir. Çalışan 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
içindeki 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 parazit türü vardır: komşu ve harmonik/intermodü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 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. Grubun geri kalanının güvenli olmadığı bildirildiğinde bu varsayılan kanallar güvenli olmayan kanal olarak raporlanmaz.
Geçersiz kılma listesi
Etkileşimin 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 (dolayısıyla daha yüksek bant genişliğine sahip kanallar güvenli olmayabilir ancak daha düşük bant genişliğine sahip kanallar olmayabilir). LAA'da olduğu gibi durumlarda, hesaplamaları atlamak ve güvenli olmayan kanallardan oluşan belirli bir listeyi kullanmak faydalıdır.
Bunun için belirli girişler için arama tablosunda güvenli olmayan kanalların üstbilgi listesini belirtebilirsiniz. Bir tablo girişindeki geçersiz kılma listesi, söz konusu hücre kanalına yönelik 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şliklerini seçmeli olarak önleyebilirsiniz. Bunun nedeni, her kablosuz kanal numarasının belirtilen 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 mağdur kanal arasındaki mesafenin ΔF belirli bir eşik değerinin altına düşmemesini sağlar.
Ş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:
- 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 kanal olmadan döndürülür.
- Hücresel banda göre, 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ı) tanımlar.
wifiVictimMhz
mevcutsa ve hücre kanalında uplink varsa veKablosuz aralığın alt kısmı risk altındaysa
- Hücre çıkış bağlantısının en yüksek sıklığına
wifiVictimMhz
ekleyerek güvenli olmayan kanalların üst sınırını bulur. - Alt kenarı sınırla örtüşen ilk 20 MHz Wi-Fi kanalını bulur.
- 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.
- Hücre çıkış bağlantısının en yüksek sıklığına
Kablosuz bandın üst kısmı risk altındaysa
- wifiVictimMhz değerini hücresel uplink'in en düşük frekansından çıkararak güvenli olmayan kanalların alt sınırını bulur.
- Üst kenarı sınırla örtüşen ilk kablosuz kanalı bulur.
- 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.
cellVictimMhz
mevcutsa ve hücre kanalında aşağı bağlantı varsa.- Eşik olarak
cellVictimMhz
değerini kullanarak 3. adımı gerçekleştirir ve hücre yukarı bağlantısı yerine hücre aşağı bağlantısıyla karşılaştırma yapar.
- Eşik olarak
Tablo girişinin güç sınırını hesaplanmış güvenli olmayan kanallara uygular.
Ş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:
Harmonik bozulma durumunda algoritma, kablosuz kanalları olumsuz etkileyen bir hücre çıkış bağlantı kanalının harmonik bozulmasını dikkate alır. Ardından, yüksek bozulma ve düşük bozulma değerlerini hücre uplink frekanslarına ve harmonik dereceye ($ N $) dayalı harmonik değerlerle değiştirir.
Ş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 katsayısına ($ M $, $ N $) dayalı girişim değerleriyle değiştirir.
Şekil 5. Intermodülasyon 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 girişim yoksa söz konusu bant girişine ait değerler tablodan çıkarılır. Kablosuz 2,4 GHz ve 5 GHz bantları için bu değerlerden oluşan iki grup 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 gibi davranır:
- 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.
Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 2,4 GHz kanallarını bulur.
- 2,4 GHz için harmonik derece N'yi bulur.
- N ve hücresel uplink'e göre harmonik yüksek frekansı ve harmonik düşük frekansı hesaplar.
- Aşağıdan gelen harmoniğin alt sınırı içinde olan ilk 20 MHz kablosuz ağ kanalını bulur.
- 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.
- Yukarıdan gelen harmoniğin üst sınırı içinde olan ilk 20 MHz Wi-Fi kanalını bulur.
- 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.
- Aradaki her 20 MHz kanalı güvenli olmayan kanal olarak işaretler.
Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 5 GHz kanallarını bulur.
- 5 GHz için N harmonik derecesini bulur. N 0 ise 5. adıma atlar.
- N ve hücresel uplink'e göre harmonik yüksek frekansı ve harmonik düşük frekansı hesaplar.
Güvenli olmayan 20 MHz kanalları bulur.
- Aşağıdan gelen harmoniğin alt sınırı içinde olan ilk 20 MHz Wi-Fi kanalını bulur.
- Harmoniğin kablosuz ağ kanalıyla çakışma oranını hesaplar ve çakışma oranı 2,4 GHz kablosuz ağ çakışma eşiğini aşarsa kanalı güvenli olmayan olarak işaretler.
- Yukarıdan gelen harmoniğin üst sınırı içinde olan ilk 20 MHz Wi-Fi kanalını bulur.
- Harmoniğin kablosuz ağ kanalıyla çakışma oranını hesaplar ve çakışma oranı 2,4 GHz kablosuz ağ çakışma eşiğini aşarsa kanalı güvenli olmayan olarak işaretler.
- Aradaki her 20 MHz kanalı, belirtilen güç sınırına sahip güvenli olmayan bir kanal olarak işaretler.
Güvenli olmayan 40 MHz, 80 MHz, 160 MHz kanalları bulur
- 3a adımını 40 MHz, 80 MHz ve 160 MHz ile tekrarlayın.
- Harmonik kenardaki kanalların çakışmalarını hesaplamak yerine, daha küçük bileşen kanallardan hesaplanan çakışmaları yeniden kullanır (örneğin, iki adet 20 Mhz kanal 40 Mhz'lik bir kanal oluşturur ve bu kanalların% 30 ile% 90'ı çakışırsa 40 Mhz'lik kanal için ortalama% 60 örtüşme olur).
Parametreler tanımlanmışsa girişimden kaynaklanan güvenli olmayan 2,4 GHz kanallarını bulur.
- 2,4 GHz için N, M girişim katsayılarını bulur.
Her 2,4 GHz kablosuz ağ kanalı için:
- N, M, hücresel uplink ve kablosuz kanala göre girişim düşük frekansını ve girişim yüksek frekansını hesaplar.
- Hücre aşağı bağlantısı üzerindeki intermodülasyonun çakışmasını hesaplar ve çakışma 2,4 GHz hücre çakışma eşiğini aşarsa kanalı güvenli olmayan olarak işaretler.
Parametreler tanımlanmışsa girişimden kaynaklanan güvenli olmayan 5 GHz kanallarını bulur.
- 5 GHz kablosuz kanalları ve 5 GHz hücre çakışma eşiğini kullanarak 4. adımı tekrarlayın.
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:
- 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.
- Tüm 5 GHz kablosuz kanalları güvenli olmayan kanal olarak işaretlenirse varsayılan 5 GHz kablosuz kanalını gruptan kaldırır.
- 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ı tek başına 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. Ara modülasyon durumunda bu, her UL'nin intermodülasyon aralığının her DL ile değerlendirilmesi 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 almalarını sağlamak için aşağıdaki WifiManager
@SystemApi yöntemlerini ve geri çağırma yöntemini 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 ö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 üstü):
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, kanaldan kaçınmanın ACS ile uygulanabildiği önemli SoftAp senaryoları özetlenmektedir. 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.
SoftAP'yi ACS etkin olarak başlat (henüz SoftAP yok)
Kanallar güvenli değilse ve SoftAP kısıtlaması varsa
- Çerçeve, güvenli olmayan kanalları ACS listesinden kaldırır.
- Liste boşsa çerçeve SoftAP'yi durdurur.
Kanallar güvenli değilse ve herhangi bir kısıtlama yoksa
- Tedarikçi firma sürücüsü veya donanım yazılımı, güvenli olmayan kanallar yerine güvenli kanallara öncelik verir.
SoftAP'ta ACS özelliği etkinleştirilmiş ve güvenli olmayan kanallar güncellenmiş durumda
SoftAP kanalı güvenli değilse ve SoftAP kısıtlaması varsa
- Çerçeve, güvenli olmayan kanalları kaldırarak ACS listesini günceller.
- Liste boşsa çerçeve SoftAP'yi kapatır.
SoftAP kanalı güvenli değilse ve kısıtlama yoksa
- Çerçeve tarafından herhangi bir işlem yapılmaz. Tedarikçi firma sürücü veya donanım yazılımı, kaçınılması uygun olmayan durumlarda güvenli olmayan kanallardan kaçınma veya güç sınırı uygulama işlemlerini gerçekleştirir.
Wi-Fi Direct (P2P)
Kablosuz Doğrudan Bağlantı (P2P) kısıtlamaları olan güvenli olmayan kanallar varsa.
- Çerçeve, HAL yöntemini kullanarak güvenli olmayan kanallardan kaçınmak için
wpa_supplicant
'tenISupplicantP2pIface::setDisallowedFrequencies()
isteğinde bulunur.
- Çerçeve, HAL yöntemini kullanarak güvenli olmayan kanallardan kaçınmak için
Kısıtlamasız güvenli olmayan kanallar varsa.
- 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ış değerine 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ırsa:
wifi_chip_hidl_test.cpp
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)