Penghindaran saluran Wi-Fi/seluler

Fitur pencegahan saluran koeksistensi Wi-Fi/seluler, yang diperkenalkan di Android 12, mengidentifikasi dan menghindari penggunaan saluran Wi-Fi yang tidak aman jika 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-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 API HAL yang terkait dengan fitur penghindaran saluran
  • Perilaku framework untuk menangani penghindaran channel
  • Perilaku vendor chip untuk menangani penghindaran channel
  • Detail penerapan 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. Hal ini terjadi saat saluran seluler dan Wi-Fi berada dalam pemisahan frekuensi pendek (saluran yang berdekatan) atau saat terjadi interferensi harmonik dan intermodulasi.

Jenis interferensi ini menjadi masalah saat satu antena memancarkan dan antena lain menerima pada waktu yang sama. Dalam hal ini, antena pemancar membanjiri antena penerima, sehingga memengaruhi kualitas penerimaannya.

Dokumen ini menyebut pemancar yang mengganggu sebagai agresor dan penerima yang mengalami gangguan sebagai korban. Saluran Wi-Fi yang menjadi pelaku atau korban disebut sebagai saluran tidak aman.

Fitur penghindaran saluran koeksistensi 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 channel dengan mengontrol channel Wi-Fi. Skema penghindaran saluran Wi-Fi dapat dijelaskan sebagai serangkaian empat langkah abstrak:

  1. Modem melaporkan perubahan frekuensi seluler
  2. Algoritma pencegahan interferensi menghitung channel Wi-Fi yang tidak aman
  3. Algoritma penghindaran koeksistensi menginformasikan layanan Wi-Fi
  4. Framework atau driver melakukan tindakan Wi-Fi yang sesuai

Skema penghindaran channel

Gambar 1. Skema penghindaran channel

Melaporkan perubahan frekuensi seluler

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

Mulai 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 berbeda: berdekatan dan harmonik/intermodulasi. Karena perbedaan fisik antena dan tata letak antarperangkat, pola interferensi tetangga dan harmonik/intermodulasi untuk setiap perangkat berbeda. Untuk mempertimbangkannya, produsen perangkat harus menyediakan tabel lookup untuk memasukkan parameter ke dalam formula generik untuk dua jenis interferensi. Parameter ini ditentukan per band sel dan dirujuk oleh band saluran sel aktif.

Batas daya maksimum dapat ditentukan dalam tabel penelusuran. Jika batas daya maksimum ditentukan, channel yang tidak aman akan mentransmisikan dengan batas daya yang diberikan. Jika tidak ada batas daya, channel akan mentransmisikan 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 harus menghindari saluran yang tidak aman untuk band seluler tertentu. Dalam kasus tersebut, pembatasan wajib ditampilkan sebagai bitmask yang berisi nilai untuk menentukan apakah akan melarang channel tertentu seperti Wi-Fi Direct (P2P), SoftAp, dan Wi-Fi Aware (NAN). Meskipun saluran tidak aman berfungsi sebagai rekomendasi untuk tidak menggunakan saluran tersebut untuk semua kasus penggunaan, pembatasan wajib menandai kasus penggunaan tertentu untuk dihindari.

Jika setiap saluran band 2,4 GHz atau 5 GHz ditandai tidak aman, tabel lookup dapat menentukan saluran 2,4 GHz default atau saluran 5 GHz default per band sel yang mengganggu sebagai pilihan teraman. Saluran default ini tidak dilaporkan sebagai saluran tidak aman saat bagian spektrum lainnya dilaporkan tidak aman.

Daftar penggantian

Pendekatan formula terbatas dalam kasus ketika interferensi sangat bergantung pada bandwidth (sehingga channel dengan bandwidth yang lebih besar mungkin tidak aman, tetapi tidak demikian dengan channel dengan bandwidth yang lebih kecil). Dalam kasus seperti LAA, sebaiknya lewati perhitungan dan gunakan daftar saluran tidak aman yang ditentukan.

Untuk melakukannya, Anda dapat menentukan daftar penggantian saluran tidak aman dalam tabel lookup 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 tertentu.

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 (channel 20 MHz 5 GHz)
  • 40mhz (saluran 5 GHz 40 MHz)
  • 80mhz (channel 80 MHz 5 GHz)
  • 160mhz (saluran 5 GHz 160 MHz)

Interferensi saluran tetangga

Untuk menentukan interferensi saluran tetangga, algoritma penghindaran koeksistensi memastikan jarak ΔF antara saluran agresor dan korban tidak berada di bawah nilai minimum yang ditentukan.

Interferensi saluran

Gambar 2. Jarak antara channel pelaku dan korban

Nilai minimum ditentukan oleh konfigurasi fisik perangkat dan nilai minimum yang diberikan dalam entri tabel pemetaan per band 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: Nilai minimum jarak MHz untuk korban Wi-Fi (uplink seluler)
  • cellVictimMhz: Nilai minimum jarak MHz untuk korban sel (downlink sel)

Algoritma berperilaku sebagai berikut untuk setiap saluran sel aktif:

  1. Untuk band saluran, mencoba menemukan entri tabel lookup. Jika tidak ada entri tabel yang ditemukan, akan menampilkan tidak ada channel tidak aman untuk channel sel tersebut.
  2. Berdasarkan band seluler, mengidentifikasi band Wi-Fi mana yang berisiko dan dari sisi band mana interferensi berasal (misalnya, saluran 2,4 GHz bawah, saluran 2,4 GHz atas, saluran 5 GHz bawah).
  3. Jika wifiVictimMhz ada 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 20 MHz pertama yang tepi bawahnya tumpang-tindih dengan batas.
      3. Menandai saluran Wi-Fi, setiap saluran bandwidth yang lebih besar yang memuatnya (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 tidak aman dengan mengurangi wifiVictimMhz ke frekuensi terendah uplink sel.
      2. Menemukan saluran Wi-Fi pertama yang batas 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 channel 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 saluran tidak aman yang dihitung.

Penghitungan channel tidak aman

Gambar 3. Perhitungan channel tidak aman untuk interferensi channel tetangga

Distorsi harmonik atau intermodulasi

Untuk distorsi harmonik atau intermodulasi, mesin coex menghitung rentang sinyal harmonik atau intermodulasi dan mengevaluasi persentase tumpang-tindihnya dengan saluran korban potensial. Jika tumpang-tindih melebihi nilai minimum tumpang-tindih, algoritma menganggap situasi ini tidak aman. Penghitungan persentase tumpang-tindih harmonik atau distorsi intermodulasi pada saluran yang terpengaruh dilakukan dengan persamaan berikut:

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

Dalam kasus distorsi harmonik, algoritma mempertimbangkan distorsi harmonik saluran uplink sel yang merugikan saluran Wi-Fi. Kemudian, algoritma ini 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 penghitungan saluran yang tidak aman

Gambar 4. Perhitungan saluran tidak aman untuk distorsi harmonik

Dalam kasus intermodulasi, algoritma mempertimbangkan distorsi intermodulasi uplink seluler dan saluran Wi-Fi yang merugikan saluran downlink seluler. 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 penghitungan saluran yang tidak aman

Gambar 5. Penghitungan saluran tidak aman untuk distorsi intermodulasi

Anda dapat menentukan nilai $ M $, $ N $, dan tumpang-tindih dalam tabel penelusuran per band sel yang mengganggu. Jika tidak ada interferensi untuk suatu band, nilai akan dihilangkan dari tabel untuk entri band tersebut. Dua set nilai ini untuk band 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 band sel yang mengganggu.

Algoritma berperilaku sebagai berikut untuk setiap saluran sel aktif:

  1. Untuk band saluran sel, ia mencoba menemukan entri tabel lookup. Jika tidak ada entri tabel yang ditemukan, akan menampilkan tanpa channel tidak aman untuk channel 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 berasal dari bawah.
    4. Menghitung tumpang-tindih harmonik pada saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi nilai minimum 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 pada saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi nilai minimum 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 harmonik N untuk 5 GHz. Jika N adalah 0, lanjutkan 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 pada saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi batas 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 pada saluran Wi-Fi dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi 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. Mengulangi langkah 3a, tetapi dengan 40 MHz, 80 MHz, 160 MHz.
      2. Daripada menghitung tumpang-tindih saluran di tepi harmonik, menggunakan kembali tumpang-tindih yang dihitung dari saluran konstituen yang lebih kecil (misalnya, jika dua saluran 20 MHz membentuk saluran 40 MHz dan memiliki tumpang-tindih 30% dan 90%, maka rata-rata tumpang-tindih untuk saluran 40 MHz adalah 60%).
  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 N, M, uplink seluler, dan saluran Wi-Fi.
      2. Menghitung tumpang-tindih intermodulasi melalui downlink sel dan menandai saluran sebagai tidak aman jika tumpang-tindih melebihi batas 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 saluran tidak aman yang dihitung.

Hasil akhir

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

Format tabel pemetaan

Tabel lookup ditampilkan dalam file XML yang berada di string konfigurasi yang dapat di-overlay 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 adalah contoh tabel penelusuran 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 penggabungan operator (CA), rentang harmonik atau intermodulasi untuk setiap uplink atau downlink mungkin tidak menghasilkan tumpang-tindih yang cukup untuk menyebabkan interferensi secara independen, tetapi mungkin menghasilkan tumpang-tindih yang cukup jika digabungkan. Algoritma mempertimbangkan setiap rentang harmonik atau intermodulasi secara terpisah dan mengambil gabungan saluran tidak aman yang ditampilkan. Untuk kasus intermodulasi, hal ini berarti menilai rentang intermodulasi setiap UL ke setiap DL.

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

Akses yang Dibantu Lisensi

License Assisted Access (LAA) diidentifikasi sebagai band #46. Algoritma memperlakukan rentang ini serupa dengan rentang lainnya. Dalam hal ini, saluran 5 Ghz penuh dapat ditetapkan sebagai daftar penggantian di tabel lookup.

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 channel seluler berada di LAA dan restrict_5g_softap_wifi_direct_for_laa adalah true, algoritma akan menampilkan kumpulan channel tidak aman dengan seluruh band 5 GHz dan menetapkan flag pembatasan wajib untuk SoftAP dan Wi-Fi Direct (P2P).

Menginformasikan layanan Wi-Fi

Setelah algoritma saluran coex menghitung saluran yang tidak aman, untuk menyediakan saluran yang tidak aman dan pembatasannya ke 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 @SystemApi WifiManager berikut untuk memungkinkan aplikasi mendapatkan nilai yang diperbarui saat 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

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 pengemudi memiliki peran penting dalam melakukan penghindaran saluran, penting untuk menyampaikan saluran yang tidak aman kepada pengemudi 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);

SoftAP

SoftAP adalah kasus penggunaan utama untuk penghindaran saluran 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.

Mulai SoftAP dengan ACS diaktifkan (SoftAP belum aktif)

  1. Jika channel tidak aman dan ada batasan SoftAP

    1. Framework ini menghapus channel 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 channel yang tidak aman diperbarui

  1. Jika channel SoftAP tidak aman dan ada batasan SoftAP

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

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

Wi-Fi Direct (P2P)

  1. Jika ada channel 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 tidak aman tanpa batasan.

    1. Driver atau firmware vendor menerapkan batas daya jika saluran tidak aman tanpa batasan 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 channel tidak aman Anda sendiri untuk dihindari, konfigurasikan overlay config_wifiDefaultCoexAlgorithmEnabled. Jika overlay disetel ke salah (false), algoritma default akan dinonaktifkan. Kemudian, Anda dapat menggunakan algoritma eksklusif di luar band milik Anda sendiri untuk membuat daftar channel tidak aman yang akan disalurkan ke framework menggunakan API sistem berikut.

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

Memvalidasi penerapan

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

Pengujian CTS

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

Tes 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 diimplementasikan: wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)