מניעת ערוץ Wi-Fi/Cellular Coex

תכונת ההימנעות של ערוצי Wi-Fi/סלולר, שהוצגה באנדרואיד 12, מזהה ונמנעת משימוש בערוצי Wi-Fi לא בטוחים במקרים שבהם עשויה להיות הפרעה מערוצים סלולריים. זה כולל ממשקים כגון STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN).

עמוד זה דן בדברים הבאים:

  • מידע שעל המודם הסלולרי לדווח למסגרת אנדרואיד
  • אלגוריתמים שמסגרת ה-Wi-Fi משתמשת בהם כדי לחשב ערוצי Wi-Fi שיש להימנע מהם
  • טבלאות תצורה שיצרני המכשירים חייבים לספק עבור מסגרת ה-Wi-Fi
  • ממשקי API של מערכת, תצורות וממשקי API של HAL הקשורים לתכונת הימנעות מערוצים
  • התנהגות מסגרת לטיפול בהימנעות מערוצים
  • התנהגות ספקי שבבים לטיפול במניעת ערוצים
  • פרטי יישום להימנעות מערוצים
  • בדיקות לאימות התנהגות הימנעות מערוצים

רקע כללי

עבור מכשירים עם טכנולוגיות סלולריות כגון LTE, 5G NR וגישה מסייעת עם רישיון (LAA), הערוצים הסלולריים בשימוש יכולים להפריע לערוץ ה-Wi-Fi בשימוש. זה מתרחש כאשר ערוצי הסלולר וה-Wi-Fi נמצאים בהפרדת תדרים קצרה (ערוצים שכנים) או כאשר יש הפרעות הרמוניות ואינטרמודולציה.

סוג זה של הפרעות הופך לבעיה כאשר אנטנה אחת משדרת ואחרת קולטת בו זמנית. במקרה זה, האנטנה המשדרת מציפה את האנטנה המקבלת, ומשפיעה על איכות הקליטה שלה.

מסמך זה מתייחס למשדר המפריע כתוקף ולמקלט שחווה את ההפרעה כקורבן . ערוץ ה-Wi-Fi שהוא התוקף או הקורבן מכונה ערוץ לא בטוח .

תכונת הימנעות ערוצי ה-Wi-Fi/סלולר מספקת גישה עקבית להימנעות מערוצים ומפחיתה את הצורך בקוד קנייני החורג ממסגרת ה-Wi-Fi. בנוסף, התכונה מאפשרת ליצרני מכשירים להגדיר, להפעיל ולהשבית ולעקוף את התכונה.

התכונה מבצעת הימנעות מערוצים על ידי שליטה בערוצי ה-Wi-Fi. ניתן לתאר את סכימת ההימנעות מערוצי Wi-Fi כסדרה של ארבעה שלבים מופשטים:

  1. מודם מדווח על שינוי בתדר הסלולרי
  2. אלגוריתם ההימנעות מ-Coex מחשב ערוצי Wi-Fi לא בטוחים
  3. אלגוריתם הימנעות Coex מודיע לשירות ה-Wi-Fi
  4. מסגרת או מנהל התקן מבצעים פעולת Wi-Fi מתאימה

ערכת הימנעות מערוץ

איור 1. ערכת הימנעות מערוצים

דיווח על שינוי בתדר הסלולרי

שירות הטלפוניה מדווח על הערוצים הסלולריים הנמצאים כיום בשימוש. כאשר תדר ההפעלה הסלולרי משתנה, המודם מדווח מידע זה לשירות הטלפוניה באמצעות IRadio::PhysicalChannelConfig . מידע זה כולל אינדיקציות לגישה מסייעת ברישיון (LAA) ולצירוף ספקים (CA).

מ-Android 12, השדות הבאים ב 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;hte

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

חישוב ערוצי Wi-Fi לא בטוחים

כאשר המודם מדווח על שינוי בתדר הסלולרי, אלגוריתם ערוץ ה-coex מחשב את ההפרעות בין ערוצי סלולר ו-Wi-Fi וקובע איזו קבוצה של ערוצי Wi-Fi אינה בטוחה.

ישנם מספר סוגים של הפרעות הדורשות נוסחאות שונות: שכנות והרמוניות /אינטרמודולציה . בשל ההבדלים הפיזיים באנטנה ובפריסה בין התקנים, דפוסי ההפרעות השכנות וההרמוניות/אינטרמודולציה עבור כל מכשיר שונות. כדי לתת את הדעת על כך, יצרני התקנים חייבים לספק טבלת חיפוש לחיבור פרמטרים לנוסחאות גנריות עבור שני סוגי ההפרעות. פרמטרים אלה מוגדרים לכל פס תא ומתייחסים אליהם לפי הפסים של ערוצי התא הפעילים.

ניתן להגדיר מכסת כוח מקסימלית בטבלת החיפוש. אם מוגדרת מכסת הספק מקסימלית, ערוץ לא בטוח משדר עם מכסת הכוח המסופקת. אם אין מכסת כוח, הערוץ משדר בעוצמה מלאה.

באופן כללי, תכונת ההימנעות מערוצים משתמשת בגישה הטובה ביותר כדי להימנע מערוצי Wi-Fi לא בטוחים כדי לייעל את הביצועים. אבל במקרים מסוימים (לדוגמה, בגלל דרישות הספק), זה חובה עבור ממשקים מסוימים כדי למנוע ערוצים לא בטוחים עבור רצועות סלולריות מסוימות. במקרים כאלה, הגבלות חובה מיוצגות כמסכת סיביות המכילה ערכים האם לאסור ערוצים מסוימים כגון Wi-Fi Direct (P2P), SoftAp ו-Wi-Fi Aware (NAN). בעוד ערוץ לא בטוח פועל כהמלצה נגד שימוש בערוץ זה בכל מקרי השימוש, הגבלות חובה מסמנות מקרי שימוש ספציפיים להימנעות חובה.

אם כל ערוץ בפס 2.4 GHz או 5 GHz מסומן כלא בטוח, טבלת החיפוש יכולה להגדיר ערוץ ברירת מחדל של 2.4 GHz או ערוץ ברירת מחדל של 5 GHz לכל פס תא מפריע כבחירה הבטוחה ביותר. ערוצי ברירת המחדל אינם מדווחים כערוצים לא בטוחים כאשר שאר חברי הלהקה מדווחים לא בטוחים.

רשימת ביטול

גישה נוסחתית מוגבלת במקרים שבהם ההפרעה תלויה במידה רבה ברוחב הפס (ולכן ערוצים עם רוחב פס גדול יותר עשויים להיות לא בטוחים אך לא ערוצים עם רוחב פס קטן יותר). במקרים, כמו עם LAA, כדאי לדלג על החישובים ולהשתמש ברשימה מוגדרת של ערוצים לא בטוחים.

לשם כך, תוכל לציין רשימה של עקיפת ערוצים לא בטוחים בטבלת החיפוש עבור ערכים מסוימים. רשימת עקיפה ברשומת טבלה מציינת שדילוג על החישוב עבור ערוץ סלולרי מסוים זה ושערוצי ה-Wi-Fi הלא בטוחים לערוץ הסלולרי התואם מצוינים ברשימת העקיפה.

במקרים הרגישים לרוחב פס, אתה יכול להימנע באופן סלקטיבי מרוחב פס מסוימים על ידי ציון ערוצים מסוימים עם רוחבי פס מסוימים ברשימת העקיפה. הסיבה לכך היא שכל מספר ערוץ Wi-Fi מתאים לרוחב פס מוגדר.

רשימת העקיפה מיוצגת על ידי רשימה של מספרי ערוצים או מילות מפתח בקטגוריות מוגדרות מראש עבור כל רצועת Wi-Fi:

קטגוריות 2g:

  • all (כל רצועת ה-2.4 גיגה-הרץ)

קטגוריות 5 גרם:

  • all (כל רצועת ה-5 GHz)
  • 20mhz (ערוצי 5 גיגה-הרץ 20 מגה-הרץ)
  • 40mhz (5 גיגה-הרץ 40 מגה-הרץ)
  • 80mhz (ערוצי 5 גיגה-הרץ 80 מגה-הרץ)
  • 160mhz (5 גיגה-הרץ 160 מגה-הרץ)

הפרעות ערוץ סמוך

כדי לקבוע הפרעות ערוץ סמוך, אלגוריתם ההימנעות מ-coex מוודא שהמרחק ΔF בין ערוץ תוקף לערוץ הקורבן לא עובר תחת סף מוגדר.

הפרעות ערוץ

איור 2. מרחק בין ערוץ תוקפן לקורבן

הסף נקבע על פי התצורה הפיזית של המכשיר וערך הסף המסופק בערך טבלת החיפוש לכל פס מפריע. ללהקות שנחשבות לא מפריעות אין כניסה לטבלה ואין צורך לחשב ערוצים לא בטוחים (זה רוב הזמן).

פרמטרים של הפרעות שכנות

  • wifiVictimMhz : סף מרחק מגה-הרץ עבור קורבן Wi-Fi (קישור סלולרי)
  • cellVictimMhz : סף מרחק מגה-הרץ עבור קורבן תא (קישור תא מטה)

האלגוריתם מתנהג באופן הבא עבור כל ערוץ תא פעיל:

  1. עבור להקת הערוץ, מנסה למצוא ערך טבלת חיפוש. אם לא נמצא ערך טבלה, חוזר ללא ערוצים לא בטוחים עבור ערוץ התא הזה.
  2. בהתבסס על הרצועה הסלולרית, מזהה איזה פס Wi-Fi נמצא בסיכון ומאיזה צד של הרצועה מגיעה ההפרעה (לדוגמה, ערוצי 2.4 גיגה-הרץ נמוכים יותר, ערוצי 2.4 גיגה-הרץ גבוהים יותר, ערוצי 5 גיגה-הרץ נמוכים יותר).
  3. אם wifiVictimMhz קיים ולערוץ הסלולרי יש uplink ו

    1. אם החלק התחתון של פס ה-Wi-Fi נמצא בסיכון

      1. מוצא את הגבול העליון של ערוצים לא בטוחים על ידי הוספת wifiVictimMhz לתדר הגבוה ביותר של הקישור הסלולרי.
      2. מוצא את ערוץ ה-Wi-Fi הראשון של 20 מגה-הרץ שהקצה התחתון שלו חופף את הגבול.
      3. מסמן את ערוץ ה-Wi-Fi, כל ערוץ רוחב פס גדול יותר שמכיל אותו (לדוגמה, 40 מגה-הרץ, 80 מגה-הרץ), וכל ערוץ תחתון של אותה פס כמו הערוץ הלא בטוח.
    2. אם החלק העליון של פס ה-Wi-Fi נמצא בסיכון

      1. מוצא את הגבול התחתון של ערוצים לא בטוחים על ידי הפחתת wifiVictimMhz לתדר הנמוך ביותר של הקישור הסלולרי.
      2. מוצא את ערוץ ה-Wi-Fi הראשון שהקצה העליון שלו חופף את הגבול.
      3. מסמן את ערוץ ה-Wi-Fi, כל ערוץ גדול יותר שמכיל אותו (לדוגמה, 40Mhz, 80Mhz), וכל ערוץ גבוה יותר מאותה פס כמו הערוץ הלא בטוח.
  4. אם cellVictimMhz קיים ולערוץ התא יש קישור למטה.

    1. מבצע שלב 3 תוך שימוש cellVictimMhz כסף ומשווה מול תא מטה במקום קישור תא מעלה.
  5. מחיל את מכסת הכוח של ערך הטבלה על הערוצים הלא בטוחים המחושבים.

חישוב ערוץ לא בטוח

איור 3. חישוב ערוץ לא בטוח עבור הפרעות ערוץ סמוך

עיוות הרמוני/אינטרמודולציה

עבור עיוות הרמוני/אינטרמודולציה, מנוע ה-coex מחשב את טווח האות ההרמוני/אינטרמודולציה ומעריך את אחוז החפיפה שיש לו עם ערוץ קורבן פוטנציאלי. אם החפיפה חורגת מסף חפיפה, האלגוריתם רואה בכך מצב לא בטוח. החישוב של אחוז החפיפה של עיוות ההרמוני/האינטרמודולציה בערוץ הקורבן מתבצע באמצעות המשוואה הבאה:

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

במקרה של עיוות הרמוני, האלגוריתם מחשיב את העיוות ההרמוני של ערוץ הקישור הסלולרי הפוגע בערוצי ה-Wi-Fi. לאחר מכן הוא מחליף את העיוות הגבוה והעיוות הנמוך בערכים ההרמוניים המבוססים על תדרי הקישור של התא ודרגה הרמונית $ N $.

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

חישוב ערוץ לא בטוח עיוות הרמוני

איור 4. חישוב ערוץ לא בטוח לעיוות הרמוני

במקרה של אינטרמודולציה, האלגוריתם מחשיב את עיוות האינטרמודולציה של קישור העלייה של התא וערוץ ה-Wi-Fi פוגעים בערוץ ההורדה של התא. לאחר מכן הוא מחליף את העיוות הגבוה והעיוות הנמוך בערכי האינטרמודולציה המבוססים על תדרי הקישור של התא, תדרי ה-Wi-Fi ושני מקדמי האינטרמודולציה $ M $, $ N $.

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

עיוות אינטרמודולציה של חישוב ערוץ לא בטוח

איור 5. חישוב ערוץ לא בטוח עבור עיוות אינטרמודולציה

אתה יכול לציין $ M $, $ N $ וערכי חפיפה בטבלת החיפוש לכל פס תאים מפריע. אם אין הפרעה לרצועה, הערכים מושמטים מהטבלה עבור ערך הרצועה. ניתן להגדיר באופן עצמאי שתי קבוצות של ערכים אלה עבור רצועות ה-Wi-Fi 2.4 GHz ו-5 GHz.

בדומה לאלגוריתם ההפרעות השכן, האלגוריתם עושה שימוש חוזר באותו ערך מכסת הספק שהוגדר לכל פס תא מפריע.

האלגוריתם מתנהג באופן הבא עבור כל ערוץ תא פעיל:

  1. עבור הלהקה של ערוץ התא, הוא מנסה למצוא ערך טבלת חיפוש. אם לא נמצא ערך טבלה, חוזר ללא ערוצים לא בטוחים עבור ערוץ זה.
  2. מוצא את ערוצי ה-2.4 GHz הלא בטוחים מהרמוניות אם מוגדרים פרמטרים.

    1. מוצא את הדרגה ההרמונית N עבור 2.4 GHz.
    2. מחשב את התדר הגבוה ההרמוני ואת התדר הנמוך ההרמוני בהתבסס על N ועל קישור התא.
    3. מוצא את ערוץ ה-Wi-Fi הראשון של 20 מגה-הרץ שנמצא בתוך הגבול התחתון של ההרמונית שמגיעה מלמטה.
    4. מחשב את החפיפה של ההרמונית על ערוץ ה-Wi-Fi ומסמן את הערוץ כלא בטוח אם החפיפה חורגת מסף חפיפת ה-Wi-Fi של 2.4 GHz.
    5. מוצא את ערוץ ה-Wi-Fi הראשון של 20 מגה-הרץ שנמצא בגבול העליון של ההרמונית שמגיעה מלמעלה.
    6. מחשב את החפיפה של ההרמונית על ערוץ ה-Wi-Fi ומסמן את הערוץ כלא בטוח אם החפיפה חורגת מסף חפיפת ה-Wi-Fi של 2.4 GHz.
    7. מסמן כל ערוץ 20 מגה-הרץ שביניהם כערוץ לא בטוח.
  3. מוצא את ערוצי ה-5 GHz הלא בטוחים מהרמוניות אם מוגדרים פרמטרים.

    1. מוצא את הדרגה ההרמונית N עבור 5 GHz. אם N הוא 0, דלג לשלב 5.
    2. מחשב את התדר הגבוה ההרמוני ואת התדר הנמוך ההרמוני בהתבסס על N ועל קישור התא.
    3. מוצא ערוצי 20 מגה-הרץ לא בטוחים.

      1. מוצא את ערוץ ה-Wi-Fi הראשון של 20 מגה-הרץ שנמצא בתוך הגבול התחתון של ההרמונית שמגיעה מלמטה.
      2. מחשב את החפיפה של ההרמונית על ערוץ ה-Wi-Fi ומסמן את הערוץ כלא בטוח אם החפיפה חורגת מסף חפיפת ה-Wi-Fi של 2.4 GHz.
      3. מוצא את ערוץ ה-Wi-Fi הראשון של 20 מגה-הרץ שנמצא בגבול העליון של ההרמונית שמגיעה מלמעלה.
      4. מחשב את החפיפה של ההרמונית על ערוץ ה-Wi-Fi ומסמן את הערוץ כלא בטוח אם החפיפה חורגת מסף חפיפת ה-Wi-Fi של 2.4 GHz.
      5. מסמן כל ערוץ 20 מגה-הרץ בין לבין כערוץ לא בטוח עם מכסת הכוח שצוינה.
    4. מוצא ערוצי 40 מגה-הרץ, 80 מגה-הרץ, 160 מגה-הרץ לא בטוחים

      1. חוזר על שלב 3a אבל עם 40 מגה-הרץ, 80 מגה-הרץ, 160 מגה-הרץ.
      2. במקום לחשב את החפיפות של הערוצים בקצה ההרמוני, עושה שימוש חוזר בחפיפות המחושבות מהערוצים הקטנים יותר (לדוגמה, אם שני ערוצי 20 מגה-הרץ יוצרים ערוץ של 40 מגה-הרץ ויש להם חפיפה של 30% ו-90%, אז הממוצע הוא 60 % חפיפה עבור ערוץ 40 מגה-הרץ).
  4. מוצא את ערוצי ה-2.4 GHz הלא בטוחים מאינטרמודולציה אם מוגדרים פרמטרים.

    1. מוצא את מקדמי האינטרמודולציה N, M עבור 2.4 GHz.
    2. עבור כל ערוץ Wi-Fi במהירות 2.4 GHz:

      1. מחשב את האינטרמודולציה בתדר נמוך ובתדר גבוה אינטרמודולציה על סמך N, M, קישור תא מעלה וערוץ Wi-Fi.
      2. מחשב את החפיפה של האינטרמודולציה על פני קישור מטה של ​​התא ומסמן את הערוץ כלא בטוח אם החפיפה חורגת מסף חפיפת התא של 2.4 GHz.
  5. מוצא את ערוצי ה-5 GHz הלא בטוחים מאינטרמודולציה אם מוגדרים פרמטרים.

    1. חוזר על שלב 4 באמצעות ערוצי ה-Wi-Fi של 5 GHz וסף חפיפת התא של 5 GHz.
  6. מחיל את מכסת הכוח של ערך הטבלה על הערוצים הלא בטוחים המחושבים.

תוצאה סופית

לאחר ששני קבוצות הערוצים הלא בטוחים מהפרעות שכנות והרמוניות מחושבות, הסט הסופי מחושב על ידי לקיחת האיחוד של שתי הקבוצות (ובחירת מכסת ההספק התחתון אם יש התנגשויות), והסרת ערוצי ברירת המחדל מהקבוצה אם יש לא הוחלו הגבלות מחייבות.

האלגוריתם מתנהג באופן הבא:

  1. אם כל ערוץ Wi-Fi 2.4 GHz מסומן כערוץ לא בטוח, מסיר את ערוץ ברירת המחדל של 2.4 GHz Wi-Fi מהקבוצה.
  2. אם כל ערוץ Wi-Fi 5 GHz מסומן כערוץ לא בטוח, מסיר את ערוץ ברירת המחדל של 5 GHz Wi-Fi מהקבוצה.
  3. מחזיר את הסט הסופי של ערוצים לא בטוחים.

פורמט טבלת חיפוש

טבלאות החיפוש מיוצגות בקובץ XML הממוקם במחרוזת התצורה הניתנת-על config_wifiCoexTableFilepath , ומוגדרת על ידי ה-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 ומתייחס אליהם כשווים.

גישה מסייעת ברישיון

License Assisted Access (LAA) מזוהה כלהקה #46. האלגוריתם מתייחס ללהקה הזו בדומה ללהקות אחרות. במקרה זה, ניתן להגדיר את 5 ערוצי ה-Ghz המלאים כרשימת עקיפה בטבלת החיפוש.

בהתאם לדרישות הספק, אלגוריתם ההימנעות מערוצים מגדיר הגבלות חובה על SoftAP ו-Wi-Fi Direct (P2P) עבור כל פס ה-Wi-Fi של 5 GHz. כדי שהאלגוריתם יטפל במקרה שימוש זה, יש להגדיר את ערך תצורת הספק restrict_5g_softap_wifi_direct_for_laa . אם ערוץ הסלולרי נמצא ב-LAA ו- restrict_5g_softap_wifi_direct_for_laa true , האלגוריתם מחזיר את קבוצת הערוצים הלא בטוחים עם כל פס ה-5 Ghz ומגדיר את דגלי ההגבלה החובה עבור SoftAP ו-Wi-Fi Direct (P2P).

מודיע שירות Wi-Fi

לאחר שאלגוריתם ערוץ coex חישב את הערוצים הלא בטוחים, כדי לספק לאפליקציות המערכת שלך את הערוצים הלא בטוחים ואת ההגבלות שלהם, השתמש במבנה הנתונים הבא של @SystemApi המוגדר במסגרת Android.

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);
}

ביצוע פעולת Wi-Fi

כאשר שירות ה-Wi-Fi מקבל מידע על מערך הערוצים הלא בטוחים, הוא מבצע את הפעולה המתאימה כדי להבטיח שהערוצים הללו יימנעו. סעיף זה מתאר את ההתנהגות של שירות ה-Wi-Fi בתרחישים שונים.

ליידע את הנהג

מכיוון שלנהג יש תפקיד מרכזי בביצוע הימנעות מערוצים, חיוני להעביר את הערוצים הלא בטוחים לנהג ולקושחה. כדי לעשות זאת, השתמש ב- IWifiChip HAL API הבא.

עבור AIDL:

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

עבור HIDL (1.5 ומעלה):

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

SoftAP

SoftAP הוא מקרה השימוש העיקרי להימנעות מערוצים לא בטוחים. הסעיף הבא מתאר את תרחישי המפתח של SoftAp שבהם ניתן ליישם הימנעות מערוצים עם ACS. התרחישים מתארים את ההתנהגות של אלגוריתם ההימנעות מערוצים ושל מנהל ההתקן או הקושחה.

הפעלת SoftAP עם ACS מופעל (עדיין לא קיים SoftAP)

  1. אם הערוצים אינם בטוחים ויש הגבלה של SoftAP

    1. המסגרת מסירה ערוצים לא בטוחים מרשימת ה-ACS.
    2. אם הרשימה ריקה, המסגרת עוצרת את SoftAP.
  2. אם הערוצים אינם בטוחים ואין הגבלות

    1. מנהל ההתקן/קושחה של הספק נותן עדיפות לערוצים הבטוחים על פני הערוצים הלא בטוחים.

SoftAP פועל עם ACS מופעל וערוצים לא בטוחים מתעדכנים

  1. אם ערוץ SoftAP אינו בטוח ויש הגבלה של SoftAP

    1. המסגרת מעדכנת את רשימת ה-ACS על ידי הסרת הערוצים הלא בטוחים.
    2. אם הרשימה ריקה, המסגרת סוגרת את SoftAP.
  2. אם ערוץ SoftAP אינו בטוח ואין הגבלות

    1. לא ננקטת שום פעולה מצד המסגרת. מנהל ההתקן/קושחה של הספק מטפל בהימנעות מהערוצים הלא בטוחים או בהחלת מכסת החשמל אם הימנעות אינה אפשרית.

Wi-Fi Direct (P2P)

  1. אם יש ערוצים לא בטוחים עם הגבלות Wi-Fi Direct (P2P).

    1. המסגרת מבקשת את wpa_supplicant להימנע מהערוצים הלא בטוחים באמצעות שיטת HAL ISupplicantP2pIface::setDisallowedFrequencies() .
  2. אם יש ערוצים לא בטוחים ללא הגבלות.

    1. מנהל ההתקן/קושחה של הספק מחיל את מכסת המתח אם נעשה שימוש בערוץ לא בטוח ללא הגבלת Wi-Fi Direct (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);

אימות היישום

כדי לאמת את ההטמעה של תכונת ההימנעות מ-Wi-Fi/סלולר של ערוץ coex, השתמש בבדיקות הבאות.

בדיקות 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)