অ্যান্ড্রয়েড ৮.০-তে যুক্ত হওয়া ওয়াই-ফাই অ্যাওয়্যার ফিচারটি সাপোর্টিং ডিভাইসগুলোকে ইন্টারনেট বা সেলুলার নেটওয়ার্ক অ্যাক্সেস ছাড়াই সরাসরি ওয়াই-ফাই অ্যাওয়্যার প্রোটোকল ব্যবহার করে একে অপরকে খুঁজে বের করতে, সংযুক্ত হতে এবং রেঞ্জ (অ্যান্ড্রয়েড ৯-এ যুক্ত) করতে সক্ষম করে। ওয়াই-ফাই অ্যালায়েন্স (WFA)-এর ওয়াই-ফাই অ্যাওয়্যার স্পেসিফিকেশনের (ভার্সন ২.০, ৩.০, ৩.১ এবং ৪.০) উপর ভিত্তি করে নির্মিত এই ফিচারটি, নেটওয়ার্কের বাইরে থাকা বিশ্বস্ত ডিভাইস এবং অ্যাপগুলোর মধ্যে উচ্চ-ক্ষমতাসম্পন্ন ডেটা আদান-প্রদানকে সহজতর করে।
অ্যান্ড্রয়েড ১৭ এবং এর পরবর্তী সংস্করণগুলিতে থাকা ওয়াই-ফাই অ্যাওয়্যার আর্কিটেকচারের বিস্তারিত বিবরণের জন্য, ওয়াই-ফাই অ্যাওয়্যার আর্কিটেকচার দেখুন।
উদাহরণ এবং উৎস
এই ফিচারটি ব্যবহার করার জন্য, ডিভাইস নির্মাতাদের ওয়াই-ফাই ভেন্ডর এইচএএল (Wi-Fi Vendor HAL) ইমপ্লিমেন্ট করতে হবে। অ্যান্ড্রয়েড ১৪ এবং তার পরবর্তী সংস্করণগুলোতে, ভেন্ডর এইচএএল ইন্টারফেসটি এআইডিএল (AIDL) ব্যবহার করে সংজ্ঞায়িত করা হয়। অ্যান্ড্রয়েড ১৩ এবং তার পূর্ববর্তী সংস্করণগুলোর জন্য, ভেন্ডর এইচএএল ইন্টারফেসটি এইচআইডিএল (HIDL) ব্যবহার করে সংজ্ঞায়িত করা হয়।
Wi-Fi Aware ফিচারটি ব্যবহার করতে Wi-Fi ইন্টারফেসটি অনুসরণ করুন। কোন ইন্টারফেসটি ব্যবহার করা হয়েছে তার উপর নির্ভর করে, এটি হতে পারে:
- AIDL:
hardware/interfaces/wifi/aidl - HIDL:
hardware/interfaces/wifi/1.2বা তার পরবর্তী সংস্করণ
AIDL এবং HIDL ইন্টারফেসগুলোর সাথে এর সম্পর্ক কীভাবে কাজ করে, তা দেখতে আপনি লিগ্যাসি Wi-Fi HAL-টি দেখতে পারেন: hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h ।
বাস্তবায়ন
ডিভাইস প্রস্তুতকারকদের ফ্রেমওয়ার্ক এবং HAL/ফার্মওয়্যার উভয় প্রকার সমর্থন প্রদান করতে হবে:
- কাঠামো:
- অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) কোড
- অ্যাওয়্যার সক্ষম করুন: এর জন্য একটি ফিচার ফ্ল্যাগ এবং একটি বিল্ড ফ্ল্যাগ উভয়ই প্রয়োজন।
- Wi-Fi Aware (NAN) HAL সমর্থন (যার জন্য ফার্মওয়্যার সমর্থনের প্রয়োজন)
এই বৈশিষ্ট্যটি বাস্তবায়ন করতে, ডিভাইস নির্মাতারা ওয়াই-ফাই ইন্টারফেসটি প্রয়োগ করে এবং দুটি ফিচার ফ্ল্যাগ সক্রিয় করে:
device/<oem>/<device>ফোল্ডারে অবস্থিতBoardConfig.mkঅথবাBoardConfig-common.mkফাইলে নিম্নলিখিত ফ্ল্যাগটি যোগ করুন:WIFI_HIDL_FEATURE_AWARE := truedevice/<oem>/<device>ফোল্ডারে অবস্থিতdevice.mkফাইলে, Wi-Fi Aware ফিচারটির সাপোর্ট অন্তর্ভুক্ত করার জন্যPRODUCT_COPY_FILESএনভায়রনমেন্ট ভেরিয়েবলটি পরিবর্তন করুন:PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
Wi-Fi Aware-এর মধ্যে IEEE 802.11mc প্রোটোকল ব্যবহার করে পিয়ার ডিভাইসগুলোর সাথে রেঞ্জিং অন্তর্ভুক্ত রয়েছে, যা রাউন্ড ট্রিপ টাইম (RTT) নামেও পরিচিত। Wi-Fi Aware-এর এই উপ-বৈশিষ্ট্যটি ডিভাইসের Wi-Fi RTT বৈশিষ্ট্য সমর্থনের উপর নির্ভরশীল, অর্থাৎ, এর জন্য ডিভাইসটিকে Wi-Fi Aware এবং Wi-Fi RTT উভয়ই সমর্থন করতে হবে। আরও বিস্তারিত জানতে, Wi-Fi RTT দেখুন।
অন্যথায়, এই বৈশিষ্ট্যের জন্য প্রয়োজনীয় সবকিছু AOSP-তে অন্তর্ভুক্ত রয়েছে।
যদি WIFI_HAL_INTERFACE_COMBINATIONS ফ্ল্যাগটি নির্দিষ্ট করা থাকে, তাহলে WIFI_HIDL_FEATURE_AWARE ফ্ল্যাগটি উপেক্ষা করা হয়। আরও তথ্যের জন্য, Wi-Fi মাল্টি-ইন্টারফেস কনকারেন্সি দেখুন।
MAC র্যান্ডমাইজেশন
অ্যান্ড্রয়েডের জন্য ওয়াই-ফাই অ্যাওয়্যার ডিসকভারি (NMI) এবং ডেটা ইন্টারফেসের (NDP) ম্যাক অ্যাড্রেস অবশ্যই র্যান্ডমাইজ করা থাকতে হবে এবং তা ডিভাইসের আসল ম্যাক অ্যাড্রেসের সাথে অভিন্ন হবে না। ম্যাক অ্যাড্রেসগুলো অবশ্যই হতে হবে:
- যখনই Wi-Fi Aware চালু বা পুনরায় চালু করা হয়, তখন এটি এলোমেলোভাবে নির্ধারিত হয়।
যখন Wi-Fi Aware সক্রিয় করা থাকে, তখন
NanConfigRequest.macAddressRandomizationIntervalSecপ্যারামিটার দ্বারা কনফিগার করা একটি নিয়মিত বিরতিতে MAC অ্যাড্রেসটি র্যান্ডমাইজ করতে হবে। ফ্রেমওয়ার্ক দ্বারা এটি ডিফল্টরূপে ৩০ মিনিটে কনফিগার করা থাকে।
স্থগিত করুন এবং পুনরায় শুরু করুন
অ্যান্ড্রয়েড ১৪ এবং এর পরবর্তী সংস্করণগুলোতে, ওয়াই-ফাই অ্যাওয়্যার (Wi-Fi Aware) ফিচারটি বিশেষ সুবিধাপ্রাপ্ত অ্যাপগুলোকে সক্রিয় ডিসকভারি সেশন (সেই সেশনগুলোর সাথে যুক্ত সমস্ত ডেটা পাথ সহ) স্থগিত এবং পুনরায় চালু করার ক্ষমতা প্রদান করে। এই ক্ষমতাটি সমর্থন করার ফলে ডিভাইসগুলো ডিসকভারি সেশন আরও দ্রুত পুনরায় চালু করতে পারে এবং কম শক্তি ব্যবহার করে, কারণ ডিসকভারি সেশনগুলো স্থগিত করা যায়।
যদি কোনো ডিভাইস এই সাসপেন্ড এবং রিজুম ক্ষমতা সমর্থন করে, তাহলে যখন কোনো প্রিভিলেজড অ্যাপ ডিসকভারি সেশন সাসপেন্ড করে, তখন ফার্মওয়্যারটি ওয়াই-ফাই অ্যাওয়্যার সেশনটিও সাসপেন্ড করে। যখন একটি ডিসকভারি সেশন সাসপেন্ডেড অবস্থায় থাকে, তখন ডিভাইসটি সেই সেশনের জন্য কোনো ফ্রেম প্রেরণ বা গ্রহণ করে না, যার মধ্যে সেই সেশনের কোনো সক্রিয় এনডিপি-ও অন্তর্ভুক্ত। যদি সমস্ত ডিসকভারি সেশন সাসপেন্ড করা থাকে, তাহলে ডিভাইসটি কোনো ওয়াই-ফাই অ্যাওয়্যার ফ্রেম প্রেরণ বা গ্রহণ করে না।
যখন কোনো প্রিভিলেজড অ্যাপ একটি সাসপেন্ডেড ডিসকভারি সেশন পুনরায় চালু করে, তখন ফ্রেমওয়ার্কটি সেশনটিকে তার পূর্ববর্তী অবস্থায় ফিরিয়ে দেয়, যার মধ্যে এর সাথে যুক্ত সমস্ত NDP সেশনও অন্তর্ভুক্ত থাকে। একটি সাসপেন্ডেড ডিসকভারি সেশন পুনরায় চালু করা, Wi-Fi Aware চালু করে একটি নতুন ডিসকভারি সেশন তৈরি করার চেয়ে দ্রুততর।
ডিসকভারি সেশন স্থগিত এবং পুনরায় চালু করার ক্ষমতা সমর্থন করার জন্য, ডিভাইস প্রস্তুতকারকদের অবশ্যই HAL এবং ফার্মওয়্যার সমর্থন প্রদান করতে হবে। বিস্তারিত জানতে, IWifiNanIface.java দেখুন।
ডিভাইস নির্মাতারা একাধিক ডিভাইসে সাসপেন্ড এবং রিজুম সিঙ্ক্রোনাইজ করতে আউট-অফ-ব্যান্ড কমিউনিকেশন (যেমন, BLE) ব্যবহার করতে পারেন।
বৈধতা
অ্যান্ড্রয়েড ওয়াই-ফাই অ্যাওয়্যার ফিচারটি যাচাই করার জন্য একগুচ্ছ ইউনিট টেস্ট, কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্ট এবং CTS ভেরিফায়ার টেস্ট প্রদান করে। ভেন্ডর টেস্ট স্যুট (VTS) ব্যবহার করেও ওয়াই-ফাই অ্যাওয়্যার পরীক্ষা করা যেতে পারে।
ইউনিট পরীক্ষা
Wi-Fi Aware প্যাকেজের পরীক্ষাগুলো নিম্নলিখিতভাবে চালানো হয়:
পরিষেবা পরীক্ষা:
atest com.android.server.wifi.awareব্যবস্থাপক পরীক্ষা:
atest android.net.wifi.awareসামঞ্জস্য পরীক্ষা স্যুট (CTS) পরীক্ষা
Wi-Fi Aware ফিচারটি যাচাই করতে CTS টেস্ট ব্যবহার করুন। ফিচারটি কখন চালু করা হয় তা CTS শনাক্ত করে এবং স্বয়ংক্রিয়ভাবে এর সাথে সম্পর্কিত টেস্টগুলো অন্তর্ভুক্ত করে।
নিম্নলিখিত উপায়ে CTS টেস্টগুলো চালু করা যেতে পারে:
atest SingleDeviceTestCTS ভেরিফায়ার পরীক্ষা
CTS ভেরিফায়ার টেস্ট দুটি ডিভাইস ব্যবহার করে Wi-Fi Aware-এর কার্যকারিতা যাচাই করে: একটি পরীক্ষামূলক ডিভাইস এবং একটি পরিচিত ভালো ডিভাইস। টেস্টগুলো চালানোর জন্য, CTS ভেরিফায়ার খুলুন এবং 'Wi-Fi Aware Tests' শিরোনামের বিভাগে যান।