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

চিত্র ১. চ্যানেল পরিহারের পরিকল্পনা
সেলুলার ফ্রিকোয়েন্সিতে পরিবর্তনের রিপোর্ট করুন
টেলিফোনি পরিষেবাটি ব্যবহৃত সেলুলার চ্যানেলগুলি রিপোর্ট করে। যখন অপারেটিং সেলুলার ফ্রিকোয়েন্সি পরিবর্তন হয়, তখন মডেমটি IRadio::PhysicalChannelConfig এর মাধ্যমে টেলিফোনি পরিষেবাতে এই তথ্য রিপোর্ট করে। এই তথ্যে লাইসেন্সড অ্যাসিস্টেড অ্যাক্সেস (LAA) এবং ক্যারিয়ার অ্যাগ্রিগেশন (CA) এর জন্য ইঙ্গিত অন্তর্ভুক্ত রয়েছে।
অ্যান্ড্রয়েড ১২ থেকে, 1.6 IRadio::PhysicalChannelConfig এ নিম্নলিখিত ক্ষেত্রগুলি মডেমকে যে coex সূত্রগুলি পূরণ করতে হবে তার জন্য প্রয়োজনীয় তথ্য প্রদান করে।
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;
}
অনিরাপদ ওয়াই-ফাই চ্যানেল গণনা করুন
যখন মডেম সেলুলার ফ্রিকোয়েন্সিতে পরিবর্তনের রিপোর্ট করে, তখন কোয়েক্স চ্যানেল অ্যালগরিদম সেলুলার এবং ওয়াই-ফাই চ্যানেলের মধ্যে হস্তক্ষেপ গণনা করে এবং কোন ওয়াই-ফাই চ্যানেলগুলি অনিরাপদ তা নির্ধারণ করে।
বিভিন্ন ধরণের হস্তক্ষেপের জন্য বিভিন্ন সূত্রের প্রয়োজন হয়: নেবারিং এবং হারমোনিক/ইন্টারমডুলেশন । ডিভাইসগুলির মধ্যে অ্যান্টেনা এবং লেআউটের ভৌত পার্থক্যের কারণে, প্রতিটি ডিভাইসের জন্য নেবারিং এবং হারমোনিক/ইন্টারমডুলেশন হস্তক্ষেপের ধরণগুলি আলাদা। এর জন্য, ডিভাইস নির্মাতাদের অবশ্যই দুটি ধরণের হস্তক্ষেপের জন্য জেনেরিক সূত্রগুলিতে প্যারামিটারগুলি প্লাগ করার জন্য একটি লুকআপ টেবিল সরবরাহ করতে হবে। এই প্যারামিটারগুলি প্রতি সেল ব্যান্ডে সংজ্ঞায়িত করা হয় এবং সক্রিয় সেল চ্যানেলগুলির ব্যান্ড দ্বারা রেফারেন্স করা হয়।
লুকআপ টেবিলে সর্বোচ্চ পাওয়ার ক্যাপ সংজ্ঞায়িত করা যেতে পারে। যদি সংজ্ঞায়িত করা হয়, তাহলে একটি অনিরাপদ চ্যানেল নির্দিষ্ট পাওয়ার ক্যাপ সহ ট্রান্সমিট করে। অন্যথায়, চ্যানেলটি পূর্ণ পাওয়ারে ট্রান্সমিট করে।
সাধারণভাবে, চ্যানেল পরিহার বৈশিষ্ট্যটি কর্মক্ষমতা অনুকূল করার জন্য অনিরাপদ ওয়াই-ফাই চ্যানেলগুলি এড়াতে সর্বোত্তম প্রচেষ্টা পদ্ধতি ব্যবহার করে। কিন্তু কিছু ক্ষেত্রে (উদাহরণস্বরূপ, ক্যারিয়ারের প্রয়োজনীয়তার কারণে), নির্দিষ্ট ইন্টারফেসের জন্য নির্দিষ্ট সেলুলার ব্যান্ডের জন্য অনিরাপদ চ্যানেলগুলি এড়ানো বাধ্যতামূলক। এই ধরনের ক্ষেত্রে, বাধ্যতামূলক বিধিনিষেধগুলিকে একটি বিটমাস্ক হিসাবে উপস্থাপন করা হয় যাতে Wi-Fi Direct (P2P), SoftAp, এবং Wi-Fi Aware (NAN) এর মতো নির্দিষ্ট চ্যানেলগুলিকে নিষিদ্ধ করা উচিত কিনা তার মান থাকে। যদিও একটি অনিরাপদ চ্যানেল সমস্ত ব্যবহারের ক্ষেত্রে সেই চ্যানেলটি ব্যবহার করার বিরুদ্ধে সুপারিশ হিসাবে কাজ করে, বাধ্যতামূলক বিধিনিষেধগুলি বাধ্যতামূলক এড়ানোর জন্য নির্দিষ্ট ব্যবহারের ক্ষেত্রে চিহ্নিত করে।
যদি ২.৪ গিগাহার্জ বা ৫ গিগাহার্জ ব্যান্ডের প্রতিটি চ্যানেল অনিরাপদ হিসেবে চিহ্নিত করা হয়, তাহলে লুকআপ টেবিলটি ডিফল্ট ২.৪ গিগাহার্জ চ্যানেল অথবা প্রতি ইন্টারফারিং সেল ব্যান্ডের জন্য ডিফল্ট ৫ গিগাহার্জ চ্যানেলকে সবচেয়ে নিরাপদ পছন্দ হিসেবে সংজ্ঞায়িত করতে পারে। যখন বাকি ব্যান্ডটি অনিরাপদ হিসেবে রিপোর্ট করা হয় তখন এই ডিফল্ট চ্যানেলগুলিকে অনিরাপদ চ্যানেল হিসেবে রিপোর্ট করা হয় না।
তালিকা ওভাররাইড করুন
যেখানে ব্যান্ডউইথের উপর হস্তক্ষেপ ব্যাপকভাবে নির্ভরশীল (এবং তাই বৃহত্তর ব্যান্ডউইথের চ্যানেলগুলি অনিরাপদ হতে পারে কিন্তু ছোট ব্যান্ডউইথের চ্যানেলগুলি নয়) সেই ক্ষেত্রে একটি সূত্রগত পদ্ধতি সীমিত। LAA-এর মতো ক্ষেত্রে, গণনা এড়িয়ে যাওয়া এবং অনিরাপদ চ্যানেলগুলির একটি নির্দিষ্ট তালিকা ব্যবহার করা উপকারী।
এটি করার জন্য, আপনি নির্দিষ্ট এন্ট্রিগুলির জন্য লুকআপ টেবিলে অনিরাপদ চ্যানেলগুলির একটি ওভাররাইড তালিকা নির্দিষ্ট করতে পারেন। একটি টেবিল এন্ট্রিতে একটি ওভাররাইড তালিকা নির্দেশ করে যে সেই নির্দিষ্ট সেল চ্যানেলের গণনা এড়িয়ে যাওয়া হয়েছে। পরিবর্তে, ওভাররাইড তালিকাটি মিলিত সেল চ্যানেলের জন্য অনিরাপদ ওয়াই-ফাই চ্যানেলগুলিকে স্পষ্টভাবে নির্দিষ্ট করে।
ব্যান্ডউইথ-সংবেদনশীল ক্ষেত্রে, আপনি ওভাররাইড তালিকায় নির্দিষ্ট ব্যান্ডউইথ সহ নির্দিষ্ট চ্যানেলগুলি নির্দিষ্ট করে নির্দিষ্ট ব্যান্ডউইথগুলি এড়াতে পারেন। এর কারণ হল প্রতিটি ওয়াই-ফাই চ্যানেল নম্বর একটি নির্দিষ্ট ব্যান্ডউইথের সাথে মিলে যায়।
ওভাররাইড তালিকাটি প্রতিটি ওয়াই-ফাই ব্যান্ডের জন্য চ্যানেল নম্বর বা পূর্বনির্ধারিত বিভাগের কীওয়ার্ডের তালিকা দ্বারা প্রতিনিধিত্ব করা হয়:
2g বিভাগ:
-
all(পুরো ২.৪ গিগাহার্টজ ব্যান্ড)
৫জি বিভাগ:
-
all(পুরো ৫ গিগাহার্জ ব্যান্ড) -
20mhz(৫ গিগাহার্টজ ২০ মেগাহার্টজ চ্যানেল) -
40mhz(৫ গিগাহার্টজ ৪০ মেগাহার্টজ চ্যানেল) -
80mhz(৫ গিগাহার্টজ ৮০ মেগাহার্টজ চ্যানেল) -
160mhz(৫ গিগাহার্টজ ১৬০ মেগাহার্টজ চ্যানেল)
প্রতিবেশী চ্যানেলের হস্তক্ষেপ
প্রতিবেশী চ্যানেল হস্তক্ষেপ নির্ধারণের জন্য, coex পরিহার অ্যালগরিদম নিশ্চিত করে যে আক্রমণকারী এবং শিকার চ্যানেলের মধ্যে দূরত্ব ΔF একটি নির্দিষ্ট সীমার নিচে না যায়।

চিত্র ২। আক্রমণকারী এবং শিকার চ্যানেলের মধ্যে দূরত্ব
থ্রেশহোল্ডটি ডিভাইসের ভৌত কনফিগারেশন এবং প্রতি হস্তক্ষেপকারী ব্যান্ডের লুকআপ টেবিল এন্ট্রিতে প্রদত্ত থ্রেশহোল্ড মান দ্বারা নির্ধারিত হয়। যেসব ব্যান্ডকে হস্তক্ষেপহীন বলে মনে করা হয় তাদের টেবিল এন্ট্রি থাকে না এবং অনিরাপদ চ্যানেলগুলি গণনা করার প্রয়োজন হয় না (এটি বেশিরভাগ সময়ই হয়)।
প্রতিবেশী হস্তক্ষেপ পরামিতি
-
wifiVictimMhz: একজন Wi-Fi ভিকটিম (সেল আপলিঙ্ক) এর জন্য MHz দূরত্বের থ্রেশহোল্ড -
cellVictimMhz: একজন সেল ভিকটিম (সেল ডাউনলিংক) এর জন্য MHz দূরত্বের থ্রেশহোল্ড
প্রতিটি সক্রিয় কোষ চ্যানেলের জন্য অ্যালগরিদম নিম্নলিখিতভাবে আচরণ করে:
- চ্যানেলের ব্যান্ডের জন্য, একটি লুকআপ টেবিল এন্ট্রি খুঁজে বের করার চেষ্টা করে। যদি কোনও টেবিল এন্ট্রি না পাওয়া যায়, তাহলে সেই সেল চ্যানেলের জন্য কোনও অনিরাপদ চ্যানেল ছাড়াই ফিরে আসে।
- সেলুলার ব্যান্ডের উপর ভিত্তি করে, কোন ওয়াই-ফাই ব্যান্ড ঝুঁকিতে রয়েছে এবং ব্যান্ডের কোন দিক থেকে হস্তক্ষেপ আসছে তা সনাক্ত করা হয় (উদাহরণস্বরূপ, নিম্ন 2.4 GHz চ্যানেল, উচ্চ 2.4 GHz চ্যানেল, নিম্ন 5 GHz চ্যানেল)।
যদি
wifiVictimMhzউপস্থিত থাকে এবং সেল চ্যানেলে আপলিংক থাকে এবংযদি ওয়াই-ফাই ব্যান্ডের নিচের অংশ ঝুঁকিতে থাকে:
- সেল আপলিংকের সর্বোচ্চ ফ্রিকোয়েন্সিতে
wifiVictimMhzযোগ করে অনিরাপদ চ্যানেলের ঊর্ধ্ব সীমা খুঁজে বের করে। - প্রথম ২০ মেগাহার্টজ ওয়াই-ফাই চ্যানেলটি খুঁজে বের করে যার নিচের প্রান্তটি সীমা অতিক্রম করে।
- ওয়াই-ফাই চ্যানেল, এটি ধারণকারী প্রতিটি বৃহত্তর ব্যান্ডউইথ চ্যানেল (উদাহরণস্বরূপ, 40 মেগাহার্টজ, 80 মেগাহার্টজ), এবং একই ব্যান্ডের প্রতিটি নিম্ন চ্যানেলকে অনিরাপদ চ্যানেল হিসাবে চিহ্নিত করে।
- সেল আপলিংকের সর্বোচ্চ ফ্রিকোয়েন্সিতে
যদি ওয়াই-ফাই ব্যান্ডের উপরের অংশ ঝুঁকিতে থাকে:
- সেল আপলিংকের সর্বনিম্ন ফ্রিকোয়েন্সিতে wifiVictimMhz বিয়োগ করে অনিরাপদ চ্যানেলের নিম্ন সীমা খুঁজে বের করে।
- প্রথম Wi-Fi চ্যানেলটি খুঁজে বের করে যার উপরের প্রান্তটি সীমাকে ওভারল্যাপ করে।
- Wi-Fi চ্যানেল, এটি ধারণকারী প্রতিটি বৃহত্তর চ্যানেল (উদাহরণস্বরূপ, 40Mhz, 80 Mhz), এবং একই ব্যান্ডের প্রতিটি উচ্চতর চ্যানেলকে অনিরাপদ চ্যানেল হিসাবে চিহ্নিত করে।
যদি
cellVictimMhzউপস্থিত থাকে এবং সেল চ্যানেলে ডাউনলিংক থাকে:- এটি
cellVictimMhzথ্রেশহোল্ড হিসেবে ব্যবহার করে ধাপ 3 সম্পাদন করে এবং সেল আপলিংকের পরিবর্তে সেল ডাউনলিংকের সাথে তুলনা করে।
- এটি
এটি গণনা করা অনিরাপদ চ্যানেলগুলিতে টেবিল এন্ট্রির পাওয়ার ক্যাপ প্রয়োগ করে।

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

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

চিত্র ৫। ইন্টারমডুলেশন বিকৃতির জন্য অনিরাপদ চ্যানেল গণনা
আপনি প্রতি ইন্টারফেসিং সেল ব্যান্ডের জন্য লুকআপ টেবিলে $ M $, $ N $ এবং ওভারল্যাপ মানগুলি নির্দিষ্ট করতে পারেন। যদি কোনও ব্যান্ডের জন্য কোনও ইন্টারফেস না থাকে, তাহলে সেই ব্যান্ড এন্ট্রির জন্য মানগুলি টেবিল থেকে বাদ দেওয়া হয়। Wi-Fi 2.4 GHz এবং 5 GHz ব্যান্ডের জন্য এই মানগুলির দুটি সেট স্বাধীনভাবে সংজ্ঞায়িত করা যেতে পারে।
প্রতিবেশী হস্তক্ষেপ অ্যালগরিদমের মতো, অ্যালগরিদমটি প্রতি হস্তক্ষেপকারী সেল ব্যান্ডের জন্য নির্ধারিত একই পাওয়ার ক্যাপ মান পুনরায় ব্যবহার করে।
প্রতিটি সক্রিয় কোষ চ্যানেলের জন্য অ্যালগরিদম নিম্নলিখিতভাবে আচরণ করে:
- সেল চ্যানেলের ব্যান্ডের জন্য, এটি একটি লুকআপ টেবিল এন্ট্রি খুঁজে বের করার চেষ্টা করে। যদি কোনও টেবিল এন্ট্রি না পাওয়া যায়, তাহলে এই চ্যানেলের জন্য কোনও অনিরাপদ চ্যানেল ছাড়াই ফিরে আসে।
যদি প্যারামিটারগুলি সংজ্ঞায়িত করা হয় তবে হারমোনিক্স থেকে অনিরাপদ 2.4 GHz চ্যানেলগুলি খুঁজে বের করে।
- 2.4 GHz এর জন্য হারমোনিক ডিগ্রী N খুঁজে বের করে।
- N এবং সেল আপলিংকের উপর ভিত্তি করে সুরেলা উচ্চ ফ্রিকোয়েন্সি এবং সুরেলা নিম্ন ফ্রিকোয়েন্সি গণনা করে।
- নিচ থেকে আসা হারমোনিকের নিম্ন সীমানার মধ্যে থাকা প্রথম 20 MHz Wi-Fi চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং যদি ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করে তবে চ্যানেলটিকে অনিরাপদ হিসাবে চিহ্নিত করে।
- উপর থেকে আসা হারমোনিকের উপরের সীমানার মধ্যে থাকা প্রথম 20 MHz Wi-Fi চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং যদি ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করে তবে চ্যানেলটিকে অনিরাপদ হিসাবে চিহ্নিত করে।
- মাঝখানের প্রতিটি 20 MHz চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
যদি প্যারামিটারগুলি সংজ্ঞায়িত করা হয় তবে হারমোনিক্স থেকে অনিরাপদ 5 GHz চ্যানেলগুলি খুঁজে বের করে।
- ৫ GHz এর জন্য হারমোনিক ডিগ্রী N খুঁজে বের করে। যদি N ০ হয়, তাহলে ধাপ ৫ এ চলে যায়।
- N এবং সেল আপলিংকের উপর ভিত্তি করে সুরেলা উচ্চ ফ্রিকোয়েন্সি এবং সুরেলা নিম্ন ফ্রিকোয়েন্সি গণনা করে।
অনিরাপদ ২০ মেগাহার্টজ চ্যানেল খুঁজে বের করে।
- নিচ থেকে আসা হারমোনিকের নিম্ন সীমানার মধ্যে থাকা প্রথম 20 MHz Wi-Fi চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং যদি ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করে তবে চ্যানেলটিকে অনিরাপদ হিসাবে চিহ্নিত করে।
- উপর থেকে আসা হারমোনিকের উপরের সীমানার মধ্যে থাকা প্রথম 20 MHz Wi-Fi চ্যানেলটি খুঁজে বের করে।
- ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং যদি ওভারল্যাপটি ২.৪ গিগাহার্টজ ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করে তবে চ্যানেলটিকে অনিরাপদ হিসাবে চিহ্নিত করে।
- নির্দিষ্ট পাওয়ার ক্যাপ সহ প্রতিটি 20 MHz চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
অনিরাপদ 40 MHz, 80 MHz, 160 MHz চ্যানেল খুঁজে বের করে
- ধাপ 3a পুনরাবৃত্তি করে কিন্তু 40 MHz, 80 MHz, 160 MHz সহ।
- সুরেলা প্রান্তে চ্যানেলগুলির ওভারল্যাপ গণনা করার পরিবর্তে, ছোট উপাদান চ্যানেলগুলি থেকে গণনা করা ওভারল্যাপগুলি পুনরায় ব্যবহার করা হয় (উদাহরণস্বরূপ, যদি দুটি 20 মেগাহার্টজ চ্যানেল 40 মেগাহার্টজ চ্যানেল তৈরি করে এবং 30% এবং 90% ওভারল্যাপ থাকে, তাহলে 40 মেগাহার্টজ চ্যানেলের জন্য গড় 60% ওভারল্যাপ হয়)।
যদি প্যারামিটারগুলি সংজ্ঞায়িত করা হয় তবে ইন্টারমডুলেশন থেকে অনিরাপদ 2.4 GHz চ্যানেলগুলি খুঁজে বের করে।
- 2.4 GHz এর জন্য ইন্টারমডুলেশন সহগ N, M খুঁজে বের করে।
প্রতিটি 2.4 GHz Wi-Fi চ্যানেলের জন্য:
- N, M, সেল আপলিঙ্ক এবং Wi-Fi চ্যানেলের উপর ভিত্তি করে ইন্টারমডুলেশন কম ফ্রিকোয়েন্সি এবং ইন্টারমডুলেশন উচ্চ ফ্রিকোয়েন্সি গণনা করে।
- সেল ডাউনলিংকের উপর ইন্টারমডুলেশনের ওভারল্যাপ গণনা করে এবং যদি ওভারল্যাপটি 2.4 GHz সেল ওভারল্যাপ থ্রেশহোল্ড অতিক্রম করে তবে চ্যানেলটিকে অনিরাপদ হিসাবে চিহ্নিত করে।
যদি প্যারামিটারগুলি সংজ্ঞায়িত করা হয় তবে ইন্টারমডুলেশন থেকে অনিরাপদ 5 GHz চ্যানেলগুলি খুঁজে বের করে।
- ৫ গিগাহার্জ ওয়াই-ফাই চ্যানেল এবং ৫ গিগাহার্জ সেল ওভারল্যাপ থ্রেশহোল্ড ব্যবহার করে ধাপ ৪ পুনরাবৃত্তি করে।
গণনা করা অনিরাপদ চ্যানেলগুলিতে টেবিল এন্ট্রির পাওয়ার ক্যাপ প্রয়োগ করে।
চূড়ান্ত ফলাফল
প্রতিবেশী এবং সুরেলা হস্তক্ষেপ থেকে অনিরাপদ চ্যানেলের উভয় সেট গণনা করার পরে, চূড়ান্ত সেটটি উভয় সেটের মিলন নিয়ে (এবং সংঘর্ষের ক্ষেত্রে নিম্ন পাওয়ার ক্যাপ নির্বাচন করে) এবং যদি কোনও বাধ্যতামূলক বিধিনিষেধ প্রয়োগ না করা হয় তবে সেট থেকে ডিফল্ট চ্যানেলগুলি সরিয়ে দিয়ে গণনা করা হয়।
অ্যালগরিদমটি নিম্নরূপ আচরণ করে:
- যদি প্রতিটি 2.4 GHz Wi-Fi চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করা হয়, তাহলে সেট থেকে ডিফল্ট 2.4 GHz Wi-Fi চ্যানেলটি সরিয়ে ফেলা হবে।
- যদি প্রতিটি 5 GHz Wi-Fi চ্যানেলকে একটি অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করা হয়, তাহলে সেট থেকে ডিফল্ট 5 GHz 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) এর ক্ষেত্রে, প্রতিটি আপলিংক বা ডাউনলিংকের জন্য হারমোনিক বা ইন্টারমডুলেশন রেঞ্জগুলি স্বাধীনভাবে হস্তক্ষেপ সৃষ্টি করার জন্য পর্যাপ্ত ওভারল্যাপ তৈরি নাও করতে পারে, তবে একত্রিত হলে যথেষ্ট ওভারল্যাপ তৈরি করতে পারে। অ্যালগরিদম প্রতিটি হারমোনিক বা ইন্টারমডুলেশন রেঞ্জকে স্বাধীনভাবে বিবেচনা করে এবং ফিরে আসা অনিরাপদ চ্যানেলগুলির ইউনিয়ন গ্রহণ করে। ইন্টারমডুলেশনের ক্ষেত্রে, এর অর্থ হল প্রতিটি UL-এর ইন্টারমডুলেশন রেঞ্জ প্রতিটি DL-এর উপর মূল্যায়ন করা।
অ্যালগরিদম PCELL, PSCELL, অথবা SCELL এর মধ্যে কোন পার্থক্য করে না এবং তাদের সমান বলে মনে করে।
লাইসেন্স সহায়তাপ্রাপ্ত অ্যাক্সেস
লাইসেন্স অ্যাসিস্টেড অ্যাক্সেস (LAA) ব্যান্ড #46 হিসেবে চিহ্নিত। অ্যালগরিদম এই ব্যান্ডটিকে অন্যান্য ব্যান্ডের মতোই বিবেচনা করে। এই ক্ষেত্রে, সম্পূর্ণ 5 Ghz চ্যানেলগুলিকে লুকআপ টেবিলে ওভাররাইড তালিকা হিসেবে সেট করা যেতে পারে।
ক্যারিয়ারের প্রয়োজনীয়তার উপর নির্ভর করে, চ্যানেল এভয়েডেন্স অ্যালগরিদম সম্পূর্ণ 5 GHz Wi-Fi ব্যান্ডের জন্য SoftAP এবং Wi-Fi Direct (P2P) এর উপর বাধ্যতামূলক বিধিনিষেধ সেট করে। এই ব্যবহারের ক্ষেত্রে অ্যালগরিদম পরিচালনা করার জন্য, ক্যারিয়ার কনফিগারেশন মান restrict_5g_softap_wifi_direct_for_laa সংজ্ঞায়িত করতে হবে। যদি সেল চ্যানেলটি LAA-তে থাকে এবং restrict_5g_softap_wifi_direct_for_laa true হয়, তাহলে অ্যালগরিদম সম্পূর্ণ 5 GHz ব্যান্ড সহ অনিরাপদ চ্যানেলের সেট ফেরত দেয় এবং SoftAP এবং Wi-Fi Direct (P2P) এর জন্য বাধ্যতামূলক বিধিনিষেধ ফ্ল্যাগ সেট করে।
ওয়াই-ফাই পরিষেবা সম্পর্কে অবহিত করুন
coex চ্যানেল অ্যালগরিদম অনিরাপদ চ্যানেলগুলি গণনা করার পরে, আপনার সিস্টেম অ্যাপগুলিকে অনিরাপদ চ্যানেল এবং তাদের বিধিনিষেধগুলি সরবরাহ করতে, Android ফ্রেমওয়ার্কে সংজ্ঞায়িত নিম্নলিখিত @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 চ্যানেলটি অনিরাপদ হয় এবং কোনও বিধিনিষেধ না থাকে:
- ফ্রেমওয়ার্ক দ্বারা কোনও পদক্ষেপ নেওয়া হয় না। বিক্রেতা ড্রাইভার বা ফার্মওয়্যার অনিরাপদ চ্যানেলগুলি এড়িয়ে চলা বা এড়িয়ে চলা সম্ভব না হলে পাওয়ার ক্যাপ প্রয়োগ করার কাজ পরিচালনা করে।
ওয়াই-ফাই ডাইরেক্ট (P2P)
যদি Wi-Fi Direct (P2P) বিধিনিষেধযুক্ত অনিরাপদ চ্যানেল থাকে:
- ফ্রেমওয়ার্কটি
wpa_supplicantHAL পদ্ধতিISupplicantP2pIface::setDisallowedFrequencies()ব্যবহার করে অনিরাপদ চ্যানেলগুলি এড়াতে অনুরোধ করে।
- ফ্রেমওয়ার্কটি
যদি কোনও অনিরাপদ চ্যানেল থাকে যার কোনও বিধিনিষেধ নেই:
- যদি Wi-Fi Direct (P2P) সীমাবদ্ধতা ছাড়া কোনও অনিরাপদ চ্যানেল ব্যবহার করা হয়, তাহলে বিক্রেতা ড্রাইভার বা ফার্মওয়্যার পাওয়ার ক্যাপ প্রয়োগ করে।
ওয়াই-ফাই সচেতন (NAN)
Wi-Fi Aware (NAN) এর জন্য চ্যানেল নির্বাচনের সাথে ফ্রেমওয়ার্ক জড়িত নয় এবং কোনও ফ্রেমওয়ার্ক পদক্ষেপ নেওয়া হয় না। Wi-Fi Aware (NAN) চ্যানেল পরিহারের জন্য বিক্রেতা ড্রাইভার বা ফার্মওয়্যার দায়ী।
অ্যালগরিদমটি অক্ষম করুন
যদি আপনি ডিফল্ট অ্যালগরিদম বাস্তবায়ন নিষ্ক্রিয় করতে চান এবং এড়িয়ে যাওয়ার জন্য আপনার নিজস্ব অনিরাপদ চ্যানেলের তালিকা পাস করতে চান, তাহলে ওভারলে config_wifiDefaultCoexAlgorithmEnabled কনফিগার করুন। যদি ওভারলেটি false তে সেট করা থাকে, তাহলে ডিফল্ট অ্যালগরিদম নিষ্ক্রিয় হয়ে যায়। তারপর আপনি নিম্নলিখিত সিস্টেম API ব্যবহার করে ফ্রেমওয়ার্কে প্লাম্ব করার জন্য অনিরাপদ চ্যানেলের একটি তালিকা তৈরি করতে আপনার নিজস্ব আউট-অফ-ব্যান্ড মালিকানাধীন অ্যালগরিদম ব্যবহার করতে পারেন।
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
বাস্তবায়ন যাচাই করুন
আপনার ওয়াই-ফাই এবং সেলুলার কোএক্স চ্যানেল পরিহার বৈশিষ্ট্যের বাস্তবায়ন যাচাই করতে, নিম্নলিখিত পরীক্ষাগুলি ব্যবহার করুন।
সিটিএস পরীক্ষা
-
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)
-