Penghindaran saluran coex Wi-Fi/seluler

Fitur penghindaran saluran Wi-Fi/koeksistensi 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 harus 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 saat satu antena mengirimkan dan antena lainnya menerima secara bersamaan. Dalam hal ini, antena pemancar akan membanjiri antena penerima, sehingga memengaruhi kualitas penerimaannya.

Dokumen ini menyebut pemancar yang mengganggu sebagai penyerang 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 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:

  1. Modem melaporkan perubahan frekuensi seluler
  2. Algoritma penghindaran coex menghitung saluran Wi-Fi yang tidak aman
  3. Algoritme hindari koeksistensi memberi tahu layanan Wi-Fi
  4. Framework atau driver melakukan tindakan Wi-Fi yang sesuai

Skema penghindaran saluran

Gambar 1. Skema penghindaran saluran

Melaporkan perubahan frekuensi seluler

Layanan telefoni 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 koeksistensi menghitung interferensi antara saluran seluler dan Wi-Fi serta menentukan kumpulan saluran Wi-Fi yang tidak aman.

Ada beberapa jenis interferensi yang memerlukan formula yang berbeda: samping dan harmonis/intermodulasi. Karena perbedaan fisik pada antena dan tata letak antarperangkat, pola interferensi tetangga dan harmonik/intermodulasi untuk setiap perangkat berbeda. Untuk mempertimbangkan hal ini, 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, batasan wajib direpresentasikan sebagai bitmask yang berisi nilai untuk menentukan apakah akan melarang saluran tertentu seperti Wi-Fi Direct (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 formula terbatas jika interferensi sangat bergantung pada bandwidth (sehingga saluran dengan bandwidth yang lebih besar mungkin tidak aman, tetapi tidak 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 di tabel pencarian untuk entri tertentu. Daftar penggantian dalam entri tabel menunjukkan bahwa penghitungan untuk saluran sel tertentu dilewati dan 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 20 MHz 5 GHz)
  • 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 tetangga, algoritma penghindaran coex memastikan jarak ΔF antara saluran agresor dan korban tidak di bawah nilai minimum yang ditentukan.

Interferensi saluran

Gambar 2. Jarak antara channel agresor dan korban

Nilai minimum ditentukan oleh konfigurasi fisik perangkat dan nilai minimum yang diberikan dalam entri tabel pencarian per band yang mengganggu. Band yang dianggap tidak mengganggu tidak memiliki entri tabel dan saluran yang tidak aman tidak perlu dihitung (sebagian besar waktu).

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:

  1. 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.
  2. 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).
  3. Jika wifiVictimMhz ada dan saluran sel memiliki uplink dan

    1. Jika bagian bawah band Wi-Fi berisiko

      1. Menemukan batas atas saluran yang tidak aman dengan menambahkan wifiVictimMhz ke frekuensi uplink sel tertinggi.
      2. Menemukan saluran Wi-Fi 20 Mhz pertama yang tepi bawahnya tumpang-tindih dengan batas.
      3. 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.
    2. Jika bagian atas band Wi-Fi berisiko

      1. Menemukan batas bawah saluran yang tidak aman dengan mengurangkan wifiVictimMhz ke frekuensi uplink sel terendah.
      2. Menemukan saluran Wi-Fi pertama yang tepi atasnya tumpang-tindih dengan batas.
      3. 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.
  4. Jika cellVictimMhz ada dan saluran sel memiliki downlink.

    1. Melakukan langkah 3 menggunakan cellVictimMhz sebagai nilai minimum dan membandingkan dengan downlink sel, bukan uplink sel.
  5. Menerapkan batas daya entri tabel ke channel tidak aman yang dihitung.

Penghitungan saluran yang tidak aman

Gambar 3. Penghitungan saluran yang tidak aman untuk interferensi saluran tetangga

Distorsi harmonik atau intermodulasi

Untuk distorsi harmonik atau intermodulasi, mesin coex menghitung rentang sinyal harmonik atau intermodulasi 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:

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

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

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

Distorsi harmonik penghitungan channel yang tidak aman

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

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

Distorsi intermodulasi penghitungan saluran yang tidak aman

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:

  1. Untuk band saluran sel, modul ini mencoba menemukan entri tabel pencarian. Jika tidak ada entri tabel yang ditemukan, akan ditampilkan tanpa channel yang tidak aman untuk channel ini.
  2. Menemukan saluran 2,4 GHz yang tidak aman dari harmonik jika parameter ditentukan.

    1. Menemukan derajat harmonis N untuk 2,4 GHz.
    2. Menghitung frekuensi tinggi harmonik dan frekuensi rendah harmonik berdasarkan N dan uplink sel.
    3. Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas bawah harmonik yang berasal dari bawah.
    4. 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.
    5. Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas atas harmonik yang berasal dari atas.
    6. 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.
    7. Menandai setiap saluran 20 MHz di antaranya sebagai saluran yang tidak aman.
  3. Menemukan saluran 5 GHz yang tidak aman dari harmonik jika parameter ditentukan.

    1. Menemukan derajat harmonis N untuk 5 GHz. Jika N adalah 0, lewati ke langkah 5.
    2. Menghitung frekuensi tinggi harmonik dan frekuensi rendah harmonik berdasarkan N dan uplink sel.
    3. Menemukan saluran 20 Mhz yang tidak aman.

      1. Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas bawah harmonik yang berasal dari bawah.
      2. 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.
      3. Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas atas harmonik yang berasal dari atas.
      4. 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.
      5. Menandai setiap saluran 20 MHz di antaranya sebagai saluran yang tidak aman dengan batas daya yang ditentukan.
    4. Menemukan saluran 40 MHz, 80 MHz, 160 MHz yang tidak aman

      1. Mengulangi langkah 3a, tetapi dengan 40 MHz, 80 MHz, 160 MHz.
      2. 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).
  4. Menemukan saluran 2,4 GHz yang tidak aman dari intermodulasi jika parameter ditentukan.

    1. Menemukan koefisien intermodulasi N, M untuk 2,4 GHz.
    2. Untuk setiap saluran Wi-Fi 2,4 GHz:

      1. Menghitung frekuensi rendah intermodulasi dan frekuensi tinggi intermodulasi berdasarkan saluran N, M, uplink sel, dan Wi-Fi.
      2. Menghitung tumpang-tindih intermodulasi melalui downlink sel dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi nilai minimum tumpang-tindih sel 2,4 GHz.
  5. Menemukan saluran 5 GHz yang tidak aman dari intermodulasi jika parameter ditentukan.

    1. Mengulangi langkah 4 menggunakan saluran Wi-Fi 5 GHz dan nilai minimum tumpang-tindih sel 5 GHz.
  6. 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:

  1. Jika setiap saluran Wi-Fi 2,4 GHz ditandai sebagai saluran tidak aman, hapus saluran Wi-Fi 2,4 GHz default dari kumpulan.
  2. Jika setiap saluran Wi-Fi 5 GHz ditandai sebagai saluran yang tidak aman, hapus saluran Wi-Fi 5 GHz default dari kumpulan.
  3. 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 pencarian 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 harmonis atau intermodulasi 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 mempertimbangkan setiap rentang intermodulasi atau harmonis secara terpisah dan mengambil gabungan saluran tidak aman yang ditampilkan. Untuk kasus intermodulasi, hal ini berarti menilai rentang intermodulasi dari setiap UL ke setiap DL.

Algoritme ini tidak membedakan antara PCELL, PSCELL, atau SCELL dan memperlakukannya sebagai sama.

Akses dengan Bantuan 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 dalam tabel pencarian.

Bergantung pada persyaratan operator, algoritma penghindaran saluran menetapkan batasan wajib pada SoftAP dan Wi-Fi Direct (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, algoritma akan menampilkan kumpulan saluran yang tidak aman dengan seluruh band 5 Ghz dan menetapkan tanda pembatasan wajib untuk SoftAP dan Wi-Fi Direct (P2P).

Layanan Wi-Fi Inform

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

Melakukan 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, 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 baru):

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

SoftAP

SoftAP adalah kasus penggunaan utama untuk menghindari saluran yang tidak aman. Bagian berikut menguraikan skenario SoftAp utama tempat penghindaran saluran dapat diterapkan dengan ACS. Skenario ini menjelaskan perilaku algoritma penghindaran saluran dan driver atau firmware.

Memulai SoftAP dengan ACS diaktifkan (belum ada SoftAP)

  1. Jika saluran tidak aman dan ada batasan SoftAP

    1. Framework ini menghapus saluran yang tidak aman dari daftar ACS.
    2. Jika daftar kosong, framework akan menghentikan SoftAP.
  2. Jika channel tidak aman dan tidak ada batasan

    1. Driver atau firmware vendor memprioritaskan saluran yang aman daripada saluran yang tidak aman.

SoftAP aktif dengan ACS diaktifkan dan saluran yang tidak aman diperbarui

  1. Jika saluran SoftAP tidak aman dan ada batasan SoftAP

    1. Framework memperbarui daftar ACS dengan menghapus saluran yang tidak aman.
    2. Jika daftar kosong, framework akan menutup SoftAP.
  2. Jika saluran SoftAP tidak aman dan tidak ada batasan

    1. Tidak ada tindakan yang dilakukan oleh framework. Driver atau firmware vendor menangani menghindari saluran yang tidak aman atau menerapkan batas daya jika penghindaran tidak memungkinkan.

Wi-Fi Direct (P2P)

  1. Jika ada saluran yang tidak aman dengan batasan Wi-Fi Direct (P2P).

    1. Framework meminta wpa_supplicant untuk menghindari saluran yang tidak aman menggunakan metode HAL ISupplicantP2pIface::setDisallowedFrequencies().
  2. Jika ada channel yang tidak aman tanpa batasan.

    1. Driver atau firmware vendor menerapkan batas daya jika saluran yang tidak aman tanpa pembatasan Wi-Fi Direct (P2P) digunakan.

Wi-Fi Aware (NAN)

Framework tidak terlibat dalam pemilihan saluran untuk Wi-Fi Aware (NAN) dan tidak ada tindakan framework yang dilakukan. Driver atau firmware vendor bertanggung jawab atas penghindaran saluran Wi-Fi Aware (NAN).

Menonaktifkan algoritma

Jika Anda ingin menonaktifkan penerapan 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)