Penghindaran Saluran Coex Wi-Fi/Seluler

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/ke saluran seluler. Ini termasuk antarmuka seperti STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN).

Halaman ini membahas hal-hal berikut:

  • Informasi yang harus dilaporkan oleh modem seluler ke kerangka Android
  • Algoritma yang digunakan kerangka Wi-Fi untuk menghitung saluran Wi-Fi yang harus dihindari
  • Tabel konfigurasi yang harus disediakan oleh produsen perangkat untuk kerangka Wi-Fi
  • API Sistem, konfigurasi, dan API HAL yang terkait dengan fitur penghindaran saluran
  • Perilaku kerangka kerja untuk menangani penghindaran saluran
  • Perilaku vendor chip untuk menangani penghindaran saluran
  • Detail implementasi untuk penghindaran saluran
  • Tes 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 ketika saluran seluler dan Wi-Fi berada dalam pemisahan frekuensi pendek (saluran tetangga) atau ketika terdapat interferensi harmonik dan intermodulasi.

Jenis interferensi ini menjadi masalah ketika satu antena memancarkan dan antena lainnya menerima pada saat yang bersamaan. Dalam hal ini, antena pemancar membanjiri antena penerima, sehingga berdampak pada kualitas penerimaannya.

Dokumen ini mengacu pada pengirim gangguan sebagai agresor dan penerima yang mengalami gangguan sebagai korban . Saluran Wi-Fi yang menjadi agresor 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 kepemilikan yang menyimpang dari kerangka Wi-Fi. Selain itu, fitur ini memungkinkan produsen perangkat untuk mengonfigurasi, mengaktifkan dan menonaktifkan, serta mengganti fitur tersebut.

Fitur ini melakukan penghindaran saluran dengan mengontrol saluran Wi-Fi. Skema penghindaran saluran Wi-Fi dapat digambarkan sebagai serangkaian empat langkah abstrak:

  1. Modem melaporkan perubahan frekuensi seluler
  2. Algoritme penghindaran Coex menghitung saluran Wi-Fi yang tidak aman
  3. Algoritma penghindaran Coex menginformasikan layanan Wi-Fi
  4. Kerangka kerja atau driver melakukan tindakan Wi-Fi yang sesuai

Skema penghindaran saluran

Gambar 1. Skema penghindaran saluran

Melaporkan perubahan frekuensi seluler

Layanan telepon melaporkan saluran seluler yang sedang digunakan. Ketika frekuensi operasi seluler berubah, modem melaporkan informasi ini ke layanan telepon melalui IRadio::PhysicalChannelConfig . Informasi ini mencakup indikasi untuk akses bantuan berlisensi (LAA) dan agregasi operator (CA).

Mulai Android 12, kolom berikut di 1.6 IRadio::PhysicalChannelConfig memberikan informasi yang diperlukan untuk rumus 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, algoritme saluran coex menghitung interferensi antara saluran seluler dan Wi-Fi serta menentukan kumpulan saluran Wi-Fi mana yang tidak aman.

Ada beberapa jenis interferensi yang memerlukan rumus berbeda: tetangga dan harmonik/intermodulasi . Karena perbedaan fisik antena dan tata letak antar perangkat, pola interferensi tetangga dan harmonik/intermodulasi untuk setiap perangkat berbeda. Untuk memperhitungkan hal ini, produsen perangkat harus menyediakan tabel pencarian untuk memasukkan parameter ke dalam rumus umum untuk kedua jenis interferensi tersebut. Parameter ini ditentukan per pita sel dan direferensikan oleh pita saluran sel aktif.

Batas daya maksimum dapat ditentukan di tabel pencarian. Jika batasan daya maksimum ditentukan, saluran tidak aman akan melakukan transmisi dengan batasan daya yang disediakan. Jika tidak ada batasan daya, saluran mentransmisikan dengan daya penuh.

Secara umum, fitur penghindaran saluran menggunakan pendekatan upaya terbaik untuk menghindari saluran Wi-Fi yang tidak aman guna mengoptimalkan kinerja. Namun dalam kasus tertentu (misalnya, karena persyaratan operator), antarmuka tertentu wajib menghindari saluran yang tidak aman untuk pita seluler tertentu. Dalam kasus seperti ini, pembatasan wajib direpresentasikan sebagai bitmask yang berisi nilai apakah akan melarang saluran tertentu seperti Wi-Fi Direct (P2P), SoftAp, dan Wi-Fi Aware (NAN). Meskipun saluran yang tidak aman bertindak sebagai rekomendasi untuk tidak menggunakan saluran tersebut untuk semua kasus penggunaan, pembatasan wajib menandai kasus penggunaan tertentu yang harus dihindari.

Jika setiap saluran pada pita 2,4 GHz atau 5 GHz ditandai tidak aman, tabel pencarian dapat menentukan saluran default 2,4 GHz atau saluran default 5 GHz per pita sel yang mengganggu sebagai pilihan paling aman. Saluran default ini tidak dilaporkan sebagai saluran tidak aman ketika saluran lainnya dilaporkan tidak aman.

Ganti daftar

Pendekatan yang dirumuskan terbatas pada kasus di mana interferensi sangat bergantung pada bandwidth (sehingga saluran dengan bandwidth lebih besar mungkin tidak aman tetapi tidak pada saluran dengan bandwidth lebih kecil). Dalam kasus, seperti LAA, ada baiknya jika melewatkan penghitungan dan menggunakan daftar saluran tidak aman tertentu.

Untuk melakukan ini, Anda dapat menentukan daftar penggantian saluran tidak aman di tabel pencarian untuk entri tertentu. Daftar override dalam entri tabel menandakan bahwa perhitungan untuk saluran sel tertentu dilewati dan saluran Wi-Fi yang tidak aman untuk saluran sel yang cocok ditentukan oleh daftar override.

Untuk kasus yang sensitif terhadap bandwidth, Anda dapat menghindari bandwidth tertentu secara selektif dengan menentukan saluran tertentu dengan bandwidth tertentu dalam daftar override. Ini karena setiap nomor saluran Wi-Fi sesuai dengan bandwidth tertentu.

Daftar penggantian diwakili oleh daftar nomor saluran atau kata kunci kategori yang telah ditentukan sebelumnya untuk setiap pita Wi-Fi:

kategori 2g:

  • all (keseluruhan pita 2,4 GHz)

kategori 5g:

  • all (seluruh pita 5 GHz)
  • 20mhz (saluran 5GHz 20MHz)
  • 40mhz (saluran 5GHz 40MHz)
  • 80mhz (saluran 5GHz 80MHz)
  • 160mhz (saluran 5GHz 160MHz)

Gangguan saluran tetangga

Untuk menentukan gangguan saluran tetangga, algoritma penghindaran coex memastikan jarak ΔF antara saluran agresor dan korban tidak berada di bawah ambang batas yang ditentukan.

Gangguan saluran

Gambar 2. Jarak antara saluran agresor dan korban

Ambang batas ditentukan oleh konfigurasi fisik perangkat dan nilai ambang batas yang diberikan dalam entri tabel pencarian per pita interferensi. Band yang dianggap non-interferensi tidak memiliki entri tabel dan saluran yang tidak aman tidak perlu dihitung (hal ini sering terjadi).

Parameter interferensi tetangga

  • wifiVictimMhz : Batas jarak MHz untuk korban Wi-Fi (uplink sel)
  • cellVictimMhz : Batas jarak MHz untuk sel korban (downlink sel)

Algoritme berperilaku sebagai berikut untuk setiap saluran sel aktif:

  1. Untuk band saluran, cobalah mencari entri tabel pencarian. Jika tidak ada entri tabel yang ditemukan, kembali tanpa saluran yang tidak aman untuk saluran seluler tersebut.
  2. Berdasarkan pita seluler, identifikasi pita Wi-Fi mana yang berisiko dan dari sisi pita mana interferensi berasal (misalnya, saluran 2,4 GHz lebih rendah, saluran 2,4 GHz lebih tinggi, saluran 5 GHz lebih rendah).
  3. Jika wifiVictimMhz ada dan saluran seluler memiliki uplink dan

    1. Jika bagian bawah pita Wi-Fi berisiko

      1. Menemukan batas atas saluran tidak aman dengan menambahkan wifiVictimMhz ke frekuensi tertinggi uplink sel.
      2. Menemukan saluran Wi-Fi 20 Mhz pertama yang tepi bawahnya melampaui batas.
      3. Menandai saluran Wi-Fi, setiap saluran bandwidth lebih besar yang memuatnya (misalnya, 40 Mhz, 80 Mhz), dan setiap saluran lebih rendah pada pita yang sama sebagai saluran tidak aman.
    2. Jika bagian atas pita Wi-Fi berisiko

      1. Menemukan batas bawah saluran tidak aman dengan mengurangkan wifiVictimMhz ke frekuensi terendah uplink sel.
      2. Menemukan saluran Wi-Fi pertama yang tepi atasnya melampaui batas.
      3. Menandai saluran Wi-Fi, setiap saluran lebih besar yang memuatnya (misalnya, 40M hz, 80 Mhz), dan setiap saluran lebih tinggi pada pita yang sama sebagai saluran tidak aman.
  4. Jika cellVictimMhz ada dan saluran sel memiliki downlink.

    1. Lakukan langkah 3 menggunakan cellVictimMhz sebagai ambang batas dan bandingkan dengan downlink sel, bukan uplink sel.
  5. Menerapkan batas daya entri tabel ke saluran tidak aman yang dihitung.

Perhitungan saluran tidak aman

Gambar 3. Perhitungan saluran tidak aman untuk gangguan saluran tetangga

Distorsi harmonik/intermodulasi

Untuk distorsi harmonik/intermodulasi, mesin coex menghitung jangkauan sinyal harmonik/intermodulasi dan mengevaluasi persentase tumpang tindih yang dimilikinya dengan saluran korban potensial. Jika tumpang tindih melebihi ambang batas tumpang tindih, algoritme menganggap ini sebagai situasi yang tidak aman. Perhitungan persen tumpang tindih distorsi harmonik/intermodulasi pada saluran korban dilakukan dengan persamaan sebagai berikut:

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

Dalam kasus distorsi harmonik, algoritme mempertimbangkan distorsi harmonik saluran uplink sel yang menjadi korban saluran Wi-Fi. Ini kemudian menggantikan distorsi tinggi dan distorsi rendah dengan nilai harmonik berdasarkan frekuensi uplink sel dan derajat harmonik $N$.

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

Distorsi harmonik perhitungan saluran tidak aman

Gambar 4. Perhitungan saluran tidak aman untuk distorsi harmonik

Dalam kasus intermodulasi, algoritme mempertimbangkan distorsi intermodulasi dari uplink sel dan saluran Wi-Fi yang mengorbankan saluran downlink sel. Kemudian mengganti distorsi tinggi dan distorsi rendah 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 perhitungan saluran tidak aman

Gambar 5. Perhitungan saluran tidak aman untuk distorsi intermodulasi

Anda dapat menentukan $M$, $N$, dan nilai yang tumpang tindih di tabel pencarian per pita sel yang mengganggu. Jika tidak ada interferensi untuk suatu pita, maka nilai-nilai tersebut dihilangkan dari tabel untuk entri pita tersebut. Dua kumpulan nilai ini untuk pita Wi-Fi 2,4 GHz dan 5 GHz dapat ditentukan secara independen.

Mirip dengan algoritma interferensi tetangga, algoritma ini menggunakan kembali nilai batas daya yang sama yang ditentukan per pita sel yang mengganggu.

Algoritme berperilaku sebagai berikut untuk setiap saluran sel aktif:

  1. Untuk pita saluran sel, ia mencoba mencari entri tabel pencarian. Jika tidak ada entri tabel yang ditemukan, kembalikan tanpa saluran yang tidak aman untuk saluran ini.
  2. Menemukan saluran 2,4 GHz yang tidak aman dari harmonik jika parameter ditentukan.

    1. Menemukan derajat harmonik 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 datang dari bawah.
    4. Menghitung tumpang tindih harmonik pada saluran Wi-Fi dan menandai saluran tersebut sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
    5. Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas atas harmonik yang datang dari atas.
    6. Menghitung tumpang tindih harmonik pada saluran Wi-Fi dan menandai saluran tersebut sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
    7. Menandai setiap saluran 20 MHz di antaranya sebagai saluran tidak aman.
  3. Menemukan saluran 5 GHz yang tidak aman dari harmonik jika parameter ditentukan.

    1. Menemukan derajat harmonik N untuk 5 GHz. Jika N adalah 0, lompat 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 datang dari bawah.
      2. Menghitung tumpang tindih harmonik pada saluran Wi-Fi dan menandai saluran tersebut sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
      3. Menemukan saluran Wi-Fi 20 MHz pertama yang berada dalam batas atas harmonik yang datang dari atas.
      4. Menghitung tumpang tindih harmonik pada saluran Wi-Fi dan menandai saluran tersebut sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
      5. Menandai setiap saluran 20 MHz di antaranya sebagai saluran tidak aman dengan batas daya yang ditentukan.
    4. Menemukan saluran 40 MHz, 80 MHz, 160 MHz yang tidak aman

      1. Ulangi langkah 3a tetapi dengan 40 MHz, 80 MHz, 160 MHz.
      2. Daripada menghitung tumpang tindih saluran pada tepi harmonik, gunakan kembali perhitungan tumpang tindih dari saluran penyusun yang lebih kecil (misalnya, jika dua saluran 20 Mhz membuat saluran 40 Mhz dan memiliki tumpang tindih 30% dan 90%, maka rata-ratanya adalah 60 % tumpang tindih 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 intermodulasi frekuensi rendah dan intermodulasi frekuensi tinggi berdasarkan N, M, uplink sel, dan saluran Wi-Fi.
      2. Menghitung tumpang tindih intermodulasi pada downlink sel dan menandai saluran sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih sel 2,4 GHz.
  5. Menemukan saluran 5 GHz yang tidak aman dari intermodulasi jika parameter ditentukan.

    1. Ulangi langkah 4 menggunakan saluran Wi-Fi 5 GHz dan ambang tumpang tindih sel 5 GHz.
  6. Menerapkan batas daya entri tabel ke saluran tidak aman yang dihitung.

Hasil akhir

Setelah kedua set saluran yang tidak aman dari interferensi tetangga dan harmonik dihitung, set terakhir dihitung dengan menggabungkan kedua set (dan memilih batas daya yang lebih rendah jika ada tabrakan), dan menghapus saluran default dari set jika ada. tidak ada batasan wajib yang diterapkan.

Algoritme 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 tersebut.
  2. Jika setiap saluran Wi-Fi 5 GHz ditandai sebagai saluran tidak aman, hapus saluran Wi-Fi 5 GHz default dari kumpulan tersebut.
  3. Mengembalikan kumpulan saluran tidak aman terakhir.

Format tabel pencarian

Tabel pencarian diwakili dalam file XML yang terletak di string konfigurasi yang dapat dihamparkan config_wifiCoexTableFilepath , 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 ini 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 harmonik/intermodulasi untuk setiap uplink/downlink mungkin tidak menghasilkan tumpang tindih yang cukup untuk menyebabkan interferensi secara independen, namun mungkin menghasilkan tumpang tindih yang cukup bila digabungkan. Algoritme ini mempertimbangkan setiap rentang harmonik/intermodulasi secara independen dan menggabungkan saluran tidak aman yang dikembalikan. Untuk kasus intermodulasi, ini berarti menilai rentang intermodulasi setiap UL ke setiap DL.

Algoritme tidak membedakan antara PCELL/PSCELL/SCELL dan memperlakukannya secara setara.

Akses Berbantuan Lisensi

Akses Berbantuan Lisensi (LAA) diidentifikasi sebagai band #46. Algoritme memperlakukan band ini mirip dengan band lainnya. Dalam hal ini, saluran 5 Ghz penuh dapat diatur sebagai daftar override di tabel pencarian.

Bergantung pada kebutuhan operator, algoritme penghindaran saluran menetapkan batasan wajib pada SoftAP dan Wi-Fi Direct (P2P) untuk seluruh pita Wi-Fi 5 GHz. Agar algoritme dapat menangani kasus penggunaan ini, nilai konfigurasi operator restrict_5g_softap_wifi_direct_for_laa harus ditentukan. Jika saluran seluler berada di LAA dan restrict_5g_softap_wifi_direct_for_laa adalah true , algoritme akan mengembalikan rangkaian saluran tidak aman dengan seluruh pita 5 Ghz dan menetapkan tanda pembatasan wajib untuk SoftAP dan Wi-Fi Direct (P2P).

Menginformasikan layanan Wi-Fi

Setelah algoritme saluran coex menghitung saluran tidak aman, untuk menyediakan saluran tidak aman dan batasannya pada aplikasi sistem Anda, gunakan struktur data @SystemApi berikut yang ditentukan dalam kerangka 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 panggilan balik WifiManager @SystemApi berikut untuk mengaktifkan aplikasi mendapatkan nilai yang diperbarui ketika saluran 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

Ketika layanan Wi-Fi menerima informasi tentang kumpulan saluran yang tidak aman, layanan tersebut melakukan tindakan yang tepat untuk memastikan bahwa 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 API HAL IWifiChip berikut.

Untuk AIDL:

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

Untuk HIDL (1.5 atau lebih tinggi):

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

SoftAP

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

Memulai SoftAP dengan ACS diaktifkan (belum ada SoftAP yang aktif)

  1. Jika saluran tidak aman dan ada batasan SoftAP

    1. Kerangka kerja ini menghapus saluran tidak aman dari daftar ACS.
    2. Jika daftarnya kosong, kerangka kerja menghentikan SoftAP.
  2. Jika saluran tidak aman dan tidak ada batasan

    1. Driver/firmware vendor memberikan prioritas pada saluran aman dibandingkan saluran tidak aman.

SoftAP aktif dengan ACS diaktifkan dan saluran tidak aman diperbarui

  1. Jika saluran SoftAP tidak aman dan ada batasan SoftAP

    1. Kerangka kerja ini memperbarui daftar ACS dengan menghapus saluran yang tidak aman.
    2. Jika daftarnya kosong, kerangka menutup SoftAP.
  2. Jika saluran SoftAP tidak aman dan tidak ada batasan

    1. Tidak ada tindakan yang diambil oleh kerangka kerja tersebut. Driver/firmware vendor menangani penghindaran saluran yang tidak aman atau menerapkan pembatasan daya jika penghindaran tidak dapat dilakukan.

Wi-Fi Langsung (P2P)

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

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

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

Sadar Wi-Fi (NAN)

Kerangka kerja ini tidak terlibat dalam pemilihan saluran untuk Wi-Fi Aware (NAN) dan tidak ada tindakan kerangka kerja yang diambil. Driver/firmware vendor bertanggung jawab atas penghindaran saluran Wi-Fi Aware (NAN).

Menonaktifkan algoritma

Jika Anda ingin menonaktifkan implementasi algoritme default dan meneruskan daftar saluran tidak aman Anda sendiri untuk menghindarinya, konfigurasikan overlay config_wifiDefaultCoexAlgorithmEnabled . Jika overlay disetel ke false, algoritme default dinonaktifkan. Anda kemudian dapat menggunakan algoritma kepemilikan out-of-band Anda sendiri untuk menghasilkan daftar saluran tidak aman untuk menyelami kerangka kerja menggunakan API sistem berikut.

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

Memvalidasi implementasi

Untuk memvalidasi penerapan fitur penghindaran saluran coex Wi-Fi/seluler, gunakan pengujian berikut.

tes CTS

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

tes ACT

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

tes VTS

  • Jika AIDL diterapkan: wifi_chip_aidl_test.cpp

    • TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
  • Jika HIDL diterapkan: wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)