Penghindaran Saluran Coex Seluler/Wi-Fi

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 modem seluler ke kerangka kerja Android
  • Algoritma yang digunakan kerangka kerja Wi-Fi untuk menghitung saluran Wi-Fi yang harus dihindari
  • Tabel konfigurasi yang harus disediakan oleh produsen perangkat untuk kerangka kerja 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
  • 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. Ini terjadi ketika saluran seluler dan Wi-Fi berada dalam pemisahan frekuensi pendek (saluran tetangga) atau ketika ada gangguan harmonik dan intermodulasi.

Jenis gangguan ini menjadi masalah ketika satu antena mengirim dan yang lain menerima pada saat yang sama. Dalam hal ini, antena pengirim membanjiri antena penerima, mempengaruhi 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 yang tidak aman .

Fitur penghindaran saluran coex Wi-Fi/seluler memberikan pendekatan yang konsisten untuk penghindaran saluran yang mengurangi kebutuhan akan kode kepemilikan yang menyimpang dari kerangka kerja Wi-Fi. Selain itu, fitur ini memungkinkan produsen perangkat untuk mengonfigurasi, mengaktifkan dan menonaktifkan, dan 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. Algoritma 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 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 oleh 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 dan menentukan rangkaian 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 dua jenis interferensi. Parameter ini ditentukan per pita sel dan direferensikan oleh pita saluran sel aktif.

Batas daya maksimum dapat ditentukan dalam tabel pencarian. Jika batas daya maksimum ditentukan, saluran yang tidak aman mentransmisikan dengan penutup daya yang disediakan. Jika tidak ada tutup daya, saluran mentransmisikan dengan kekuatan 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 tersebut, pembatasan wajib direpresentasikan sebagai bitmask yang berisi nilai apakah akan melarang saluran tertentu seperti Wi-Fi Direct (P2P), SoftAp, dan Wi-Fi Aware (NAN). Sementara saluran yang tidak aman bertindak sebagai rekomendasi untuk tidak menggunakan saluran itu untuk semua kasus penggunaan, pembatasan wajib menandai kasus penggunaan khusus untuk penghindaran wajib.

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

Ganti daftar

Pendekatan formula terbatas dalam kasus di mana interferensi sangat bergantung pada bandwidth (dan dengan demikian saluran dengan bandwidth yang lebih besar mungkin tidak aman tetapi bukan saluran dengan bandwidth yang lebih kecil). Dalam kasus, seperti dengan LAA, ada baiknya melewatkan perhitungan dan menggunakan daftar saluran tidak aman yang ditentukan.

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

Untuk kasus yang sensitif terhadap bandwidth, Anda dapat secara selektif menghindari bandwidth tertentu dengan menentukan saluran tertentu dengan bandwidth tertentu dalam daftar penggantian. 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 pita Wi-Fi:

kategori 2g:

  • all (seluruh pita 2.4GHz)

kategori 5g:

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

Gangguan saluran tetangga

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

Gangguan saluran

Gambar 2. Jarak antara saluran penyerang dan korban

Ambang ditentukan oleh konfigurasi fisik perangkat dan nilai ambang yang disediakan dalam entri tabel pencarian per pita yang mengganggu. Band yang dianggap tidak mengganggu tidak memiliki entri tabel dan saluran yang tidak aman tidak perlu dihitung (ini adalah sebagian besar waktu).

Parameter interferensi tetangga

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

Algoritma berperilaku sebagai berikut untuk setiap saluran sel aktif:

  1. Untuk pita saluran, coba temukan entri tabel pencarian. Jika tidak ada entri tabel yang ditemukan, kembalikan tanpa saluran yang tidak aman untuk saluran sel tersebut.
  2. Berdasarkan pita seluler, mengidentifikasi pita Wi-Fi mana yang berisiko dan dari sisi pita mana gangguan berasal (misalnya, saluran 2.4GHz lebih rendah, saluran 2.4GHz lebih tinggi, saluran 5GHz lebih rendah).
  3. Jika wifiVictimMhz hadir dan saluran sel 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 20Mhz pertama yang tepi bawahnya tumpang tindih dengan batas.
      3. Menandai saluran Wi-Fi, setiap saluran bandwidth yang lebih besar yang memuatnya (misalnya, 40Mhz, 80Mhz), dan setiap saluran yang lebih rendah dari pita yang sama dengan saluran yang tidak aman.
    2. Jika bagian atas pita Wi-Fi berisiko

      1. Menemukan batas bawah saluran tidak aman dengan mengurangi wifiVictimMhz ke frekuensi terendah uplink sel.
      2. Menemukan saluran Wi-Fi pertama yang tepi atasnya tumpang tindih dengan batas.
      3. Menandai saluran Wi-Fi, setiap saluran yang lebih besar yang memuatnya (misalnya, 40Mhz, 80Mhz), dan setiap saluran yang lebih tinggi dari pita yang sama dengan saluran yang tidak aman.
  4. Jika cellVictimMhz hadir dan saluran sel memiliki downlink.

    1. Melakukan langkah 3 menggunakan cellVictimMhz sebagai ambang batas dan membandingkan dengan downlink sel alih-alih 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 persen 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 dari saluran uplink sel yang mengorbankan saluran Wi-Fi. Ini kemudian mengganti 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 yang tidak aman

Gambar 4. Perhitungan saluran yang tidak aman untuk distorsi harmonik

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

Gambar 5. Perhitungan saluran yang tidak aman untuk distorsi intermodulasi

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

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

Algoritma berperilaku sebagai berikut untuk setiap saluran sel aktif:

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

    1. Menemukan derajat harmonik N untuk 2.4GHz.
    2. Menghitung frekuensi tinggi harmonik dan frekuensi rendah harmonik berdasarkan N dan uplink sel.
    3. Menemukan saluran Wi-Fi 20MHz pertama yang berada dalam batas bawah harmonik yang datang dari bawah.
    4. Menghitung tumpang tindih harmonik melalui saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
    5. Menemukan saluran Wi-Fi 20MHz pertama yang berada dalam batas atas harmonik yang datang dari atas.
    6. Menghitung tumpang tindih harmonik melalui saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
    7. Menandai setiap saluran 20MHz di antaranya sebagai saluran yang tidak aman.
  3. Menemukan saluran 5GHz yang tidak aman dari harmonik jika parameter ditentukan.

    1. Menemukan derajat harmonik N untuk 5GHz. 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 20Mhz yang tidak aman.

      1. Menemukan saluran Wi-Fi 20MHz pertama yang berada dalam batas bawah harmonik yang datang dari bawah.
      2. Menghitung tumpang tindih harmonik melalui saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
      3. Menemukan saluran Wi-Fi 20MHz pertama yang berada dalam batas atas harmonik yang datang dari atas.
      4. Menghitung tumpang tindih harmonik melalui saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang tindih melebihi ambang batas tumpang tindih Wi-Fi 2,4 GHz.
      5. Menandai setiap saluran 20MHz di antaranya sebagai saluran yang tidak aman dengan batas daya yang ditentukan.
    4. Menemukan saluran 40MHz, 80MHz, 160MHz yang tidak aman

      1. Ulangi langkah 3a tetapi dengan 40MHz, 80MHz, 160MHz.
      2. Alih-alih menghitung tumpang tindih saluran pada tepi harmonik, gunakan kembali tumpang tindih yang dihitung dari saluran konstituen yang lebih kecil (misalnya, jika dua saluran 20Mhz membuat saluran 40Mhz dan memiliki 30% dan 90% tumpang tindih, maka rata-rata adalah 60% tumpang tindih untuk saluran 40Mhz).
  4. Menemukan saluran 2.4GHz yang tidak aman dari intermodulasi jika parameter ditentukan.

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

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

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

Hasil akhir

Setelah kedua set saluran tidak aman dari interferensi tetangga dan harmonik dihitung, set terakhir dihitung dengan mengambil gabungan kedua set (dan memilih tutup daya yang lebih rendah jika ada tabrakan), dan menghapus saluran default dari set jika ada 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 rangkaian.
  2. Jika setiap saluran Wi-Fi 5GHz ditandai sebagai saluran tidak aman, hapus saluran Wi-Fi 5GHz default dari rangkaian.
  3. Mengembalikan set terakhir saluran tidak aman.

Format tabel pencarian

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

Algoritme tidak membedakan antara PCELL/PSCELL/SCELL dan memperlakukannya sebagai sama.

Akses Berbantuan Lisensi

License Assisted Access (LAA) diidentifikasi sebagai band #46. Algoritma memperlakukan band ini mirip dengan band lain. Dalam hal ini, saluran 5Ghz penuh dapat diatur sebagai daftar pengganti di tabel pencarian.

Bergantung pada persyaratan operator, algoritme penghindaran saluran menetapkan batasan wajib pada SoftAP dan Wi-Fi Direct (P2P) untuk seluruh pita Wi-Fi 5GHz. Agar algoritme 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 true , algoritme mengembalikan kumpulan saluran tidak aman dengan seluruh pita 5Ghz dan menetapkan tanda pembatasan wajib untuk SoftAP dan Wi-Fi Direct (P2P).

Menginformasikan layanan Wi-Fi

Setelah algoritme saluran coex menghitung saluran yang tidak aman, untuk memberi aplikasi sistem Anda saluran tidak aman dan batasannya, gunakan struktur data @SystemApi berikut yang ditentukan dalam kerangka kerja 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 WifiManager berikut untuk mengaktifkan aplikasi untuk 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

Ketika layanan Wi-Fi menerima informasi tentang kumpulan saluran yang tidak aman, ia melakukan tindakan yang sesuai untuk memastikan bahwa saluran tersebut dihindari. Bagian ini menjelaskan perilaku layanan Wi-Fi dalam skenario yang berbeda.

Menginformasikan pengemudi

Karena driver memiliki peran utama dalam melakukan penghindaran saluran, penting untuk menyampaikan saluran yang tidak aman ke driver dan firmware. Untuk melakukannya, gunakan 1.5::IWifiChip HAL API.

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

SoftAP

SoftAP adalah kasus penggunaan utama untuk penghindaran saluran yang tidak aman. Bagian berikut menguraikan skenario SoftAp utama di mana penghindaran saluran dapat diterapkan dengan ACS. Skenario menggambarkan perilaku algoritme 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 menghapus saluran yang tidak aman dari daftar ACS.
    2. Jika daftar kosong, kerangka kerja akan menghentikan SoftAP.
  2. Jika saluran tidak aman dan tidak ada batasan

    1. Driver/firmware vendor memberikan prioritas pada 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. Kerangka kerja memperbarui daftar ACS dengan menghapus saluran yang tidak aman.
    2. Jika daftar kosong, kerangka kerja menutup SoftAP.
  2. Jika saluran SoftAP tidak aman dan tidak ada batasan

    1. Tidak ada tindakan yang diambil oleh kerangka kerja. Driver vendor/firmware menangani menghindari saluran yang tidak aman atau menerapkan tutup daya jika penghindaran tidak memungkinkan.

Wi-Fi Langsung (P2P)

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

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

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

Sadar Wi-Fi (NAN)

Kerangka kerja 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 menghindari, konfigurasikan overlay config_wifiDefaultCoexAlgorithmEnabled . Jika overlay disetel ke false, algoritme default dinonaktifkan. Anda kemudian dapat menggunakan algoritme kepemilikan out-of-band Anda sendiri untuk menghasilkan daftar saluran yang tidak aman untuk dimasukkan ke 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 Anda, gunakan pengujian berikut.

tes CTS

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

tes ACTS

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

tes VTS

  • wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)