অ্যান্ড্রয়েড ১২-এ চালু হওয়া ওয়াই-ফাই এবং সেলুলার কোএক্স চ্যানেল এভয়ডেন্স ফিচারটি, সেলুলার চ্যানেল থেকে বা তাতে ইন্টারফেয়ারেন্স হওয়ার সম্ভাবনা থাকলে, অনিরাপদ ওয়াই-ফাই চ্যানেল শনাক্ত করে এবং সেগুলো ব্যবহার করা এড়িয়ে চলে। এর মধ্যে STA, SoftAp, Wi-Fi Direct (P2P), এবং Wi-Fi Aware (NAN)-এর মতো ইন্টারফেসগুলো অন্তর্ভুক্ত।
এই পৃষ্ঠায় নিম্নলিখিত বিষয়গুলো আলোচনা করা হয়েছে:
- সেলুলার মোডেমকে অবশ্যই অ্যান্ড্রয়েড ফ্রেমওয়ার্ককে তথ্য জানাতে হবে।
- কোন ওয়াই-ফাই চ্যানেলগুলো এড়িয়ে চলতে হবে তা নির্ধারণ করতে ওয়াই-ফাই ফ্রেমওয়ার্ক যে অ্যালগরিদমগুলো ব্যবহার করে।
- ওয়াই-ফাই ফ্রেমওয়ার্কের জন্য ডিভাইস প্রস্তুতকারকদের অবশ্যই সরবরাহ করতে হবে এমন কনফিগারেশন টেবিল।
- চ্যানেল এভয়ডেন্স ফিচারের সাথে সম্পর্কিত সিস্টেম এপিআই, কনফিগারেশন এবং এইচএএল এপিআই।
- চ্যানেল পরিহার মোকাবেলার জন্য ফ্রেমওয়ার্কের আচরণ।
- চ্যানেল পরিহার মোকাবেলায় চিপ বিক্রেতার আচরণ
- চ্যানেল পরিহারের বাস্তবায়ন বিবরণ।
- চ্যানেল পরিহার আচরণ যাচাই করার পরীক্ষা।
পটভূমি
LTE, 5G NR, এবং Licensed Assisted Access (LAA)-এর মতো সেলুলার প্রযুক্তিযুক্ত ডিভাইসগুলির ক্ষেত্রে, ব্যবহৃত সেলুলার চ্যানেলগুলি ব্যবহৃত Wi-Fi চ্যানেলের কাজে হস্তক্ষেপ করতে পারে। এটি ঘটে যখন সেলুলার এবং Wi-Fi চ্যানেলগুলির মধ্যে ফ্রিকোয়েন্সির ব্যবধান কম থাকে (পার্শ্ববর্তী চ্যানেল) অথবা যখন হারমোনিক এবং ইন্টারমডুলেশন ইন্টারফেয়ারেন্স হয়।
এই ধরনের হস্তক্ষেপ তখনই সমস্যা হয়ে দাঁড়ায় যখন একটি অ্যান্টেনা একই সময়ে সংকেত প্রেরণ করে এবং অন্যটি গ্রহণ করে। এক্ষেত্রে, সংকেত প্রেরণকারী অ্যান্টেনাটি গ্রহণকারী অ্যান্টেনার উপর অতিরিক্ত সংকেত চাপিয়ে দেয়, যা এর সংকেত গ্রহণের মানকে প্রভাবিত করে।
এই নথিতে হস্তক্ষেপকারী ট্রান্সমিটারকে অ্যাগ্রেসর (aggressor) এবং হস্তক্ষেপের শিকার হওয়া রিসিভারকে ভিকটিম (victim) হিসেবে উল্লেখ করা হয়েছে। যে ওয়াই-ফাই চ্যানেলটি অ্যাগ্রেসর অথবা ভিকটিম, তাকে একটি অনিরাপদ চ্যানেল (unsafe channel) হিসেবে উল্লেখ করা হয়।
ওয়াই-ফাই এবং সেলুলার কোএক্স চ্যানেল এভয়ডেন্স ফিচারটি চ্যানেল এভয়ডেন্সের জন্য একটি সামঞ্জস্যপূর্ণ পদ্ধতি প্রদান করে, যা ওয়াই-ফাই ফ্রেমওয়ার্ক থেকে ভিন্ন কোনো মালিকানাধীন কোডের প্রয়োজনীয়তা হ্রাস করে। এছাড়াও, এই ফিচারটি ডিভাইস নির্মাতাদেরকে এটি কনফিগার, সক্রিয় ও নিষ্ক্রিয় করতে এবং ওভাররাইড করার সুযোগ দেয়।
এই ফিচারটি ওয়াই-ফাই চ্যানেলগুলো নিয়ন্ত্রণের মাধ্যমে চ্যানেল পরিহারের কাজটি করে। ওয়াই-ফাই চ্যানেল পরিহারের এই পদ্ধতিটিকে চারটি বিমূর্ত ধাপের একটি ধারাবাহিকতা হিসেবে বর্ণনা করা যেতে পারে:
- মোডেম সেলুলার ফ্রিকোয়েন্সির পরিবর্তন রিপোর্ট করে।
- কোএক্স এভয়ডেন্স অ্যালগরিদম অনিরাপদ ওয়াই-ফাই চ্যানেলগুলো গণনা করে
- কোএক্স পরিহার অ্যালগরিদম ওয়াই-ফাই পরিষেবা সম্পর্কে অবহিত করে
- ফ্রেমওয়ার্ক বা ড্রাইভার যথাযথ ওয়াই-ফাই কার্যক্রম সম্পাদন করে।

চিত্র ১. চ্যানেল পরিহার পরিকল্পনা
সেলুলার ফ্রিকোয়েন্সির পরিবর্তন রিপোর্ট করুন
টেলিফোনি পরিষেবা ব্যবহৃত সেলুলার চ্যানেলগুলোর তথ্য জানায়। যখন ব্যবহৃত সেলুলার ফ্রিকোয়েন্সি পরিবর্তিত হয়, তখন মডেমটি IRadio::PhysicalChannelConfig এর মাধ্যমে এই তথ্য টেলিফোনি পরিষেবাতে পাঠায়। এই তথ্যে লাইসেন্সড অ্যাসিস্টেড অ্যাক্সেস (LAA) এবং ক্যারিয়ার অ্যাগ্রিগেশন (CA)-এর নির্দেশনা অন্তর্ভুক্ত থাকে।
অ্যান্ড্রয়েড ১২ থেকে, 1.6 IRadio::PhysicalChannelConfig এর নিম্নলিখিত ফিল্ডগুলো কোএক্স ফর্মুলার জন্য প্রয়োজনীয় তথ্য সরবরাহ করে, যা মডেমকে অবশ্যই পূরণ করতে হয়।
struct PhysicalChannelConfig {
/** Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING */
CellConnectionStatus status;
/** The radio technology for this physical channel */
RadioTechnology rat;
/** Downlink Absolute Radio Frequency Channel Number */
int32_t channelNumberDownlink;
/** Uplink Absolute Radio Frequency Channel Number */
int32_t channelNumberUplink;
/** Downlink cell bandwidth, in kHz */
int32_t cellBandwidthDownlink;
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplink;
}
অনিরাপদ ওয়াই-ফাই চ্যানেল গণনা করুন
যখন মডেম সেলুলার ফ্রিকোয়েন্সিতে পরিবর্তনের সংকেত দেয়, তখন কোএক্স চ্যানেল অ্যালগরিদম সেলুলার ও ওয়াই-ফাই চ্যানেলের মধ্যেকার ইন্টারফেরেন্স গণনা করে এবং কোন ওয়াই-ফাই চ্যানেলগুলো অনিরাপদ তা নির্ধারণ করে।
বিভিন্ন ধরণের ইন্টারফেরেন্স রয়েছে, যেমন: নেইবারিং (প্রতিবেশীসুলভ) এবং হারমোনিক/ইন্টারমডুলেশন (হারমোনিক/আন্তঃমডুলেশন )। ডিভাইসগুলোর অ্যান্টেনা এবং লেআউটের ভৌত পার্থক্যের কারণে, প্রতিটি ডিভাইসের জন্য নেইবারিং এবং হারমোনিক/আন্তঃমডুলেশন ইন্টারফেরেন্সের ধরণ ভিন্ন হয়। এই বিষয়টি বিবেচনা করার জন্য, ডিভাইস প্রস্তুতকারকদের অবশ্যই একটি লুকআপ টেবিল সরবরাহ করতে হয়, যেখানে দুই ধরণের ইন্টারফেরেন্সের জন্য জেনেরিক ফর্মুলাগুলোতে প্যারামিটার বসানো যায়। এই প্যারামিটারগুলো প্রতিটি সেল ব্যান্ডের জন্য সংজ্ঞায়িত করা হয় এবং সক্রিয় সেল চ্যানেলগুলোর ব্যান্ড দ্বারা এগুলোকে রেফারেন্স করা হয়।
লুকআপ টেবিলে একটি সর্বোচ্চ পাওয়ার ক্যাপ নির্ধারণ করা যেতে পারে। যদি তা নির্ধারণ করা থাকে, তবে একটি অনিরাপদ চ্যানেল নির্দিষ্ট পাওয়ার ক্যাপ অনুযায়ী ট্রান্সমিট করে। অন্যথায়, চ্যানেলটি পূর্ণ শক্তিতে ট্রান্সমিট করে।
সাধারণত, চ্যানেল এভয়ডেন্স ফিচারটি পারফরম্যান্স অপ্টিমাইজ করার জন্য অনিরাপদ ওয়াই-ফাই চ্যানেলগুলো এড়িয়ে চলতে একটি বেস্ট এফোর্ট অ্যাপ্রোচ ব্যবহার করে। কিন্তু কিছু ক্ষেত্রে (উদাহরণস্বরূপ, ক্যারিয়ারের প্রয়োজনীয়তার কারণে), নির্দিষ্ট সেলুলার ব্যান্ডের জন্য কিছু ইন্টারফেসের অনিরাপদ চ্যানেল এড়িয়ে চলা বাধ্যতামূলক হয়ে পড়ে। এই ধরনের ক্ষেত্রে, বাধ্যতামূলক বিধিনিষেধগুলো একটি বিটমাস্ক হিসাবে উপস্থাপিত হয়, যেখানে ওয়াই-ফাই ডিরেক্ট (P2P), সফটএপি, এবং ওয়াই-ফাই অ্যাওয়্যার (NAN)-এর মতো নির্দিষ্ট চ্যানেল নিষিদ্ধ করা হবে কিনা তার মান থাকে। যেখানে একটি অনিরাপদ চ্যানেল সমস্ত ব্যবহারের ক্ষেত্রে সেই চ্যানেলটি ব্যবহার না করার জন্য একটি সুপারিশ হিসাবে কাজ করে, সেখানে বাধ্যতামূলক বিধিনিষেধগুলো বাধ্যতামূলকভাবে এড়িয়ে চলার জন্য নির্দিষ্ট ব্যবহারের ক্ষেত্রগুলোকে চিহ্নিত করে।
যদি ২.৪ গিগাহার্টজ বা ৫ গিগাহার্টজ ব্যান্ডের প্রতিটি চ্যানেলকে অনিরাপদ হিসেবে চিহ্নিত করা হয়, তাহলে লুকআপ টেবিলটি প্রতিটি হস্তক্ষেপকারী সেল ব্যান্ডের জন্য সবচেয়ে নিরাপদ বিকল্প হিসেবে একটি ডিফল্ট ২.৪ গিগাহার্টজ চ্যানেল বা একটি ডিফল্ট ৫ গিগাহার্টজ চ্যানেল নির্ধারণ করতে পারে। যখন ব্যান্ডের বাকি অংশকে অনিরাপদ হিসেবে রিপোর্ট করা হয়, তখন এই ডিফল্ট চ্যানেলগুলোকে অনিরাপদ চ্যানেল হিসেবে রিপোর্ট করা হয় না।
ওভাররাইড তালিকা
যেসব ক্ষেত্রে ইন্টারফেরেন্স ব্যাপকভাবে ব্যান্ডউইথের উপর নির্ভরশীল, সেখানে একটি সূত্রভিত্তিক পদ্ধতির সীমাবদ্ধতা রয়েছে (এবং এর ফলে বেশি ব্যান্ডউইথের চ্যানেলগুলো অনিরাপদ হতে পারে, কিন্তু কম ব্যান্ডউইথের চ্যানেলগুলো নয়)। LAA-এর মতো ক্ষেত্রে, গণনা বাদ দিয়ে অনিরাপদ চ্যানেলের একটি নির্দিষ্ট তালিকা ব্যবহার করা সুবিধাজনক।
এটি করার জন্য, আপনি নির্দিষ্ট এন্ট্রির জন্য লুকআপ টেবিলে অনিরাপদ চ্যানেলগুলির একটি ওভাররাইড তালিকা নির্দিষ্ট করতে পারেন। একটি টেবিল এন্ট্রিতে ওভাররাইড তালিকা থাকলে তা নির্দেশ করে যে সেই নির্দিষ্ট সেল চ্যানেলের জন্য গণনাটি এড়িয়ে যাওয়া হবে। এর পরিবর্তে, ওভাররাইড তালিকাটি সংশ্লিষ্ট সেল চ্যানেলের জন্য অনিরাপদ ওয়াই-ফাই চ্যানেলগুলিকে স্পষ্টভাবে নির্দিষ্ট করে দেয়।
ব্যান্ডউইথ-সংবেদনশীল ক্ষেত্রগুলির জন্য, আপনি ওভাররাইড তালিকায় নির্দিষ্ট ব্যান্ডউইথসহ নির্দিষ্ট চ্যানেল উল্লেখ করে বেছে বেছে কিছু ব্যান্ডউইথ এড়িয়ে যেতে পারেন। এর কারণ হলো, প্রতিটি ওয়াই-ফাই চ্যানেল নম্বর একটি নির্দিষ্ট ব্যান্ডউইথের সাথে সম্পর্কিত।
ওভাররাইড তালিকাটি প্রতিটি ওয়াই-ফাই ব্যান্ডের জন্য চ্যানেল নম্বর বা পূর্বনির্ধারিত ক্যাটাগরি কীওয়ার্ডের একটি তালিকা দ্বারা উপস্থাপিত হয়:
২ গ্রাম বিভাগসমূহ:
-
all(সম্পূর্ণ ২.৪ গিগাহার্টজ ব্যান্ড)
৫ গ্রাম বিভাগসমূহ:
-
all(সম্পূর্ণ ৫ গিগাহার্টজ ব্যান্ড) -
20mhz(৫ গিগাহার্টজ ২০ মেগাহার্টজ চ্যানেল) -
40mhz(৫ গিগাহার্টজ ৪০ মেগাহার্টজ চ্যানেল) -
80mhz(৫ গিগাহার্টজ ৮০ মেগাহার্টজ চ্যানেল) -
160mhz(৫ গিগাহার্টজ ১৬০ মেগাহার্টজ চ্যানেল)
পার্শ্ববর্তী চ্যানেলের হস্তক্ষেপ
পার্শ্ববর্তী চ্যানেলের হস্তক্ষেপ নির্ধারণ করতে, কোএক্স এভয়ডেন্স অ্যালগরিদম নিশ্চিত করে যে একটি অ্যাগ্রেসর এবং ভিকটিম চ্যানেলের মধ্যবর্তী দূরত্ব ΔF একটি নির্দিষ্ট থ্রেশহোল্ডের নিচে নেমে না যায়।

চিত্র ২. আক্রমণকারী এবং শিকার চ্যানেলের মধ্যে দূরত্ব
ডিভাইসের ভৌত কনফিগারেশন এবং প্রতিটি হস্তক্ষেপকারী ব্যান্ডের জন্য লুকআপ টেবিল এন্ট্রিতে প্রদত্ত থ্রেশহোল্ড মানের উপর ভিত্তি করে থ্রেশহোল্ডটি নির্ধারিত হয়। যে ব্যান্ডগুলোকে হস্তক্ষেপহীন বলে মনে করা হয়, সেগুলোর কোনো টেবিল এন্ট্রি থাকে না এবং অনিরাপদ চ্যানেলগুলো গণনা করার প্রয়োজন হয় না (বেশিরভাগ ক্ষেত্রেই এমনটা ঘটে)।
পার্শ্ববর্তী হস্তক্ষেপ পরামিতি
-
wifiVictimMhz: ওয়াই-ফাই ভিকটিমের জন্য মেগাহার্টজ দূরত্বের সীমা (সেল আপলিংক) -
cellVictimMhz: একটি সেল ভিকটিমের জন্য মেগাহার্টজ দূরত্বের থ্রেশহোল্ড (সেল ডাউনলিঙ্ক)
প্রতিটি সক্রিয় সেল চ্যানেলের জন্য অ্যালগরিদমটি নিম্নরূপ আচরণ করে:
- চ্যানেলটির ব্যান্ডের জন্য, একটি লুকআপ টেবিল এন্ট্রি খোঁজার চেষ্টা করা হয়। যদি কোনো টেবিল এন্ট্রি খুঁজে না পাওয়া যায়, তবে সেই সেল চ্যানেলটির জন্য কোনো অনিরাপদ চ্যানেল নেই বলে জানানো হয়।
- সেলুলার ব্যান্ডের উপর ভিত্তি করে শনাক্ত করে যে কোন ওয়াই-ফাই ব্যান্ডটি ঝুঁকিপূর্ণ এবং ব্যান্ডের কোন দিক থেকে হস্তক্ষেপ আসছে (উদাহরণস্বরূপ, নিম্ন ২.৪ গিগাহার্টজ চ্যানেল, উচ্চ ২.৪ গিগাহার্টজ চ্যানেল, নিম্ন ৫ গিগাহার্টজ চ্যানেল)।
যদি
wifiVictimMhzউপস্থিত থাকে এবং সেল চ্যানেলে আপলিঙ্ক থাকে এবংযদি ওয়াই-ফাই ব্যান্ডের নিম্ন অংশ ঝুঁকিপূর্ণ থাকে:
- সেল আপলিংকের সর্বোচ্চ ফ্রিকোয়েন্সির সাথে
wifiVictimMhzযোগ করে অনিরাপদ চ্যানেলগুলোর ঊর্ধ্বসীমা খুঁজে বের করে। - প্রথম এমন ২০ মেগাহার্টজ ওয়াই-ফাই চ্যানেল খুঁজে বের করে, যার নিম্ন প্রান্ত সীমার সাথে ওভারল্যাপ করে।
- ওয়াই-ফাই চ্যানেল, এটিকে অন্তর্ভুক্তকারী প্রতিটি বৃহত্তর ব্যান্ডউইথের চ্যানেল (উদাহরণস্বরূপ, ৪০ মেগাহার্টজ, ৮০ মেগাহার্টজ), এবং একই ব্যান্ডের প্রতিটি নিম্নতর চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
- সেল আপলিংকের সর্বোচ্চ ফ্রিকোয়েন্সির সাথে
যদি ওয়াই-ফাই ব্যান্ডের উপরের অংশ ঝুঁকিপূর্ণ থাকে:
- সেল আপলিংকের সর্বনিম্ন ফ্রিকোয়েন্সি থেকে wifiVictimMhz বিয়োগ করে অনিরাপদ চ্যানেলগুলির নিম্ন সীমা খুঁজে বের করে।
- প্রথম এমন ওয়াই-ফাই চ্যানেল খুঁজে বের করে যার উপরের প্রান্তটি সীমার সাথে ওভারল্যাপ করে।
- ওয়াই-ফাই চ্যানেল, এটিকে অন্তর্ভুক্তকারী প্রতিটি বৃহত্তর চ্যানেল (উদাহরণস্বরূপ, ৪০ মেগাহার্টজ, ৮০ মেগাহার্টজ), এবং একই ব্যান্ডের প্রতিটি উচ্চতর চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
যদি
cellVictimMhzউপস্থিত থাকে এবং সেল চ্যানেলে ডাউনলিঙ্ক থাকে:- এটি
cellVictimMhzথ্রেশহোল্ড হিসেবে ব্যবহার করে ধাপ ৩ সম্পাদন করে এবং সেল আপলিংকের পরিবর্তে সেল ডাউনলিংকের সাথে তুলনা করে।
- এটি
এটি গণনাকৃত অনিরাপদ চ্যানেলগুলিতে টেবিল এন্ট্রির পাওয়ার ক্যাপ প্রয়োগ করে।

চিত্র ৩. পার্শ্ববর্তী চ্যানেলের হস্তক্ষেপের কারণে অনিরাপদ চ্যানেল গণনা।
হারমোনিক বা ইন্টারমডুলেশন বিকৃতি
হারমোনিক বা ইন্টারমডুলেশন ডিস্টরশনের ক্ষেত্রে, কোএক্স ইঞ্জিন হারমোনিক বা ইন্টারমডুলেশন সিগন্যালের পরিসর গণনা করে এবং একটি সম্ভাব্য ভিকটিম চ্যানেলের সাথে এর শতকরা ওভারল্যাপ মূল্যায়ন করে। যদি ওভারল্যাপ একটি ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করে, তবে অ্যালগরিদম এটিকে একটি অনিরাপদ পরিস্থিতি হিসেবে বিবেচনা করে। একটি ভিকটিম চ্যানেলে হারমোনিক বা ইন্টারমডুলেশন ডিস্টরশনের শতকরা ওভারল্যাপের গণনা নিম্নলিখিত সমীকরণের মাধ্যমে করা হয়:
হারমোনিক ডিস্টরশনের ক্ষেত্রে, অ্যালগরিদমটি ওয়াই-ফাই চ্যানেল দ্বারা প্রভাবিত একটি সেল আপলিঙ্ক চ্যানেলের হারমোনিক ডিস্টরশন বিবেচনা করে। এরপর এটি সেল আপলিঙ্ক ফ্রিকোয়েন্সি এবং একটি হারমোনিক মাত্রা $N$-এর উপর ভিত্তি করে হারমোনিক মানগুলো দিয়ে ডিস্টরশন হাই এবং ডিস্টরশন লো প্রতিস্থাপন করে।

চিত্র ৪. হারমোনিক বিকৃতির জন্য অনিরাপদ চ্যানেল গণনা।
ইন্টারমডুলেশনের ক্ষেত্রে, অ্যালগরিদমটি সেল আপলিংক এবং ওয়াই-ফাই চ্যানেলের ইন্টারমডুলেশন বিকৃতি বিবেচনা করে, যা সেল ডাউনলিংক চ্যানেলকে ক্ষতিগ্রস্ত করে। এরপর এটি সেল আপলিংক ফ্রিকোয়েন্সি, ওয়াই-ফাই ফ্রিকোয়েন্সি এবং দুটি ইন্টারমডুলেশন সহগ $ M $, $ N $ এর উপর ভিত্তি করে ইন্টারমডুলেশন মান দ্বারা বিকৃতি উচ্চ এবং বিকৃতি নিম্ন প্রতিস্থাপন করে।

চিত্র ৫. ইন্টারমডুলেশন বিকৃতির জন্য অনিরাপদ চ্যানেল গণনা।
আপনি প্রতিটি হস্তক্ষেপকারী সেল ব্যান্ডের জন্য লুকআপ টেবিলে $M$, $N$ এবং ওভারল্যাপ মান নির্দিষ্ট করতে পারেন। যদি কোনো ব্যান্ডের জন্য কোনো হস্তক্ষেপ না থাকে, তাহলে সেই ব্যান্ড এন্ট্রির জন্য মানগুলি টেবিল থেকে বাদ দেওয়া হয়। Wi-Fi 2.4 GHz এবং 5 GHz ব্যান্ডের জন্য এই মানগুলির দুটি সেট স্বাধীনভাবে সংজ্ঞায়িত করা যেতে পারে।
পার্শ্ববর্তী হস্তক্ষেপ অ্যালগরিদমের মতোই, এই অ্যালগরিদমও প্রতিটি হস্তক্ষেপকারী সেল ব্যান্ডের জন্য সংজ্ঞায়িত একই পাওয়ার ক্যাপ মান পুনরায় ব্যবহার করে।
প্রতিটি সক্রিয় সেল চ্যানেলের জন্য অ্যালগরিদমটি নিম্নরূপ আচরণ করে:
- সেল চ্যানেলের ব্যান্ডের জন্য, এটি একটি লুকআপ টেবিল এন্ট্রি খোঁজার চেষ্টা করে। যদি কোনো টেবিল এন্ট্রি খুঁজে না পাওয়া যায়, তবে এই চ্যানেলের জন্য কোনো অনিরাপদ চ্যানেল নেই বলে ফেরত পাঠায়।
প্যারামিটার সংজ্ঞায়িত থাকলে, হারমোনিক্সের মাধ্যমে অনিরাপদ ২.৪ গিগাহার্টজ চ্যানেলগুলো খুঁজে বের করে।
- ২.৪ গিগাহার্টজ-এর জন্য হারমোনিক ডিগ্রি N নির্ণয় করে।
- N এবং সেল আপলিংকের উপর ভিত্তি করে হারমোনিক উচ্চ কম্পাঙ্ক এবং হারমোনিক নিম্ন কম্পাঙ্ক গণনা করে।
- নিচ থেকে আসা হারমোনিকের নিম্ন সীমার মধ্যে থাকা প্রথম ২০ মেগাহার্টজ ওয়াই-ফাই চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করলে চ্যানেলটিকে অনিরাপদ হিসেবে চিহ্নিত করে।
- উপর থেকে আসা হারমোনিকের ঊর্ধ্বসীমার মধ্যে থাকা প্রথম ২০ মেগাহার্টজ ওয়াই-ফাই চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করলে চ্যানেলটিকে অনিরাপদ হিসেবে চিহ্নিত করে।
- মাঝের প্রতিটি ২০ মেগাহার্টজ চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
প্যারামিটার সংজ্ঞায়িত থাকলে, হারমোনিক্স থেকে অনিরাপদ ৫ গিগাহার্টজ চ্যানেলগুলো খুঁজে বের করে।
- ৫ গিগাহার্টজ-এর জন্য হারমোনিক ডিগ্রি N নির্ণয় করে। যদি N-এর মান ০ হয়, তবে সরাসরি ৫ নং ধাপে চলে যায়।
- N এবং সেল আপলিংকের উপর ভিত্তি করে হারমোনিক উচ্চ কম্পাঙ্ক এবং হারমোনিক নিম্ন কম্পাঙ্ক গণনা করে।
অনিরাপদ ২০ মেগাহার্টজ চ্যানেল খুঁজে পায়।
- নিচ থেকে আসা হারমোনিকের নিম্ন সীমার মধ্যে থাকা প্রথম ২০ মেগাহার্টজ ওয়াই-ফাই চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করলে চ্যানেলটিকে অনিরাপদ হিসেবে চিহ্নিত করে।
- উপর থেকে আসা হারমোনিকের ঊর্ধ্বসীমার মধ্যে থাকা প্রথম ২০ মেগাহার্টজ ওয়াই-ফাই চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করলে চ্যানেলটিকে অনিরাপদ হিসেবে চিহ্নিত করে।
- মাঝের প্রতিটি ২০ মেগাহার্টজ চ্যানেলকে নির্দিষ্ট পাওয়ার ক্যাপ সহ একটি অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
অনিরাপদ ৪০ মেগাহার্টজ, ৮০ মেগাহার্টজ, ১৬০ মেগাহার্টজ চ্যানেল খুঁজে পায়
- ধাপ 3a-এর পুনরাবৃত্তি করা হয়, কিন্তু 40 MHz, 80 MHz, 160 MHz ব্যবহার করে।
- হারমোনিক এজে চ্যানেলগুলোর ওভারল্যাপ গণনা করার পরিবর্তে, এটি ক্ষুদ্রতর গঠনকারী চ্যানেলগুলো থেকে গণনাকৃত ওভারল্যাপগুলোকে পুনরায় ব্যবহার করে (উদাহরণস্বরূপ, যদি দুটি ২০ মেগাহার্টজ চ্যানেল মিলে একটি ৪০ মেগাহার্টজ চ্যানেল তৈরি করে এবং তাদের মধ্যে ৩০% ও ৯০% ওভারল্যাপ থাকে, তাহলে ৪০ মেগাহার্টজ চ্যানেলটির গড় ওভারল্যাপ হবে ৬০%)।
প্যারামিটার সংজ্ঞায়িত থাকলে, ইন্টারমডুলেশন থেকে অনিরাপদ ২.৪ গিগাহার্টজ চ্যানেলগুলো খুঁজে বের করে।
- ২.৪ গিগাহার্জের জন্য আন্তঃমডুলেশন সহগ N, M নির্ণয় করুন।
প্রতিটি ২.৪ গিগাহার্টজ ওয়াই-ফাই চ্যানেলের জন্য:
- N, M, সেল আপলিঙ্ক এবং Wi-Fi চ্যানেলের উপর ভিত্তি করে ইন্টারমডুলেশন লো ফ্রিকোয়েন্সি এবং ইন্টারমডুলেশন হাই ফ্রিকোয়েন্সি গণনা করে।
- সেল ডাউনলিংকের উপর ইন্টারমডুলেশনের ওভারল্যাপ গণনা করে এবং যদি ওভারল্যাপটি ২.৪ গিগাহার্টজ সেল ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করে, তবে চ্যানেলটিকে অনিরাপদ হিসেবে চিহ্নিত করে।
প্যারামিটার সংজ্ঞায়িত থাকলে, ইন্টারমডুলেশন থেকে অনিরাপদ ৫ গিগাহার্টজ চ্যানেলগুলো খুঁজে বের করে।
- ৫ গিগাহার্টজ ওয়াই-ফাই চ্যানেল এবং ৫ গিগাহার্টজ সেল ওভারল্যাপ থ্রেশহোল্ড ব্যবহার করে ধাপ ৪-এর পুনরাবৃত্তি করে।
গণনাকৃত অনিরাপদ চ্যানেলগুলিতে টেবিল এন্ট্রির পাওয়ার ক্যাপ প্রয়োগ করে।
চূড়ান্ত ফলাফল
পার্শ্ববর্তী ও হারমোনিক ইন্টারফারেন্স থেকে সৃষ্ট উভয় সেট অনিরাপদ চ্যানেল গণনা করার পর, উভয় সেটের সংযোগ নিয়ে চূড়ান্ত সেটটি গণনা করা হয় (এবং সংঘর্ষ থাকলে নিম্নতর পাওয়ার ক্যাপটি নির্বাচন করা হয়), এবং কোনো বাধ্যতামূলক বিধিনিষেধ প্রয়োগ করা না থাকলে সেটটি থেকে ডিফল্ট চ্যানেলগুলো সরিয়ে দেওয়া হয়।
অ্যালগরিদমটি নিম্নরূপ আচরণ করে:
- যদি প্রতিটি ২.৪ গিগাহার্টজ ওয়াই-ফাই চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করা হয়, তাহলে সেট থেকে ডিফল্ট ২.৪ গিগাহার্টজ ওয়াই-ফাই চ্যানেলটি সরিয়ে দেওয়া হয়।
- যদি প্রতিটি ৫ গিগাহার্টজ ওয়াই-ফাই চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করা হয়, তাহলে সেট থেকে ডিফল্ট ৫ গিগাহার্টজ ওয়াই-ফাই চ্যানেলটি সরিয়ে দেওয়া হয়।
- অনিরাপদ চ্যানেলগুলোর চূড়ান্ত সেটটি ফেরত দেয়।
লুকআপ টেবিল ফরম্যাট
লুকআপ টেবিলগুলো config_wifiCoexTableFilepath নামক ওভারলেযোগ্য কনফিগারেশন স্ট্রিং-এ অবস্থিত একটি XML ফাইলে উপস্থাপিত থাকে এবং এটি নিম্নলিখিত XSD দ্বারা সংজ্ঞায়িত।
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xsd:element name="table">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="entry" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="entry">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rat" type="ratType"/>
<xsd:element name="band" type="xsd:int"/>
<xsd:element name="powerCapDbm" type="xsd:int" minOccurs="0"/>
<xsd:choice>
<xsd:element ref="params"/>
<xsd:element ref="override"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="ratType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="LTE"/>
<xsd:enumeration value="NR"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Define coex algorithm parameters -->
<xsd:element name="params">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="neighborThresholds" minOccurs="0"/>
<xsd:element name="harmonicParams2g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="harmonicParams5g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="intermodParams2g" type="intermodParams" minOccurs="0"/>
<xsd:element name="intermodParams5g" type="intermodParams" minOccurs="0"/>
<xsd:element ref="defaultChannels" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="neighborThresholds">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wifiVictimMhz" type="xsd:int" minOccurs="0"/>
<xsd:element name="cellVictimMhz" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="harmonicParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="intermodParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="M" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="defaultChannels">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="default2g" type="xsd:int" minOccurs="0"/>
<xsd:element name="default5g" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Define algorithm override lists -->
<xsd:element name="override">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="override2g" minOccurs="0"/>
<xsd:element ref="override5g" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override2g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory2g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override5g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory5g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="overrideCategory2g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="overrideCategory5g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
<xsd:enumeration value="20Mhz"/>
<xsd:enumeration value="40Mhz"/>
<xsd:enumeration value="80Mhz"/>
<xsd:enumeration value="160Mhz"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
উদাহরণ XML টেবিল
নিম্নলিখিতটি একটি XML লুকআপ টেবিলের উদাহরণ:
<table>
<!-- Entry using algorithm parameters -->
<entry>
<rat>LTE</rat>
<band>40</band>
<powerCapDbm>50</powerCapDbm>
<params>
<neighborThresholds>
<wifiVictimMhz>25</wifiVictimMhz>
<cellVictimMhz>40</cellVictimMhz>
</neighborThresholds>
<harmonicParams2g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams2g>
<harmonicParams5g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams5g>
<intermodParams2g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams2g>
<intermodParams5g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams5g>
<defaultChannels>
<default2g>6</default2g>
<default5g>36</default5g>
</defaultChannels>
</params>
</entry>
<!-- Entry using the override list -->
<entry>
<rat>LTE</rat>
<band>41</band>
<powerCapDbm>50</powerCapDbm>
<override>
<override2g>
<channel>6</channel>
<channel>11</channel>
...
</override2g>
<override5g>
<category>40Mhz</category>
<channel>34</channel>
...
</override5g>
</override>
</entry>
</table>
ক্যারিয়ার একত্রীকরণ
ক্যারিয়ার অ্যাগ্রিগেশন (CA)-এর ক্ষেত্রে, প্রতিটি আপলিংক বা ডাউনলিংকের হারমোনিক বা ইন্টারমডুলেশন রেঞ্জগুলো আলাদাভাবে ইন্টারফেরেন্স তৈরি করার মতো যথেষ্ট ওভারল্যাপ নাও করতে পারে, কিন্তু একত্রিত করলে যথেষ্ট ওভারল্যাপ তৈরি হতে পারে। অ্যালগরিদম প্রতিটি হারমোনিক বা ইন্টারমডুলেশন রেঞ্জকে আলাদাভাবে বিবেচনা করে এবং প্রাপ্ত অনিরাপদ চ্যানেলগুলোর সমষ্টি গ্রহণ করে। ইন্টারমডুলেশনের ক্ষেত্রে, এর অর্থ হলো প্রতিটি DL-এর উপর প্রতিটি UL-এর ইন্টারমডুলেশন রেঞ্জ মূল্যায়ন করা।
অ্যালগরিদমটি PCELL, PSCELL বা SCELL-এর মধ্যে কোনো পার্থক্য করে না এবং এদেরকে সমান হিসেবে গণ্য করে।
লাইসেন্স সহায়তায় প্রবেশাধিকার
লাইসেন্স অ্যাসিস্টেড অ্যাক্সেস (LAA) ব্যান্ড #৪৬ হিসাবে চিহ্নিত। অ্যালগরিদম এই ব্যান্ডটিকে অন্যান্য ব্যান্ডের মতোই বিবেচনা করে। এক্ষেত্রে, লুকআপ টেবিলে সম্পূর্ণ ৫ গিগাহার্টজ চ্যানেলগুলোকে একটি ওভাররাইড তালিকা হিসাবে সেট করা যেতে পারে।
ক্যারিয়ারের প্রয়োজনীয়তার উপর নির্ভর করে, চ্যানেল এভয়ডেন্স অ্যালগরিদম সম্পূর্ণ ৫ গিগাহার্টজ ওয়াই-ফাই ব্যান্ডের জন্য সফটএপি (SoftAP) এবং ওয়াই-ফাই ডিরেক্ট (P2P)-এর উপর বাধ্যতামূলক বিধিনিষেধ আরোপ করে। অ্যালগরিদমটি যাতে এই ব্যবহারের ক্ষেত্রটি পরিচালনা করতে পারে, তার জন্য ক্যারিয়ার কনফিগ ভ্যালু restrict_5g_softap_wifi_direct_for_laa অবশ্যই সংজ্ঞায়িত থাকতে হবে। যদি সেল চ্যানেলটি LAA-তে থাকে এবং restrict_5g_softap_wifi_direct_for_laa মান true হয়, তাহলে অ্যালগরিদমটি সম্পূর্ণ ৫ গিগাহার্টজ ব্যান্ডসহ অনিরাপদ চ্যানেলগুলোর সেট ফেরত দেয় এবং সফটএপি (SoftAP) ও ওয়াই-ফাই ডিরেক্ট (P2P)-এর জন্য বাধ্যতামূলক বিধিনিষেধ ফ্ল্যাগগুলো সেট করে।
ওয়াই-ফাই পরিষেবা সম্পর্কে জানান
কোএক্স চ্যানেল অ্যালগরিদম অনিরাপদ চ্যানেলগুলো গণনা করার পর, আপনার সিস্টেম অ্যাপগুলোকে সেই অনিরাপদ চ্যানেল এবং সেগুলোর সীমাবদ্ধতা সম্পর্কে জানাতে, অ্যান্ড্রয়েড ফ্রেমওয়ার্কে সংজ্ঞায়িত নিম্নলিখিত @SystemApi ডেটা স্ট্রাকচারটি ব্যবহার করুন।
public final class CoexUnsafeChannel {
public static final int POWER_CAP_NONE
public @WifiAnnotations.WifiBandBasic int getBand();
public int getChannel();
// Returns the specified power cap in dBm, or POWER_CAP_NONE if not specified.
public int getPowerCapDbm();
}
অনিরাপদ চ্যানেল পরিবর্তিত হলে অ্যাপগুলিকে হালনাগাদ মান পেতে সক্ষম করতে নিম্নলিখিত WifiManager @SystemApi মেথড এবং কলব্যাক ব্যবহার করুন।
public static final int COEX_RESTRICTION_WIFI_DIRECT;
public static final int COEX_RESTRICTION_SOFTAP;
public static final int COEX_RESTRICTION_WIFI_AWARE;
// Register a CoexCallback to listen on onCoexUnsafeChannelsChanged callbacks. The callback will be called whenever the unsafe channels change, as well as immediately after registering to get the current values.
public void registerCoexCallback(Executor executor, CoexCallback callback);
public void unregisterCoexCallback(CoexCallback callback);
public abstract static class CoexCallback {
//Gets called whenever getCoexUnsafeChannels()/getCoexRestrictions() have updated values
public void onCoexUnsafeChannelsChanged(List<CoexUnsafeChannel> unsafeChannels,
int restrictions);
}
ওয়াই-ফাই অ্যাকশন সম্পাদন করুন
যখন ওয়াই-ফাই পরিষেবাটি অনিরাপদ চ্যানেলগুলোর একটি সেট সম্পর্কে তথ্য পায়, তখন এটি সেই চ্যানেলগুলো এড়ানোর জন্য উপযুক্ত পদক্ষেপ গ্রহণ করে। এই অংশে বিভিন্ন পরিস্থিতিতে ওয়াই-ফাই পরিষেবাটির আচরণ বর্ণনা করা হয়েছে।
চালককে জানান
যেহেতু চ্যানেল পরিহারের ক্ষেত্রে ড্রাইভারের একটি প্রধান ভূমিকা রয়েছে, তাই অনিরাপদ চ্যানেলগুলোকে ড্রাইভার এবং ফার্মওয়্যারের কাছে পৌঁছে দেওয়া অপরিহার্য। এটি করার জন্য, নিম্নলিখিত IWifiChip HAL API ব্যবহার করুন।
AIDL-এর জন্য:
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
HIDL (১.৫ বা উচ্চতর)-এর জন্য:
setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
bitfield<IfaceType> restrictions);
সফটএপি
অনিরাপদ চ্যানেল পরিহারের প্রধান ব্যবহার হলো SoftAP। নিম্নলিখিত বিভাগে SoftAP-এর সেইসব মূল পরিস্থিতিগুলো তুলে ধরা হয়েছে যেখানে ACS-এর সাথে চ্যানেল পরিহার প্রয়োগ করা যেতে পারে। এই পরিস্থিতিগুলোতে চ্যানেল পরিহার অ্যালগরিদম এবং ড্রাইভার বা ফার্মওয়্যারের আচরণ বর্ণনা করা হয়েছে।
ACS সক্রিয় থাকা অবস্থায় SoftAP শুরু করুন (এখনও কোনো SoftAP চালু হয়নি)
যদি চ্যানেলগুলি অনিরাপদ হয় এবং SoftAP সীমাবদ্ধতা থাকে:
- এই ফ্রেমওয়ার্কটি ACS তালিকা থেকে অনিরাপদ চ্যানেলগুলো সরিয়ে দেয়।
- তালিকাটি খালি থাকলে, ফ্রেমওয়ার্কটি SoftAP বন্ধ করে দেয়।
যদি চ্যানেলগুলি অনিরাপদ হয় এবং কোনও বিধিনিষেধ না থাকে:
- ভেন্ডর ড্রাইভার বা ফার্মওয়্যার অনিরাপদ চ্যানেলের চেয়ে নিরাপদ চ্যানেলগুলোকে অগ্রাধিকার দেয়।
SoftAP চালু আছে, ACS সক্রিয় করা হয়েছে এবং অনিরাপদ চ্যানেলগুলো আপডেট করা হয়েছে।
যদি SoftAP চ্যানেলটি অনিরাপদ হয় এবং SoftAP-এর উপর কোনো বিধিনিষেধ থাকে:
- ফ্রেমওয়ার্কটি অনিরাপদ চ্যানেলগুলো সরিয়ে দিয়ে ACS তালিকাটি আপডেট করে।
- তালিকাটি খালি থাকলে, ফ্রেমওয়ার্কটি SoftAP বন্ধ করে দেয়।
যদি SoftAP চ্যানেলটি অনিরাপদ হয় এবং কোনো বিধিনিষেধ না থাকে:
- ফ্রেমওয়ার্কের পক্ষ থেকে কোনো পদক্ষেপ নেওয়া হয় না। ভেন্ডর ড্রাইভার বা ফার্মওয়্যার অনিরাপদ চ্যানেলগুলো এড়িয়ে চলার অথবা তা এড়ানো সম্ভব না হলে পাওয়ার ক্যাপ প্রয়োগ করার কাজটি করে থাকে।
ওয়াই-ফাই ডাইরেক্ট (পি২পি)
যদি Wi-Fi Direct (P2P) বিধিনিষেধযুক্ত অনিরাপদ চ্যানেল থাকে:
- ফ্রেমওয়ার্কটি
ISupplicantP2pIface::setDisallowedFrequencies()নামক HAL মেথড ব্যবহার করেwpa_supplicantঅনিরাপদ চ্যানেলগুলো এড়িয়ে চলার জন্য অনুরোধ করে।
- ফ্রেমওয়ার্কটি
যদি বিধিনিষেধ ছাড়া অনিরাপদ চ্যানেল থাকে:
- যদি ওয়াই-ফাই ডিরেক্ট (P2P) সীমাবদ্ধতা ছাড়া কোনো অনিরাপদ চ্যানেল ব্যবহার করা হয়, তাহলে ভেন্ডর ড্রাইভার বা ফার্মওয়্যার পাওয়ার ক্যাপ প্রয়োগ করে।
ওয়াই-ফাই সচেতন (NAN)
Wi-Fi Aware (NAN)-এর জন্য চ্যানেল নির্বাচনে ফ্রেমওয়ার্কটি জড়িত নয় এবং কোনো ফ্রেমওয়ার্ক পদক্ষেপ নেওয়া হয় না। Wi-Fi Aware (NAN) চ্যানেল পরিহারের জন্য ভেন্ডর ড্রাইভার বা ফার্মওয়্যার দায়ী।
অ্যালগরিদম নিষ্ক্রিয় করুন
আপনি যদি ডিফল্ট অ্যালগরিদম ইমপ্লিমেন্টেশন নিষ্ক্রিয় করতে চান এবং এড়ানোর জন্য আপনার নিজস্ব অনিরাপদ চ্যানেলের তালিকা দিতে চান, তাহলে config_wifiDefaultCoexAlgorithmEnabled ওভারলেটি কনফিগার করুন। যদি ওভারলেটি false এ সেট করা থাকে, তাহলে ডিফল্ট অ্যালগরিদম নিষ্ক্রিয় হয়ে যাবে। এরপর আপনি নিম্নলিখিত সিস্টেম API ব্যবহার করে ফ্রেমওয়ার্কে পাঠানোর জন্য অনিরাপদ চ্যানেলের একটি তালিকা তৈরি করতে আপনার নিজস্ব আউট-অফ-ব্যান্ড প্রোপ্রাইটারি অ্যালগরিদম ব্যবহার করতে পারবেন।
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
বাস্তবায়ন যাচাই করুন
আপনার Wi-Fi এবং সেলুলার কোএক্স চ্যানেল পরিহার বৈশিষ্ট্যটির বাস্তবায়ন যাচাই করতে, নিম্নলিখিত পরীক্ষাগুলো ব্যবহার করুন।
CTS পরীক্ষা
-
WifiManagerTest.java-
testCoexMethodsShouldFailNoPermission() -
testListenOnCoexUnsafeChannels()
-
ACTS পরীক্ষা
-
WifiManagerTest.py-
test_set_get_coex_unsafe_channels()
-
ভিটিএস পরীক্ষা
- যদি AIDL প্রয়োগ করা হয়:
wifi_chip_aidl_test.cpp-
TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
-
- যদি HIDL প্রয়োগ করা হয়:
wifi_chip_hidl_test.cpp-
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)
-