ওয়াই-ফাই ও মোবাইল ডেটা কোএক্স চ্যানেল এড়ানো

Android 12-এ পরিচয় করানো ওয়াই-ফাই ও সেলুলার কোএক্স চ্যানেল এড়ানোর ফিচার, এমন সব ক্ষেত্রে যেখানে সেলুলার চ্যানেল থেকে বা সেগুলিতে ইন্টারফেয়ারেন্স হতে পারে, সেখানে অনিরাপদ ওয়াই-ফাই চ্যানেল শনাক্ত করে এবং সেগুলি ব্যবহার করা এড়িয়ে যায়। এর মধ্যে STA, SoftAp, Wi-Fi Direct (P2P) এবং Wi-Fi Aware (NAN)-এর মতো ইন্টারফেস অন্তর্ভুক্ত।

এই পৃষ্ঠায় নিম্নলিখিত বিষয়গুলি নিয়ে আলোচনা করা হয়েছে:

  • সেলুলার মডেমকে Android ফ্রেমওয়ার্কে যেসব তথ্য রিপোর্ট করতে হবে।
  • এড়িয়ে যেতে হবে এমন ওয়াই-ফাই চ্যানেল গণনা করতে ওয়াই-ফাই ফ্রেমওয়ার্ক যে অ্যালগরিদম ব্যবহার করে।
  • ডিভাইস প্রস্তুতকারকদের অবশ্যই ওয়াই-ফাই ফ্রেমওয়ার্কের জন্য কনফিগারেশন টেবিল প্রদান করতে হবে।
  • চ্যানেল এড়িয়ে যাওয়ার ফিচারের সাথে সম্পর্কিত সিস্টেম API, কনফিগারেশন ও HAL API।
  • চ্যানেল এড়ানো ম্যানেজ করার জন্য ফ্রেমওয়ার্কের আচরণ।
  • চ্যানেল এড়িয়ে যাওয়ার জন্য চিপ ভেন্ডরের আচরণ।
  • চ্যানেল এড়িয়ে যাওয়া সংক্রান্ত বিবরণ।
  • চ্যানেল এড়িয়ে যাওয়ার আচরণ যাচাই করার জন্য টেস্ট।

ব্যাকগ্রাউন্ড

LTE, 5G NR এবং লাইসেন্সড অ্যাসিস্টেড অ্যাক্সেস (LAA)-এর মতো সেলুলার প্রযুক্তি সহ ডিভাইসের ক্ষেত্রে, ব্যবহার করা সেলুলার চ্যানেল, ব্যবহার করা ওয়াই-ফাই চ্যানেলে বাধা সৃষ্টি করতে পারে। মোবাইল ও ওয়াই-ফাই চ্যানেল স্বল্প ফ্রিকোয়েন্সি সেপারেশনের (প্রতিবেশী চ্যানেল) মধ্যে থাকলে অথবা হারমোনিক ও ইন্টারমডুলেশন ইন্টারফেয়ারেন্স থাকলে এটি ঘটে।

এই ধরনের ইন্টারফারেন্স সমস্যা হয়ে যায় যখন একটি অ্যান্টেনা ট্রান্সমিট করে এবং অন্যটি একই সময়ে রিসিভ করে। এই ক্ষেত্রে, ট্রান্সমিটিং অ্যান্টেনা রিসিভিং অ্যান্টেনা প্লাবিত করে, যার ফলে সিগন্যাল পাওয়ার কোয়ালিটি প্রভাবিত হয়।

এই ডকুমেন্টে, ইন্টারফেয়ার করা ট্রান্সমিটারকে আক্রমণকারী এবং যে রিসিভার ইন্টারফেয়ারেন্সের শিকার হয়েছে তাকে ভিক্টিম বলা হয়েছে। যে ওয়াই-ফাই চ্যানেলটি আক্রমণকারী বা শিকার, সেটি নিরাপদ নয় এমন চ্যানেল হিসেবে উল্লেখ করা হয়।

ওয়াই-ফাই ও সেলুলার কোএক্স চ্যানেল এড়ানোর ফিচার, চ্যানেল এড়ানোর জন্য একটি সামঞ্জস্যপূর্ণ পদ্ধতি প্রদান করে, যা ওয়াই-ফাই ফ্রেমওয়ার্ক থেকে আলাদা প্রোপাইটরি কোডের প্রয়োজনীয়তা কমায়। এছাড়াও, এই ফিচারটি ডিভাইস প্রস্তুতকারকদের ফিচার কনফিগার, চালু ও বন্ধ করতে এবং ওভাররাইড করার অনুমতি দেয়।

ওয়াই-ফাই চ্যানেল নিয়ন্ত্রণ করার মাধ্যমে এই ফিচার চ্যানেল এড়ানোর কাজটি করে। ওয়াই-ফাই চ্যানেল এড়িয়ে যাওয়ার স্কিমকে চারটি বিমূর্ত ধাপের একটি সিরিজ হিসেবে বর্ণনা করা যায়:

  1. মোডেম সেলুলার ফ্রিকোয়েন্সিতে পরিবর্তন রিপোর্ট করে
  2. কোএক্স এড়ানোর অ্যালগরিদম অসুরক্ষিত ওয়াই-ফাই চ্যানেল গণনা করে
  3. কোএক্স এড়ানোর অ্যালগরিদম ওয়াই-ফাই পরিষেবাকে জানায়
  4. ফ্রেমওয়ার্ক বা ড্রাইভার উপযুক্ত ওয়াই-ফাই অ্যাকশন পারফর্ম করে

চ্যানেল এড়িয়ে যাওয়ার স্কিম

ছবি ১. চ্যানেল এড়িয়ে যাওয়ার স্কিম

সেলুলার ফ্রিকোয়েন্সিতে পরিবর্তন সম্পর্কে অভিযোগ জানানো

টেলিফোনি পরিষেবা ব্যবহার করা হচ্ছে এমন মোবাইল চ্যানেল সম্পর্কে রিপোর্ট করে। অপারেটিং সেলুলার ফ্রিকোয়েন্সি পরিবর্তন হলে, মডেম এই তথ্য টেলিফোনি পরিষেবাকে IRadio::PhysicalChannelConfig-এর মাধ্যমে জানায়। এই তথ্যের মধ্যে লাইসেন্সড অ্যাসিস্টেড অ্যাক্সেস (LAA) এবং ক্যারিয়ার এগ্রিগেশন (CA) সংক্রান্ত ইঙ্গিত অন্তর্ভুক্ত।

Android 12 থেকে, 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;
}

অসুরক্ষিত ওয়াই-ফাই চ্যানেল গণনা করুন

মডেম যখন সেলুলার ফ্রিকোয়েন্সিতে পরিবর্তনের কথা জানায়, তখন কোএক্স চ্যানেল অ্যালগরিদম সেলুলার ও ওয়াই-ফাই চ্যানেলের মধ্যে ইন্টারফারেন্স গণনা করে এবং কোন ওয়াই-ফাই চ্যানেলগুলি নিরাপদ নয় তা নির্ধারণ করে।

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

লুকআপ টেবিলে সর্বাধিক পাওয়ার ক্যাপ উল্লেখ করা যেতে পারে। সংজ্ঞায়িত করা হলে, একটি অনিরাপদ চ্যানেল নির্দিষ্ট পাওয়ার ক্যাপের সাথে ট্রান্সমিট করে। অন্যথায়, চ্যানেলটি সম্পূর্ণ পাওয়ারে ট্রান্সমিট করে।

সাধারণত, পারফর্ম্যান্স অপ্টিমাইজ করার জন্য চ্যানেল এড়ানো ফিচারটি অসুরক্ষিত Wi-Fi চ্যানেল এড়াতে যথাসাধ্য চেষ্টা করে। তবে, নির্দিষ্ট কিছু ক্ষেত্রে (যেমন, ক্যারিয়ারের প্রয়োজনীয়তার কারণে), নির্দিষ্ট ইন্টারফেসের জন্য নির্দিষ্ট সেলুলার ব্যান্ডে অনিরাপদ চ্যানেল এড়ানো বাধ্যতামূলক। এইসব ক্ষেত্রে, বাধ্যতামূলক বিধিনিষেধ বিটমাস্ক হিসেবে দেখানো হয় যাতে Wi-Fi Direct (P2P), SoftAp ও Wi-Fi Aware (NAN)-এর মতো নির্দিষ্ট চ্যানেল নিষিদ্ধ করা হবে কিনা সেই সংক্রান্ত ভ্যালু থাকে। কোনও চ্যানেল অনিরাপদ হলে, সেটি সব ধরনের ব্যবহারের ক্ষেত্রে সেই চ্যানেলটি ব্যবহার না করার পরামর্শ হিসেবে কাজ করে, তবে বাধ্যতামূলক বিধিনিষেধ নির্দিষ্ট ব্যবহারের ক্ষেত্রে বাধ্যতামূলকভাবে এড়িয়ে চলার জন্য চিহ্নিত করা হয়।

২.৪ GHz বা ৫ GHz ব্যান্ডের প্রতিটি চ্যানেলকে 'নিরাপদ নয়' হিসেবে চিহ্নিত করা হলে, লুক-আপ টেবিল হস্তক্ষেপকারী সেল ব্যান্ড প্রতি একটি ডিফল্ট ২.৪ GHz চ্যানেল বা একটি ডিফল্ট ৫ GHz চ্যানেলকে সবচেয়ে নিরাপদ বিকল্প হিসেবে নির্ধারণ করতে পারে। ব্যান্ডের বাকি অংশকে অনিরাপদ হিসেবে রিপোর্ট করা হলে, এইসব ডিফল্ট চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে রিপোর্ট করা হয় না।

ওভাররাইড তালিকা

যেসব ক্ষেত্রে ইন্টারফেয়ারেন্স ব্যান্ডউইথের উপর খুব বেশি নির্ভরশীল (এবং সেই কারণে বেশি ব্যান্ডউইথ যুক্ত চ্যানেল নিরাপদ নাও হতে পারে, কিন্তু কম ব্যান্ডউইথ যুক্ত চ্যানেল নয়) সেখানে ফর্মুলা ভিত্তিক পদ্ধতি সীমিত। LAA-এর মতো ক্ষেত্রে, গণনা এড়িয়ে যাওয়া এবং অনিরাপদ চ্যানেলের নির্দিষ্ট তালিকা ব্যবহার করা ভাল।

এটি করতে, আপনি নির্দিষ্ট এন্ট্রির জন্য লুক-আপ টেবিলে নিরাপদ নয় এমন চ্যানেলের একটি ওভাররাইড তালিকা নির্দিষ্ট করতে পারেন। টেবিল এন্ট্রিতে ওভাররাইড তালিকা থেকে বোঝা যায় যে সেই নির্দিষ্ট সেল চ্যানেলের জন্য গণনা এড়িয়ে যাওয়া হয়েছে। পরিবর্তে, ওভাররাইড তালিকায় ম্যাচ করা সেল চ্যানেলের জন্য স্পষ্টভাবে অনিরাপদ ওয়াই-ফাই চ্যানেল উল্লেখ করা থাকে।

ব্যান্ডউইথ-সংবেদনশীল ক্ষেত্রে, আপনি ওভাররাইড তালিকায় নির্দিষ্ট ব্যান্ডউইথ সহ নির্দিষ্ট চ্যানেল উল্লেখ করে নির্দিষ্ট ব্যান্ডউইথ বেছে বেছে এড়াতে পারেন। কারণ প্রতিটি ওয়াই-ফাই চ্যানেল নম্বর একটি নির্দিষ্ট ব্যান্ডউইথের সাথে সম্পর্কিত।

ওভাররাইড তালিকাটি প্রতিটি ওয়াই-ফাই ব্যান্ডের জন্য চ্যানেল নম্বর বা আগে থেকে নির্ধারিত বিভাগ কীওয়ার্ডের একটি তালিকা দ্বারা দেখানো হয়:

2g বিভাগ:

  • all (সম্পূর্ণ ২.৪ GHz ব্যান্ড)

৫ গ্রাম বিভাগ:

  • all (সম্পূর্ণ ৫ GHz ব্যান্ড)
  • 20mhz (৫ GHz ২০ MHz চ্যানেল)
  • 40mhz (৫ GHz ৪০ MHz চ্যানেল)
  • 80mhz (৫ GHz ৮০ MHz চ্যানেল)
  • 160mhz (৫ GHz ১৬০ MHz চ্যানেল)

আশেপাশের চ্যানেলের কারণে বিঘ্ন

প্রতিবেশী চ্যানেলের হস্তক্ষেপ নির্ধারণ করতে, কোএক্স এভয়েডেন্স অ্যালগরিদম নিশ্চিত করে যে আক্রমণকারী এবং ভিক্টিম চ্যানেলের মধ্যে দূরত্ব ΔF নির্দিষ্ট থ্রেশহোল্ডের নিচে না যায়।

চ্যানেলে ইন্টারফেয়ারেন্স

ছবি ২. আক্রমণকারী ও আক্রান্ত চ্যানেলের মধ্যে দূরত্ব

থ্রেশহোল্ড ডিভাইসের ফিজিক্যাল কনফিগারেশন এবং ইন্টারফেয়ারিং ব্যান্ড প্রতি লুকআপ টেবিল এন্ট্রিতে দেওয়া থ্রেশহোল্ড ভ্যালু দ্বারা নির্ধারিত হয়। যেসব ব্যান্ডকে ইন্টারফেয়ার না করার উপযুক্ত হিসেবে বিবেচনা করা হয়, সেগুলির কোনও টেবিল এন্ট্রি থাকে না এবং অনিরাপদ চ্যানেল গণনা করার প্রয়োজন হয় না (বেশিরভাগ ক্ষেত্রে এটিই হয়)।

পার্শ্ববর্তী ইন্টারফারেন্স প্যারামিটার

  • wifiVictimMhz: ওয়াই-ফাই ভিক্টিমের (সেল আপলিঙ্ক) জন্য MHz দূরত্বের থ্রেশহোল্ড
  • cellVictimMhz: কোনও সেল ভিক্টিমের জন্য MHz দূরত্ব থ্রেশহোল্ড (সেল ডাউনলিঙ্ক)

প্রতিটি অ্যাক্টিভ সেল চ্যানেলের জন্য অ্যালগরিদম এইভাবে কাজ করে:

  1. চ্যানেলের ব্যান্ডের জন্য, লুকআপ টেবিল এন্ট্রি খোঁজার চেষ্টা করে। কোনও টেবিল এন্ট্রি খুঁজে না পাওয়া গেলে, সেই সেল চ্যানেলের জন্য কোনও নিরাপদ চ্যানেল নেই বলে রিটার্ন করে।
  2. সেলুলার ব্যান্ডের উপর ভিত্তি করে, কোন ওয়াই-ফাই ব্যান্ড ঝুঁকিতে রয়েছে এবং ব্যান্ডের কোন দিক থেকে ইন্টারফারেন্স আসছে তা শনাক্ত করে (যেমন, কম ২.৪ GHz চ্যানেল, বেশি ২.৪ GHz চ্যানেল, কম ৫ GHz চ্যানেল)।
  3. wifiVictimMhz উপস্থিত থাকলে এবং সেল চ্যানেলে আপলিঙ্ক থাকলে এবং

    1. ওয়াই-ফাই ব্যান্ডের নিচের অংশ ঝুঁকিতে থাকলে:

      1. সেল আপলিঙ্কের সর্বোচ্চ ফ্রিকোয়েন্সিতে wifiVictimMhz যোগ করে, নিরাপদ নয় এমন চ্যানেলের সর্বোচ্চ সীমা খুঁজে নেয়।
      2. প্রথম ২০ MHz ওয়াই-ফাই চ্যানেল খুঁজে বের করে যার লোয়ার এজ সীমা অতিক্রম করে।
      3. ওয়াই-ফাই চ্যানেল, প্রতিটি বড় ব্যান্ডউইথ চ্যানেল যাতে এটি আছে (যেমন, ৪০ Mhz, ৮০ Mhz) এবং একই ব্যান্ডের প্রতিটি ছোট চ্যানেলকে অসুরক্ষিত চ্যানেল হিসেবে চিহ্নিত করে।
    2. ওয়াই-ফাই ব্যান্ডের উপরের অংশ ঝুঁকিপূর্ণ হলে:

      1. সেল আপলিঙ্কের সর্বনিম্ন ফ্রিকোয়েন্সি থেকে wifiVictimMhz বিয়োগ করে অসুরক্ষিত চ্যানেলের নিম্ন সীমা খুঁজে বের করে।
      2. প্রথম এমন ওয়াই-ফাই চ্যানেল খুঁজে পায় যার উপরের প্রান্ত সীমার সাথে ওভারল্যাপ করে।
      3. যে ওয়াই-ফাই চ্যানেলে এটি আছে, তার থেকে বড় প্রতিটি চ্যানেল (যেমন, ৪০ MHz, ৮০ MHz) এবং একই ব্যান্ডের প্রতিটি উচ্চতর চ্যানেলকে অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
  4. cellVictimMhz থাকলে এবং সেল চ্যানেলে ডাউনলিঙ্ক থাকলে:

    1. এটি থ্রেশহোল্ড হিসেবে cellVictimMhz ব্যবহার করে ৩ নম্বর ধাপটি পারফর্ম করে এবং সেল আপলিঙ্কের পরিবর্তে সেল ডাউনলিঙ্কের সাথে তুলনা করে।
  5. এটি গণনা করা নিরাপদ নয় এমন চ্যানেলে টেবিল এন্ট্রির পাওয়ার ক্যাপ প্রয়োগ করে।

অনিরাপদ চ্যানেল গণনা

ছবি ৩. পার্শ্ববর্তী চ্যানেলের ইন্টারফারেন্সের জন্য অনুপযুক্ত চ্যানেল গণনা

হারমোনিক বা ইন্টারমডুলেশন ডিসটর্শন

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

$$ overlap = \frac{min(distortion_{high}, victim_{high}) - max(distortion_{low}, victim_{low})}{victim_{bandwidth}} $$

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

$$ harmonic_{high} = N * uplink_{high} $$
$$ harmonic_{low} = N * uplink_{low} $$

অনিরাপদ চ্যানেল গণনা হারমোনিক বিকৃতি

ছবি ৪. হারমোনিক ডিসটর্শনের জন্য অনুপযুক্ত চ্যানেল গণনা

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

$$ intermod_{high} = |M*wifi_{high} + N*uplink_{high}| $$
$$ intermod_{low} = |M*wifi_{low} + N*uplink_{low}| $$

অনিরাপদ চ্যানেল ক্যালকুলেশন ইন্টারমডুলেশন ডিসটর্শন

ছবি ৫. ইন্টারমডুলেশন বিকৃতির জন্য অনুপযুক্ত চ্যানেল গণনা

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

প্রতিবেশী ইন্টারফেয়ারেন্স অ্যালগরিদমের মতো, অ্যালগরিদম ইন্টারফেয়ারিং সেল ব্যান্ড প্রতি একই পাওয়ার ক্যাপ ভ্যালু আবার ব্যবহার করে।

প্রতিটি অ্যাক্টিভ সেল চ্যানেলের জন্য অ্যালগরিদম এইভাবে কাজ করে:

  1. সেল চ্যানেলের ব্যান্ডের জন্য, এটি একটি লুকআপ টেবিল এন্ট্রি খোঁজার চেষ্টা করে। টেবিলে কোনও এন্ট্রি খুঁজে না পেলে, এই চ্যানেলের জন্য কোনও অনুপযুক্ত চ্যানেল নেই বলে রিটার্ন করে।
  2. প্যারামিটার নির্দিষ্ট করা থাকলে, হারমোনিক্স থেকে অনিরাপদ ২.৪ GHz চ্যানেল খুঁজে পায়।

    1. ২.৪ GHz-এর জন্য হারমোনিক ডিগ্রি N খুঁজে পায়।
    2. N এবং সেল আপলিঙ্কের উপর ভিত্তি করে হারমোনিক হাই ফ্রিকোয়েন্সি এবং হারমোনিক লো ফ্রিকোয়েন্সি গণনা করে।
    3. নিচে থেকে আসা হারমোনিকের লোয়ার বাউন্ডের মধ্যে থাকা প্রথম ২০ MHz Wi-Fi চ্যানেল খুঁজে পায়।
    4. ওয়াই-ফাই চ্যানেলের হার্মোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপ যদি ২.৪ GHz ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ডের বেশি হয়, তাহলে চ্যানেলটিকে 'নিরাপদ নয়' হিসেবে চিহ্নিত করে।
    5. উপর থেকে আসা হারমোনিকের উপরের বাউন্ডের মধ্যে থাকা প্রথম ২০ MHz ওয়াই-ফাই চ্যানেল খুঁজে পায়।
    6. ওয়াই-ফাই চ্যানেলের হার্মোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপ যদি ২.৪ GHz ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ডের বেশি হয়, তাহলে চ্যানেলটিকে 'নিরাপদ নয়' হিসেবে চিহ্নিত করে।
    7. প্রতি ২০ মেগাহার্টজ চ্যানেলকে অসুরক্ষিত চ্যানেল হিসেবে চিহ্নিত করে।
  3. প্যারামিটার নির্দিষ্ট করা থাকলে, হারমোনিক্স থেকে নিরাপদ নয় এমন ৫ GHz চ্যানেল খুঁজে নেয়।

    1. ৫ GHz-এর জন্য হারমোনিক ডিগ্রি N খুঁজে বের করে। N-এর মান ০ হলে, ধাপ ৫-এ চলে যায়।
    2. N এবং সেল আপলিঙ্কের উপর ভিত্তি করে হারমোনিক হাই ফ্রিকোয়েন্সি এবং হারমোনিক লো ফ্রিকোয়েন্সি গণনা করে।
    3. অসুরক্ষিত ২০ মেগাহার্টজ চ্যানেল খুঁজে পায়।

      1. নিচে থেকে আসা হারমোনিকের নিম্ন সীমার মধ্যে থাকা প্রথম ২০ MHz ওয়াই-ফাই চ্যানেল খুঁজে পায়।
      2. ওয়াই-ফাই চ্যানেলে হারমোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপ ২.৪ GHz ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ডের বেশি হলে চ্যানেলটিকে অসুরক্ষিত হিসেবে চিহ্নিত করে।
      3. প্রথম ২০ মেগাহার্টজ ওয়াই-ফাই চ্যানেল খুঁজে বের করে যা উপর থেকে আসা হারমোনিকের ঊর্ধ্ব সীমার মধ্যে থাকে।
      4. ওয়াই-ফাই চ্যানেলের উপর হারমোনিকের ওভারল্যাপ গণনা করে এবং ওভারল্যাপ যদি ২.৪ GHz ওয়াই-ফাই ওভারল্যাপ থ্রেশহোল্ডের বেশি হয়, তাহলে চ্যানেলটিকে 'নিরাপদ নয়' হিসেবে চিহ্নিত করে।
      5. মাঝখানে থাকা প্রতিটি ২০ MHz চ্যানেলকে নির্দিষ্ট পাওয়ার ক্যাপ সহ অনিরাপদ চ্যানেল হিসেবে চিহ্নিত করে।
    4. অনিরাপদ ৪০ MHz, ৮০ MHz, ১৬০ MHz চ্যানেল খুঁজে পায়

      1. ধাপ ৩ক আবার করে কিন্তু ৪০ MHz, ৮০ MHz, ১৬০ MHz দিয়ে।
      2. হারমোনিক এজে চ্যানেলের ওভারল্যাপ গণনা করার পরিবর্তে, ছোট কন্সটিটিউয়েন্ট চ্যানেল থেকে গণনা করা ওভারল্যাপ আবার ব্যবহার করে (যেমন, দুটি ২০ মেগাহার্টজ চ্যানেল একটি ৪০ মেগাহার্টজ চ্যানেল তৈরি করলে এবং ৩০% ও ৯০% ওভারল্যাপ থাকলে, ৪০ মেগাহার্টজ চ্যানেলের জন্য গড় ৬০% ওভারল্যাপ হয়)।
  4. প্যারামিটার নির্দিষ্ট করা থাকলে, ইন্টারমডুলেশন থেকে অনিরাপদ ২.৪ GHz চ্যানেল খুঁজে পায়।

    1. ২.৪ GHz-এর জন্য ইন্টারমডুলেশন সহগ N, M খুঁজে বের করে।
    2. প্রতিটি ২.৪ GHz ওয়াই-ফাই চ্যানেলের জন্য:

      1. N, M, সেল আপলিঙ্ক ও Wi-Fi চ্যানেলের উপর ভিত্তি করে ইন্টারমডুলেশন লো ফ্রিকোয়েন্সি ও ইন্টারমডুলেশন হাই ফ্রিকোয়েন্সি গণনা করে।
      2. সেল ডাউনলিঙ্কে ইন্টারমডুলেশনের ওভারল্যাপ গণনা করে এবং ওভারল্যাপ যদি ২.৪ GHz সেল ওভারল্যাপ থ্রেশহোল্ডের বেশি হয়, তাহলে চ্যানেলটিকে 'অনিরাপদ' হিসেবে চিহ্নিত করে।
  5. প্যারামিটার সংজ্ঞায়িত করা থাকলে ইন্টারমডুলেশন থেকে নিরাপদ নয় এমন ৫ GHz চ্যানেল খুঁজে পায়।

    1. ৫ GHz ওয়াই-ফাই চ্যানেল ও ৫ GHz সেল ওভারল্যাপ থ্রেশহোল্ড ব্যবহার করে ধাপ ৪ আবার রিপিট করে।
  6. গণনা করা নিরাপদ নয় এমন চ্যানেলে টেবিল এন্ট্রির পাওয়ার ক্যাপ প্রয়োগ করে।

চূড়ান্ত ফলাফল

নেবারিং ও হারমোনিক ইন্টারফেয়ারেন্স থেকে অসুরক্ষিত চ্যানেলের দুটি সেটই গণনা করার পরে, দুটি সেটের ইউনিয়ন নিয়ে চূড়ান্ত সেট গণনা করা হয় (এবং সংঘর্ষ হলে কম পাওয়ার ক্যাপ বেছে নেওয়া হয়) এবং কোনও বাধ্যতামূলক বিধিনিষেধ প্রযোজ্য না হলে সেট থেকে ডিফল্ট চ্যানেল সরিয়ে দেওয়া হয়।

অ্যালগরিদম নিম্নলিখিতভাবে কাজ করে:

  1. প্রতিটি ২.৪ GHz ওয়াই-ফাই চ্যানেলকে নিরাপদ চ্যানেল হিসেবে চিহ্নিত করা হলে, সেট থেকে ডিফল্ট ২.৪ GHz ওয়াই-ফাই চ্যানেল সরিয়ে দেয়।
  2. প্রতিটি ৫ GHz ওয়াই-ফাই চ্যানেলকে নিরাপদ নয় এমন চ্যানেল হিসেবে চিহ্নিত করা হলে, সেট থেকে ডিফল্ট ৫ GHz ওয়াই-ফাই চ্যানেল সরিয়ে দেয়।
  3. অনিরাপদ চ্যানেলের চূড়ান্ত সেট রিটার্ন করে।

লুক-আপ টেবিলের ফর্ম্যাট

লুকআপ টেবিলগুলি ওভারলেয়েবল কনফিগারেশন স্ট্রিং 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) ব্যান্ড #৪৬ হিসেবে শনাক্ত করা হয়েছে। অ্যালগরিদম এই ব্যান্ডটিকে অন্যান্য ব্যান্ডের মতোই বিবেচনা করে। এই ক্ষেত্রে, সম্পূর্ণ ৫ Ghz চ্যানেল লুকআপ টেবিলে ওভাররাইড তালিকা হিসেবে সেট করা যেতে পারে।

ক্যারিয়ারের প্রয়োজনীয়তার উপর নির্ভর করে, চ্যানেল এড়ানোর অ্যালগরিদম সম্পূর্ণ ৫ GHz ওয়াই-ফাই ব্যান্ডের জন্য SoftAP এবং Wi-Fi Direct (P2P)-এ বাধ্যতামূলক বিধিনিষেধ সেট করে। এই ব্যবহারের ক্ষেত্রে অ্যালগরিদমকে হ্যান্ডেল করার জন্য, কেরিয়ার কনফিগার ভ্যালু restrict_5g_softap_wifi_direct_for_laa অবশ্যই ডিফাইন করতে হবে। সেল চ্যানেল LAA-তে থাকলে এবং restrict_5g_softap_wifi_direct_for_laa true হলে, অ্যালগরিদম সম্পূর্ণ ৫ GHz ব্যান্ড সহ নিরাপদ নয় এমন চ্যানেলের সেট রিটার্ন করে এবং SoftAP ও Wi-Fi Direct (P2P)-এর জন্য বাধ্যতামূলক বিধিনিষেধ ফ্ল্যাগ সেট করে।

ওয়াই-ফাই পরিষেবা সম্পর্কে জানান

কোএক্স চ্যানেল অ্যালগরিদম যখন অনিরাপদ চ্যানেল গণনা করে, তখন আপনার সিস্টেম অ্যাপকে অনিরাপদ চ্যানেল এবং সেগুলির বিধিনিষেধ সম্পর্কে জানাতে, 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);
}

ওয়াই-ফাই অ্যাকশন পারফর্ম করুন

ওয়াই-ফাই পরিষেবা যখন অনিরাপদ চ্যানেলের সেট সম্পর্কে তথ্য পায়, তখন সেইসব চ্যানেল এড়িয়ে যাওয়ার জন্য উপযুক্ত অ্যাকশন নেয়। এই বিভাগে বিভিন্ন পরিস্থিতিতে Wi-Fi পরিষেবার আচরণ বর্ণনা করা হয়েছে।

ড্রাইভারকে জানান

চ্যানেল এড়িয়ে যাওয়ার ক্ষেত্রে ড্রাইভারের ভূমিকা অত্যন্ত গুরুত্বপূর্ণ, তাই অনিরাপদ চ্যানেল সম্পর্কে ড্রাইভার ও ফার্মওয়্যারকে জানানো আবশ্যক। এটি করতে, নিম্নলিখিত IWifiChip HAL API ব্যবহার করুন।

AIDL-এর জন্য:

void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
    in int restrictions)

HIDL-এর জন্য (১.৫ বা তার বেশি):

setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
  bitfield<IfaceType> restrictions);

SoftAP

নিরাপদ নয় এমন চ্যানেল এড়ানোর জন্য SoftAP হল প্রধান ব্যবহারিক ক্ষেত্র। নিম্নলিখিত বিভাগে SoftAp-এর মূল পরিস্থিতিগুলি উল্লেখ করা হয়েছে যেখানে ACS-এর সাথে চ্যানেল এড়িয়ে যাওয়ার সুবিধা প্রয়োগ করা যেতে পারে। এইসব পরিস্থিতিতে চ্যানেল এড়িয়ে যাওয়ার অ্যালগরিদম এবং ড্রাইভার বা ফার্মওয়্যারের আচরণ বর্ণনা করা হয়েছে।

ACS চালু করে SoftAP শুরু করুন (এখনও কোনও SoftAP চালু নেই)

  1. চ্যানেলগুলি যদি নিরাপদ না হয় এবং SoftAP বিধিনিষেধ থাকে:

    1. ফ্রেমওয়ার্কটি ACS তালিকা থেকে অসুরক্ষিত চ্যানেল সরিয়ে দেয়।
    2. তালিকাটি খালি থাকলে, ফ্রেমওয়ার্ক SoftAP বন্ধ করে দেয়।
  2. চ্যানেলগুলি যদি নিরাপদ না হয় এবং কোনও বিধিনিষেধ না থাকে:

    1. ভেন্ডর ড্রাইভার বা ফার্মওয়্যার, অসুরক্ষিত চ্যানেলের তুলনায় নিরাপদ চ্যানেলকে অগ্রাধিকার দেয়।

ACS চালু সহ SoftAP চালু আছে এবং অসুরক্ষিত চ্যানেল আপডেট করা হয়েছে

  1. SoftAP চ্যানেলটি অসুরক্ষিত হলে এবং SoftAP সংক্রান্ত বিধিনিষেধ থাকলে:

    1. ফ্রেমওয়ার্ক, নিরাপদ নয় এমন চ্যানেল সরিয়ে দিয়ে ACS তালিকা আপডেট করে।
    2. তালিকা খালি থাকলে, ফ্রেমওয়ার্ক SoftAP বন্ধ করে দেয়।
  2. SoftAP চ্যানেলটি যদি অসুরক্ষিত হয় এবং কোনও বিধিনিষেধ না থাকে:

    1. ফ্রেমওয়ার্কের পক্ষ থেকে কোনও অ্যাকশন নেওয়া হয়নি। ভেন্ডর ড্রাইভার বা ফার্মওয়্যার, নিরাপদ নয় এমন চ্যানেল এড়িয়ে চলা বা এড়িয়ে চলা সম্ভব না হলে পাওয়ার ক্যাপ প্রয়োগ করার বিষয়টি ম্যানেজ করে।

ওয়াই-ফাই ডাইরেক্ট (P2P)

  1. ওয়াই-ফাই ডাইরেক্ট (P2P) বিধিনিষেধ সহ কোনও অসুরক্ষিত চ্যানেল থাকলে:

    1. ফ্রেমওয়ার্ক wpa_supplicant-কে অনুরোধ করে যাতে HAL পদ্ধতি ISupplicantP2pIface::setDisallowedFrequencies() ব্যবহার করে অসুরক্ষিত চ্যানেল এড়ানো যায়।
  2. বিধিনিষেধ ছাড়া কোনও নিরাপদ নয় এমন চ্যানেল থাকলে:

    1. ভেন্ডর ড্রাইভার বা ফার্মওয়্যার পাওয়ার ক্যাপ প্রয়োগ করে যদি Wi-Fi ডাইরেক্ট (P2P) বিধিনিষেধ ছাড়া কোনও অনিরাপদ চ্যানেল ব্যবহার করা হয়।

Wi-Fi Aware (NAN)

Wi-Fi Aware (NAN)-এর জন্য চ্যানেল বেছে নেওয়ার ক্ষেত্রে ফ্রেমওয়ার্ক যুক্ত নয় এবং কোনও ফ্রেমওয়ার্ক অ্যাকশন নেওয়া হয় না। ভেন্ডর ড্রাইভার বা ফার্মওয়্যার Wi-Fi Aware (NAN) চ্যানেল এড়ানোর জন্য দায়ী।

অ্যালগরিদম বন্ধ করা

আপনি যদি ডিফল্ট অ্যালগরিদম প্রয়োগ করা বন্ধ করতে চান এবং এড়িয়ে যাওয়ার জন্য আপনার নিজের অনিরাপদ চ্যানেলের তালিকা পাস করতে চান, তাহলে ওভারলে config_wifiDefaultCoexAlgorithmEnabled কনফিগার করুন। ওভারলে false হিসেবে সেট করা থাকলে, ডিফল্ট অ্যালগরিদম বন্ধ করা থাকে। তারপরে, আপনি নিম্নলিখিত সিস্টেম API ব্যবহার করে ফ্রেমওয়ার্কে প্লাগ করার জন্য অনিরাপদ চ্যানেলের একটি তালিকা তৈরি করতে আপনার নিজস্ব আউট-অফ-ব্যান্ড মালিকানাধীন অ্যালগরিদম ব্যবহার করতে পারেন।

public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
  int coexRestrictions);

প্রয়োগ করা হয়েছে কিনা তা যাচাই করা

ওয়াই-ফাই ও সেলুলার কোএক্স চ্যানেল এড়িয়ে যাওয়ার ফিচার আপনি কীভাবে প্রয়োগ করেছেন তা যাচাই করতে, নিম্নলিখিত টেস্টগুলি ব্যবহার করুন।

CTS পরীক্ষা

  • WifiManagerTest.java
    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

ACTS টেস্ট

  • WifiManagerTest.py
    • test_set_get_coex_unsafe_channels()

VTS পরীক্ষা

  • AIDL প্রয়োগ করা হলে: wifi_chip_aidl_test.cpp
    • TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
  • HIDL প্রয়োগ করা হলে: wifi_chip_hidl_test.cpp
    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)