वाई-फाई/सेलुलर कोएक्स चैनल से बचाव

एंड्रॉइड 12 में पेश किया गया वाई-फाई/सेलुलर कोएक्स चैनल अवॉइडेंस फीचर उन मामलों में असुरक्षित वाई-फाई चैनलों की पहचान करता है और उनका उपयोग करने से बचता है जहां सेलुलर चैनलों में/से हस्तक्षेप हो सकता है। इसमें एसटीए, सॉफ्टएप, वाई-फाई डायरेक्ट (पी2पी), वाई-फाई अवेयर (एनएएन) जैसे इंटरफेस शामिल हैं।

यह पृष्ठ निम्नलिखित पर चर्चा करता है:

  • सेलुलर मॉडेम को जानकारी एंड्रॉइड फ्रेमवर्क को रिपोर्ट करनी होगी
  • वाई-फ़ाई फ़्रेमवर्क द्वारा उपयोग किए जाने वाले एल्गोरिदम, वाई-फ़ाई चैनलों से बचने की गणना करने के लिए उपयोग किए जाते हैं
  • कॉन्फ़िगरेशन तालिकाएँ जो डिवाइस निर्माताओं को वाई-फ़ाई फ़्रेमवर्क के लिए प्रदान करनी होंगी
  • चैनल परिहार सुविधा से संबंधित सिस्टम एपीआई, कॉन्फ़िगरेशन और एचएएल एपीआई
  • चैनल परिहार से निपटने के लिए ढांचागत व्यवहार
  • चैनल परिहार से निपटने के लिए चिप विक्रेता का व्यवहार
  • चैनल परिहार के लिए कार्यान्वयन विवरण
  • चैनल परिहार व्यवहार को मान्य करने के लिए परीक्षण

पृष्ठभूमि

एलटीई, 5जी एनआर और लाइसेंस्ड असिस्टेड एक्सेस (एलएए) जैसी सेल्युलर तकनीकों वाले उपकरणों के लिए, उपयोग में आने वाले सेल्युलर चैनल उपयोग में आने वाले वाई-फाई चैनल में हस्तक्षेप कर सकते हैं। यह तब होता है जब सेलुलर और वाई-फाई चैनल कम आवृत्ति पृथक्करण (पड़ोसी चैनल) के भीतर होते हैं या जब हार्मोनिक और इंटरमॉड्यूलेशन हस्तक्षेप होता है।

इस प्रकार का हस्तक्षेप एक समस्या बन जाता है जब एक ही समय में एक एंटीना संचारित कर रहा होता है और दूसरा प्राप्त कर रहा होता है। इस मामले में, ट्रांसमिटिंग एंटीना प्राप्तकर्ता एंटीना में बाढ़ ला देता है, जिससे इसकी रिसेप्शन गुणवत्ता प्रभावित होती है।

यह दस्तावेज़ हस्तक्षेप करने वाले ट्रांसमीटर को आक्रामक और हस्तक्षेप का अनुभव करने वाले रिसीवर को पीड़ित के रूप में संदर्भित करता है। वाई-फाई चैनल जो या तो आक्रामक है या पीड़ित है, उसे असुरक्षित चैनल कहा जाता है।

वाई-फाई/सेलुलर कोएक्स चैनल अवॉइडेंस सुविधा, वाई-फाई फ्रेमवर्क से अलग होने वाले मालिकाना कोड की आवश्यकता को कम करने वाले चैनल अवॉइडेंस के लिए एक सतत दृष्टिकोण प्रदान करती है। इसके अतिरिक्त, यह सुविधा डिवाइस निर्माताओं को सुविधा को कॉन्फ़िगर करने, सक्षम और अक्षम करने और ओवरराइड करने की अनुमति देती है।

यह सुविधा वाई-फाई चैनलों को नियंत्रित करके चैनल अवॉइडेंस करती है। वाई-फ़ाई चैनल परिहार योजना को चार सार चरणों की एक श्रृंखला के रूप में वर्णित किया जा सकता है:

  1. मॉडेम रिपोर्ट सेलुलर आवृत्ति में परिवर्तन करती है
  2. कोएक्स अवॉइडेंस एल्गोरिदम असुरक्षित वाई-फाई चैनलों की गणना करता है
  3. कोएक्स अवॉइडेंस एल्गोरिदम वाई-फाई सेवा को सूचित करता है
  4. फ़्रेमवर्क या ड्राइवर उचित वाई-फ़ाई क्रिया करता है

चैनल परिहार योजना

चित्र 1. चैनल परिहार योजना

सेलुलर आवृत्ति में परिवर्तन की रिपोर्ट करना

टेलीफ़ोनी सेवा वर्तमान में उपयोग में आने वाले सेल्युलर चैनलों की रिपोर्ट करती है। जब ऑपरेटिंग सेलुलर आवृत्ति बदलती है, तो मॉडेम इस जानकारी को IRadio::PhysicalChannelConfig के माध्यम से टेलीफोनी सेवा को रिपोर्ट करता है। इस जानकारी में लाइसेंस प्राप्त सहायता प्राप्त पहुंच (एलएए) और वाहक एकत्रीकरण (सीए) के संकेत शामिल हैं।

एंड्रॉइड 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;hte

    /** Uplink cell bandwidth, in kHz */
    int32_t cellBandwidthUplink;
}

असुरक्षित वाई-फ़ाई चैनलों की गणना

जब मॉडेम सेलुलर आवृत्ति में परिवर्तन की रिपोर्ट करता है, तो कोएक्स चैनल एल्गोरिदम सेलुलर और वाई-फाई चैनलों के बीच हस्तक्षेप की गणना करता है और निर्धारित करता है कि वाई-फाई चैनलों का कौन सा सेट असुरक्षित है।

विभिन्न सूत्रों की आवश्यकता वाले कई प्रकार के हस्तक्षेप हैं: पड़ोसी और हार्मोनिक/इंटरमोड्यूलेशन । उपकरणों के बीच एंटीना और लेआउट में भौतिक अंतर के कारण, प्रत्येक डिवाइस के लिए पड़ोसी और हार्मोनिक/इंटरमोड्यूलेशन हस्तक्षेप के पैटर्न अलग-अलग होते हैं। इसे ध्यान में रखते हुए, डिवाइस निर्माताओं को दो प्रकार के हस्तक्षेप के लिए सामान्य फ़ार्मुलों में पैरामीटर प्लग करने के लिए एक लुकअप तालिका प्रदान करनी होगी। ये पैरामीटर प्रति सेल बैंड परिभाषित हैं और सक्रिय सेल चैनलों के बैंड द्वारा संदर्भित हैं।

अधिकतम पावर कैप को लुकअप तालिका में परिभाषित किया जा सकता है। यदि अधिकतम पावर कैप परिभाषित है, तो एक असुरक्षित चैनल प्रदान किए गए पावर कैप के साथ संचारित होता है। यदि कोई पावर कैप नहीं है, तो चैनल पूरी शक्ति से संचारित होता है।

सामान्य तौर पर, चैनल अवॉइडेंस सुविधा प्रदर्शन को अनुकूलित करने के लिए असुरक्षित वाई-फाई चैनलों से बचने के लिए सर्वोत्तम प्रयास दृष्टिकोण का उपयोग करती है। लेकिन कुछ मामलों में (उदाहरण के लिए, वाहक आवश्यकताओं के कारण), कुछ सेलुलर बैंड के लिए असुरक्षित चैनलों से बचना कुछ इंटरफेस के लिए अनिवार्य है। ऐसे मामलों में, अनिवार्य प्रतिबंधों को एक बिटमास्क के रूप में दर्शाया जाता है जिसमें वाई-फाई डायरेक्ट (पी2पी), सॉफ्टएप और वाई-फाई अवेयर (एनएएन) जैसे कुछ चैनलों को प्रतिबंधित करना है या नहीं, इसके लिए मान शामिल हैं। जबकि एक असुरक्षित चैनल सभी उपयोग के मामलों के लिए उस चैनल का उपयोग करने के खिलाफ एक सिफारिश के रूप में कार्य करता है, अनिवार्य प्रतिबंध अनिवार्य परिहार के लिए विशिष्ट उपयोग के मामलों को चिह्नित करते हैं।

यदि 2.4 गीगाहर्ट्ज या 5 गीगाहर्ट्ज बैंड के प्रत्येक चैनल को असुरक्षित के रूप में चिह्नित किया गया है, तो लुकअप तालिका एक डिफ़ॉल्ट 2.4 गीगाहर्ट्ज चैनल या एक डिफ़ॉल्ट 5 गीगाहर्ट्ज चैनल को प्रति हस्तक्षेप करने वाले सेल बैंड को सबसे सुरक्षित विकल्प के रूप में परिभाषित कर सकती है। जब शेष बैंड को असुरक्षित रिपोर्ट किया जाता है तो इन डिफ़ॉल्ट चैनलों को असुरक्षित चैनल के रूप में रिपोर्ट नहीं किया जाता है।

ओवरराइड सूची

उन मामलों में एक फार्मूलाबद्ध दृष्टिकोण सीमित है जहां हस्तक्षेप अत्यधिक बैंडविड्थ पर निर्भर है (और इस प्रकार बड़े बैंडविड्थ वाले चैनल असुरक्षित हो सकते हैं लेकिन छोटे बैंडविड्थ वाले चैनल नहीं)। एलएए जैसे मामलों में, गणना को छोड़ना और असुरक्षित चैनलों की एक निर्दिष्ट सूची का उपयोग करना फायदेमंद है।

ऐसा करने के लिए, आप कुछ प्रविष्टियों के लिए लुकअप तालिका में असुरक्षित चैनलों की एक ओवरराइड सूची निर्दिष्ट कर सकते हैं। तालिका प्रविष्टि में एक ओवरराइड सूची यह दर्शाती है कि उस विशेष सेल चैनल के लिए गणना छोड़ दी गई है और मिलान सेल चैनल के लिए असुरक्षित वाई-फाई चैनल ओवरराइड सूची द्वारा निर्दिष्ट किए गए हैं।

बैंडविड्थ-संवेदनशील मामलों के लिए, आप ओवरराइड सूची में कुछ बैंडविड्थ वाले कुछ चैनल निर्दिष्ट करके चुनिंदा बैंडविड्थ से बच सकते हैं। ऐसा इसलिए है क्योंकि प्रत्येक वाई-फाई चैनल नंबर एक निर्दिष्ट बैंडविड्थ से मेल खाता है।

ओवरराइड सूची प्रत्येक वाई-फाई बैंड के लिए चैनल नंबरों या पूर्व-निर्धारित श्रेणी कीवर्ड की सूची द्वारा दर्शायी जाती है:

2जी श्रेणियां:

  • all (संपूर्ण 2.4 गीगाहर्ट्ज़ बैंड)

5जी श्रेणियां:

  • all (संपूर्ण 5 गीगाहर्ट्ज़ बैंड)
  • 20mhz (5 गीगाहर्ट्ज 20 मेगाहर्ट्ज चैनल)
  • 40mhz (5 गीगाहर्ट्ज 40 मेगाहर्ट्ज चैनल)
  • 80mhz (5 गीगाहर्ट्ज 80 मेगाहर्ट्ज चैनल)
  • 160mhz (5 गीगाहर्ट्ज 160 मेगाहर्ट्ज चैनल)

पड़ोसी चैनल का हस्तक्षेप

पड़ोसी चैनल के हस्तक्षेप को निर्धारित करने के लिए, कोएक्स अवॉइडेंस एल्गोरिदम यह सुनिश्चित करता है कि एक आक्रामक और पीड़ित चैनल के बीच की दूरी ΔF एक निर्दिष्ट सीमा के अंतर्गत नहीं जाती है।

चैनल हस्तक्षेप

चित्र 2. हमलावर और पीड़ित चैनल के बीच की दूरी

थ्रेशोल्ड डिवाइस के भौतिक कॉन्फ़िगरेशन और हस्तक्षेप करने वाले बैंड के अनुसार लुकअप तालिका प्रविष्टि में प्रदान किए गए थ्रेशोल्ड मान द्वारा निर्धारित किया जाता है। जिन बैंडों को गैर-हस्तक्षेपकारी माना जाता है उनमें तालिका प्रविष्टि नहीं होती है और असुरक्षित चैनलों की गणना करने की आवश्यकता नहीं होती है (यह अधिकांश समय होता है)।

पड़ोसी हस्तक्षेप पैरामीटर

  • wifiVictimMhz : वाई-फाई पीड़ित के लिए मेगाहर्ट्ज दूरी सीमा (सेल अपलिंक)
  • cellVictimMhz : सेल पीड़ित के लिए मेगाहर्ट्ज दूरी सीमा (सेल डाउनलिंक)

प्रत्येक सक्रिय सेल चैनल के लिए एल्गोरिदम निम्नानुसार व्यवहार करता है:

  1. चैनल के बैंड के लिए, लुकअप तालिका प्रविष्टि ढूंढने का प्रयास करता है। यदि कोई तालिका प्रविष्टि नहीं मिलती है, तो उस सेल चैनल के लिए कोई असुरक्षित चैनल नहीं होता है।
  2. सेलुलर बैंड के आधार पर, यह पहचान की जाती है कि कौन सा वाई-फाई बैंड खतरे में है और बैंड के किस तरफ से हस्तक्षेप होता है (उदाहरण के लिए, कम 2.4 गीगाहर्ट्ज चैनल, उच्च 2.4 गीगाहर्ट्ज चैनल, कम 5 गीगाहर्ट्ज चैनल)।
  3. यदि wifiVictimMhz मौजूद है और सेल चैनल में अपलिंक और है

    1. यदि वाई-फाई बैंड का निचला हिस्सा खतरे में है

      1. सेल अपलिंक की उच्चतम आवृत्ति में wifiVictimMhz जोड़कर असुरक्षित चैनलों की ऊपरी सीमा का पता लगाता है।
      2. पहला 20 मेगाहर्ट्ज वाई-फाई चैनल ढूंढता है जिसका निचला किनारा सीमा को ओवरलैप करता है।
      3. वाई-फ़ाई चैनल, इसमें शामिल प्रत्येक बड़े बैंडविड्थ चैनल (उदाहरण के लिए, 40 मेगाहर्ट्ज, 80 मेगाहर्ट्ज) और उसी बैंड के प्रत्येक निचले चैनल को असुरक्षित चैनल के रूप में चिह्नित करता है।
    2. यदि वाई-फाई बैंड का ऊपरी हिस्सा खतरे में है

      1. सेल अपलिंक की न्यूनतम आवृत्ति में wifiVictimMhz को घटाकर असुरक्षित चैनलों की निचली सीमा का पता लगाता है।
      2. पहला वाई-फाई चैनल ढूँढता है जिसका ऊपरी किनारा सीमा को ओवरलैप करता है।
      3. वाई-फ़ाई चैनल, इसमें शामिल प्रत्येक बड़े चैनल (उदाहरण के लिए, 40M हर्ट्ज, 80 मेगाहर्ट्ज) और उसी बैंड के प्रत्येक उच्च चैनल को असुरक्षित चैनल के रूप में चिह्नित करता है।
  4. यदि cellVictimMhz मौजूद है और सेल चैनल में डाउनलिंक है।

    1. cellVictimMhz थ्रेशोल्ड के रूप में उपयोग करके चरण 3 निष्पादित करता है और सेल अपलिंक के बजाय सेल डाउनलिंक से तुलना करता है।
  5. गणना किए गए असुरक्षित चैनलों पर तालिका प्रविष्टि की पावर कैप लागू करता है।

असुरक्षित चैनल गणना

चित्र 3. पड़ोसी चैनल हस्तक्षेप के लिए असुरक्षित चैनल गणना

हार्मोनिक/इंटरमोड्यूलेशन विरूपण

हार्मोनिक/इंटरमोड्यूलेशन विरूपण के लिए, कोएक्स इंजन हार्मोनिक/इंटरमोड्यूलेशन सिग्नल की सीमा की गणना करता है और संभावित पीड़ित चैनल के साथ इसके प्रतिशत ओवरलैप का मूल्यांकन करता है। यदि ओवरलैप ओवरलैप सीमा से अधिक है, तो एल्गोरिदम इसे एक असुरक्षित स्थिति मानता है। पीड़ित चैनल पर हार्मोनिक/इंटरमोड्यूलेशन विरूपण के प्रतिशत ओवरलैप की गणना निम्नलिखित समीकरण के साथ की जाती है:

$$ 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} $$

असुरक्षित चैनल गणना हार्मोनिक विरूपण

चित्र 4. हार्मोनिक विरूपण के लिए असुरक्षित चैनल गणना

इंटरमॉड्यूलेशन मामले में, एल्गोरिदम सेल अपलिंक के इंटरमॉड्यूलेशन विरूपण और सेल डाउनलिंक चैनल को पीड़ित करने वाले वाई-फाई चैनल पर विचार करता है। इसके बाद यह सेल अपलिंक आवृत्तियों, वाई-फाई आवृत्तियों और दो इंटरमॉड्यूलेशन गुणांक $ M $, $ N $ के आधार पर इंटरमॉड्यूलेशन मानों के साथ विरूपण उच्च और विरूपण निम्न को प्रतिस्थापित करता है।

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

असुरक्षित चैनल गणना इंटरमोड्यूलेशन विरूपण

चित्र 5. इंटरमॉड्यूलेशन विरूपण के लिए असुरक्षित चैनल गणना

आप हस्तक्षेप करने वाले सेल बैंड के अनुसार लुकअप तालिका में $ M $, $ N $ और ओवरलैप मान निर्दिष्ट कर सकते हैं। यदि किसी बैंड के लिए कोई हस्तक्षेप नहीं है, तो उस बैंड प्रविष्टि के लिए मान तालिका से हटा दिए जाते हैं। वाई-फ़ाई 2.4 गीगाहर्ट्ज़ और 5 गीगाहर्ट्ज़ बैंड के लिए इन मानों के दो सेट स्वतंत्र रूप से परिभाषित किए जा सकते हैं।

पड़ोसी हस्तक्षेप एल्गोरिदम के समान, एल्गोरिदम प्रत्येक हस्तक्षेप करने वाले सेल बैंड में परिभाषित समान पावर कैप मान का पुन: उपयोग करता है।

प्रत्येक सक्रिय सेल चैनल के लिए एल्गोरिदम निम्नानुसार व्यवहार करता है:

  1. सेल चैनल के बैंड के लिए, यह एक लुकअप तालिका प्रविष्टि ढूंढने का प्रयास करता है। यदि कोई तालिका प्रविष्टि नहीं मिलती है, तो इस चैनल के लिए कोई असुरक्षित चैनल नहीं होता है।
  2. यदि पैरामीटर परिभाषित हैं तो हार्मोनिक्स से असुरक्षित 2.4 गीगाहर्ट्ज़ चैनल ढूँढता है।

    1. 2.4 गीगाहर्ट्ज के लिए हार्मोनिक डिग्री एन ढूँढता है।
    2. एन और सेल अपलिंक के आधार पर हार्मोनिक उच्च आवृत्ति और हार्मोनिक कम आवृत्ति की गणना करता है।
    3. पहला 20 मेगाहर्ट्ज वाई-फाई चैनल ढूंढता है जो नीचे से आने वाले हार्मोनिक की निचली सीमा के भीतर है।
    4. वाई-फाई चैनल पर हार्मोनिक के ओवरलैप की गणना करता है और यदि ओवरलैप 2.4 गीगाहर्ट्ज वाई-फाई ओवरलैप सीमा से अधिक है तो चैनल को असुरक्षित के रूप में चिह्नित करता है।
    5. पहला 20 मेगाहर्ट्ज वाई-फाई चैनल ढूंढता है जो ऊपर से आने वाले हार्मोनिक की ऊपरी सीमा के भीतर है।
    6. वाई-फाई चैनल पर हार्मोनिक के ओवरलैप की गणना करता है और यदि ओवरलैप 2.4 गीगाहर्ट्ज वाई-फाई ओवरलैप सीमा से अधिक है तो चैनल को असुरक्षित के रूप में चिह्नित करता है।
    7. बीच के प्रत्येक 20 मेगाहर्ट्ज चैनल को असुरक्षित चैनल के रूप में चिह्नित करता है।
  3. यदि पैरामीटर परिभाषित हैं तो हार्मोनिक्स से असुरक्षित 5 गीगाहर्ट्ज़ चैनल ढूँढता है।

    1. 5 गीगाहर्ट्ज के लिए हार्मोनिक डिग्री एन ढूँढता है। यदि N 0 है, तो चरण 5 पर चला जाता है।
    2. एन और सेल अपलिंक के आधार पर हार्मोनिक उच्च आवृत्ति और हार्मोनिक कम आवृत्ति की गणना करता है।
    3. असुरक्षित 20 मेगाहर्ट्ज चैनल ढूँढता है।

      1. पहला 20 मेगाहर्ट्ज वाई-फाई चैनल ढूंढता है जो नीचे से आने वाले हार्मोनिक की निचली सीमा के भीतर है।
      2. वाई-फाई चैनल पर हार्मोनिक के ओवरलैप की गणना करता है और यदि ओवरलैप 2.4 गीगाहर्ट्ज वाई-फाई ओवरलैप सीमा से अधिक है तो चैनल को असुरक्षित के रूप में चिह्नित करता है।
      3. पहला 20 मेगाहर्ट्ज वाई-फाई चैनल ढूंढता है जो ऊपर से आने वाले हार्मोनिक की ऊपरी सीमा के भीतर है।
      4. वाई-फाई चैनल पर हार्मोनिक के ओवरलैप की गणना करता है और यदि ओवरलैप 2.4 गीगाहर्ट्ज वाई-फाई ओवरलैप सीमा से अधिक है तो चैनल को असुरक्षित के रूप में चिह्नित करता है।
      5. बीच में प्रत्येक 20 मेगाहर्ट्ज चैनल को निर्दिष्ट पावर कैप के साथ असुरक्षित चैनल के रूप में चिह्नित करता है।
    4. असुरक्षित 40 मेगाहर्ट्ज, 80 मेगाहर्ट्ज, 160 मेगाहर्ट्ज चैनल ढूँढता है

      1. चरण 3ए को दोहराता है लेकिन 40 मेगाहर्ट्ज, 80 मेगाहर्ट्ज, 160 मेगाहर्ट्ज के साथ।
      2. हार्मोनिक किनारे पर चैनलों के ओवरलैप की गणना करने के बजाय, छोटे घटक चैनलों से गणना किए गए ओवरलैप का पुन: उपयोग करता है (उदाहरण के लिए, यदि दो 20 मेगाहर्ट्ज चैनल 40 मेगाहर्ट्ज चैनल बनाते हैं और 30% और 90% ओवरलैप होते हैं, तो औसत 60 है 40 मेगाहर्ट्ज चैनल के लिए % ओवरलैप)।
  4. यदि पैरामीटर परिभाषित हैं तो इंटरमॉड्यूलेशन से असुरक्षित 2.4 गीगाहर्ट्ज़ चैनल ढूँढता है।

    1. 2.4 गीगाहर्ट्ज़ के लिए इंटरमोड्यूलेशन गुणांक एन, एम ढूँढता है।
    2. प्रत्येक 2.4 गीगाहर्ट्ज़ वाई-फ़ाई चैनल के लिए:

      1. एन, एम, सेल अपलिंक और वाई-फाई चैनल के आधार पर इंटरमॉड्यूलेशन कम आवृत्ति और इंटरमॉड्यूलेशन उच्च आवृत्ति की गणना करता है।
      2. सेल डाउनलिंक पर इंटरमॉड्यूलेशन के ओवरलैप की गणना करता है और यदि ओवरलैप 2.4 गीगाहर्ट्ज सेल ओवरलैप सीमा से अधिक है तो चैनल को असुरक्षित के रूप में चिह्नित करता है।
  5. यदि पैरामीटर परिभाषित हैं तो इंटरमॉड्यूलेशन से असुरक्षित 5 गीगाहर्ट्ज चैनल का पता लगाता है।

    1. 5 गीगाहर्ट्ज वाई-फाई चैनल और 5 गीगाहर्ट्ज सेल ओवरलैप थ्रेशोल्ड का उपयोग करके चरण 4 को दोहराता है।
  6. गणना किए गए असुरक्षित चैनलों पर तालिका प्रविष्टि की पावर कैप लागू करता है।

अंतिम परिणाम

पड़ोसी और हार्मोनिक हस्तक्षेप से असुरक्षित चैनलों के दोनों सेटों की गणना करने के बाद, अंतिम सेट की गणना दोनों सेटों के संघ को लेकर की जाती है (और टकराव होने पर निचली पावर कैप का चयन किया जाता है), और यदि कोई हो तो सेट से डिफ़ॉल्ट चैनलों को हटा दिया जाता है। कोई अनिवार्य प्रतिबंध लागू नहीं।

एल्गोरिथ्म इस प्रकार व्यवहार करता है:

  1. यदि प्रत्येक 2.4 गीगाहर्ट्ज वाई-फाई चैनल को असुरक्षित चैनल के रूप में चिह्नित किया जाता है, तो सेट से डिफ़ॉल्ट 2.4 गीगाहर्ट्ज वाई-फाई चैनल हटा दिया जाता है।
  2. यदि प्रत्येक 5 गीगाहर्ट्ज वाई-फाई चैनल को असुरक्षित चैनल के रूप में चिह्नित किया जाता है, तो सेट से डिफ़ॉल्ट 5 गीगाहर्ट्ज वाई-फाई चैनल हटा दिया जाता है।
  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 लुकअप तालिका है:


<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>

वाहक एकत्रीकरण

वाहक एकत्रीकरण (सीए) के लिए, प्रत्येक अपलिंक/डाउनलिंक के लिए हार्मोनिक/इंटरमोड्यूलेशन रेंज स्वतंत्र रूप से हस्तक्षेप पैदा करने के लिए पर्याप्त ओवरलैप उत्पन्न नहीं कर सकती है, लेकिन संयुक्त होने पर पर्याप्त ओवरलैप उत्पन्न कर सकती है। एल्गोरिदम प्रत्येक हार्मोनिक/इंटरमोड्यूलेशन रेंज पर स्वतंत्र रूप से विचार करता है और लौटाए गए असुरक्षित चैनलों का संघ लेता है। इंटरमॉड्यूलेशन मामले के लिए, इसका मतलब प्रत्येक डीएल पर प्रत्येक यूएल की इंटरमॉड्यूलेशन रेंज का आकलन करना है।

एल्गोरिदम PCELL/PSCELL/SCELLs के बीच कोई अंतर नहीं करता है और उन्हें समान मानता है।

लाइसेंस सहायता प्राप्त प्रवेश

लाइसेंस असिस्टेड एक्सेस (LAA) की पहचान बैंड #46 के रूप में की गई है। एल्गोरिदम इस बैंड को अन्य बैंड के समान मानता है। इस स्थिति में, संपूर्ण 5 गीगाहर्ट्ज़ चैनल को लुकअप तालिका में ओवरराइड सूची के रूप में सेट किया जा सकता है।

वाहक आवश्यकताओं के आधार पर, चैनल अवॉइडेंस एल्गोरिदम पूरे 5 गीगाहर्ट्ज वाई-फाई बैंड के लिए सॉफ्टएपी और वाई-फाई डायरेक्ट (पी2पी) पर अनिवार्य प्रतिबंध निर्धारित करता है। इस उपयोग के मामले को संभालने के लिए एल्गोरिदम के लिए, वाहक कॉन्फ़िगरेशन मान restrict_5g_softap_wifi_direct_for_laa परिभाषित किया जाना चाहिए। यदि सेल चैनल LAA पर है और restrict_5g_softap_wifi_direct_for_laa true है, तो एल्गोरिदम पूरे 5 Ghz बैंड के साथ असुरक्षित चैनलों का सेट लौटाता है और 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<CoexUnsafeChannels> unsafeChannels, int restrictions);
}

वाई-फ़ाई क्रिया निष्पादित करना

जब वाई-फाई सेवा को असुरक्षित चैनलों के सेट के बारे में जानकारी मिलती है, तो यह सुनिश्चित करने के लिए उचित कार्रवाई करती है कि उन चैनलों से बचा जाए। यह अनुभाग विभिन्न परिदृश्यों में वाई-फाई सेवा के व्यवहार का वर्णन करता है।

ड्राइवर को सूचित करना

चूँकि चैनल परिहार करने में ड्राइवर की प्रमुख भूमिका होती है, इसलिए असुरक्षित चैनलों को ड्राइवर और फ़र्मवेयर तक पहुँचाना आवश्यक है। ऐसा करने के लिए, निम्नलिखित IWifiChip HAL API का उपयोग करें।

एआईडीएल के लिए:

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

एचआईडीएल (1.5 या उच्चतर) के लिए:

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

सॉफ़्टएपी

असुरक्षित चैनल से बचाव के लिए सॉफ्टएपी मुख्य उपयोग का मामला है। निम्नलिखित अनुभाग प्रमुख सॉफ्टएप परिदृश्यों की रूपरेखा प्रस्तुत करता है जहां एसीएस के साथ चैनल परिहार लागू किया जा सकता है। परिदृश्य चैनल परिहार एल्गोरिथ्म और ड्राइवर या फ़र्मवेयर के व्यवहार का वर्णन करते हैं।

ACS सक्षम के साथ SoftAP प्रारंभ करना (अभी तक कोई SoftAP चालू नहीं है)

  1. यदि चैनल असुरक्षित हैं और SoftAP प्रतिबंध है

    1. फ़्रेमवर्क ACS सूची से असुरक्षित चैनलों को हटा देता है।
    2. यदि सूची खाली है, तो फ्रेमवर्क SoftAP को रोक देता है।
  2. यदि चैनल असुरक्षित हैं और कोई प्रतिबंध नहीं है

    1. विक्रेता ड्राइवर/फर्मवेयर असुरक्षित चैनलों की तुलना में सुरक्षित चैनलों को प्राथमिकता देता है।

SoftAP ACS सक्षम है और असुरक्षित चैनल अपडेट किए गए हैं

  1. यदि SoftAP चैनल असुरक्षित है और SoftAP प्रतिबंध है

    1. फ्रेमवर्क असुरक्षित चैनलों को हटाकर एसीएस सूची को अपडेट करता है।
    2. यदि सूची खाली है, तो फ्रेमवर्क SoftAP को बंद कर देता है।
  2. यदि SoftAP चैनल असुरक्षित है और कोई प्रतिबंध नहीं है

    1. फ्रेमवर्क द्वारा कोई कार्रवाई नहीं की जाती है. विक्रेता ड्राइवर/फर्मवेयर असुरक्षित चैनलों से बचने या यदि बचाव संभव नहीं है तो पावर कैप लगाने का प्रबंधन करता है।

वाई-फ़ाई डायरेक्ट (पी2पी)

  1. यदि वाई-फाई डायरेक्ट (पी2पी) प्रतिबंध वाले असुरक्षित चैनल हैं।

    1. एचएएल विधि ISupplicantP2pIface::setDisallowedFrequencies() उपयोग करके असुरक्षित चैनलों से बचने के लिए फ्रेमवर्क wpa_supplicant अनुरोध करता है।
  2. यदि बिना किसी प्रतिबंध के असुरक्षित चैनल हैं।

    1. यदि वाई-फाई डायरेक्ट (पी2पी) प्रतिबंध के बिना असुरक्षित चैनल का उपयोग किया जाता है तो विक्रेता ड्राइवर/फर्मवेयर पावर कैप लागू करता है।

वाई-फ़ाई अवेयर (NAN)

फ़्रेमवर्क वाई-फ़ाई अवेयर (NAN) के लिए चैनल चयन में शामिल नहीं है और कोई फ़्रेमवर्क कार्रवाई नहीं की जाती है। विक्रेता ड्राइवर/फर्मवेयर वाई-फाई अवेयर (एनएएन) चैनल से बचाव के लिए जिम्मेदार है।

एल्गोरिथम को अक्षम करना

यदि आप डिफ़ॉल्ट एल्गोरिदम कार्यान्वयन को अक्षम करना चाहते हैं और बचने के लिए असुरक्षित चैनलों की अपनी सूची पास करना चाहते हैं, तो ओवरले config_wifiDefaultCoexAlgorithmEnabled को कॉन्फ़िगर करें। यदि ओवरले गलत पर सेट है, तो डिफ़ॉल्ट एल्गोरिदम अक्षम है। फिर आप निम्नलिखित सिस्टम एपीआई का उपयोग करके फ्रेमवर्क में शामिल होने के लिए असुरक्षित चैनलों की एक सूची तैयार करने के लिए अपने स्वयं के आउट-ऑफ-बैंड स्वामित्व एल्गोरिदम का उपयोग कर सकते हैं।

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

कार्यान्वयन को मान्य करना

वाई-फ़ाई/सेलुलर कोएक्स चैनल अवॉइडेंस सुविधा के अपने कार्यान्वयन को मान्य करने के लिए, निम्नलिखित परीक्षणों का उपयोग करें।

सीटीएस परीक्षण

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

अधिनियम परीक्षण

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

वीटीएस परीक्षण

  • यदि एआईडीएल लागू किया गया है: wifi_chip_aidl_test.cpp

    • TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
  • यदि HIDL लागू किया गया है: wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)