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

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

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

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

पार्श्वभूमि

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

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

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

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

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

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

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

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

सेल्युलर फ़्रीक्वेंसी में बदलाव की रिपोर्ट करना

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

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

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

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

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

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

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

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

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

ओवरराइड सूची

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

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

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

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

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

  • all (संपूर्ण 2.4GHz बैंड)

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

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

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

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

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

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

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

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

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

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

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

    1. अगर वाई-फ़ाई बैंड का निचला हिस्सा जोखिम में है

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

      1. सेल अपलिंक की न्यूनतम आवृत्ति के लिए वाईफाईविक्टिम मेगाहर्ट्ज घटाकर असुरक्षित चैनलों की निचली सीमा का पता लगाता है।
      2. पहला वाई-फाई चैनल ढूँढता है जिसका ऊपरी किनारा सीमा को ओवरलैप करता है।
      3. वाई-फाई चैनल, इसमें शामिल प्रत्येक बड़े चैनल (उदाहरण के लिए, 40 मेगाहर्ट्ज, 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.4GHz और 5GHz बैंड के लिए इन मानों के दो सेट स्वतंत्र रूप से परिभाषित किए जा सकते हैं।

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

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

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

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

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

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

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

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

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

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

अंतिम परिणाम

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

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

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

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

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

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

लाइसेंस असिस्टेड एक्सेस

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

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

वाई-फ़ाई क्रिया करना

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

चालक को सूचित करना

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

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

सॉफ्टएप

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

एसीएस सक्षम के साथ सॉफ्टएप शुरू करना (अभी तक कोई सॉफ्टएप नहीं है)

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

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

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

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

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

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

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

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

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

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

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

वाई-फाई अवेयर (एनएएन)

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

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

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

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

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

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

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

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

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

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

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

  • wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)