تجنب قناة Wi-Fi / الخلوية Coex

تحدد ميزة تجنب قناة Wi-Fi / الخلوية coex ، المقدمة في Android 12 ، وتتجنب استخدام قنوات Wi-Fi غير الآمنة في الحالات التي قد يكون فيها تداخل من / إلى القنوات الخلوية. يتضمن ذلك واجهات مثل STA و SoftAp و Wi-Fi Direct (P2P) و Wi-Fi Aware (NAN).

تتناول هذه الصفحة ما يلي:

  • المعلومات التي يجب أن يقدمها المودم الخلوي إلى إطار عمل Android
  • الخوارزميات التي يستخدمها إطار عمل Wi-Fi لحساب قنوات Wi-Fi التي يجب تجنبها
  • جداول التكوين التي يجب أن توفرها الشركات المصنعة للأجهزة لإطار عمل Wi-Fi
  • واجهات برمجة تطبيقات النظام والتكوينات وواجهات برمجة تطبيقات HAL المتعلقة بميزة تجنب القناة
  • سلوك الإطار للتعامل مع تجنب القناة
  • سلوك بائع الرقاقة للتعامل مع تجنب القناة
  • تفاصيل التنفيذ لتجنب القناة
  • اختبارات للتحقق من سلوك تجنب القناة

خلفية

بالنسبة للأجهزة ذات التقنيات الخلوية مثل LTE و 5G NR والوصول المعزز المرخص (LAA) ، يمكن للقنوات الخلوية المستخدمة أن تتداخل مع قناة Wi-Fi قيد الاستخدام. يحدث هذا عندما تكون القنوات الخلوية وقنوات Wi-Fi ضمن فصل تردد قصير (القنوات المجاورة) أو عندما يكون هناك تداخل توافقي وتداخل بيني.

يصبح هذا النوع من التداخل مشكلة عندما يرسل هوائي وآخر يستقبل في نفس الوقت. في هذه الحالة ، يغمر هوائي الإرسال هوائي الاستقبال ، مما يؤثر على جودة استقباله.

تشير هذه الوثيقة إلى المرسل المسبب للتداخل على أنه المعتدي والمستقبل الذي يتعرض للتداخل باعتباره الضحية . يشار إلى قناة 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;
}

حساب قنوات الواي فاي غير الآمنة

عندما يبلغ المودم عن تغيير في التردد الخلوي ، تحسب خوارزمية قناة 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:

فئات 2g:

  • all (النطاق 2.4 جيجا هرتز بالكامل)

فئات 5G:

  • all (نطاق 5 جيجاهرتز كامل)
  • 20mhz هرتز (5 جيجا هرتز 20 ميجا هرتز)
  • 40mhz هرتز (قنوات 5 جيجا هرتز 40 ميجا هرتز)
  • 80 ميجا 80mhz (قنوات 5 جيجا هرتز 80 ميجا هرتز)
  • 160mhz هرتز (5 جيجا هرتز 160 ميجا هرتز قنوات)

تدخل القناة المجاورة

لتحديد تداخل القناة المجاورة ، تتأكد خوارزمية تجنب coex أن المسافة F بين قناة المعتدي والضحية لا تقل عن عتبة محددة.

تدخل القناة

الشكل 2. المسافة بين قناة المعتدي والضحية

يتم تحديد العتبة من خلال التكوين المادي للجهاز وقيمة العتبة المقدمة في إدخال جدول البحث لكل نطاق تداخل. لا تحتوي النطاقات التي تعتبر غير متداخلة على إدخال في الجدول ولا يلزم حساب القنوات غير الآمنة (هذه هي غالبية الوقت).

معلمات التداخل المجاورة

  • wifiVictimMhz : عتبة المسافة بالميغاهرتز لضحية Wi-Fi (الارتباط الصاعد للخلية)
  • cellVictimMhz : عتبة المسافة MHz لضحية الخلية (الخلية الهابطة)

تعمل الخوارزمية على النحو التالي لكل قناة خلية نشطة:

  1. بالنسبة لشريط القناة ، يحاول البحث عن إدخال جدول البحث. إذا لم يتم العثور على إدخال في الجدول ، فسيتم إرجاعه بدون قنوات غير آمنة لقناة الخلية هذه.
  2. استنادًا إلى النطاق الخلوي ، يحدد نطاق Wi-Fi المعرض للخطر وأي جانب من النطاق يأتي منه التداخل (على سبيل المثال ، قنوات 2.4 جيجا هرتز أقل ، قنوات 2.4 جيجا هرتز أعلى ، قنوات 5 جيجا هرتز أقل).
  3. إذا كان wifiVictimMhz موجودًا وكانت القناة الخلوية بها ارتباط صاعد و

    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 وكانت القناة الخلوية بها ارتباط هابط.

    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. حساب قناة غير آمن للتشويه التوافقي

في حالة التشكيل البيني ، تأخذ الخوارزمية في الاعتبار تشوه التشكيل البيني للوصلة الصاعدة للخلية وقناة Wi-Fi التي تضر بقناة الوصلة الهابطة للخلية. ثم يستبدل التشوه العالي والتشوه المنخفض بقيم التشكيل البيني بناءً على ترددات الوصلة الصاعدة للخلية وترددات Wi-Fi ومعاملات التشكيل البيني $ 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. يكرر الخطوة 3 أ ولكن مع 40 ميجا هرتز ، 80 ميجا هرتز ، 160 ميجا هرتز.
      2. بدلاً من حساب التداخلات بين القنوات على الحافة التوافقية ، يعيد استخدام التداخلات المحسوبة من القنوات المكونة الأصغر (على سبيل المثال ، إذا كانت قناتان 20 ميجا هرتز تشكلان قناة 40 ميجا هرتز وتتداخلان بنسبة 30٪ و 90٪ ، فإن المتوسط ​​هو 60٪ تداخل لقناة 40 ميجا هرتز).
  4. يعثر على قنوات 2.4 جيجا هرتز غير الآمنة من التشكيل البيني إذا تم تحديد المعلمات.

    1. يكتشف معاملات التشكيل البيني N ، M لـ 2.4 جيجا هرتز.
    2. لكل قناة Wi-Fi بتردد 2.4 جيجا هرتز:

      1. لحساب التردد المنخفض للتردد البيني والتردد العالي للتشكيل البيني بناءً على N و M والوصلة الصاعدة للخلية وقناة Wi-Fi.
      2. يحسب التداخل بين التعديل البيني عبر الوصلة الهابطة للخلية ويضع علامة على القناة على أنها غير آمنة إذا تجاوز التداخل عتبة تداخل الخلايا 2.4 جيجا هرتز.
  5. يعثر على قنوات 5 جيجا هرتز غير الآمنة من التشكيل البيني إذا تم تحديد المعلمات.

    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) ، قد لا تنتج نطاقات التوافقية / التشكيل البيني لكل وصلة صاعدة / هابطة تداخلًا كافيًا لإحداث تداخل بشكل مستقل ، ولكنها قد تنتج تداخلًا كافيًا عند الجمع. تأخذ الخوارزمية في الاعتبار كل نطاق توافقي / بيني بشكل مستقل وتأخذ اتحاد القنوات غير الآمنة المرتجعة. بالنسبة لحالة التشكيل البيني ، يعني هذا تقييم مدى التشكيل البيني لكل UL على كل DL.

لا تميز الخوارزمية بين PCELL / PSCELL / SCELLs وتعاملها على قدم المساواة.

الوصول بمساعدة الترخيص

تم تحديد الوصول بمساعدة الترخيص (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 g_softap_wifi_direct_for_laa true ، تقوم الخوارزمية بإرجاع مجموعة القنوات غير الآمنة مع النطاق 5 جيجا هرتز بالكامل وتعيين إشارات التقييد الإلزامية لـ SoftAP و Wi-Fi Direct (P2P).

إبلاغ خدمة الواي فاي

بعد أن قامت خوارزمية قناة coex بحساب القنوات غير الآمنة ، لتزويد تطبيقات النظام بالقنوات غير الآمنة وقيودها ، استخدم بنية بياناتSystemApi التالية المحددة في إطار عمل 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();
}

استخدم أساليب WifiManager التالية ومعاودة الاتصال لتمكين التطبيقات من الحصول على القيم المحدثة عندما تتغير القنوات غير الآمنة.

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 في سيناريوهات مختلفة.

إبلاغ السائق

نظرًا لأن السائق له دور رئيسي في أداء تجنب القناة ، فمن الضروري نقل القنوات غير الآمنة إلى السائق والبرامج الثابتة. للقيام بذلك ، استخدم 1.5::IWifiChip HAL API.

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

سوفتاب

SoftAP هي حالة الاستخدام الرئيسية لتجنب القناة غير الآمنة. يوضح القسم التالي سيناريوهات SoftAp الرئيسية حيث يمكن تطبيق تجنب القناة باستخدام ACS. تصف السيناريوهات سلوك خوارزمية تجنب القناة وبرنامج التشغيل أو البرنامج الثابت.

بدء تشغيل SoftAP مع تمكين ACS (لم يتم تشغيل SoftAP بعد)

  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 . إذا تم تعيين التراكب على خطأ ، فسيتم تعطيل الخوارزمية الافتراضية. يمكنك بعد ذلك استخدام خوارزمية خاصة بك خارج النطاق لإنشاء قائمة بالقنوات غير الآمنة للوصول إلى إطار العمل باستخدام واجهة برمجة تطبيقات النظام التالية.

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

التحقق من صحة التنفيذ

للتحقق من صحة تنفيذك لميزة تجنب قناة coex لشبكة Wi-Fi / الخلوية ، استخدم الاختبارات التالية.

اختبارات CTS

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

اختبارات ACTS

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

اختبارات VTS

  • wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)