نقطه اتصال Wi-Fi (Soft AP)

Android از نقطه اتصال Wi-Fi (Soft AP) از جمله اتصال به اینترنت از طریق یک هات اسپات Wi-FI و نقاط اتصال Wi-Fi فقط محلی پشتیبانی می کند.

ویژگی Soft AP امکان پیکربندی موارد زیر را فراهم می کند:

  • SSID و BSSID
  • نوع امنیت (از جمله WPA3)
  • SSID پنهان
  • باند و کانال عامل (از جمله ACS)
  • حداکثر تعداد مشتریان مجاز
  • مقدار زمان خاموشی خودکار
  • Allowlist و blocklist برای اجازه دادن به کاربر برای کنترل دستگاه‌های مرتبط
  • سطح تصادفی سازی MAC برای AP BSSID
  • 802.11ax و 802.11be

قابلیت های دستگاه تعیین کننده در دسترس بودن این کنترل ها است. اندروید 11 برای به دست آوردن این قابلیت ها API هایی را معرفی می کند. سازندگان دستگاه همچنین می توانند قابلیت های دستگاه پایه را با استفاده از پوشش ها مشخص کنند.

توجه داشته باشید که برخی از APIها APIهای سیستمی هستند و از طریق مجوزها محدود شده اند تا فقط برنامه تنظیمات سیستم بتواند به آنها دسترسی داشته باشد.

برنامه ها را با API های هات اسپات توسعه دهید

اجرای پیش‌فرض یک نقطه اتصال Wi-Fi توسط برنامه تنظیمات AOSP ارائه شده است، اما از همه APIها برای پیکربندی Soft AP استفاده نمی‌کند.

برای پشتیبانی از اتصال اینترنت از طریق یک هات اسپات یا یک هات اسپات فقط محلی، برنامه باید عملکردهای زیر را انجام دهد:

  1. برای به دست آوردن قابلیت‌های دستگاه با استفاده از WifiManager#registerSoftApCallback برای نقطه اتصال متصل یا WifiManager#registerLocalOnlyHotspotSoftApCallback برای یک نقطه اتصال محلی فقط تماس بگیرید.

    پاسخ تماس SoftApCallback روش های زیر را ارائه می دهد:

    • SoftApCallback#onCapabilityChanged : اطلاعاتی درباره قابلیت‌های دستگاه، از جمله حداکثر تعداد کلاینت‌های پشتیبانی‌شده، و اینکه آیا SAE یا ACS پشتیبانی می‌شوند، ارائه می‌کند.
    • SoftApCallback#onInfoChanged : اطلاعاتی را در مورد Soft AP در حال اجرا (فقط پس از شروع معتبر)، از جمله اطلاعات باند و فرکانس ارائه می دهد.
    • SoftApCallback#onConnectedClientsChanged : فهرستی از مشتریان متصل را ارائه می دهد. برای هر مشتری، می توانید آدرس MAC را بدست آورید. برای به دست آوردن اطلاعات IP، از TetheringEventCallback#onClientsChanged callback استفاده کنید.
    • SoftApCallback#onStateChanged : به‌روزرسانی‌هایی را در مورد وضعیت Soft AP با فعال و غیرفعال شدن آن ارائه می‌کند.
    • SoftApCallback#onBlockedClientConnecting : اطلاعات سرویس گیرنده مسدود شده را با یکی از دلایل زیر برای مسدود کردن ارائه می دهد: دستگاه به حداکثر تعداد کلاینت هایی رسیده است که می تواند پشتیبانی کند یا کلاینت صریحاً مجاز به اتصال نیست.

برای یک نقطه اتصال متصل:

  1. با فراخوانی روش WifiManager#setSoftApConfiguration و ارائه یک نمونه SoftApConfiguration پیکربندی نرم‌افزار AP را برای اتصال به اینترنت به اینترنت پیکربندی کنید. SoftApConfiguration با استفاده از کلاس SoftApConfiguration.Builder بسازید.
  2. با فراخوانی روش تترینگ در TetheringManager#startTethering اتصال به اینترنت را شروع کنید.

فقط برای کانون محلی:

  1. با فراخوانی روش WifiManager#startLocalOnlyHotspot ، هات اسپات فقط محلی را با یک پیکربندی AP نرم خاص شروع کنید.

لیست های مجاز و مسدود را پیاده سازی کنید

یک نیاز معمولی حامل این است که کنترل‌های دستگاه‌هایی را در اختیار کاربر قرار دهد که مجاز به ارتباط با Soft AP هستند. چندین مکانیسم برای انجام این کار وجود دارد:

  • حداکثر تعداد دستگاه هایی را که می توانند با SoftApConfiguration.Builder#setMaxNumberOfClients به Soft AP مرتبط شوند محدود کنید. حتماً عددی را مشخص کنید که کمتر از حداکثر تعداد کلاینت‌های پشتیبانی شده توسط دستگاه باشد. می توانید حداکثر تعداد را از SoftApCapability#getMaxSupportedClients بدست آورید.
  • کنترل پویا را با استفاده از لیست های مجاز و مسدود ارائه دهید:

    • پیکربندی پیش‌فرض یک Soft AP به همه دستگاه‌ها اجازه می‌دهد به Soft AP مرتبط شوند، به جز دستگاه‌هایی که آدرس‌های MAC آنها به SoftApConfiguration.Builder#setBlockedClientList اضافه شده‌اند.
    • اگر Soft AP با SoftApConfiguration.Builder#setClientControlByUserEnabled( true ) پیکربندی شده باشد، از لیست مجاز استفاده می شود.

      • همه دستگاه‌هایی که آدرس‌های MAC آنها در SoftApConfiguration.Builder#setBlockedClientList هستند، از ارتباط مسدود شده‌اند.
      • همه دستگاه‌هایی که آدرس‌های MAC آنها در SoftApConfiguration.Builder#setAllowedClientList هستند مجاز به ارتباط هستند.
      • همه دستگاه‌های دیگر (یعنی دستگاه‌هایی که آدرس‌های MAC آنها در لیست مجوز یا مسدود کردن نیست) از ارتباط مسدود می‌شوند، اما SoftApCallback#onBlockedClientConnecting فراخوانی می‌شود و به برنامه کنترل (یعنی برنامه تنظیمات) اجازه می‌دهد تا اقدامی را انجام دهد. به عنوان مثال، درخواست تأیید از کاربر و سپس افزودن دستگاه به لیست مجاز یا به لیست مسدود کردن بسته به رفتار کاربر.

    توجه داشته باشید که دستگاه‌ها تنها در صورتی می‌توانند از عملکرد لیست مجاز استفاده کنند که در دستگاه پشتیبانی شود. می‌توانید با استفاده از SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) پشتیبانی دستگاه را تأیید کنید.

پیاده سازی

برای پشتیبانی از اتصال به اینترنت از طریق یک نقطه اتصال یا پشتیبانی از یک نقطه اتصال محلی فقط، سازندگان دستگاه باید برنامه تنظیمات، چارچوب و پشتیبانی HAL/سیستم‌افزار را ارائه دهند:

  • برنامه تنظیمات: برنامه تنظیمات AOSP خط مقدمی برای پیکربندی نقطه اتصال اینترنت با SSID و اعتبارنامه های امنیتی ارائه می دهد. این کد را می توان همانطور که هست مورد استفاده قرار داد یا برای ارائه قابلیت های اضافی همانطور که در توسعه برنامه ها با API هات اسپات توضیح داده شده است، تغییر داد.

  • چارچوب: کد فریمورک AOSP از همه عملکردهای توضیح داده شده در توسعه برنامه‌ها با APIهای نقطه اتصال پشتیبانی می‌کند.

  • HAL/سیستم‌افزار برای نقطه اتصال: یا HIDL IHostapd.hal نسخه 1.2 یا بالاتر، یا AIDL IHostapd.aidl .

سفارشی سازی

برای سفارشی کردن پیاده‌سازی، سازندگان دستگاه باید پوشش‌ها و پیکربندی‌های حامل زیر را که در packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml مستند شده‌اند، پیکربندی کنند:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : فاصله زمانی خاموشی پیش‌فرض. فقط در صورتی معتبر است که SoftApConfiguration#setAutoShutdownEnabled فعال باشد. با استفاده از SoftApConfiguration#setShutdownTimeoutMillis می توان آن را لغو کرد.
  • config_wifiHardwareSoftapMaxClientCount : محدودیت سخت افزاری برای حداکثر تعداد کلاینت های پشتیبانی شده. حداکثر تعداد کلاینت‌هایی که دستگاه پشتیبانی می‌کند، حداقل محدودیت‌های سخت‌افزار و حامل است (مشخص شده توسط CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ). نتیجه نهایی با SoftApCapabilities#getMaxSupportedClients در اختیار برنامه قرار می گیرد.
  • config_wifiSofapClientForceDisconnectSupported : اینکه آیا دستگاه توانایی قطع اجباری یک کلاینت را دارد یا خیر. برای فعال کردن لیست های مجاز و مسدود کردن مورد نیاز است. از طریق SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) با برنامه کنترل کننده (برنامه تنظیمات) ارتباط برقرار کرد.
  • (موجود از 13) config_wifiSoftapPassphraseAsciiEncodableCheck : اینکه آیا عبارت عبور نرم افزار AP مورد نیاز است یا نه برای رمزگذاری ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : در حین بازیابی پیکربندی ابری هنگامی که یک دستگاه جدید پشتیبانی می‌شود، پیکربندی تنظیم باند به طور خودکار به باندهای دوگانه ارتقا داده شود یا خیر.
  • (موجود از 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : آیا چارچوب به طور خودکار باندهای پایین تر را برای جلوگیری از مدیریت همزیستی به پیکربندی باند اضافه می کند.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : اینکه آیا به روز رسانی کد کشور پویا در حالت AP در دستگاه پشتیبانی می شود یا خیر
  • پشتیبانی کانال: config_wifiSoftap2gChannelList ، config_wifiSoftap5gChannelList ، config_wifiSoftap6gChannelList و config_wifiSoftap60gChannelList .
  • بازیابی پشتیبانی که مشخص می‌کند هنگام بازیابی پیکربندی نقطه اتصال به دستگاه جدید، ورودی‌های مربوطه به حالت پیش‌فرض بازنشانی می‌شوند یا خیر: config_wifiSoftapResetChannelConfig ، config_wifiSoftapResetHiddenConfig ، config_wifiSoftapResetUserControlConfig ، config_wifiSoftapResetAutoShutdownTimerConfig config_wifiSoftapResetMaxClientSettingConfig . توجه داشته باشید که این موارد به طور پیش فرض روی true تنظیم شده اند، به این معنی که مقادیر بازنشانی می شوند. اگر دستگاه جدید از پیکربندی پشتیبانی نمی کند، این بسیار مهم است.
  • قابلیت های سخت افزاری:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (موجود از 13) config_wifiSoftapOweTransitionSupported
    • (موجود از 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (موجود از 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

اعتبار سنجی

Android مجموعه‌ای از تست‌های واحد و تست‌های Compatibility Test Suite (CTS) را برای اعتبارسنجی ویژگی نقطه اتصال ارائه می‌کند. ویژگی هات اسپات را می توان با استفاده از مجموعه تست فروشنده (VTS) نیز آزمایش کرد.

تست های واحد

بسته hotspot را با استفاده از تست های زیر تأیید کنید.

  • تست های خدمات:

    atest packages/modules/Wifi/service/tests/wifitests/
  • تست های مدیر:

    atest packages/modules/Wifi/framework/tests/

تست های مجموعه تست سازگاری (CTS).

از تست های CTS برای تایید ویژگی هات اسپات استفاده کنید. CTS تشخیص می دهد که این ویژگی چه زمانی فعال است و به طور خودکار آزمایش های مرتبط را شامل می شود.

برای راه اندازی تست های CTS، اجرا کنید:

atest android.net.wifi.cts.WifiManagerTest

مجموعه تست فروشنده (VTS)

اگر رابط HIDL پیاده سازی شده است، اجرا کنید:

atest VtsHalWifiHostapdV1_2Target

اگر رابط AIDL پیاده سازی شده است، اجرا کنید:

atest VtsHalHostapdTargetTest