Функция избегания каналов Wi-Fi/сотовой связи, представленная в Android 12, определяет и избегает использования небезопасных каналов Wi-Fi в случаях, когда могут быть помехи от или на сотовые каналы. Сюда входят такие интерфейсы, как STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN).
На этой странице обсуждается следующее:
- Информация, которую сотовый модем должен передавать платформе Android
- Алгоритмы, которые использует фреймворк Wi-Fi для расчета каналов Wi-Fi, которых следует избегать
- Таблицы конфигурации, которые производители устройств должны предоставить для инфраструктуры Wi-Fi
- Системные API, конфигурации и API HAL, связанные с функцией избегания каналов
- Поведение структуры для обработки избегания канала
- Поведение поставщика микросхем при обработке уклонения от каналов
- Подробности реализации для избегания канала
- Тесты для проверки поведения избегания канала
Фон
Для устройств с сотовыми технологиями, такими как LTE, 5G NR и Licensed Assisted Access (LAA), используемые сотовые каналы могут мешать используемому каналу Wi-Fi. Это происходит, когда сотовые и Wi-Fi каналы находятся на небольшом частотном разнесении (соседние каналы) или когда есть гармонические и интермодуляционные помехи.
Этот тип помех становится проблемой, когда одна антенна передает, а другая принимает в одно и то же время. В этом случае передающая антенна затапливает принимающую антенну, влияя на качество приема.
В этом документе передатчик, создающий помехи, именуется агрессором , а приемник, испытывающий помехи, — жертвой . Канал Wi-Fi, который является либо агрессором, либо жертвой, именуется небезопасным каналом .
Функция избегания каналов Wi-Fi/сотовой связи coex обеспечивает последовательный подход к избеганию каналов, снижая необходимость в фирменном коде, который отличается от фреймворка Wi-Fi. Кроме того, эта функция позволяет производителям устройств настраивать, включать и отключать, а также переопределять эту функцию.
Функция выполняет обход каналов, контролируя каналы Wi-Fi. Схему обхода каналов Wi-Fi можно описать как последовательность из четырех абстрактных шагов:
- Модем сообщает об изменении частоты сотовой связи
- Алгоритм избегания Coex вычисляет небезопасные каналы Wi-Fi
- Алгоритм избегания Coex информирует службу Wi-Fi
- Фреймворк или драйвер выполняет соответствующие действия 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
Когда модем сообщает об изменении частоты сотовой связи, алгоритм коэкспоненциального канала вычисляет помехи между каналами сотовой связи и Wi-Fi и определяет, какой набор каналов Wi-Fi является небезопасным.
Существует несколько типов помех, требующих различных формул: соседние и гармонические/интермодуляционные . Из-за физических различий в антеннах и компоновке между устройствами, шаблоны соседних и гармонических/интермодуляционных помех для каждого устройства различны. Чтобы учесть это, производители устройств должны предоставить справочную таблицу для подстановки параметров в общие формулы для двух типов помех. Эти параметры определяются для каждой полосы ячейки и ссылаются на полосы активных каналов ячейки.
Максимальный предел мощности можно определить в таблице поиска. Если максимальный предел мощности определен, небезопасный канал передает с предоставленным пределом мощности. Если предела мощности нет, канал передает на полной мощности.
В целом, функция избегания каналов использует подход «наилучших усилий», чтобы избегать небезопасных каналов Wi-Fi для оптимизации производительности. Но в некоторых случаях (например, из-за требований оператора) для определенных интерфейсов обязательно избегать небезопасных каналов для определенных сотовых диапазонов. В таких случаях обязательные ограничения представлены в виде битовой маски, содержащей значения для того, следует ли запрещать определенные каналы, такие как Wi-Fi Direct (P2P), SoftAp и Wi-Fi Aware (NAN). В то время как небезопасный канал действует как рекомендация против использования этого канала для всех случаев использования, обязательные ограничения отмечают определенные случаи использования для обязательного избегания.
Если каждый канал диапазона 2,4 ГГц или 5 ГГц отмечен как небезопасный, таблица поиска может определить канал 2,4 ГГц по умолчанию или канал 5 ГГц по умолчанию для каждой мешающей соты полосы как самый безопасный выбор. Эти каналы по умолчанию не сообщаются как небезопасные каналы, когда остальная часть полосы сообщается как небезопасная.
Список переопределения
Формульный подход ограничен в случаях, когда помехи сильно зависят от полосы пропускания (и, таким образом, каналы с большей полосой пропускания могут быть небезопасными, но не каналы с меньшей полосой пропускания). В таких случаях, как с LAA, выгодно пропустить расчеты и использовать указанный список небезопасных каналов.
Для этого можно указать список переопределения небезопасных каналов в таблице поиска для определенных записей. Список переопределения в записи таблицы означает, что расчет для этого конкретного канала ячейки пропускается и что небезопасные каналы Wi-Fi для соответствующего канала ячейки указаны в списке переопределения.
Для случаев, чувствительных к пропускной способности, вы можете выборочно избегать определенных полос пропускания, указав определенные каналы с определенными полосами пропускания в списке переопределения. Это связано с тем, что каждый номер канала Wi-Fi соответствует указанной полосе пропускания.
Список переопределения представлен списком номеров каналов или предопределенных ключевых слов категорий для каждого диапазона Wi-Fi:
2g категории:
-
all
(весь диапазон 2,4 ГГц)
Категории 5g:
-
all
(весь диапазон 5 ГГц) -
20mhz
(каналы 5 ГГц 20 МГц) -
40mhz
(каналы 5 ГГц 40 МГц) -
80mhz
(каналы 5 ГГц 80 МГц) -
160mhz
(каналы 5 ГГц 160 МГц)
Помехи соседнего канала
Для определения помех на соседних каналах алгоритм избегания коэкспоненциального взаимодействия следит за тем, чтобы расстояние ΔF между каналами агрессора и жертвы не опускалось ниже заданного порогового значения .
Рисунок 2. Расстояние между агрессором и жертвой канала
Порог определяется физической конфигурацией устройства и пороговым значением, указанным в таблице поиска для каждой мешающей полосы. Полосы, которые считаются немешающими, не имеют записи в таблице, а небезопасные каналы не нужно рассчитывать (это происходит в большинстве случаев).
Параметры соседних помех
-
wifiVictimMhz
: пороговое расстояние в МГц для жертвы Wi-Fi (восходящая линия связи) -
cellVictimMhz
: пороговое расстояние в МГц для жертвы соты (нисходящая линия связи соты)
Алгоритм ведет себя следующим образом для каждого активного канала ячейки:
- Для полосы канала пытается найти запись в таблице поиска. Если запись в таблице не найдена, возвращается без небезопасных каналов для этого канала ячейки.
- На основе диапазона сотовой связи определяет, какой диапазон Wi-Fi находится под угрозой и с какой стороны диапазона исходят помехи (например, нижние каналы 2,4 ГГц, верхние каналы 2,4 ГГц, нижние каналы 5 ГГц).
Если присутствует
wifiVictimMhz
и канал сотовой связи имеет восходящий канал иЕсли нижняя часть диапазона Wi-Fi находится под угрозой
- Находит верхний предел небезопасных каналов, добавляя
wifiVictimMhz
к самой высокой частоте восходящего канала соты. - Находит первый канал Wi-Fi 20 МГц, нижняя граница которого перекрывает предел.
- Помечает канал Wi-Fi, каждый канал с большей полосой пропускания, который его содержит (например, 40 МГц, 80 МГц), и каждый канал с меньшей полосой пропускания того же диапазона как небезопасный канал.
- Находит верхний предел небезопасных каналов, добавляя
Если верхняя часть диапазона Wi-Fi находится под угрозой
- Находит нижнюю границу небезопасных каналов путем вычитания wifiVictimMhz из самой низкой частоты восходящего канала соты.
- Находит первый канал Wi-Fi, верхняя граница которого перекрывает ограничение.
- Помечает канал Wi-Fi, каждый больший канал, который его содержит (например, 40 МГц, 80 МГц), и каждый более высокий канал того же диапазона как небезопасный канал.
Если
cellVictimMhz
присутствует и канал ячейки имеет нисходящую связь.- Выполняет шаг 3, используя
cellVictimMhz
в качестве порогового значения и сравнивая с нисходящим каналом ячейки вместо восходящего канала ячейки.
- Выполняет шаг 3, используя
Применяет ограничение мощности записи таблицы к рассчитанным небезопасным каналам.
Рисунок 3. Расчет небезопасного канала для помех от соседних каналов
Гармонические или интермодуляционные искажения
Для гармонических или интермодуляционных искажений coex engine вычисляет диапазон гармонического или интермодуляционного сигнала и оценивает процентное перекрытие, которое он имеет с потенциальным каналом жертвы. Если перекрытие превышает пороговое значение перекрытия, алгоритм считает это небезопасной ситуацией. Расчет процентного перекрытия гармонических или интермодуляционных искажений на канале жертвы выполняется с помощью следующего уравнения:
В случае гармонического искажения алгоритм рассматривает гармоническое искажение канала восходящей линии связи ячейки, которое является жертвой каналов Wi-Fi. Затем он заменяет искажение high и искажение low гармоническими значениями на основе частот восходящей линии связи ячейки и гармонической степени $ N $.
Рисунок 4. Расчет небезопасного канала для гармонических искажений
В случае интермодуляции алгоритм учитывает интермодуляционные искажения восходящей линии связи ячейки и канала Wi-Fi, которые являются жертвами нисходящего канала ячейки. Затем он заменяет искажение high и искажение low значениями интермодуляции на основе частот восходящей линии связи ячейки, частот Wi-Fi и двух коэффициентов интермодуляции $ M $, $ N $.
Рисунок 5. Небезопасный расчет канала для интермодуляционных искажений
Вы можете указать $ M $, $ N $ и значения перекрытия в таблице поиска для каждого мешающего диапазона сот. Если для диапазона нет помех, то значения исключаются из таблицы для этой записи диапазона. Два набора этих значений для диапазонов Wi-Fi 2,4 ГГц и 5 ГГц могут быть определены независимо.
Подобно алгоритму соседних помех, алгоритм повторно использует одно и то же значение ограничения мощности, определенное для каждой полосы мешающих ячеек.
Алгоритм ведет себя следующим образом для каждого активного канала ячейки:
- Для полосы канала ячейки он пытается найти запись в таблице поиска. Если запись в таблице не найдена, возвращается без небезопасных каналов для этого канала.
Находит небезопасные каналы 2,4 ГГц из гармоник, если определены параметры.
- Находит степень гармоники N для 2,4 ГГц.
- Рассчитывает гармоническую высокую частоту и гармоническую низкую частоту на основе N и восходящей линии связи соты.
- Находит первый канал Wi-Fi 20 МГц, который находится в пределах нижней границы гармоники, приходящей снизу.
- Рассчитывает перекрытие гармоник по каналу Wi-Fi и помечает канал как небезопасный, если перекрытие превышает пороговое значение перекрытия Wi-Fi 2,4 ГГц.
- Находит первый канал Wi-Fi шириной 20 МГц, который находится в пределах верхней границы гармоники, приходящей сверху.
- Рассчитывает перекрытие гармоник по каналу Wi-Fi и помечает канал как небезопасный, если перекрытие превышает пороговое значение перекрытия Wi-Fi 2,4 ГГц.
- Помечает каждый канал шириной 20 МГц между ними как небезопасный канал.
Находит небезопасные каналы 5 ГГц из гармоник, если определены параметры.
- Находит гармоническую степень N для 5 ГГц. Если N равно 0, переходит к шагу 5.
- Рассчитывает гармоническую высокую частоту и гармоническую низкую частоту на основе N и восходящей линии связи соты.
Находит небезопасные каналы 20 МГц.
- Находит первый канал Wi-Fi 20 МГц, который находится в пределах нижней границы гармоники, приходящей снизу.
- Рассчитывает перекрытие гармоник по каналу Wi-Fi и помечает канал как небезопасный, если перекрытие превышает пороговое значение перекрытия Wi-Fi 2,4 ГГц.
- Находит первый канал Wi-Fi шириной 20 МГц, который находится в пределах верхней границы гармоники, приходящей сверху.
- Рассчитывает перекрытие гармоник по каналу Wi-Fi и помечает канал как небезопасный, если перекрытие превышает пороговое значение перекрытия Wi-Fi 2,4 ГГц.
- Помечает каждый канал шириной 20 МГц между ними как небезопасный канал с указанным ограничением мощности.
Находит небезопасные каналы 40 МГц, 80 МГц, 160 МГц
- Повторяет шаг 3а, но с частотами 40 МГц, 80 МГц, 160 МГц.
- Вместо расчета перекрытий каналов на гармоническом фронте повторно использует рассчитанные перекрытия из меньших составляющих каналов (например, если два канала по 20 МГц образуют канал 40 МГц и имеют перекрытие 30% и 90%, то среднее значение перекрытия для канала 40 МГц составляет 60%).
Находит небезопасные каналы 2,4 ГГц от интермодуляции, если определены параметры.
- Находит коэффициенты интермодуляции N, M для 2,4 ГГц.
Для каждого канала Wi-Fi 2,4 ГГц:
- Рассчитывает интермодуляционные искажения низкой частоты и интермодуляционные искажения высокой частоты на основе N, M, восходящей линии связи соты и канала Wi-Fi.
- Рассчитывает перекрытие интермодуляции по нисходящей линии связи ячейки и помечает канал как небезопасный, если перекрытие превышает пороговое значение перекрытия ячейки 2,4 ГГц.
Находит небезопасные каналы 5 ГГц от интермодуляции, если определены параметры.
- Повторяет шаг 4, используя каналы Wi-Fi 5 ГГц и порог перекрытия сот 5 ГГц.
Применяет ограничение мощности записи таблицы к рассчитанным небезопасным каналам.
Окончательный результат
После расчета обоих наборов небезопасных каналов из-за соседних и гармонических помех, окончательный набор рассчитывается путем объединения обоих наборов (и выбора нижнего предела мощности, если есть коллизии) и удаления каналов по умолчанию из набора, если не применяются обязательные ограничения.
Алгоритм работает следующим образом:
- Если каждый канал Wi-Fi 2,4 ГГц отмечен как небезопасный, удаляет канал Wi-Fi 2,4 ГГц по умолчанию из набора.
- Если каждый канал Wi-Fi 5 ГГц отмечен как небезопасный, удаляет канал Wi-Fi 5 ГГц по умолчанию из набора.
- Возвращает окончательный набор небезопасных каналов.
Формат таблицы поиска
Таблицы поиска представлены в 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:
LTE
40
50
25
40
3
50
3
50
-2
1
75
-2
1
75
6
36
LTE
41
50
6
11
...
40Mhz
34
...
Агрегация несущих
Для агрегации несущих (CA) диапазоны гармоник или интермодуляций для каждого восходящего или нисходящего канала могут не создавать достаточного перекрытия, чтобы вызывать помехи независимо, но могут создавать достаточное перекрытие при объединении. Алгоритм рассматривает каждый диапазон гармоник или интермодуляций независимо и берет объединение возвращенных небезопасных каналов. Для случая интермодуляции это означает оценку диапазона интермодуляции каждого UL на каждом DL.
Алгоритм не делает различий между PCELL, PSCELL или SCELL и рассматривает их как равные.
Лицензионный доступ
License Assisted Access (LAA) идентифицирован как полоса № 46. Алгоритм обрабатывает эту полосу так же, как и другие полосы. В этом случае полные каналы 5 ГГц могут быть установлены как список переопределения в таблице поиска.
В зависимости от требований оператора связи алгоритм избегания каналов устанавливает обязательные ограничения для SoftAP и Wi-Fi Direct (P2P) для всего диапазона Wi-Fi 5 ГГц. Чтобы алгоритм мог обрабатывать этот вариант использования, необходимо определить значение конфигурации оператора restrict_5g_softap_wifi_direct_for_laa
. Если канал ячейки находится на LAA и restrict_5g_softap_wifi_direct_for_laa
имеет true
, алгоритм возвращает набор небезопасных каналов со всем диапазоном 5 ГГц и устанавливает обязательные флаги ограничений для SoftAP и Wi-Fi Direct (P2P).
Информировать Wi-Fi сервис
После того как алгоритм coex channel вычислит небезопасные каналы, для предоставления вашим системным приложениям небезопасных каналов и их ограничений используйте следующую структуру данных @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 unsafeChannels, int restrictions);
}
Выполнить действие Wi-Fi
Когда служба Wi-Fi получает информацию о наборе небезопасных каналов, она выполняет соответствующие действия, чтобы гарантировать, что эти каналы будут исключены. В этом разделе описывается поведение службы Wi-Fi в различных сценариях.
Сообщите водителю
Поскольку драйвер играет важную роль в выполнении обхода каналов, важно передать небезопасные каналы драйверу и прошивке. Для этого используйте следующий API IWifiChip
HAL.
Для AIDL:
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
Для HIDL (1.5 или выше):
setCoexUnsafeChannels(vec unsafeChannels,
bitfield restrictions);
SoftAP
SoftAP — это основной вариант использования для избегания небезопасных каналов. В следующем разделе описываются ключевые сценарии SoftAp, в которых избегание каналов может применяться с ACS. Сценарии описывают поведение алгоритма избегания каналов и драйвера или прошивки.
Запустите SoftAP с включенным ACS (SoftAP пока не запущен)
Если каналы небезопасны и есть ограничение SoftAP
- Фреймворк удаляет небезопасные каналы из списка ACS.
- Если список пуст, фреймворк останавливает SoftAP.
Если каналы небезопасны и нет ограничений
- Драйвер или прошивка поставщика отдают приоритет безопасным каналам над небезопасными.
SoftAP работает с включенным ACS и небезопасными каналами, обновленными
Если канал SoftAP небезопасен и есть ограничение SoftAP
- Фреймворк обновляет список ACS, удаляя небезопасные каналы.
- Если список пуст, фреймворк закрывает SoftAP.
Если канал SoftAP небезопасен и нет ограничений
- Никаких действий со стороны фреймворка не предпринимается. Драйвер поставщика или прошивка обрабатывают обход небезопасных каналов или применение ограничения мощности, если обход невозможен.
Wi-Fi Direct (P2P)
Если есть небезопасные каналы с ограничениями Wi-Fi Direct (P2P).
- Фреймворк запрашивает
wpa_supplicant
, чтобы избежать небезопасных каналов, используя метод HALISupplicantP2pIface::setDisallowedFrequencies()
.
- Фреймворк запрашивает
Если есть небезопасные каналы без ограничений.
- Драйвер или прошивка поставщика применяет ограничение мощности, если используется небезопасный канал без ограничения Wi-Fi Direct (P2P).
Поддержка Wi-Fi (NAN)
Фреймворк не участвует в выборе канала для Wi-Fi Aware (NAN) и никаких действий фреймворка не предпринимается. Драйвер поставщика или прошивка отвечают за избегание канала Wi-Fi Aware (NAN).
Отключить алгоритм
Если вы хотите отключить реализацию алгоритма по умолчанию и передать свой собственный список небезопасных каналов для избегания, настройте оверлей config_wifiDefaultCoexAlgorithmEnabled
. Если оверлей установлен на false, алгоритм по умолчанию отключен. Затем вы можете использовать свой собственный алгоритм out-of-band для генерации списка небезопасных каналов для подключения к фреймворку с помощью следующего системного API.
public void setCoexUnsafeChannels(Set coexUnsafeChannels,
int coexRestrictions);
Подтвердить реализацию
Для проверки реализации функции избегания каналов Wi-Fi/сотовой связи используйте следующие тесты.
Тесты CTS
WifiManagerTest.java
-
testCoexMethodsShouldFailNoPermission()
-
testListenOnCoexUnsafeChannels()
-
Тесты ACTS
WifiManagerTest.py
-
test_set_get_coex_unsafe_channels()
-
Тесты СУДС
Если реализован AIDL:
wifi_chip_aidl_test.cpp
-
TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
-
Если реализован HIDL:
wifi_chip_hidl_test.cpp
-
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)
-