اجتناب از کانال Wi-Fi/Cellular Coex

ویژگی اجتناب از کانال Wi-Fi/Coex سلولی، که در Android 12 معرفی شده است، کانال‌های Wi-Fi ناامن را در مواردی که ممکن است تداخل از/به کانال‌های سلولی وجود داشته باشد، شناسایی کرده و از آن‌ها اجتناب می‌کند. این شامل رابط هایی مانند STA، SoftAp، Wi-Fi Direct (P2P)، Wi-Fi Aware (NAN) می شود.

این صفحه در مورد موارد زیر بحث می کند:

  • اطلاعاتی که مودم سلولی باید به چارچوب اندروید گزارش دهد
  • الگوریتم‌هایی که چارچوب Wi-Fi برای محاسبه کانال‌های Wi-Fi استفاده می‌کند تا از آنها اجتناب شود
  • جداول پیکربندی که سازندگان دستگاه باید برای چارچوب Wi-Fi ارائه کنند
  • API های سیستم، پیکربندی ها و API های HAL مربوط به ویژگی اجتناب از کانال
  • رفتار چارچوب برای مدیریت اجتناب از کانال
  • رفتار فروشنده تراشه برای مدیریت اجتناب از کانال
  • جزئیات پیاده سازی برای اجتناب از کانال
  • تست هایی برای اعتبارسنجی رفتار اجتنابی کانال

زمینه

برای دستگاه‌های دارای فناوری‌های سلولی مانند LTE، 5G NR، و مجوز دسترسی به کمک (LAA)، کانال‌های سلولی در حال استفاده می‌توانند با کانال Wi-Fi در حال استفاده تداخل ایجاد کنند. این زمانی اتفاق می‌افتد که کانال‌های سلولی و وای‌فای در فاصله فرکانس کوتاه (کانال‌های همسایه) قرار دارند یا زمانی که تداخل هارمونیک و مدولاسیون وجود دارد.

این نوع تداخل زمانی مشکل ساز می شود که یک آنتن همزمان در حال ارسال و دیگری در حال دریافت باشد. در این حالت، آنتن فرستنده آنتن گیرنده را سیل می کند و کیفیت دریافت آن را تحت تأثیر قرار می دهد.

این سند به فرستنده مداخله گر به عنوان متجاوز و گیرنده ای که تداخل را به عنوان قربانی تجربه می کند، اشاره می کند. کانال وای فای که یا متجاوز یا قربانی است به عنوان کانال ناامن نامیده می شود.

ویژگی اجتناب از کانال Wi-Fi/coex سلولی یک رویکرد ثابت برای اجتناب از کانال ارائه می‌کند که نیاز به کد اختصاصی را که از چارچوب Wi-Fi متفاوت است، کاهش می‌دهد. علاوه بر این، این ویژگی به سازندگان دستگاه اجازه می دهد تا این ویژگی را پیکربندی، فعال و غیرفعال کنند و آن را لغو کنند.

این ویژگی با کنترل کانال های Wi-Fi، اجتناب از کانال را انجام می دهد. طرح اجتناب از کانال Wi-Fi را می توان به عنوان یک سری از چهار مرحله انتزاعی توصیف کرد:

  1. مودم تغییر فرکانس سلولی را گزارش می دهد
  2. الگوریتم اجتنابی Coex کانال های Wi-Fi ناامن را محاسبه می کند
  3. الگوریتم اجتنابی Coex به سرویس Wi-Fi اطلاع می دهد
  4. چارچوب یا درایور اقدام مناسب Wi-Fi را انجام می دهد

طرح اجتناب از کانال

شکل 1. طرح اجتناب از کانال

گزارش تغییر در فرکانس سلولی

خدمات تلفنی کانال های تلفن همراه در حال استفاده را گزارش می دهد. هنگامی که فرکانس سلولی عامل تغییر می کند، مودم این اطلاعات را از طریق IRadio::PhysicalChannelConfig به سرویس تلفن گزارش می دهد. این اطلاعات شامل نشانه‌هایی برای دسترسی با مجوز (LAA) و تجمع شرکت مخابراتی (CA) است.

از Android 12، فیلدهای زیر در 1.6 IRadio::PhysicalChannelConfig اطلاعات مورد نیاز را برای فرمول‌های coex که مودم باید پر کند ارائه می‌کند.

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

محاسبه کانال های Wi-Fi ناامن

هنگامی که مودم تغییر در فرکانس سلولی را گزارش می‌کند، الگوریتم کانال coex تداخل بین کانال‌های سلولی و Wi-Fi را محاسبه می‌کند و تعیین می‌کند که کدام مجموعه از کانال‌های Wi-Fi ناامن هستند.

انواع مختلفی از تداخل وجود دارد که به فرمول های مختلف نیاز دارند: همسایگی و هارمونیک/مدولاسیون . با توجه به تفاوت های فیزیکی در آنتن و چیدمان بین دستگاه ها، الگوهای تداخل همسایه و هارمونیک/مدولاسیون برای هر دستگاه متفاوت است. برای توضیح این موضوع، سازندگان دستگاه‌ها باید یک جدول جستجو برای اتصال پارامترها به فرمول‌های عمومی برای دو نوع تداخل ارائه کنند. این پارامترها در هر باند سلولی تعریف می شوند و توسط باندهای کانال های سلول فعال ارجاع می شوند.

حداکثر توان را می توان در جدول جستجو تعریف کرد. اگر سقف توان حداکثر تعریف شده باشد، یک کانال ناامن با درپوش برق ارائه شده ارسال می شود. اگر درپوش برق وجود نداشته باشد، کانال با قدرت کامل ارسال می کند.

به طور کلی، ویژگی اجتناب از کانال از بهترین روش برای جلوگیری از کانال های Wi-Fi ناامن برای بهینه سازی عملکرد استفاده می کند. اما در موارد خاص (مثلاً به دلیل الزامات حامل)، برای رابط‌های خاص اجباری است که از کانال‌های ناامن برای باندهای سلولی خاص اجتناب کنند. در چنین مواردی، محدودیت‌های اجباری به‌عنوان یک بیت ماسک حاوی مقادیری برای ممنوعیت کانال‌های خاصی مانند Wi-Fi Direct (P2P)، SoftAp و Wi-Fi Aware (NAN) نشان داده می‌شوند. در حالی که یک کانال ناایمن به عنوان یک توصیه در برابر استفاده از آن کانال برای همه موارد استفاده عمل می کند، محدودیت های اجباری موارد استفاده خاص را برای اجتناب اجباری مشخص می کنند.

اگر هر کانال از باند 2.4 گیگاهرتز یا 5 گیگاهرتز ناامن علامت‌گذاری شود، جدول جستجو می‌تواند یک کانال پیش‌فرض 2.4 گیگاهرتز یا یک کانال پیش‌فرض 5 گیگاهرتز در هر باند سلولی تداخلی را به عنوان امن‌ترین انتخاب تعریف کند. این کانال‌های پیش‌فرض به‌عنوان کانال‌های ناامن گزارش نمی‌شوند، وقتی بقیه باند ناامن گزارش شود.

لغو فهرست

یک رویکرد فرمولی در مواردی که تداخل به شدت به پهنای باند وابسته است محدود است (و بنابراین کانال‌هایی با پهنای باند بزرگ‌تر ممکن است ناامن باشند اما کانال‌هایی با پهنای باند کوچک‌تر نیستند). در مواردی مانند LAA، نادیده گرفتن محاسبات و استفاده از فهرست مشخصی از کانال‌های ناامن مفید است.

برای انجام این کار، می‌توانید فهرستی از کانال‌های ناامن را در جدول جستجو برای ورودی‌های خاص تعیین کنید. فهرست لغو در ورودی جدول نشان می‌دهد که محاسبه برای آن کانال سلول خاص نادیده گرفته شده است و کانال‌های Wi-Fi ناامن برای کانال سلولی منطبق توسط فهرست لغو مشخص شده‌اند.

برای موارد حساس به پهنای باند، می‌توانید با تعیین کانال‌های خاص با پهنای باند خاص در فهرست لغو، از پهنای باند خاصی اجتناب کنید. این به این دلیل است که هر شماره کانال Wi-Fi با پهنای باند مشخصی مطابقت دارد.

فهرست لغو با لیستی از شماره کانال یا کلمات کلیدی دسته بندی از پیش تعریف شده برای هر باند Wi-Fi نشان داده می شود:

دسته های 2 گرمی:

  • all (کل باند 2.4 گیگاهرتز)

دسته های 5 گرمی:

  • all (کل باند 5 گیگاهرتز)
  • 20mhz (5 گیگاهرتز کانال 20 مگاهرتز)
  • 40mhz (5 گیگاهرتز کانال 40 مگاهرتز)
  • 80mhz (5 گیگاهرتز کانال 80 مگاهرتز)
  • 160mhz (5 گیگاهرتز کانال 160 مگاهرتز)

تداخل کانال همسایه

برای تعیین تداخل کانال همسایه، الگوریتم اجتناب از coex اطمینان حاصل می کند که فاصله ΔF بین یک کانال متجاوز و قربانی زیر یک آستانه مشخص نمی رود.

تداخل کانال

شکل 2. فاصله بین کانال متجاوز و قربانی

آستانه توسط پیکربندی فیزیکی دستگاه و مقدار آستانه ارائه شده در ورودی جدول جستجو در هر باند تداخلی تعیین می شود. باندهایی که بدون تداخل در نظر گرفته می شوند، ورودی جدول ندارند و کانال های ناامن نیازی به محاسبه ندارند (اکثر مواقع این است).

پارامترهای تداخل همسایه

  • wifiVictimMhz : آستانه فاصله مگاهرتز برای قربانی Wi-Fi (پیوند بالا سلولی)
  • cellVictimMhz : آستانه فاصله مگاهرتز برای قربانی سلول (لینک پایین سلول)

الگوریتم برای هر کانال سلول فعال به صورت زیر عمل می کند:

  1. برای باند کانال، سعی می کند یک ورودی جدول جستجو پیدا کند. اگر هیچ ورودی جدولی پیدا نشد، بدون هیچ کانال ناامنی برای آن کانال سلولی برمی گردد.
  2. بر اساس باند سلولی، مشخص می کند که کدام باند Wi-Fi در معرض خطر است و تداخل از کدام سمت باند ایجاد می شود (به عنوان مثال، کانال های 2.4 گیگاهرتز پایین، کانال های 2.4 گیگاهرتز بالاتر، کانال های 5 گیگاهرتز پایین تر).
  3. اگر wifiVictimMhz وجود داشته باشد و کانال سلول دارای uplink و

    1. اگر قسمت پایین باند Wi-Fi در معرض خطر باشد

      1. با افزودن wifiVictimMhz به بالاترین فرکانس پیوند سلولی، حد بالای کانال‌های ناامن را پیدا می‌کند.
      2. اولین کانال Wi-Fi 20 مگاهرتزی را پیدا می کند که لبه پایینی آن با محدودیت همپوشانی دارد.
      3. کانال Wi-Fi، هر کانال پهنای باند بزرگتری را که حاوی آن است (مثلاً 40 مگاهرتز، 80 مگاهرتز) و هر کانال پایین تر از همان باند را به عنوان کانال ناامن علامت گذاری می کند.
    2. اگر قسمت بالایی باند Wi-Fi در معرض خطر باشد

      1. با کم کردن wifiVictimMhz به پایین‌ترین فرکانس پیوند بالا، حد پایین کانال‌های ناامن را پیدا می‌کند.
      2. اولین کانال Wi-Fi را پیدا می کند که لبه بالایی آن با محدودیت همپوشانی دارد.
      3. کانال Wi-Fi، هر کانال بزرگتری که حاوی آن است (مثلاً 40 مگاهرتز، 80 مگاهرتز) و هر کانال بالاتر از همان باند را به عنوان کانال ناامن علامت گذاری می کند.
  4. اگر cellVictimMhz وجود داشته باشد و کانال سلول دارای downlink باشد.

    1. مرحله 3 را با استفاده از cellVictimMhz به‌عنوان آستانه انجام می‌دهد و به‌جای پیوند بالا سلولی، با پیوند پایین سلولی مقایسه می‌کند.
  5. درپوش برق ورودی جدول را روی کانال های ناامن محاسبه شده اعمال می کند.

محاسبه کانال ناامن

شکل 3. محاسبه کانال ناامن برای تداخل کانال همسایه

اعوجاج هارمونیک/بین مدولاسیون

برای اعوجاج هارمونیک/بین مدولاسیون، موتور coex محدوده سیگنال هارمونیک/مدولاسیون را محاسبه می کند و درصد همپوشانی آن را با کانال قربانی احتمالی ارزیابی می کند. اگر همپوشانی از آستانه همپوشانی فراتر رود، الگوریتم این وضعیت را ناامن در نظر می گیرد. محاسبه درصد همپوشانی اعوجاج هارمونیک / بین مدولاسیون در کانال قربانی با معادله زیر انجام می شود:

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

در مورد اعوجاج هارمونیک، الگوریتم اعوجاج هارمونیک یک کانال آپلینک سلولی قربانی کانال های Wi-Fi را در نظر می گیرد. سپس اعوجاج زیاد و اعوجاج کم را با مقادیر هارمونیک بر اساس فرکانس‌های پیوند بالا سلولی و درجه هارمونیک $ N $ جایگزین می‌کند.

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

اعوجاج هارمونیک محاسبه کانال ناایمن

شکل 4. محاسبه کانال ناامن برای اعوجاج هارمونیک

در مورد intermodulation، الگوریتم اعوجاج intermodulation مربوط به uplink سلول و کانال Wi-Fi قربانی کانال downlink سلول را در نظر می گیرد. سپس مقادیر اعوجاج زیاد و اعوجاج کم را با مقادیر intermodulation بر اساس فرکانس‌های uplink سلول، فرکانس‌های Wi-Fi و دو ضریب intermodulation $ M $، $ N $ جایگزین می‌کند.

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

اعوجاج درون مدولاسیون محاسبه کانال ناایمن

شکل 5. محاسبه کانال ناایمن برای اعوجاج بین مدولاسیون

شما می توانید $ M $، $ N $ و مقادیر همپوشانی را در جدول جستجو برای هر باند سلول تداخلی مشخص کنید. اگر تداخلی برای یک باند وجود نداشته باشد، مقادیر از جدول مربوط به ورودی باند حذف می شوند. دو مجموعه از این مقادیر برای باندهای Wi-Fi 2.4 گیگاهرتز و 5 گیگاهرتز را می توان به طور مستقل تعریف کرد.

مشابه الگوریتم تداخل همسایه، الگوریتم از همان مقدار سرپوش قدرت تعریف شده در هر باند سلول تداخلی مجددا استفاده می کند.

الگوریتم برای هر کانال سلول فعال به صورت زیر عمل می کند:

  1. برای باند کانال سلولی، سعی می کند یک ورودی جدول جستجو پیدا کند. اگر هیچ ورودی جدولی پیدا نشد، بدون هیچ کانال ناامنی برای این کانال برمی گردد.
  2. اگر پارامترها تعریف شده باشند، کانال های ناامن 2.4 گیگاهرتز را از هارمونیک ها پیدا می کند.

    1. درجه هارمونیک N را برای 2.4 گیگاهرتز پیدا می کند.
    2. فرکانس بالا هارمونیک و فرکانس پایین هارمونیک را بر اساس N و پیوند سلولی محاسبه می کند.
    3. اولین کانال Wi-Fi 20 مگاهرتزی را که در محدوده پایین هارمونیک از زیر قرار دارد، پیدا می کند.
    4. همپوشانی هارمونیک روی کانال Wi-Fi را محاسبه می کند و اگر همپوشانی از آستانه همپوشانی Wi-Fi 2.4 گیگاهرتز بیشتر شود، کانال را به عنوان ناامن علامت گذاری می کند.
    5. اولین کانال Wi-Fi 20 مگاهرتزی را که در محدوده بالایی هارمونیک از بالا قرار دارد، پیدا می کند.
    6. همپوشانی هارمونیک روی کانال Wi-Fi را محاسبه می کند و اگر همپوشانی از آستانه همپوشانی Wi-Fi 2.4 گیگاهرتز بیشتر شود، کانال را به عنوان ناامن علامت گذاری می کند.
    7. هر کانال 20 مگاهرتز را به عنوان کانال ناامن علامت گذاری می کند.
  3. اگر پارامترها تعریف شده باشند، کانال های ناامن 5 گیگاهرتز را از هارمونیک ها پیدا می کند.

    1. درجه هارمونیک N را برای 5 گیگاهرتز پیدا می کند. اگر N 0 باشد، به مرحله 5 بروید.
    2. فرکانس بالا هارمونیک و فرکانس پایین هارمونیک را بر اساس N و پیوند سلولی محاسبه می کند.
    3. کانال های ناامن 20 مگاهرتز را پیدا می کند.

      1. اولین کانال Wi-Fi 20 مگاهرتزی را که در محدوده پایین هارمونیک از زیر قرار دارد، پیدا می کند.
      2. همپوشانی هارمونیک روی کانال Wi-Fi را محاسبه می کند و اگر همپوشانی از آستانه همپوشانی Wi-Fi 2.4 گیگاهرتز بیشتر شود، کانال را به عنوان ناامن علامت گذاری می کند.
      3. اولین کانال Wi-Fi 20 مگاهرتزی را که در محدوده بالایی هارمونیک از بالا قرار دارد، پیدا می کند.
      4. همپوشانی هارمونیک روی کانال Wi-Fi را محاسبه می کند و اگر همپوشانی از آستانه همپوشانی Wi-Fi 2.4 گیگاهرتز بیشتر شود، کانال را به عنوان ناامن علامت گذاری می کند.
      5. هر کانال 20 مگاهرتز را به عنوان یک کانال ناامن با درپوش توان مشخص شده علامت گذاری می کند.
    4. کانال های ناامن 40 مگاهرتز، 80 مگاهرتز، 160 مگاهرتز را پیدا می کند

      1. مرحله 3a را تکرار می کند اما با 40 مگاهرتز، 80 مگاهرتز، 160 مگاهرتز.
      2. به جای محاسبه همپوشانی کانال ها در لبه هارمونیک، از همپوشانی های محاسبه شده از کانال های تشکیل دهنده کوچکتر استفاده مجدد می کند (به عنوان مثال، اگر دو کانال 20 مگاهرتزی یک کانال 40 مگاهرتزی ایجاد کنند و 30٪ و 90٪ همپوشانی داشته باشند، میانگین 60 است. درصد همپوشانی برای کانال 40 مگاهرتز).
  4. اگر پارامترها تعریف شده باشند، کانال های ناامن 2.4 گیگاهرتز را از intermodulation پیدا می کند.

    1. ضرایب intermodulation N, M را برای 2.4 گیگاهرتز پیدا می کند.
    2. برای هر کانال Wi-Fi 2.4 گیگاهرتز:

      1. فرکانس پایین intermodulation و فرکانس بالا intermodulation را بر اساس N، M، اتصال سلولی و کانال Wi-Fi محاسبه می‌کند.
      2. همپوشانی intermodulation را بر روی پیوند سلولی محاسبه می‌کند و اگر همپوشانی از آستانه همپوشانی سلولی 2.4 گیگاهرتز بیشتر شود، کانال را ناامن علامت‌گذاری می‌کند.
  5. اگر پارامترها تعریف شده باشند، کانال های ناامن 5 گیگاهرتز را از intermodulation پیدا می کند.

    1. مرحله 4 را با استفاده از کانال های Wi-Fi 5 گیگاهرتزی و آستانه همپوشانی سلولی 5 گیگاهرتز تکرار می کند.
  6. درپوش برق ورودی جدول را روی کانال های ناامن محاسبه شده اعمال می کند.

نتیجه نهایی

پس از محاسبه هر دو مجموعه کانال ناامن از تداخل همسایه و هارمونیک، مجموعه نهایی با گرفتن اتحاد هر دو مجموعه (و انتخاب سرپوش توان پایین در صورت وجود برخورد) و حذف کانال های پیش فرض از مجموعه در صورت وجود، محاسبه می شود. هیچ محدودیت اجباری اعمال نمی شود

الگوریتم به صورت زیر عمل می کند:

  1. اگر هر کانال Wi-Fi 2.4 گیگاهرتزی به عنوان یک کانال ناامن علامت گذاری شده باشد، کانال Wi-Fi پیش فرض 2.4 گیگاهرتز را از مجموعه حذف می کند.
  2. اگر هر کانال Wi-Fi 5 گیگاهرتزی به عنوان یک کانال ناامن علامت گذاری شده باشد، کانال Wi-Fi پیش فرض 5 گیگاهرتز را از مجموعه حذف می کند.
  3. مجموعه نهایی کانال های ناامن را برمی گرداند.

فرمت جدول جستجو

جداول جستجو در یک فایل XML نشان داده شده است که در رشته پیکربندی قابل پوشش config_wifiCoexTableFilepath قرار دارد و با XSD زیر تعریف می‌شود.


<?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>

مثال جدول XML

در زیر نمونه ای از جدول جستجوی 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>

تجمع حامل

برای تجمع حامل (CA)، محدوده هارمونیک/مدولاسیون برای هر پیوند بالا/پایین ممکن است همپوشانی کافی برای ایجاد تداخل به طور مستقل ایجاد نکند، اما ممکن است در صورت ترکیب، همپوشانی کافی ایجاد کند. الگوریتم هر محدوده هارمونیک/مدولاسیون را به طور مستقل در نظر می گیرد و اتحادیه کانال های ناامن برگشتی را می گیرد. برای مورد intermodulation، این به معنای ارزیابی محدوده intermodulation هر UL بر روی هر DL است.

الگوریتم هیچ تمایزی بین PCELL/PSCELL/SCELL قائل نمی‌شود و آنها را برابر می‌داند.

دسترسی به کمک مجوز

دسترسی به کمک مجوز (LAA) به عنوان باند #46 شناسایی می شود. الگوریتم این باند را مشابه باندهای دیگر رفتار می کند. در این حالت، کانال‌های 5 گیگاهرتزی کامل را می‌توان به‌عنوان فهرست جایگزین در جدول جستجو تنظیم کرد.

بسته به الزامات شرکت مخابراتی، الگوریتم اجتناب از کانال محدودیت‌های اجباری را روی SoftAP و Wi-Fi Direct (P2P) برای کل باند Wi-Fi 5 گیگاهرتز تعیین می‌کند. برای اینکه الگوریتم بتواند این مورد استفاده را مدیریت کند، مقدار پیکربندی حامل restrict_5g_softap_wifi_direct_for_laa باید تعریف شود. اگر کانال سلولی روی LAA باشد و restrict_5g_softap_wifi_direct_for_laa true باشد، الگوریتم مجموعه کانال‌های ناامن را با کل باند 5 گیگاهرتز برمی‌گرداند و پرچم‌های محدودیت اجباری را برای SoftAP و Wi-Fi Direct (P2P) تنظیم می‌کند.

اطلاع رسانی سرویس وای فای

پس از اینکه الگوریتم کانال coex کانال های ناامن را محاسبه کرد، برای ارائه کانال های ناامن و محدودیت های آنها به برنامه های سیستم خود، از ساختار داده @SystemApi که در چارچوب اندروید تعریف شده است استفاده کنید.

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

از روش‌های زیر WifiManager @SystemApi و پاسخ به تماس برای فعال کردن برنامه‌ها برای دریافت مقادیر به‌روز در هنگام تغییر کانال‌های ناامن استفاده کنید.

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

انجام عمل Wi-Fi

هنگامی که سرویس Wi-Fi اطلاعاتی درباره مجموعه کانال‌های ناامن دریافت می‌کند، اقدام مناسب را برای اطمینان از اجتناب از آن کانال‌ها انجام می‌دهد. این بخش رفتار سرویس Wi-Fi را در سناریوهای مختلف توضیح می دهد.

اطلاع دادن به راننده

از آنجایی که درایور نقش مهمی در جلوگیری از کانال دارد، انتقال کانال های ناامن به درایور و سیستم عامل ضروری است. برای این کار از IWifiChip HAL API زیر استفاده کنید.

برای ایدل:

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

برای HIDL (1.5 یا بالاتر):

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

SoftAP

SoftAP مورد استفاده اصلی برای اجتناب از کانال ناامن است. بخش زیر سناریوهای کلیدی SoftAp را نشان می دهد که در آن اجتناب از کانال می تواند با ACS اعمال شود. سناریوها رفتار الگوریتم اجتناب از کانال و درایور یا سفت‌افزار را توصیف می‌کنند.

راه اندازی SoftAP با فعال کردن ACS (هنوز هیچ نرم افزاری آماده نشده است)

  1. اگر کانال ها ناامن هستند و محدودیت SoftAP وجود دارد

    1. این چارچوب کانال های ناامن را از لیست ACS حذف می کند.
    2. اگر لیست خالی باشد، چارچوب SoftAP را متوقف می کند.
  2. اگر کانال ها ناامن هستند و محدودیتی وجود ندارد

    1. درایور/سیستم‌افزار فروشنده به کانال‌های ایمن بر کانال‌های ناامن اولویت می‌دهد.

SoftAP با ACS فعال است و کانال های ناامن به روز می شوند

  1. اگر کانال SoftAP ناامن است و محدودیت SoftAP وجود دارد

    1. این چارچوب با حذف کانال‌های ناامن، فهرست ACS را به‌روزرسانی می‌کند.
    2. اگر لیست خالی باشد، فریم ورک SoftAP را می بندد.
  2. اگر کانال SoftAP ناامن است و محدودیتی وجود ندارد

    1. هیچ اقدامی توسط چارچوب انجام نمی شود. درایور/سیستم‌افزار فروشنده از کانال‌های ناامن اجتناب می‌کند یا در صورت عدم امکان اجتناب از سرپوش برق استفاده می‌کند.

Wi-Fi Direct (P2P)

  1. اگر کانال‌های ناامنی با محدودیت‌های Wi-Fi Direct (P2P) وجود دارد.

    1. فریم ورک از wpa_supplicant درخواست می کند تا از کانال های ناامن با استفاده از روش HAL ISupplicantP2pIface::setDisallowedFrequencies() جلوگیری کند.
  2. اگر کانال های ناامن و بدون محدودیت وجود دارد.

    1. اگر از کانال ناامن بدون محدودیت Wi-Fi Direct (P2P) استفاده شود، درایور/سیستم‌افزار فروشنده، درپوش برق را اعمال می‌کند.

Wi-Fi Aware (NAN)

چارچوب در انتخاب کانال برای Wi-Fi Aware (NAN) دخالتی ندارد و هیچ اقدام چارچوبی انجام نمی‌شود. درایور/سیرم افزار فروشنده مسئول اجتناب از کانال Wi-Fi Aware (NAN) است.

غیرفعال کردن الگوریتم

اگر می‌خواهید اجرای الگوریتم پیش‌فرض را غیرفعال کنید و فهرست کانال‌های ناامن خود را برای اجتناب از آن ارسال کنید، config_wifiDefaultCoexAlgorithmEnabled را پیکربندی کنید. اگر همپوشانی روی false تنظیم شود، الگوریتم پیش‌فرض غیرفعال می‌شود. سپس می‌توانید از الگوریتم اختصاصی خارج از باند خود برای ایجاد فهرستی از کانال‌های ناامن برای انتقال به چارچوب با استفاده از API سیستم زیر استفاده کنید.

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

اعتبار بخشیدن به اجرا

برای تأیید اجرای ویژگی اجتناب از کانال Wi-Fi/coex سلولی، از آزمایش‌های زیر استفاده کنید.

تست های CTS

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

تست های ACTS

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

تست های VTS

  • اگر AIDL پیاده سازی شود: wifi_chip_aidl_test.cpp

    • TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
  • اگر HIDL پیاده سازی شود: wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)