تحدّد ميزة تجنُّب قنوات التداخل بين شبكة Wi-Fi وشبكة الجوّال، التي تم طرحها في 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 وLicensed Assisted Access (LAA)، يمكن أن تتداخل قنوات شبكة الجوّال المستخدَمة مع قناة Wi-Fi المستخدَمة. ويحدث ذلك عندما تكون قنوات شبكة الجوّال وشبكة Wi-Fi ضمن نطاق فاصل ترددي قصير (قنوات متجاورة) أو عند حدوث تداخل توافقي وتداخلي.
تصبح هذه الأنواع من التداخل مشكلة عندما يرسل أحد الهوائيات ويستقبل آخر في الوقت نفسه. في هذه الحالة، يغمر هوائي الإرسال هوائي الاستقبال، ما يؤثّر في جودة الاستقبال.
يشير هذا المستند إلى جهاز الإرسال المتداخل باسم المهاجم وإلى جهاز الاستقبال الذي يعاني من التداخل باسم الضحية. يُشار إلى قناة Wi-Fi التي تكون إما المهاجم أو الضحية باسم قناة غير آمنة.
توفّر ميزة تجنُّب القنوات المتداخلة بين شبكة Wi-Fi وشبكة الجوّال أسلوبًا متسقًا لتجنُّب القنوات، ما يقلّل من الحاجة إلى رمز برمجي خاص يختلف عن إطار عمل Wi-Fi. بالإضافة إلى ذلك، تسمح الميزة لمصنّعي الأجهزة بضبط الميزة وتفعيلها وإيقافها وتجاوزها.
تتجنّب الميزة القنوات من خلال التحكّم في قنوات Wi-Fi. يمكن وصف نظام تجنُّب قنوات Wi-Fi على أنّه سلسلة من أربع خطوات مجرّدة:
- تغيير تقارير المودم في نطاق التردد الخلوي
- تحسب خوارزمية تجنُّب التداخل قنوات Wi-Fi غير الآمنة
- خوارزمية تجنُّب التداخل تُعلم خدمة Wi-Fi
- تنفيذ إطار العمل أو برنامج التشغيل لإجراء Wi-Fi المناسب
الشكل 1. مخطّط تجنُّب القنوات
الإبلاغ عن تغيير في تردد شبكة الجوّال
تُبلغ خدمة الاتصال عن قنوات شبكة الجوّال المستخدَمة. عندما يتغيّر تردد شبكة الجوّال، يرسل المودم هذه المعلومات إلى خدمة الاتصال الهاتفي من خلال IRadio::PhysicalChannelConfig.
وتتضمّن هذه المعلومات مؤشرات على إمكانية استخدام تقنيتَي الوصول المرخَّص بمساعدة مشغّل شبكة الجوّال (LAA) وتجميع شركات الاتصالات (CA).
بدءًا من Android 12، توفّر الحقول التالية في
1.6 IRadio::PhysicalChannelConfig المعلومات المطلوبة لصيغ
التعايش التي يجب أن يملأها المودم.
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;
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplink;
}
حساب قنوات Wi-Fi غير الآمنة
عندما يبلغ المودم عن حدوث تغيير في تردد شبكة الجوّال، تحسب خوارزمية قناة Coex التداخل بين قنوات شبكة الجوّال وقنوات Wi-Fi، وتحدّد قنوات Wi-Fi غير الآمنة.
هناك أنواع متعددة من التداخل تتطلّب صيغًا مختلفة: التداخل المجاور والتداخل التوافقي/التعديل البيني. ونظرًا للاختلافات المادية في الهوائي والتصميم بين الأجهزة، تختلف أنماط التداخل بين الأجهزة المجاورة والتداخل التوافقي/التعديل البيني لكل جهاز. ولمراعاة ذلك، على الشركات المصنّعة للأجهزة توفير جدول بحث لإدخال المَعلمات في صيغ عامة لنوعَي التداخل. يتم تحديد هذه المَعلمات لكل نطاق خلوي، ويتم الرجوع إليها من خلال نطاقات قنوات الخلايا النشطة.
يمكن تحديد حد أقصى للطاقة في جدول البحث. في حال تحديد الحد الأقصى للطاقة، ترسل القناة غير الآمنة البيانات بهذا الحد، وإلا ترسلها بأقصى طاقة.
بشكل عام، تستخدم ميزة تجنُّب القنوات نهجًا يبذل قصارى جهده لتجنُّب قنوات Wi-Fi غير الآمنة من أجل تحسين الأداء. ولكن في بعض الحالات (على سبيل المثال، بسبب متطلبات شركات الاتصالات)، يكون من الضروري أن تتجنّب بعض الواجهات القنوات غير الآمنة لبعض نطاقات شبكات الجوّال. في هذه الحالات، يتم تمثيل القيود الإلزامية كقناع بت يحتوي على قيم تحدّد ما إذا كان سيتم حظر قنوات معيّنة، مثل Wi-Fi Direct (من جهاز إلى جهاز) وSoftAp وWi-Fi Aware (NAN). في حين أنّ القناة غير الآمنة تشكّل تحذيرًا من استخدام هذه القناة في جميع حالات الاستخدام، تشير القيود الإلزامية إلى حالات استخدام معيّنة يجب تجنّبها.
إذا تم وضع علامة غير آمنة على كل قنوات النطاق 2.4 غيغاهرتز أو 5 غيغاهرتز، يمكن أن يحدّد جدول البحث قناة تلقائية للنطاق 2.4 غيغاهرتز أو قناة تلقائية للنطاق 5 غيغاهرتز لكل نطاق خلوي متداخل كخيار أكثر أمانًا. لا يتم الإبلاغ عن هذه القنوات التلقائية على أنّها قنوات غير آمنة عندما يتم الإبلاغ عن بقية النطاق على أنّه غير آمن.
قائمة الإلغاء
يكون النهج القائم على الصيغ محدودًا في الحالات التي يعتمد فيها التداخل بشكل كبير على معدل نقل البيانات (وبالتالي قد تكون القنوات ذات معدل نقل البيانات الأكبر غير آمنة، ولكن ليس القنوات ذات معدل نقل البيانات الأصغر). في بعض الحالات، مثل LAA، من المفيد تخطّي العمليات الحسابية واستخدام قائمة محدّدة بالقنوات غير الآمنة.
لإجراء ذلك، يمكنك تحديد قائمة تجاهل بالقنوات غير الآمنة في جدول البحث لإدخالات معيّنة. تشير قائمة التجاوز في إدخال الجدول إلى أنّه يتم تخطّي عملية الحساب لقناة الخلية المحدّدة هذه. بدلاً من ذلك، تحدّد قائمة الإلغاء بشكل صريح قنوات Wi-Fi غير الآمنة لقناة الخلية المطابقة.
في الحالات التي تتطلّب نطاقًا تردديًا محددًا، يمكنك تجنُّب نطاقات ترددية معيّنة بشكل انتقائي من خلال تحديد قنوات معيّنة بنطاقات ترددية معيّنة في قائمة التجاوز. ويرجع ذلك إلى أنّ كل رقم قناة Wi-Fi يتوافق مع معدّل نقل بيانات محدّد.
يتم تمثيل قائمة التجاوز بقائمة من أرقام القنوات أو الكلمات الرئيسية المحدّدة مسبقًا للفئات لكل نطاق Wi-Fi:
فئات شبكة الجيل الثاني:
-
all(نطاق 2.4 غيغاهرتز بالكامل)
فئات شبكة الجيل الخامس:
all(نطاق 5 غيغاهرتز بالكامل)-
20mhz(قنوات 5 غيغاهرتز 20 ميغاهرتز) -
40mhz(قنوات 5 غيغاهرتز 40 ميغاهرتز) -
80mhz(قنوات 80 ميغاهرتز على نطاق 5 غيغاهرتز) 160mhz(قنوات 5 غيغاهرتز بتردد 160 ميغاهرتز)
التداخل مع القنوات المجاورة
لتحديد التداخل بين القنوات المتجاورة، يحرص خوارزمية تجنُّب التعايش على ألا تقل المسافة ΔF بين قناة المهاجم وقناة الضحية عن حدّ معيّن.
الشكل 2. المسافة بين قناة المعتدي وقناة الضحية
يتم تحديد الحدّ الأدنى من خلال الإعداد المادي للجهاز وقيمة الحدّ الأدنى المقدَّمة في إدخال جدول البحث لكل نطاق تداخل. لا تحتوي النطاقات التي تُعتبر غير متداخلة على إدخال في الجدول، ولا يلزم احتساب القنوات غير الآمنة (وهذا هو الحال في معظم الأحيان).
مَعلمات التداخل مع الشبكات المجاورة
-
wifiVictimMhz: الحد الأدنى للمسافة بالميغاهرتز لضحية Wi-Fi (الربط الصاعد للخلية) -
cellVictimMhz: حدّ المسافة بالميغاهرتز للضحية الخلوية (الوصلة الهابطة للخلية)
تتصرّف الخوارزمية على النحو التالي لكل قناة خلية نشطة:
- بالنسبة إلى نطاق القناة، يحاول العثور على إدخال في جدول البحث. إذا لم يتم العثور على أي إدخال في الجدول، يتم عرض القنوات غير الآمنة لتلك القناة الخلوية.
- استنادًا إلى نطاق شبكة الجوّال، يحدّد هذا الحقل نطاق Wi-Fi المعرَّض للخطر، كما يحدّد الجانب الذي يأتي منه التداخل (على سبيل المثال، قنوات 2.4 غيغاهرتز المنخفضة، وقنوات 2.4 غيغاهرتز العالية، وقنوات 5 غيغاهرتز المنخفضة).
إذا كانت
wifiVictimMhzمتوفرة وكانت قناة الخلية تتضمّن وصلة صاعدة وإذا كان الجزء السفلي من نطاق Wi-Fi معرَّضًا للخطر:
- تعثر هذه السمة على الحدّ الأقصى للقنوات غير الآمنة من خلال إضافة
wifiVictimMhzإلى أعلى تردد لعملية الربط الصاعد في الخلية. - تعرض هذه السمة أول قناة Wi-Fi بتردد 20 ميغاهرتز يتداخل حدّها الأدنى مع الحدّ الأقصى.
- يضع علامة على قناة Wi-Fi وكل قناة ذات نطاق ترددي أكبر تتضمّنها (مثل 40 ميغاهرتز و80 ميغاهرتز) وكل قناة ذات نطاق ترددي أقل من القناة غير الآمنة في النطاق الترددي نفسه.
- تعثر هذه السمة على الحدّ الأقصى للقنوات غير الآمنة من خلال إضافة
إذا كان الجزء العلوي من نطاق Wi-Fi معرَّضًا للخطر:
- تعثر هذه الطريقة على الحد الأدنى للقنوات غير الآمنة من خلال طرح قيمة wifiVictimMhz من أدنى تردد لعمليات الربط الصاعدة في الشبكة الخلوية.
- تعثر هذه الطريقة على قناة Wi-Fi الأولى التي تتداخل حافتها العلوية مع الحدّ.
- يتم وضع علامة على قناة Wi-Fi وكل قناة أكبر تحتوي عليها (على سبيل المثال، 40 ميغاهرتز و80 ميغاهرتز) وكل قناة أعلى من القناة غير الآمنة في النطاق الترددي نفسه.
إذا كانت
cellVictimMhzمتوفرة وكانت قناة الخلية تتضمّن وصلة تنزيل:- يتم تنفيذ الخطوة 3 باستخدام
cellVictimMhzكحدّ أدنى، ويتم إجراء مقارنة مع سرعة التنزيل في شبكة الجوّال بدلاً من سرعة التحميل.
- يتم تنفيذ الخطوة 3 باستخدام
يطبّق الحدّ الأقصى للطاقة في إدخال الجدول على القنوات غير الآمنة المحسوبة.
الشكل 3. حساب القناة غير الآمنة لتداخل القنوات المجاورة
التشويه التوافقي أو التشويه الناتج عن التضمين البيني
بالنسبة إلى التشويش التوافقي أو التشويش الناتج عن التداخل، يحسب محرك التعايش نطاق الإشارة التوافقية أو الإشارة الناتجة عن التداخل ويقيّم النسبة المئوية للتداخل مع قناة مستهدَفة محتملة. إذا تجاوز التداخل حدًا معيّنًا، تعتبر الخوارزمية أنّ هذا الوضع غير آمن. يتم احتساب النسبة المئوية للتداخل بين التشويه التوافقي أو التشويه الناتج عن التداخل في القناة المتأثرة باستخدام المعادلة التالية:
في حالة التشويش التوافقي، تأخذ الخوارزمية في الاعتبار التشويش التوافقي لقناة إرسال خلوي تؤثر سلبًا في قنوات Wi-Fi. بعد ذلك، يتم استبدال قيم التشويش المرتفع والمنخفض بقيم التوافقيات استنادًا إلى ترددات الربط الصاعد للخلية ودرجة التوافق $ N $.
الشكل 4. حساب القناة غير الآمنة للتشويه التوافقي
في حالة التداخل بين التعديلين، تأخذ الخوارزمية في الاعتبار تشوّه التداخل بين التعديلين في وصلة الإرسال من الجهاز إلى المحطة الأساسية وقناة Wi-Fi التي تتداخل مع قناة وصلة الاستقبال من المحطة الأساسية إلى الجهاز. ثم تستبدل التشويش العالي والتشويش المنخفض بقيم التشكيل البيني استنادًا إلى ترددات الربط الصاعد في الخلية وترددات Wi-Fi ومعاملَي التشكيل البيني $ M $ و$ N $.
الشكل 5. حساب القناة غير الآمنة لتشويه التضمين البيني
يمكنك تحديد قيم $ M $ و$ N $ والتداخل في جدول البحث لكل نطاق خلية متداخلة. إذا لم يكن هناك تداخل في نطاق ترددي معيّن، سيتم حذف القيم من الجدول الخاص بهذا النطاق. يمكن تحديد مجموعتين من هذه القيم بشكل مستقل لنطاقَي Wi-Fi التردديين 2.4 غيغاهرتز و5 غيغاهرتز.
على غرار خوارزمية التداخل المجاور، تعيد الخوارزمية استخدام قيمة الحد الأقصى للطاقة نفسها المحدّدة لكل نطاق خلوي متداخل.
تتصرّف الخوارزمية على النحو التالي لكل قناة خلية نشطة:
- بالنسبة إلى نطاق قناة الخلية، يحاول العثور على إدخال في جدول البحث. إذا لم يتم العثور على أي إدخال في الجدول، سيتم عرض قنوات غير آمنة لهذه القناة.
تعثر هذه السمة على قنوات 2.4 GHz غير الآمنة من التوافقيات إذا تم تحديد المَعلمات.
- تعرض هذه السمة درجة التوافق N لشبكة 2.4 غيغاهرتز.
- تحسب هذه الدالة التردد العالي التوافقي والتردد المنخفض التوافقي استنادًا إلى N ووصلة الصعود في الخلية.
- تعثر هذه السمة على أول قناة Wi-Fi بتردد 20 ميغاهرتز تقع ضمن الحد الأدنى للتوافقيات الواردة من الأسفل.
- تحسب هذه السمة التداخل بين التوافقيات وقناة Wi-Fi، وتصنّف القناة على أنّها غير آمنة إذا تجاوز التداخل الحدّ المسموح به للتداخل مع شبكة Wi-Fi بتردد 2.4 غيغاهرتز.
- تعثر هذه الطريقة على قناة Wi-Fi الأولى التي تبلغ سعتها 20 ميغاهرتز وتقع ضمن الحد الأقصى للتوافقيات الواردة من الأعلى.
- تحسب هذه السمة التداخل بين التوافقيات وقناة Wi-Fi، وتصنّف القناة على أنّها غير آمنة إذا تجاوز التداخل الحدّ المسموح به للتداخل مع شبكة Wi-Fi بتردد 2.4 غيغاهرتز.
- يضع علامة على كل قناة تبلغ سعتها 20 ميغاهرتز بينهما كقناة غير آمنة.
تعثر هذه السمة على قنوات 5 GHz غير الآمنة من التوافقيات إذا تم تحديد المَعلمات.
- تعرض هذه السمة درجة التوافق N لنطاق 5 غيغاهرتز. إذا كانت قيمة N هي 0، يتم الانتقال إلى الخطوة 5.
- تحسب هذه الدالة التردد العالي التوافقي والتردد المنخفض التوافقي استنادًا إلى N ووصلة الصعود في الخلية.
تعثر على قنوات غير آمنة بتردد 20 ميغاهرتز.
- تعثر هذه الطريقة على أول قناة Wi-Fi بتردد 20 ميغاهرتز تقع ضمن الحد الأدنى للتوافقي القادم من الأسفل.
- تحسب هذه السمة التداخل بين التوافقيات وقناة Wi-Fi، وتصنّف القناة على أنّها غير آمنة إذا تجاوز التداخل الحدّ المسموح به لتداخل Wi-Fi بتردد 2.4 غيغاهرتز.
- تعثر هذه السمة على أول قناة Wi-Fi بتردد 20 ميغاهرتز تقع ضمن الحد الأعلى للتوافقيات الواردة من الأعلى.
- تحسب هذه السمة التداخل بين التوافقيات وقناة Wi-Fi، وتصنّف القناة على أنّها غير آمنة إذا تجاوز التداخل الحدّ المسموح به لتداخل Wi-Fi بتردد 2.4 غيغاهرتز.
- يضع علامة على كل قناة تبلغ سعتها 20 ميغاهرتز بين القنوات على أنّها غير آمنة مع الحد الأقصى المحدد للطاقة.
العثور على قنوات غير آمنة بتردد 40 ميغاهرتز و80 ميغاهرتز و160 ميغاهرتز
- تكرار الخطوة 3أ ولكن مع 40 ميغاهرتز و80 ميغاهرتز و160 ميغاهرتز
- بدلاً من احتساب التداخلات بين القنوات على الحافة التوافقية، يتم إعادة استخدام التداخلات المحسوبة من القنوات المكوّنة الأصغر (على سبيل المثال، إذا كانت قناتان بتردد 20 ميغاهرتز تشكّلان قناة بتردد 40 ميغاهرتز وتتداخلان بنسبة% 30 و% 90، يكون متوسط التداخل% 60 للقناة بتردد 40 ميغاهرتز).
تعثر هذه السمة على قنوات 2.4 غيغاهرتز غير الآمنة من التشكيل البيني إذا تم تحديد المَعلمات.
- تعرض هذه السمة معاملات التشكيل البيني N وM لشبكة 2.4 غيغاهرتز.
لكل قناة Wi-Fi بسرعة 2.4 غيغاهرتز:
- تحسب هذه السمة التردد المنخفض للتشكيل البيني والتردد العالي للتشكيل البيني استنادًا إلى N وM ووصلة الصعود في الخلية وقناة Wi-Fi.
- تحسب هذه السمة تداخل التشكيل البيني مع وصلة تنزيل الخلية، وتصنّف القناة على أنّها غير آمنة إذا تجاوز التداخل الحدّ الأدنى المسموح به لتداخل الخلايا بتردد 2.4 غيغاهرتز.
تعثر هذه السمة على قنوات 5 غيغاهرتز غير الآمنة من التداخل إذا تم تحديد المَعلمات.
- كرِّر الخطوة 4 باستخدام قنوات Wi-Fi بنطاق 5 غيغاهرتز والحد الأدنى لتداخل الخلايا بنطاق 5 غيغاهرتز.
تطبيق الحد الأقصى للطاقة في إدخال الجدول على القنوات غير الآمنة المحسوبة
النتيجة النهائية
بعد احتساب مجموعتَي القنوات غير الآمنة من التداخل المتجاور والمتناسق، يتم احتساب المجموعة النهائية من خلال أخذ اتحاد المجموعتين (واختيار الحد الأقصى الأدنى للطاقة في حال حدوث تعارضات)، وإزالة القنوات التلقائية من المجموعة إذا لم يتم تطبيق أي قيود إلزامية.
تتصرّف الخوارزمية على النحو التالي:
- إذا تم وضع علامة على كل قنوات Wi-Fi بتردد 2.4 غيغاهرتز باعتبارها قنوات غير آمنة، ستتم إزالة قناة Wi-Fi التلقائية بتردد 2.4 غيغاهرتز من المجموعة.
- إذا تم وضع علامة على كل قنوات Wi-Fi ذات التردد 5 غيغاهرتز باعتبارها قنوات غير آمنة، تتم إزالة قناة Wi-Fi التلقائية ذات التردد 5 غيغاهرتز من المجموعة.
- تعرض هذه السمة المجموعة النهائية من القنوات غير الآمنة.
تنسيق جدول البحث
يتم تمثيل جداول البحث في ملف 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)، قد لا تؤدي نطاقات التوافُق التوافقي أو التشكيل البيني لكل وصلة صاعدة أو هابطة إلى تداخل كافٍ للتسبّب في حدوث تداخل بشكل مستقل، ولكن قد تؤدي إلى تداخل كافٍ عند دمجها. تأخذ الخوارزمية في الاعتبار كل نطاق توافقي أو نطاق تعديل بيني بشكل مستقل، ثم تجمع القنوات غير الآمنة التي تم عرضها. في حالة التشكيل البيني، يعني ذلك تقييم نطاق التشكيل البيني لكل وصلة صاعدة على كل وصلة هابطة.
لا يميّز البرنامج بين PCELL أو PSCELL أو SCELL، ويتعامل معها على أنّها متساوية.
الوصول بمساعدة ترخيص
يتم تحديد نطاق License Assisted Access (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).
إعلام خدمة Wi-Fi
بعد أن تحسب خوارزمية قنوات الاستخدام المشترك القنوات غير الآمنة، استخدِم بنية البيانات التالية @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 @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<CoexUnsafeChannel> unsafeChannels,
int restrictions);
}
تنفيذ إجراء Wi-Fi
عندما تتلقّى خدمة Wi-Fi معلومات عن مجموعة القنوات غير الآمنة، تتّخذ الإجراء المناسب لتجنُّب هذه القنوات. يوضّح هذا القسم سلوك خدمة Wi-Fi في سيناريوهات مختلفة.
إبلاغ السائق
بما أنّ برنامج التشغيل يؤدي دورًا رئيسيًا في تجنُّب القنوات، من الضروري نقل القنوات غير الآمنة إلى برنامج التشغيل والبرامج الثابتة. لإجراء ذلك،
استخدِم واجهة برمجة التطبيقات IWifiChip HAL التالية.
بالنسبة إلى AIDL:
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
بالنسبة إلى HIDL (الإصدار 1.5 أو الإصدارات الأحدث):
setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
bitfield<IfaceType> restrictions);
SoftAP
يُعدّ SoftAP حالة الاستخدام الرئيسية لتجنُّب القنوات غير الآمنة. يوضّح القسم التالي سيناريوهات SoftAp الرئيسية التي يمكن فيها تطبيق تجنُّب القنوات باستخدام ACS. تصف السيناريوهات سلوك خوارزمية تجنُّب القنوات وبرامج التشغيل أو البرامج الثابتة.
بدء SoftAP مع تفعيل ACS (لم يتم إعداد SoftAP بعد)
في حال كانت القنوات غير آمنة وكان هناك قيود على SoftAP:
- يزيل إطار العمل القنوات غير الآمنة من قائمة ACS.
- إذا كانت القائمة فارغة، سيوقف إطار العمل SoftAP.
إذا كانت القنوات غير آمنة ولم يتم فرض أي قيود:
- يمنح برنامج التشغيل أو البرنامج الثابت الخاص بالمورّد الأولوية للقنوات الآمنة على القنوات غير الآمنة.
تم تفعيل SoftAP مع تفعيل ACS وتم تعديل القنوات غير الآمنة
إذا كانت قناة SoftAP غير آمنة وكان هناك قيود على SoftAP:
- يعدّل إطار العمل قائمة قنوات ACS من خلال إزالة القنوات غير الآمنة.
- إذا كانت القائمة فارغة، سيغلق إطار العمل SoftAP.
إذا كانت قناة SoftAP غير آمنة ولم يتم فرض أي قيود:
- لا يتّخذ إطار العمل أي إجراء. يتولّى مورّد برنامج التشغيل أو البرنامج الثابت مهمة تجنُّب القنوات غير الآمنة أو تطبيق الحد الأقصى للطاقة إذا لم يكن من الممكن تجنُّبها.
Wi-Fi Direct (P2P)
في حال توفّر قنوات غير آمنة مع قيود على Wi-Fi Direct (شبكة من الند للند):
- يطلب إطار العمل
wpa_supplicantلتجنُّب القنوات غير الآمنة باستخدام طريقة HALISupplicantP2pIface::setDisallowedFrequencies().
- يطلب إطار العمل
إذا كانت هناك قنوات غير آمنة بدون قيود:
- يفرض برنامج التشغيل أو البرامج الثابتة الخاصة بالمورّد حدًا أقصى للطاقة إذا تم استخدام قناة غير آمنة بدون قيود على "اتصال Wi-Fi مباشر" (P2P).
Wi-Fi Aware (NAN)
لا يشارك إطار العمل في اختيار القنوات لشبكة Wi-Fi Aware (NAN)، ولا يتّخذ أي إجراء. يكون برنامج التشغيل أو البرامج الثابتة الخاصة بالمورّد مسؤولاً عن تجنُّب قنوات Wi-Fi Aware (NAN).
إيقاف الخوارزمية
إذا أردت إيقاف التنفيذ التلقائي للخوارزمية وتمرير قائمتك الخاصة بالقنوات غير الآمنة لتجنّبها، عليك ضبط تراكب config_wifiDefaultCoexAlgorithmEnabled. في حال ضبط التراكب على false، سيتم إيقاف الخوارزمية التلقائية. يمكنك بعد ذلك استخدام خوارزمية خاصة خارج النطاق لإنشاء قائمة بالقنوات غير الآمنة التي سيتم توجيهها إلى إطار العمل باستخدام واجهة برمجة تطبيقات النظام التالية.
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
التحقّق من صحة عملية التنفيذ
للتحقّق من صحة تنفيذ ميزة تجنُّب تداخل قنوات Wi-Fi والشبكة الخلوية، استخدِم الاختبارات التالية.
اختبارات مجموعة أدوات اختبار التوافق (CTS)
WifiManagerTest.javatestCoexMethodsShouldFailNoPermission()testListenOnCoexUnsafeChannels()
اختبارات ACTS
WifiManagerTest.pytest_set_get_coex_unsafe_channels()
اختبارات VTS
- في حال تنفيذ AIDL:
wifi_chip_aidl_test.cppTEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
- في حال تنفيذ HIDL:
wifi_chip_hidl_test.cppTEST_P(WifiChipHidlTest, setCoexUnsafeChannels)