Функция предотвращения конфликтов каналов Wi-Fi и мобильной связи, представленная в Android 12, определяет и избегает использования небезопасных каналов Wi-Fi в случаях, когда могут возникнуть помехи от каналов мобильной связи или для них. К ним относятся интерфейсы STA, SoftAp, Wi-Fi Direct (P2P) и Wi-Fi Aware (NAN).
На этой странице рассказывается следующее:
- Информация, которую сотовый модем должен передавать фреймворку Android.
- Алгоритмы, которые фреймворк Wi-Fi использует для расчета каналов Wi-Fi, которых следует избегать.
- Таблицы конфигурации, которые производители устройств должны предоставить для фреймворка Wi-Fi.
- Системные API, конфигурации и HAL API, связанные с функцией пропуска каналов.
- Поведение фреймворка при обработке исключения каналов.
- Поведение поставщика чипов при обработке запрета на показ канала.
- Подробная информация о реализации функции блокировки каналов.
- Тесты для проверки поведения при избегании каналов.
Фон
Если устройство поддерживает мобильные технологии, такие как LTE, 5G NR и LAA, используемые мобильные каналы могут создавать помехи для канала Wi-Fi. Это происходит, когда каналы мобильной сети и Wi-Fi находятся на небольшом расстоянии друг от друга по частоте (соседние каналы) или когда возникают гармонические и интермодуляционные помехи.
Помехи становятся проблемой, когда одна антенна передает, а другая принимает сигнал одновременно. В этом случае передающая антенна перегружает приемную, что влияет на качество приема.
В этом документе передатчик, создающий помехи, называется агрессором, а приемник, испытывающий помехи, – жертвой. Канал Wi-Fi, который является агрессором или жертвой, называется небезопасным каналом.
Функция предотвращения конфликтов каналов Wi-Fi и сотовой связи обеспечивает единообразный подход к предотвращению конфликтов каналов, уменьшая потребность в проприетарном коде, который отклоняется от структуры Wi-Fi. Кроме того, производители устройств могут настраивать, включать и отключать эту функцию, а также переопределять ее.
Функция позволяет избегать перегруженных каналов, управляя каналами Wi-Fi. Схема предотвращения конфликтов каналов Wi-Fi состоит из четырех абстрактных этапов:
- Модем сообщает об изменении частоты мобильной связи
- Алгоритм предотвращения помех определяет небезопасные каналы Wi-Fi
- Алгоритм предотвращения конфликтов сообщает информацию сервису Wi-Fi
- Фреймворк или драйвер выполняет подходящее действие с Wi-Fi.
Рисунок 1. Схема избегания каналов
Сообщить об изменении частоты мобильной связи
Телефонный сервис сообщает об используемых сотовых каналах. Когда рабочая частота мобильной связи меняется, модем передает эту информацию сервису телефонии через IRadio::PhysicalChannelConfig.
В частности, в ней есть сведения о лицензированном вспомогательном доступе (LAA) и агрегировании несущих частот (CA).
В Android 12 следующие поля в файле 1.6 IRadio::PhysicalChannelConfig содержат информацию, необходимую для формул сосуществования, которые должен заполнять модем.
struct PhysicalChannelConfig {
/** Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING */
CellConnectionStatus status;
/** The radio technology for this physical channel */
RadioTechnology rat;
/** Downlink Absolute Radio Frequency Channel Number */
int32_t channelNumberDownlink;
/** Uplink Absolute Radio Frequency Channel Number */
int32_t channelNumberUplink;
/** Downlink cell bandwidth, in kHz */
int32_t cellBandwidthDownlink;
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplink;
}
Вычислять небезопасные каналы Wi-Fi
Когда модем сообщает об изменении частоты мобильной связи, алгоритм канала сосуществования вычисляет помехи между каналами мобильной связи и Wi-Fi и определяет, какие каналы 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 categories:
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. Небезопасный расчет канала для соседнего канала
Гармонические или интермодуляционные искажения
Для гармонических или интермодуляционных искажений механизм сосуществования рассчитывает диапазон гармонического или интермодуляционного сигнала и оценивает процент его перекрытия с потенциальным каналом-жертвой. Если перекрытие превышает пороговое значение, алгоритм считает эту ситуацию небезопасной. Расчет процентного перекрытия гармонических или интермодуляционных искажений в канале-жертве выполняется по следующей формуле:
В случае гармонических искажений алгоритм учитывает гармонические искажения восходящего канала сотовой связи, которые влияют на каналы Wi-Fi. Затем он заменяет значения искажений на гармонические значения, основанные на частотах восходящей линии связи ячейки и гармонической степени $ N $.
Рисунок 4. Небезопасный расчет канала для гармонических искажений
В случае интермодуляции алгоритм учитывает интермодуляционные искажения восходящего канала сотовой связи и канала Wi-Fi, которые влияют на нисходящий канал сотовой связи. Затем он заменяет значения distortion high и distortion 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.
<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 и считает их равнозначными.
Доступ с помощью лицензии
Диапазон 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
После того как алгоритм совместного использования каналов рассчитает небезопасные каналы, чтобы предоставить системным приложениям информацию о них и ограничениях, используйте следующую структуру данных @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<CoexUnsafeChannel> unsafeChannels,
int restrictions);
}
Выполнить действие с Wi-Fi
Когда сервис Wi-Fi получает информацию о наборе небезопасных каналов, он выполняет соответствующие действия, чтобы избежать их использования. В этом разделе описано, как работает сервис Wi-Fi в разных ситуациях.
Как сообщить водителю
Поскольку водитель играет важную роль в избегании каналов, необходимо передавать информацию о небезопасных каналах водителю и встроенному ПО. Для этого используйте следующий HAL API IWifiChip.
Для 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 ещё не запущен)
Если каналы небезопасны и действует ограничение 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 Aware (NAN)
Фреймворк не участвует в выборе канала для Wi-Fi Aware (NAN) и не предпринимает никаких действий. За избегание каналов Wi-Fi Aware (NAN) отвечает драйвер или встроенное ПО поставщика.
Как отключить алгоритм
Если вы хотите отключить реализацию алгоритма по умолчанию и передать собственный список небезопасных каналов, настройте наложение config_wifiDefaultCoexAlgorithmEnabled. Если для оверлея задано значение false, алгоритм по умолчанию будет отключен. Затем вы можете использовать собственный алгоритм вне диапазона, чтобы создать список небезопасных каналов для передачи в фреймворк с помощью следующего системного API.
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
Как проверить реализацию
Чтобы проверить реализацию функции предотвращения конфликтов каналов Wi-Fi и мобильной связи, выполните следующие тесты.
Тесты CTS
WifiManagerTest.javatestCoexMethodsShouldFailNoPermission()testListenOnCoexUnsafeChannels()
Тесты ACTS
WifiManagerTest.pytest_set_get_coex_unsafe_channels()
Тесты VTS
- Если реализован интерфейс AIDL:
wifi_chip_aidl_test.cppTEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
- Если реализован HIDL:
wifi_chip_hidl_test.cppTEST_P(WifiChipHidlTest, setCoexUnsafeChannels)