تزامن Wi-Fi STA / STA

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

  • جعله قبل الانقطاع : يقوم الجهاز بإجراء اتصال بشبكة Wi-Fi جديدة قبل قطع الاتصال الحالي. ينتج عن هذا انتقالات أكثر سلاسة عند التبديل بين شبكات Wi-Fi
  • اتصال محلي فقط وإنترنت متزامن : يتصل الجهاز بشبكة محلية فقط دون مقاطعة اتصال توفير الإنترنت الأساسي للجهاز.
  • اتصال مقيد ومتزامن بالإنترنت : يتصل الجهاز بشبكة مقيدة (متاحة فقط لبعض التطبيقات ذات الامتيازات) دون مقاطعة اتصال توفير الإنترنت الأساسي للجهاز.

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

تطبيق

يجب أن تدعم الأجهزة ما يلي من أجل تنفيذ التزامن Wi-Fi STA / STA:

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

  • يجب أن يدعم الجهاز واجهات برمجة التطبيقات التالية في الإصدار 1.5 من HAL الخاص بالمورد

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

إذا تم استيفاء هذه المتطلبات المسبقة ، فنفذ مزامنة Wi-Fi STA / STA عن طريق القيام بما يلي:

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

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

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

صنع قبل الفاصل

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

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

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

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

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

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

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

التحقق من صحة الصنع قبل الكسر

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

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

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

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

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

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

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

لمزيد من المعلومات حول التغييرات على وظيفة الاتصال المحلي فقط والاتصال بالإنترنت المتزامنة في Android 12 ، راجع Wi-Fi Network Request API للاتصال من نظير إلى نظير .

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

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

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • أعمال: WifiStaConcurrencyNetworkRequestTest

متزامن مقيد واتصال الإنترنت

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

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

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

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

  2. في ConnectivityManager ، قم بتقديم طلب NetworkRequest المقابلة:

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

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

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

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • أعمال: WifiStaConcurrencyNetworkRequestTest

إرشادات رقاقة Wi-Fi للبائع

بالنسبة لموردي شرائح Wi-Fi ، استخدم الإرشادات التالية لدعم مزامنة Wi-Fi STA / STA.

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

  • تحتوي كل واجهة STA على MAC فريد يمكن برمجته بواسطة إطار العمل.
  • يمكن إنشاء واجهة STA الثانوية وتدميرها ديناميكيًا.
  • يمكن توصيل كل STA بمعرف SSID مختلف (إما داخل نفس النطاق أو نطاق مختلف).
  • يمكن توصيل كل STA بنفس SSID (إما داخل نفس النطاق أو نطاق مختلف). يجب عدم توصيل جهازي STA أبدًا بنفس 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 : يحدد الاتصال المحلي فقط والاتصال بالإنترنت المتزامن أو وظيفة الاتصال المقيدة والاتصال بالإنترنت المتزامنة . يجب إعطاء الأولوية لجودة كلا التوصلين على قدم المساواة.
  • نظرًا لأن STAs المتزامنة المزدوجة يمكن أن تؤدي إلى أوضاع تشغيل MCC و SCC و DBS ، يجب أن يختار تطبيق البائع أفضل تكوين لاسلكي عندما يستدعي إطار العمل IWifiChip.setMultiStaUseCase() للإشارة إلى الوظيفة. فيما يلي إرشادات عامة:

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

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70٪ أساسي ، 30٪ ثانوي.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50٪ أساسي ، 50٪ ثانوي.