ওয়াই-ফাই হটস্পট (সফ্ট এপি)

অ্যান্ড্রয়েড ওয়াই-ফাই হটস্পট (সফট এপি) সমর্থন করে, যার মধ্যে ওয়াই-ফাই হটস্পটের মাধ্যমে টিথারিং এবং শুধুমাত্র স্থানীয় ওয়াই-ফাই হটস্পট অন্তর্ভুক্ত।

সফট এপি ফিচারের মাধ্যমে নিম্নলিখিত বিষয়গুলো কনফিগার করা যায়:

  • SSID এবং BSSID
  • নিরাপত্তার ধরণ (WPA3 সহ)
  • লুকানো এসএসআইডি
  • অপারেটিং ব্যান্ড এবং চ্যানেল (ACS সহ)
  • অনুমোদিত ক্লায়েন্টের সর্বোচ্চ সংখ্যা
  • অটোশাটডাউন টাইমআউট মান
  • সংযুক্ত ডিভাইসগুলোর উপর ব্যবহারকারীর নিয়ন্ত্রণ অনুমোদনের জন্য অনুমতি তালিকা এবং ব্লক তালিকা।
  • AP BSSID-এর জন্য MAC র‍্যান্ডমাইজেশনের স্তর
  • 802.11ax এবং 802.11be

ডিভাইসের সক্ষমতা এই নিয়ন্ত্রণগুলির প্রাপ্যতা নির্ধারণ করে। অ্যান্ড্রয়েড ১১ এই সক্ষমতাগুলি অর্জনের জন্য এপিআই (API) চালু করেছে। ডিভাইস নির্মাতারা ওভারলে ব্যবহার করে ডিভাইসের মৌলিক সক্ষমতাও নির্দিষ্ট করতে পারেন।

হটস্পট এপিআই ব্যবহার করে অ্যাপ তৈরি করুন

অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP)-এর সেটিংস অ্যাপের মাধ্যমে একটি টিথারড ওয়াই-ফাই হটস্পটের ডিফল্ট বাস্তবায়ন করা হয়, তবে এটি সফট এপি কনফিগারেশনের জন্য প্রয়োজনীয় সমস্ত এপিআই ব্যবহার করে না।

হটস্পট বা শুধুমাত্র স্থানীয় হটস্পটের মাধ্যমে টিথারিং সমর্থন করার জন্য, অ্যাপটিকে অবশ্যই নিম্নলিখিত কাজগুলো সম্পাদন করতে হবে:

  1. টিথারড হটস্পটের জন্য WifiManager#registerSoftApCallback অথবা লোকাল-অনলি হটস্পটের জন্য WifiManager#registerLocalOnlyHotspotSoftApCallback ব্যবহার করে ডিভাইসের সক্ষমতা জানার জন্য একটি কলব্যাক রেজিস্টার করুন।

    SoftApCallback কলব্যাকটি নিম্নলিখিত মেথডগুলো প্রদান করে:

    • SoftApCallback#onCapabilityChanged : ডিভাইসের সক্ষমতা সম্পর্কে তথ্য প্রদান করে, যার মধ্যে রয়েছে সমর্থিত ক্লায়েন্টের সর্বোচ্চ সংখ্যা এবং SAE বা ACS সমর্থিত কিনা।
    • SoftApCallback#onInfoChanged : চলমান সফট এপি (Soft AP) সম্পর্কে তথ্য প্রদান করে (শুধুমাত্র চালু হওয়ার পরেই বৈধ), যার মধ্যে ব্যান্ড এবং ফ্রিকোয়েন্সির তথ্যও অন্তর্ভুক্ত।
    • SoftApCallback#onConnectedClientsChanged : সংযুক্ত ক্লায়েন্টদের একটি তালিকা প্রদান করে। প্রতিটি ক্লায়েন্টের জন্য, আপনি MAC অ্যাড্রেস পেতে পারেন। IP তথ্য পেতে, TetheringEventCallback#onClientsChanged কলব্যাকটি ব্যবহার করুন।
    • SoftApCallback#onStateChanged : সফট এপি (Soft AP) চালু এবং বন্ধ হওয়ার সময় এর অবস্থা সম্পর্কে আপডেট প্রদান করে।
    • SoftApCallback#onBlockedClientConnecting : ব্লক করার নিম্নলিখিত কারণগুলির মধ্যে একটি সহ ব্লক করা ক্লায়েন্টের তথ্য প্রদান করে: ডিভাইসটি তার সমর্থনযোগ্য সর্বোচ্চ সংখ্যক ক্লায়েন্টে পৌঁছে গেছে অথবা ক্লায়েন্টটি সংযোগ করার জন্য স্পষ্টভাবে অনুমোদিত নয়।
    • SoftApCallback#onClientsDisconnected : সংযোগ বিচ্ছিন্ন হওয়া ক্লায়েন্টদের একটি তালিকা প্রদান করে। প্রতিটি ক্লায়েন্টের সংযোগ বিচ্ছিন্ন হওয়ার কারণ জানা যায়।

টেদারড হটস্পটের জন্য:

  1. WifiManager#setSoftApConfiguration মেথডটি কল করে এবং একটি SoftApConfiguration ইনস্ট্যান্স প্রদান করে টিথারিংয়ের জন্য সফট এপি কনফিগারেশন সেট করুন। SoftApConfiguration.Builder ক্লাস ব্যবহার করে SoftApConfiguration তৈরি করুন।
  2. TetheringManager#startTethering এ থাকা tethering মেথডটি কল করে টিথারিং শুরু করুন।

শুধুমাত্র স্থানীয়দের জন্য হটস্পট:

  1. WifiManager#startLocalOnlyHotspot মেথডটি কল করে একটি নির্দিষ্ট সফট এপি কনফিগারেশন সহ শুধুমাত্র স্থানীয় হটস্পটটি চালু করুন।

অনুমতি এবং ব্লক তালিকা বাস্তবায়ন করুন

ক্যারিয়ারের একটি সাধারণ চাহিদা হলো, সফট এপি-র সাথে কোন কোন ডিভাইস যুক্ত হতে পারবে, তা ব্যবহারকারীকে নিয়ন্ত্রণ করার ক্ষমতা দেওয়া। এটি করার জন্য বেশ কয়েকটি পদ্ধতি রয়েছে:

  • SoftApConfiguration.Builder#setMaxNumberOfClients ব্যবহার করে সফট এপি-তে সংযুক্ত হতে পারে এমন ডিভাইসের সর্বোচ্চ সংখ্যা সীমিত করুন। নিশ্চিত করুন যে আপনি এমন একটি সংখ্যা উল্লেখ করেছেন যা ডিভাইস দ্বারা সমর্থিত ক্লায়েন্টের সর্বোচ্চ সংখ্যার চেয়ে কম। আপনি SoftApCapability#getMaxSupportedClients থেকে সর্বোচ্চ সংখ্যাটি পেতে পারেন।
  • allow এবং block তালিকা ব্যবহার করে গতিশীল নিয়ন্ত্রণ প্রদান করুন:

    • একটি সফট এপি-র ডিফল্ট কনফিগারেশন অনুযায়ী SoftApConfiguration.Builder#setBlockedClientList এ যেসব ডিভাইসের ম্যাক অ্যাড্রেস যোগ করা হয়েছে, সেগুলো ছাড়া বাকি সব ডিভাইস সফট এপি-টির সাথে যুক্ত হতে পারে।
    • যদি SoftAP-টি SoftApConfiguration.Builder#setClientControlByUserEnabled( true ) দিয়ে কনফিগার করা থাকে, তাহলে allow list-টি ব্যবহৃত হয়।
      • যেসব ডিভাইসের MAC অ্যাড্রেস SoftApConfiguration.Builder#setBlockedClientList এ রয়েছে, সেগুলোকে অ্যাসোসিয়েশন থেকে ব্লক করা হয়েছে।
      • যেসব ডিভাইসের MAC অ্যাড্রেস SoftApConfiguration.Builder#setAllowedClientList এ রয়েছে, সেই সমস্ত ডিভাইসকে অ্যাসোসিয়েশনের অনুমতি দেওয়া হয়েছে।
      • অন্য সব ডিভাইস (অর্থাৎ, যেসব ডিভাইসের MAC অ্যাড্রেস অনুমতি বা ব্লক তালিকায় নেই) সংযুক্ত হওয়া থেকে ব্লক করা থাকে, কিন্তু SoftApCallback#onBlockedClientConnecting কল করা হয়। এর ফলে নিয়ন্ত্রণকারী অ্যাপটি (অর্থাৎ, সেটিংস অ্যাপ) একটি পদক্ষেপ নিতে পারে; যেমন, ব্যবহারকারীর কাছে নিশ্চিতকরণের জন্য জিজ্ঞাসা করা এবং তারপর ব্যবহারকারীর আচরণের উপর নির্ভর করে ডিভাইসটিকে অনুমতি তালিকায় বা ব্লক তালিকায় যুক্ত করা।

    মনে রাখবেন যে ডিভাইসগুলি শুধুমাত্র তখনই allow list কার্যকারিতা ব্যবহার করতে পারবে, যদি এটি ডিভাইসে সমর্থিত থাকে। আপনি SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) ব্যবহার করে ডিভাইসের সমর্থন যাচাই করতে পারেন।

বাস্তবায়ন

হটস্পটের মাধ্যমে টিথারিং অথবা শুধুমাত্র স্থানীয় হটস্পট সমর্থন করার জন্য, ডিভাইস প্রস্তুতকারকদের অবশ্যই একটি সেটিংস অ্যাপ, ফ্রেমওয়ার্ক এবং HAL/ফার্মওয়্যার সমর্থন প্রদান করতে হবে:

  • সেটিংস অ্যাপ: অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP)-এর সেটিংস অ্যাপটি SSID এবং নিরাপত্তা ক্রেডেনশিয়াল ব্যবহার করে একটি টিথারিং হটস্পট কনফিগার করার জন্য একটি ভিত্তি প্রদান করে। এই কোডটি সরাসরি ব্যবহার করা যেতে পারে অথবা "হটস্পট এপিআই ব্যবহার করে অ্যাপ তৈরি" অংশে বর্ণিত পদ্ধতি অনুযায়ী অতিরিক্ত সক্ষমতা যোগ করার জন্য পরিবর্তন করা যেতে পারে।

  • ফ্রেমওয়ার্ক: AOSP ফ্রেমওয়ার্ক কোডটি “Developing apps with hotspot APIs” অংশে বর্ণিত সমস্ত কার্যকারিতা সমর্থন করে।

  • হটস্পটের জন্য 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 ) -এর মাধ্যমে নিয়ন্ত্রণকারী অ্যাপে (সেটিংস অ্যাপ) এটি জানানো হয়।
  • (১৩ থেকে উপলব্ধ) config_wifiSoftapPassphraseAsciiEncodableCheck : সফট এপি পাসফ্রেজটি ASCII এনকোডযোগ্য হওয়া প্রয়োজন কি না।
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : যখন কোনো নতুন ডিভাইস সমর্থিত হয়, তখন ক্লাউড কনফিগারেশন রিস্টোরের সময় ব্যান্ড সেটিং কনফিগারেশন স্বয়ংক্রিয়ভাবে ডুয়াল ব্যান্ডে আপগ্রেড করা হবে কি না।
  • (১৩ থেকে উপলব্ধ) 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
    • (১৩ থেকে উপলব্ধ) config_wifiSoftapOweTransitionSupported
    • (১৩ থেকে উপলব্ধ) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (১৩ থেকে উপলব্ধ) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

বৈধতা

অ্যান্ড্রয়েড হটস্পট ফিচারটি যাচাই করার জন্য একগুচ্ছ ইউনিট টেস্ট এবং কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) প্রদান করে। ভেন্ডর টেস্ট স্যুট (VTS) ব্যবহার করেও হটস্পট ফিচারটি পরীক্ষা করা যেতে পারে।

ইউনিট পরীক্ষা

নিম্নলিখিত পরীক্ষাগুলো ব্যবহার করে হটস্পট প্যাকেজটি যাচাই করুন।

  • পরিষেবা পরীক্ষা:

    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