Fitur penghindaran saluran coex Wi-Fi/seluler, yang diperkenalkan di Android 12, mengidentifikasi dan menghindari penggunaan saluran Wi-Fi yang tidak aman jika mungkin ada gangguan dari atau ke saluran seluler. Hal ini mencakup antarmuka seperti STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN).
Halaman ini membahas hal berikut:
- Informasi yang harus dilaporkan modem seluler ke framework Android
- Algoritma yang digunakan framework Wi-Fi untuk menghitung saluran Wi-Fi yang dihindari
- Tabel konfigurasi yang harus disediakan produsen perangkat untuk framework Wi-Fi
- API sistem, konfigurasi, dan HAL API yang terkait dengan fitur penghindaran saluran
- Perilaku framework untuk menangani penghindaran saluran
- Perilaku vendor chip untuk menangani penghindaran saluran
- Detail implementasi untuk menghindari saluran
- Pengujian untuk memvalidasi perilaku penghindaran saluran
Latar belakang
Untuk perangkat dengan teknologi seluler seperti LTE, 5G NR, dan Licensed Assisted Access (LAA), saluran seluler yang digunakan dapat mengganggu saluran Wi-Fi yang digunakan. Hal ini terjadi saat saluran seluler dan Wi-Fi berada dalam pemisahan frekuensi pendek (saluran tetangga) atau saat ada interferensi harmonik dan intermodulasi.
Jenis interferensi ini menjadi masalah ketika satu antena melakukan transmisi dan antena lainnya menerima pada saat yang sama. Dalam hal ini, antena pemancar akan membanjiri antena penerima, sehingga memengaruhi kualitas penerimaannya.
Dokumen ini mengacu pada pemancar yang mengganggu sebagai agresor dan penerima yang mengalami gangguan sebagai korban. Saluran Wi-Fi yang merupakan penyerang atau korban disebut sebagai saluran tidak aman.
Fitur penghindaran saluran coex Wi-Fi/seluler memberikan pendekatan yang konsisten untuk penghindaran saluran sehingga mengurangi kebutuhan akan kode eksklusif yang berbeda dari framework Wi-Fi. Selain itu, fitur ini memungkinkan produsen perangkat untuk mengonfigurasi, mengaktifkan dan menonaktifkan, serta mengganti fitur.
Fitur ini melakukan penghindaran saluran dengan mengontrol saluran Wi-Fi. Skema penghindaran saluran Wi-Fi dapat dijelaskan sebagai serangkaian empat langkah abstrak:
- Modem melaporkan perubahan frekuensi seluler
- Algoritma penghindaran coex menghitung saluran Wi-Fi yang tidak aman
- Algoritme hindari koeksistensi memberi tahu layanan Wi-Fi
- Framework atau driver melakukan tindakan Wi-Fi yang sesuai
Gambar 1. Skema penghindaran saluran
Melaporkan perubahan frekuensi seluler
Layanan telepon melaporkan saluran seluler yang saat ini digunakan. Saat
frekuensi seluler yang beroperasi berubah, modem melaporkan informasi ini ke
layanan telepon melalui
IRadio::PhysicalChannelConfig
.
Informasi ini mencakup indikasi untuk akses berbantuan berlisensi (LAA) dan
agregasi operator (CA).
Dari Android 12, kolom berikut di
1.6 IRadio::PhysicalChannelConfig
memberikan informasi yang diperlukan untuk formula coex yang harus
diisi modem.
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;
}
Menghitung saluran Wi-Fi yang tidak aman
Saat modem melaporkan perubahan frekuensi seluler, algoritma saluran coex akan menghitung gangguan antara saluran seluler dan Wi-Fi dan menentukan kumpulan saluran Wi-Fi yang tidak aman.
Ada beberapa jenis interferensi yang memerlukan formula berbeda: tetangga dan harmonik/intermodulasi. Karena perbedaan fisik pada antena dan tata letak antarperangkat, pola interferensi tetangga dan harmonik/intermodulasi untuk setiap perangkat berbeda. Untuk memperhitungkannya, produsen perangkat harus menyediakan tabel pencarian untuk memasukkan parameter ke dalam formula generik untuk dua jenis interferensi. Parameter ini ditentukan per band sel dan direferensikan oleh band saluran sel aktif.
Batas daya maksimum dapat ditentukan dalam tabel pencarian. Jika batas daya maksimum ditentukan, saluran yang tidak aman akan mengirimkan dengan batas daya yang diberikan. Jika tidak ada batas daya, saluran akan mengirimkan dengan daya penuh.
Secara umum, fitur penghindaran saluran menggunakan pendekatan upaya terbaik untuk menghindari saluran Wi-Fi yang tidak aman guna mengoptimalkan performa. Namun, dalam kasus tertentu (misalnya, karena persyaratan operator), antarmuka tertentu wajib menghindari saluran yang tidak aman untuk band seluler tertentu. Dalam kasus tersebut, pembatasan wajib direpresentasikan sebagai bitmask yang berisi nilai terkait apakah akan melarang saluran tertentu seperti Wi-Fi Langsung (P2P), SoftAp, dan Wi-Fi Aware (NAN). Meskipun channel yang tidak aman berfungsi sebagai rekomendasi untuk tidak menggunakan channel tersebut untuk semua kasus penggunaan, pembatasan wajib menandai kasus penggunaan tertentu untuk penghindaran wajib.
Jika setiap saluran band 2,4 GHz atau 5 GHz ditandai sebagai tidak aman, tabel pencarian dapat menentukan saluran 2,4 GHz default atau saluran 5 GHz default per band sel yang mengganggu sebagai pilihan teraman. Channel default ini tidak dilaporkan sebagai channel yang tidak aman jika band lainnya dilaporkan tidak aman.
Daftar penggantian
Pendekatan formulais terbatas jika interferensi sangat bergantung pada bandwidth (sehingga saluran dengan bandwidth lebih besar mungkin tidak aman, tetapi bukan saluran dengan bandwidth yang lebih kecil). Dalam kasus tertentu, seperti dengan LAA, sebaiknya lewati penghitungan dan gunakan daftar saluran tidak aman yang ditentukan.
Untuk melakukannya, Anda dapat menentukan daftar penggantian saluran yang tidak aman dalam tabel pencarian untuk entri tertentu. Daftar penggantian dalam entri tabel menandakan bahwa penghitungan untuk saluran sel tertentu dilewati dan bahwa saluran Wi-Fi yang tidak aman untuk saluran sel yang cocok ditentukan oleh daftar penggantian.
Untuk kasus yang sensitif terhadap bandwidth, Anda dapat menghindari bandwidth tertentu secara selektif dengan menentukan saluran tertentu dengan bandwidth tertentu dalam daftar penggantian. Hal ini karena setiap nomor saluran Wi-Fi sesuai dengan bandwidth yang ditentukan.
Daftar penggantian diwakili oleh daftar nomor saluran atau kata kunci kategori yang telah ditentukan sebelumnya untuk setiap band Wi-Fi:
Kategori 2G:
all
(seluruh band 2,4 GHz)
Kategori 5G:
all
(seluruh band 5 GHz)20mhz
(saluran 5 GHz 20 MHz)40mhz
(saluran 40 MHz 5 GHz)80mhz
(channel 80 MHz 5 GHz)160mhz
(saluran 160 MHz 5 GHz)
Interferensi saluran tetangga
Untuk menentukan interferensi saluran yang berdekatan, algoritma penghindaran koeks memastikan jarak ΔF antara agresor dan saluran korban tidak berada di bawah batas yang ditentukan.
Gambar 2. Jarak antara channel agresor dan korban
Nilai minimum ditentukan oleh konfigurasi fisik perangkat dan nilai nilai minimum yang diberikan dalam entri tabel pemeta per band yang mengganggu. Band yang dianggap tidak mengganggu tidak memiliki entri tabel dan saluran yang tidak aman tidak perlu dihitung (biasanya ini adalah waktu yang paling sering).
Parameter interferensi tetangga
wifiVictimMhz
: Nilai minimum jarak MHz untuk korban Wi-Fi (uplink sel)cellVictimMhz
: Nilai minimum jarak MHz untuk korban sel (downlink sel)
Algoritma berperilaku sebagai berikut untuk setiap saluran sel aktif:
- Untuk band channel, mencoba menemukan entri tabel pencarian. Jika tidak ada entri tabel yang ditemukan, akan ditampilkan tanpa saluran yang tidak aman untuk saluran sel tersebut.
- Berdasarkan band seluler, mengidentifikasi band Wi-Fi mana yang berisiko dan sisi band mana yang menjadi sumber interferensi (misalnya, saluran 2,4 GHz yang lebih rendah, saluran 2,4 GHz yang lebih tinggi, saluran 5 GHz yang lebih rendah).
Jika
wifiVictimMhz
ada dan saluran seluler memiliki uplink danJika bagian bawah band Wi-Fi berisiko
- Menemukan batas atas saluran yang tidak aman dengan menambahkan
wifiVictimMhz
ke frekuensi tertinggi uplink sel. - Menemukan saluran Wi-Fi 20 Mhz pertama yang tepi bawahnya tumpang-tindih dengan batas.
- Menandai saluran Wi-Fi, setiap saluran bandwidth yang lebih besar yang berisinya (misalnya, 40 Mhz, 80 Mhz), dan setiap saluran yang lebih rendah dari band yang sama dengan saluran yang tidak aman.
- Menemukan batas atas saluran yang tidak aman dengan menambahkan
Jika bagian atas band Wi-Fi berisiko
- Menemukan batas bawah saluran yang tidak aman dengan mengurangkan wifiVictimMhz ke frekuensi uplink sel terendah.
- Menemukan saluran Wi-Fi pertama yang tepi atasnya tumpang-tindih dengan batas.
- Menandai saluran Wi-Fi, setiap saluran yang lebih besar yang berisi saluran tersebut (misalnya, 40 Mhz, 80 Mhz), dan setiap saluran yang lebih tinggi dari band yang sama dengan saluran yang tidak aman.
Jika
cellVictimMhz
ada dan saluran sel memiliki downlink.- Melakukan langkah 3 menggunakan
cellVictimMhz
sebagai nilai minimum dan membandingkan dengan downlink sel, bukan uplink sel.
- Melakukan langkah 3 menggunakan
Menerapkan batas daya entri tabel ke channel tidak aman yang dihitung.
Gambar 3. Perhitungan saluran yang tidak aman untuk interferensi saluran di sekitar
Distorsi harmonik atau intermodulasi
Untuk distorsi intermodulasi atau harmonik, mesin coex menghitung rentang sinyal intermodulasi atau harmonik dan mengevaluasi persentase tumpang-tindih yang dimilikinya dengan saluran potensial korban. Jika tumpang-tindih melebihi nilai minimum tumpang-tindih, algoritma akan menganggapnya sebagai situasi yang tidak aman. Penghitungan persentase tumpang-tindih distorsi intermodulasi atau harmonis pada saluran korban dilakukan dengan persamaan berikut:
Dalam kasus distorsi harmonis, algoritma mempertimbangkan distorsi harmonis saluran uplink sel yang mengorbankan saluran Wi-Fi. Kemudian, substitusi distorsi tinggi dan distorsi rendah dengan nilai harmonis berdasarkan frekuensi uplink sel dan derajat harmonis $ N $.
Gambar 4. Penghitungan saluran yang tidak aman untuk distorsi harmonik
Dalam kasus intermodulasi, algoritma mempertimbangkan distorsi intermodulasi uplink sel dan saluran Wi-Fi yang menjadi korban saluran downlink sel. Kemudian, nilai distorsi tinggi dan distorsi rendah akan diganti dengan nilai intermodulasi berdasarkan frekuensi uplink sel, frekuensi Wi-Fi, dan dua koefisien intermodulasi $ M $, $ N $.
Gambar 5. Penghitungan saluran yang tidak aman untuk distorsi intermodulasi
Anda dapat menentukan $ M $, $ N $, dan nilai tumpang-tindih dalam tabel pencarian per band sel yang mengganggu. Jika tidak ada interferensi untuk band, nilai akan dihilangkan dari tabel untuk entri band tersebut. Dua kumpulan nilai ini untuk band Wi-Fi 2,4 GHz dan 5 GHz dapat ditentukan secara independen.
Serupa dengan algoritma interferensi tetangga, algoritma ini menggunakan kembali nilai batas daya yang sama yang ditentukan per band sel yang mengganggu.
Algoritma berperilaku sebagai berikut untuk setiap saluran sel aktif:
- Untuk band saluran sel, metode ini mencoba menemukan entri tabel pencarian. Jika tidak ada entri tabel yang ditemukan, akan ditampilkan tanpa channel yang tidak aman untuk channel ini.
Menemukan saluran 2,4 GHz yang tidak aman dari harmonik jika parameter ditentukan.
- Menemukan derajat harmonik N untuk 2,4 GHz.
- Menghitung frekuensi tinggi harmonik dan frekuensi rendah harmonik berdasarkan N dan uplink sel.
- Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas bawah harmonik yang berasal dari bawah.
- Menghitung tumpang-tindih harmonik di seluruh saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi batas tumpang-tindih Wi-Fi 2,4 GHz.
- Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas atas harmonik yang berasal dari atas.
- Menghitung tumpang-tindih harmonik melalui saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih tersebut melebihi batas tumpang-tindih Wi-Fi Wi-Fi 2,4 GHz.
- Menandai setiap saluran 20 MHz di antaranya sebagai saluran yang tidak aman.
Menemukan saluran 5 GHz yang tidak aman dari harmonik jika parameter ditentukan.
- Menemukan derajat harmonis N untuk 5 GHz. Jika N adalah 0, lewati ke langkah 5.
- Menghitung frekuensi tinggi harmonik dan frekuensi rendah harmonik berdasarkan N dan uplink sel.
Menemukan saluran 20 Mhz yang tidak aman.
- Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas bawah harmonik yang berasal dari bawah.
- Menghitung tumpang-tindih harmonik di seluruh saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi nilai minimum tumpang-tindih Wi-Fi 2,4 GHz.
- Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas atas harmonik yang berasal dari atas.
- Menghitung tumpang-tindih harmonik di seluruh saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi nilai minimum tumpang-tindih Wi-Fi 2,4 GHz.
- Menandai setiap saluran 20 MHz di antaranya sebagai saluran yang tidak aman dengan batas daya yang ditentukan.
Menemukan saluran 40 MHz, 80 MHz, 160 MHz yang tidak aman
- Mengulangi langkah 3a, tetapi dengan 40 MHz, 80 MHz, 160 MHz.
- Daripada menghitung tumpang-tindih saluran di tepi harmonis, gunakan kembali tumpang-tindih yang dihitung dari saluran komponen yang lebih kecil (misalnya, jika dua saluran 20 Mhz membentuk saluran 40 Mhz dan memiliki tumpang-tindih 30% dan 90%, maka rata-ratanya adalah tumpang-tindih 60% untuk saluran 40 Mhz).
Menemukan saluran 2,4 GHz yang tidak aman dari intermodulasi jika parameter ditentukan.
- Menemukan koefisien intermodulasi N, M untuk 2,4 GHz.
Untuk setiap saluran Wi-Fi 2,4 GHz:
- Menghitung frekuensi rendah intermodulasi dan frekuensi tinggi intermodulasi berdasarkan saluran N, M, uplink sel, dan Wi-Fi.
- Menghitung tumpang-tindih intermodulasi melalui uplink sel dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi nilai minimum tumpang-tindih sel 2,4 GHz.
Menemukan saluran 5 GHz yang tidak aman dari intermodulasi jika parameter ditentukan.
- Mengulangi langkah 4 menggunakan saluran Wi-Fi 5 GHz dan nilai minimum tumpang-tindih sel 5 GHz.
Menerapkan batas daya entri tabel ke channel tidak aman yang dihitung.
Hasil akhir
Setelah kedua kumpulan saluran yang tidak aman dari interferensi tetangga dan harmonis dihitung, kumpulan akhir dihitung dengan mengambil gabungan kedua kumpulan (dan memilih batas daya yang lebih rendah jika ada tabrakan), dan menghapus saluran default dari kumpulan jika tidak ada batasan wajib yang diterapkan.
Algoritma berperilaku sebagai berikut:
- Jika setiap saluran Wi-Fi 2,4 GHz ditandai sebagai saluran yang tidak aman, hapus saluran Wi-Fi 2,4 GHz default dari kumpulan.
- Jika setiap saluran Wi-Fi 5 GHz ditandai sebagai saluran yang tidak aman, hapus saluran Wi-Fi 5 GHz default dari kumpulan.
- Menampilkan kumpulan akhir saluran yang tidak aman.
Format tabel pemeta
Tabel pencarian direpresentasikan dalam file XML yang terletak di string konfigurasi
config_wifiCoexTableFilepath
yang dapat ditempatkan, dan ditentukan oleh
XSD berikut.
<?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>
Contoh tabel XML
Berikut adalah contoh tabel pemeta XML:
<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>
Agregasi operator
Untuk agregasi pembawa (CA), rentang intermodulasi atau harmonis untuk setiap uplink atau downlink mungkin tidak menghasilkan cukup tumpang-tindih untuk menyebabkan interferensi secara independen, tetapi mungkin menghasilkan cukup tumpang-tindih jika digabungkan. Algoritma akan mempertimbangkan setiap rentang harmonik atau intermodulasi secara independen dan mengambil gabungan saluran tidak aman yang ditampilkan. Untuk kasus intermodulasi, ini berarti menilai rentang intermodulasi setiap UL ke setiap DL.
Algoritme ini tidak membedakan antara PCELL, PSCELL, atau SCELL dan memperlakukannya sebagai sama.
Akses Terbantu Lisensi
Akses Berbantuan Lisensi (LAA) diidentifikasi sebagai band #46. Algoritma memperlakukan band ini mirip dengan band lainnya. Dalam hal ini, saluran 5 Ghz penuh dapat ditetapkan sebagai daftar penggantian di tabel pencarian.
Bergantung pada persyaratan operator, algoritma penghindaran saluran menetapkan pembatasan wajib pada SoftAP dan Wi-Fi Langsung (P2P) untuk seluruh band Wi-Fi 5 GHz. Agar algoritma dapat menangani kasus penggunaan ini, nilai konfigurasi
operator restrict_5g_softap_wifi_direct_for_laa
harus ditentukan. Jika
saluran sel berada di LAA dan restrict_5g_softap_wifi_direct_for_laa
adalah true
,
algoritme akan menampilkan kumpulan saluran yang tidak aman dengan seluruh band 5 Ghz
dan menetapkan tanda pembatasan wajib untuk SoftAP dan Wi-Fi Direct (P2P).
Beri tahu layanan Wi-Fi
Setelah algoritma saluran coex menghitung saluran yang tidak aman, untuk menyediakan saluran yang tidak aman dan batasan aplikasi sistem Anda, gunakan struktur data @SystemApi berikut yang ditentukan dalam framework Android.
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();
}
Gunakan metode dan callback WifiManager
@SystemApi berikut untuk memungkinkan
aplikasi mendapatkan nilai yang diperbarui saat saluran yang tidak aman berubah.
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);
}
Lakukan tindakan Wi-Fi
Saat menerima informasi tentang kumpulan saluran yang tidak aman, layanan Wi-Fi akan melakukan tindakan yang sesuai untuk memastikan saluran tersebut dihindari. Bagian ini menjelaskan perilaku layanan Wi-Fi dalam berbagai skenario.
Memberi tahu pengemudi
Karena driver memiliki peran utama dalam melakukan penghindaran saluran, sangat penting untuk menyampaikan saluran yang tidak aman ke driver dan firmware. Untuk melakukannya,
gunakan IWifiChip
HAL API berikut.
Untuk AIDL:
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
Untuk HIDL (1.5 atau yang lebih tinggi):
setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
bitfield<IfaceType> restrictions);
{i>SoftAP<i}
SoftAP adalah kasus penggunaan utama untuk menghindari saluran yang tidak aman. Bagian berikut ini menguraikan skenario SoftAp utama ketika pencegahan saluran dapat diterapkan dengan ACS. Skenario ini menjelaskan perilaku algoritma penghindaran saluran dan driver atau firmware.
Memulai SoftAP dengan ACS diaktifkan (belum ada SoftAP)
Jika saluran tidak aman dan ada batasan SoftAP
- Framework ini menghapus saluran yang tidak aman dari daftar ACS.
- Jika daftar kosong, framework akan menghentikan SoftAP.
Jika channel tidak aman dan tidak ada pembatasan
- Driver atau firmware vendor memberikan prioritas pada saluran yang aman daripada saluran yang tidak aman.
SoftAP aktif dengan ACS aktif dan saluran yang tidak aman diperbarui
Jika saluran SoftAP tidak aman dan terdapat pembatasan SoftAP
- Framework memperbarui daftar ACS dengan menghapus saluran yang tidak aman.
- Jika daftar kosong, framework akan menutup SoftAP.
Jika saluran SoftAP tidak aman dan tidak ada pembatasan
- Tidak ada tindakan yang diambil oleh framework. Driver atau firmware vendor menangani menghindari saluran yang tidak aman atau menerapkan batas daya jika penghindaran tidak memungkinkan.
Wi-Fi Langsung (P2P)
Jika ada saluran yang tidak aman dengan batasan Wi-Fi Direct (P2P).
- Framework ini meminta
wpa_supplicant
untuk menghindari saluran yang tidak aman menggunakan metode HALISupplicantP2pIface::setDisallowedFrequencies()
.
- Framework ini meminta
Jika ada channel tidak aman tanpa batasan.
- Driver atau firmware vendor menerapkan batas daya jika saluran yang tidak aman tanpa pembatasan Wi-Fi Direct (P2P) digunakan.
Wi-Fi Aware (NAN)
Framework ini tidak terlibat dalam pemilihan saluran untuk Wi-Fi Aware (NAN) dan tidak ada tindakan framework yang diambil. Driver atau firmware vendor bertanggung jawab atas penghindaran saluran Wi-Fi Aware (NAN).
Menonaktifkan algoritma
Jika Anda ingin menonaktifkan implementasi algoritma default dan meneruskan daftar
saluran tidak aman Anda sendiri untuk dihindari, konfigurasikan
config_wifiDefaultCoexAlgorithmEnabled
overlay. Jika overlay disetel ke salah (false),
algoritma default akan dinonaktifkan. Kemudian, Anda dapat menggunakan algoritma eksklusif
out-of-band Anda sendiri untuk membuat daftar saluran yang tidak aman untuk dihubungkan ke
framework menggunakan API sistem berikut.
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
Memvalidasi penerapan
Untuk memvalidasi implementasi fitur penghindaran saluran Wi-Fi/seluler coex, gunakan pengujian berikut.
Pengujian CTS
WifiManagerTest.java
testCoexMethodsShouldFailNoPermission()
testListenOnCoexUnsafeChannels()
Pengujian ACTS
WifiManagerTest.py
test_set_get_coex_unsafe_channels()
Pengujian VTS
Jika AIDL diimplementasikan:
wifi_chip_aidl_test.cpp
TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
Jika HIDL diterapkan:
wifi_chip_hidl_test.cpp
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)