تزامن STA/STA في شبكة Wi-Fi

يوفّر Android 12 تزامن Wi-Fi STA/STA، والذي يسمح للأجهزة بالاتصال بشبكتي Wi-Fi بشكل متزامن. تتيح هذه الميزة الاختيارية الوظائف التالية.

  • وضع قبل الفاصل: يجري الجهاز اتصالاً بشبكة Wi-Fi جديدة. قبل قطع الاتصال الحالي. وينتج عن ذلك انتقالات أكثر سلاسة عند التبديل بين شبكات Wi-Fi
  • اتصال محلي فقط واتصال إنترنت متزامن: الجهاز ويتصل بشبكة محلية فقط دون تعطيل الاتصال الأساسي الذي يوفر شبكة الإنترنت.
  • تقييد متزامن واتصال بالإنترنت: الجهاز الاتصال بشبكة مقيَّدة (لا يتوفّر هذا الخيار إلا لتطبيقات معيّنة ذات امتياز) بدون تعطيل الاتصال الأساسي الذي يوفر شبكة الإنترنت للجهاز.
  • (Android 13 أو الإصدارات الأحدث) متعددة متزامنة شبكات ذات اتصال إنترنت: يتصل الجهاز إلى شبكتين وكلاهما غير مقيَّد ومتاح لجميع التطبيقات، وتوفر اتصالاً بالإنترنت.

تصف هذه الصفحة سلوك الجهاز عند تمكين هذه الميزة تفاصيل التنفيذ للشركات المصنّعة للأجهزة ومورّديها.

التنفيذ

يجب أن تتوافق الأجهزة مع ما يلي لتنفيذ معيار STA/STA الخاص بشبكة Wi-Fi. التزامن:

  • يجب أن تتوافق شريحة Wi-Fi أو البرامج الثابتة مع اثنين من STA معًا. الاتصالات. يجب أن تتوافق البرامج الثابتة مع كل مجموعات القنوات والنطاقات لكلا الاتصالين. لتجنّب المشاكل في الأداء، ننصحك باستخدام شريحة Wi-Fi متوافقة مع معيار DBS 2x2+2x2.

  • يجب أن يتوافق الجهاز مع واجهات برمجة التطبيقات التالية بتنسيق AIDL أو HIDL. تنفيذ IWifiChip.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • يجب أن تحتوي تركيبة واجهة HAL Wi-Fi على واجهتي STA متزامنتين. باستخدام تنسيق مواصفات مثل [{STA} <= 2, ...]. بالنسبة مزيد من المعلومات، راجع تزامن واجهات Wi-Fi المتعددة:

في حال استيفاء هذه المتطلبات الأساسية، يمكنك تطبيق تزامن Wi-Fi STA/STA من خلال ما يلي:

  1. تفعيل دالة واحدة أو أكثر بشكل فردي باستخدام تراكبات موارد وقت التشغيل (تم إيقافها من قِبل الافتراضي).

    • الاستعداد قبل الفاصل: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • اتصال محلي فقط واتصال إنترنت متزامن: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • اتصال مقيَّد واتصال بالإنترنت متزامن: config_wifiMultiStaRestrictedConcurrencyEnabled
    • شبكات متعددة متزامنة مع اتصال الإنترنت: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. تحقَّق من صحة كل عملية تنفيذ كما هو موضّح في الأقسام المعنيّة.

للتوافق بشكل أفضل مع تزامن STA/STA مع Wi-Fi، نوصي بتخصيص المصنّع الأصلي للجهاز أُطر العمل والتطبيقات تستخدم الطريقة NetworkCallback#onCapabilitiesChanged() بدلاً من WifiManager#getConnectionInfo()، الذي يعرض فقط WifiInfo مقابل شبكة واحدة وتم إيقافها في نظام Android 12. بالنسبة مزيد من المعلومات، راجع واجهة برمجة التطبيقات لطلب شبكة Wi-Fi للاتصال من نظير إلى نظير:

الاستعداد قبل الفاصل

تسمح وظيفة make-before-break للأجهزة بالاتصال بشبكة Wi-Fi جديدة. الشبكة مع الحفاظ على اتصال شبكة Wi-Fi الحالي، قطع الاتصال بالشبكة القديمة عند اتصالها بالشبكة الجديدة بنجاح شبكة Wi-Fi ويتوفّر بها اتصال بالإنترنت.

تعالج حالة الاستخدام قبل الفاصل المشكلات التالية في الإصدار 11 من نظام Android أو الإصدارات الأقدم، حيث يجب إلغاء ربط الجهاز من شبكة Wi-Fi الحالية قبل الاتصال بشبكة جديدة (break-before-make).

  • عند الاتصال بشبكة جديدة، قد يكتشف الجهاز أنّ لديه تم حفظ كلمة مرور Wi-Fi غير صحيحة أو أن الشبكة الجديدة لم يتم حفظها متصل بالإنترنت. يجبر هذا الإجراء الجهاز على التبديل مرة أخرى إلى الإصدار القديم. مما يؤدي إلى استهلاك قدر كبير من الوقت بدون اتصال بشبكة Wi-Fi.

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

  • تتغير الشبكة الافتراضية مرتين، من شبكة Wi-Fi القديمة إلى الشبكة الخلوية، ثم من الشبكة الخلوية إلى شبكة Wi-Fi الجديدة. ويتسبب هذا في تفاعل التطبيقات مع تغير الشبكة مرتين. يجب أيضًا أن يقضي الجهاز مدة قصيرة الوقت المستغرَق في استخدام بيانات شبكة الجوّال.

يُستخدَم مسار الإعداد قبل الفاصل فقط مع شبكة Wi-Fi التلقائية. مفاتيح التبديل التي يبدأها نظام التشغيل. تستخدم مفاتيح التبديل في الشبكة التي يبدأها المستخدم النظام القديم التدفق قبل التنفيذ، حيث تكون الشبكة السابقة غير متصلة تمامًا قبل الاتصال بالشبكة الجديدة. في بعض الحالات، يتم استخدام تدفق البيانات قبل التغيير حتى في مفاتيح التبديل التلقائية التي يبدأها على سبيل المثال، عند التبديل بين شبكتين تم ضبطهما لاستخدام عنوان MAC للمصنع.

يمكن للتطبيقات التحقّق مما إذا كانت حالة الاستخدام هذه متوافقة مع الجهاز باستخدام واجهة برمجة تطبيقات WifiManager#isMakeBeforeBreakWifiSwitchingSupported().

التحقّق من صحة وضع قبل الفاصل

للتحقّق من صحة عملية التنفيذ، عليك تفعيل التبديل التلقائي لشبكة Wi-Fi. (عن طريق ضمان أن تكون الشبكة ذات قوة إشارة أقوى من شبكة متصلة) والتحقق من أن الجهاز يحتفظ اتصال حالي أثناء الاتصال بالشبكة الجديدة. للاطّلاع على حالة واجهتَي Wi-Fi والتأكّد من ربطهما، استخدم الأمر التالي.

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

إذا لم يكن بإمكان الشبكة الجديدة الاتصال بالإنترنت، سيتم الاتصال بالشبكة، مع الحفاظ على الاتصال بالشبكة الحالية، وإلغاء المحاولة عندما يكتشف إذا كانت الشبكة الجديدة لا تتضمّن إنترنت. ويواصل الجهاز بعد ذلك استخدام الاتصال الحالي كشبكة Wi-Fi أساسية.

اتصال محلي فقط واتصال بالإنترنت متزامن

تسمح وظيفة الاتصال المحلي فقط والاتصال بالإنترنت المتزامن للأجهزة الاتصال باتصال محلي فقط، مثل الاتصال بجهاز إنترنت الأشياء (IoT)، بالتزامن مع الشبكة الأساسية التي توفر الإنترنت. تعمل هذه الدالة على تحسين تجربة المستخدم عند الاتصال المباشر بأجهزة إنترنت الأشياء، مثل الكاميرات، وذلك من خلال واجهة برمجة التطبيقات WifiNetworkSpecifier المُضافة في الإصدار 10 من نظام التشغيل Android

في نظام التشغيل Android 11 والإصدارات الأقدم، يتم إلغاء ربط الأجهزة شبكة Wi-Fi أساسية عند الاتصال بجهاز إنترنت الأشياء (IoT)، مما يؤدي إلى فقدان الاتصال بالإنترنت (إلا إذا كان الجهاز به نوع نقل آخر متاح، مثل بيانات شبكة الجوّال).

يمكن للتطبيقات التحقّق مما إذا كانت هذه الوظيفة متوافقة مع الجهاز باستخدام واجهة برمجة تطبيقات WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported().

لمزيد من المعلومات عن التغييرات في المحتوى المتزامن على الشبكة المحلية فقط والإنترنت الاتصال في Android 12، انظر واجهة برمجة التطبيقات لطلب شبكة Wi-Fi للاتصال من نظير إلى نظير:

التحقق من الاتصال المحلي فقط والاتصال بالإنترنت

للتحقق من صحة هذه الدالة، استخدم دالة الرسم اختبار CTS (MultiStaConcurrencyWifiNetworkSpecifierTest).

اتصال محدود واتصال بالإنترنت متزامن

تسمح وظيفة الاتصال المحدود والاتصال بالإنترنت للجهاز باستخدام الجهاز. الاتصال بشبكة Wi-Fi أساسية في الوقت نفسه للمستخدم شبكة Wi-Fi محدودة لا تتوفر إلا لتطبيقات محددة.

يمكن للتطبيقات التحقّق مما إذا كانت هذه الوظيفة متوافقة مع الجهاز باستخدام واجهة برمجة تطبيقات WifiManager#isStaConcurrencyForRestrictedConnectionsSupported().

لتمكين جهاز من الاتصال بشبكات Wi-Fi الثانوية المحدودة، يجب اتّباع الخطوات التالية: اتبع هذه الخطوات:

  1. إضافة اقتراحات بشأن شبكة Wi-Fi مع setOemPaid أو setOemPrivate معيّنة على true.

  2. في ConnectivityManager، قدِّم NetworkRequest باستخدام الإمكانات:

عندما يرصد الجهاز نتائج البحث باستخدام شبكة تتطابق مع المصنّع الأصلي للجهاز المدفوع أو اقتراح خاص للمصنّع الأصلي للجهاز، يتصل به تلقائيًا كشبكة ثانوية.

التحقق من الاتصال المحدود والاتصال بالإنترنت

للتحقق من صحة هذه الدالة، استخدم دالة الرسم اختبار CTS (MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest).

شبكات متعددة متزامنة مع اتصال الإنترنت

تتوفّر الأجهزة المتوافقة مع نظام التشغيل Android 13 أو الإصدارات الأحدث شبكات متعددة مزوّدة باتصال إنترنت للجهاز الاتصال بشكل متزامن بشبكتين (APs)، وكلاهما غير مقيَّد (يمكن لجميع التطبيقات الوصول إليها) وتوفّر الوصول إلى الإنترنت.

يمكن للتطبيقات التحقّق مما إذا كانت هذه الميزة متوافقة مع الجهاز باستخدام WifiManager#isStaConcurrencyForMultiInternetSupported() .

إذا كانت الميزة متاحة، يمكن للتطبيقات الحاصلة على الأذونات تفعيل الميزة باستخدام طريقة WifiManager#setStaConcurrencyForMultiInternetMode(int mode). تشير رسالة الأشكال البيانية الأوضاع التالية:

للاستعلام عن وضع الميزة النشطة حاليًا، استخدم ملف WifiManager#getStaConcurrencyForMultiInternetMode() .

عند تفعيل الميزة، اتّبِع الخطوات التالية لطلب إضافة شبكة Wi-Fi توفر خدمة الإنترنت.

  1. إنشاء محدد شبكة Wi-Fi باستخدام WifiNetworkSpecifier.Builder اختر السوار للمُحدِّد باستخدام setBand() . لا تحدِّد SSID أو معرِّف مجموعة الخدمات الأساسية (BSSID) كشبكة إضافية يتم تحديد النطاق المحدد من قبل إطار عمل Wi-Fi.

  2. استخدام ConnectivityManager, إنشاء NetworkRequest باستخدام NET_CAPABILITY_INTERNET قدراتي.

  3. أضف المحدد إلى طلب الشبكة مع NetworkCallback لتتبع حالة الطلب، وإصدار الطلب إلى ConnectivityManager في حال كانت شبكة محفوظة ذات النطاق المطلوب المتوفرة في نتيجة الفحص، ويصبح الاتصال بالشبكة وناجح، NetworkCallback.onAvailable() على كائن الاستدعاء.

التحقّق من صحة شبكات متعددة متزامنة مع اتصال الإنترنت

للتحقق من صحة هذه الدالة، استخدِم اختبار CTS التالي:

  • مجموعة أدوات اختبار العمل: MultiStaConcurrencyMultiInternetWifiNetworkTest

إرشادات المورّد بشأن شرائح Wi-Fi

بالنسبة إلى مورّدي شرائح Wi-Fi، يُرجى اتّباع الإرشادات التالية للحصول على: مزامنة بيانات STA/STA في شبكة Wi-Fi

يجب أن تتوافق شريحة Wi-Fi مع اتصالات STA المزدوجة المتزامنة. هذا يعني أنه يتيح ما يلي:

  • تحتوي كل واجهة STA على عنوان MAC فريد قابل للبرمجة من خلال إطار العمل.
  • يمكن إنشاء واجهة STA الثانوية وتدميرها بشكل ديناميكي.
  • يمكن توصيل كل STA بمعرّف SSID مختلف (إما داخل الفرقة أو الفرقة مختلفة).
  • يمكن توصيل كل STA مع SSID نفسه (إما داخل الفرقة أو الفرقة مختلفة). يجب عدم مطلقًا متصل بمعرّف مجموعة الخدمات الأساسي (BSSID) نفسه.

يجب أن تعمل الميزات المهمة على أساس كل واجهة ويجب المتاحة على الواجهة الأساسية. في ما يلي قائمة بهذه الأدوات الجديدة:

  • يجب أن يكون التجوال متاحًا على الواجهة الأساسية على الأقل (تم ضبطها باستخدام IWifiChip.setMultiStaPrimaryConnection()). إذا كان التجوال متاحًا على كلتا الواجهتين، يجب ألا تتعارض القرارات المتعلقة بالربط الواحد مع الاتصال المتزامن الثاني. على سبيل المثال، يجب ألا تتنقل إحدى الواجهات بمعرّف مجموعة الخدمات الأساسية (BSSID) للاتصال الآخر.

  • يجب أن يتوفر APF (وعمليات التحميل الأخرى مثل ARP وNS) على الأقل الواجهة الأساسية (يتم تعيينها باستخدام IWifiChip.setMultiStaPrimaryConnection()).

  • يجب أن تعمل إحصاءات طبقة الرابط على أساس كل واجهة.

في ما يلي تطبيقات شرائح Wi-Fi المقترَحة لمختلف سيناريوهات التزامن:

  • يجب أن تسمح شريحة Wi-Fi لإطار العمل بالاتصال IWifiChip.setMultiStaUseCase() بأحد الثوابت التالية تحديد الدالة الحالية:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: تحدّد هذه السمة دالة Make-Before-Break. جودة الاتصال الأساسي يجب منحه الأولوية على الاتصال الثانوي.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: تحدّد اتصال الإنترنت المحلي فقط والمتزامن أو العرض محدود والاتصال بالإنترنت. جودة كل منهما يجب إعطاء الأولوية لعمليات الربط بالتساوي.
  • نظرًا لأن STA المزدوجة المتزامنة يمكن أن تؤدي إلى أوضاع مركز عملائي وSCC وDBS يجب على عملية التنفيذ التي يجريها البائع اختيار الاختيار الأفضل الإعداد عندما يستدعي إطار العمل IWifiChip.setMultiStaUseCase() للإشارة إلى الدالة. في ما يلي إرشادات عامة:

    • ويفضل 2x2+2x2 DBS إذا كان متاحًا.
    • تجنب 1x1+1x1 DBS إن أمكن ذلك بسبب التأثير المفرط على جودة الاتصال. ويفضّلون استخدام "مركز عملائي" بدلاً من ذلك.
    • يجب أن تكون دورة الرسوم الخاصة بمركز عملائي قابلة للتهيئة بواسطة برنامج التشغيل أو البرامج الثابتة للدوال المختلفة. لم يضبط إطار العمل دورة عمل "مركز عملائي" مباشرةً، ولكن يتم الاستعلام عن هذه المعلومات باستخدام StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • في حال استخدام "مركز عملائي"، نوصي بدورات العمل التالية بين الحسابات والاتصالات الثانوية:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: %70 أساسي و30% ثانوي
      • DUAL_STA_NON_TRANSIENT_UNBIASED: %50 أساسي و% 50 ثانوي