Wi-Fi реализации прямого связывания
В этом разделе приведены рекомендации по проектированию и требования к периферийным устройствам для участия в вариантах использования касания и настройки, а также касания и повторного подключения.
Примечание
Реализация связывания, описанная в этом разделе, в настоящее время поддерживается в Windows 8.1 только для связывания с устройствами принтера.
Windows 10 и более поздних версий поддерживает NFC для Wi-Fi передачи прямого статического подключения через запись конфигурации Wi-Fi P2P-оператора Wi-Fi альянса. Дополнительные сведения см. в разделе Wi-Fi Alliance.
Прямое связывание периферийных Wi-Fi устройств
Во время касания NFP получает сведения о связывании с подключающегося устройства. NFP передает сведения о связывании в Windows. Wi-Fi устройствах Direct следуют процедуре связывания Wi-Fi Alliance Out-of-Band (OOB) и рекомендациям форума NFC. Windows использует собственное сообщение о связывании, как определено ниже.
Windows запрашивает у пользователя согласие, и если оно будет предоставлено, Windows попытается подключиться к каждому из адресов по порядку, пока один из них не будет выполнен успешно. Дальнейшее взаимодействие между поставщиком NFP на компьютере и подключающимся устройством отсутствует.
При использовании NFC в качестве примера однонаправленная установка выполняется путем хранения сведений о связывании в статическом или пассивном теге NFC (также можно использовать активный тег NFC в режиме статической эмуляции). Windows подписывается на эти сведения о связывании. Поставщик NFP с поддержкой NFC на компьютере получает сведения о подключении из тега и передает их в Windows в качестве подписчика. После получения сведений о подключении Windows выполняет фактическую установку устройства в канале, используя методы, относящиеся к определенному классу устройства.
Требования к взаимодействию
Чтобы обеспечить взаимодействие между поставщиками NFP, сведения о связывании должны быть инкапсулированы в формате сообщения для конкретного поставщика.
Как описано в других разделах этого документа, нет особых требований к технологиям близкого взаимодействия, кроме поставщиков NFP с поддержкой NFC.
Windows требует, чтобы поставщики NFP с поддержкой NFC поддерживали определенный механизм, определенный форумом NFC, для передачи сведений о связывании Wi-Fi прямого связывания OOB для однонаправленного связывания. Сообщение NDEF содержит первую запись со значением поля TNF 0x01 и полем TYPE, равным "Hs", и альтернативной записью носителя, указывающей на Wi-Fi запись конфигурации прямого оператора. В этом методе будут использоваться только полезные данные записи NDEF.
Однонаправленное связывание с использованием NFC для Wi-Fi Direct
В этом разделе содержатся дополнительные сведения о совместной работе NFC, Wi-Fi Direct и Windows для поддержки однонаправленного беспроводного связывания для устройств Wi-Fi Direct, таких как принтеры.
Ссылки на поставщиков NFP
Wi-Fi прямое связывание выполняется с помощью стандартизированного типа передачи подключения на форуме NFC Выберите тип сообщения. На рисунке ниже представлен обзор применения сообщения "Выбор передачи подключения" для Wi-Fi прямого связывания устройств, в частности записей 3 и 4 NDEF. В сообщении Выбор передачи описывается одна или несколько записей ac или alternate carrier. Эти записи последовательно следуют за записью Выбора передачи, и каждая из них имеет четко определенный тип. Наконец, сообщение будет содержать определенную корпорацией Майкрософт запись связывания устройств, которая предоставляет Windows сведения о том, как обработать операцию связывания.
Wi-Fi сообщение о связывании устройств с прямым подключением
В приведенных ниже примерах использования в качестве иллюстрированного примера используются теги типа NFC 2. Если необходимо использовать другой тип тега NFC, сообщение NDEF должно быть правильно инкапсулировано в соответствии с этим определением тега.
Поле | Значение | Описание |
---|---|---|
ФНО | 0x02 | Формат следующего поля Type. Тип мультимедиа, определенный в RFC 2046. |
Тип | 'application/vnd.ms-windows.wfd.oob' | Новая строка типа, определяемая для этого сценария. |
Размер данных OOB | WORD | Поддерживается до 64 КБ данных OOB. |
Wi-Fi данных прямого OOB | <Большой двоичный объект размера, указанный в предыдущем поле> | Wi-Fi прямые данные OOB, как определено ниже. |
Wi-Fi прямой формат OOB
В следующей таблице описан формат данных OOB WiFi Direct. Однонаправленные данные OOB могут передаваться любым однонаправленным устройством OOB P2P.
Атрибуты | Идентификатор атрибута | Обязательный/необязательный | Примечание |
---|---|---|---|
Заголовок OOB См. таблицу формата атрибутов заголовка OOB. |
Недоступно | Обязательно | Атрибут OOB Header должен присутствовать в большом двоичном объекте P2P OOB Data, а его тип OOB должен иметь значение "Однонаправленные данные подготовки OOB". |
Сведения об устройстве OOB См. таблицу форматов атрибутов сведений об устройстве OOB. |
1 | Обязательно | Этот атрибут должен присутствовать. Он предоставляет сведения об этом P2P-устройстве. |
Сведения о подготовке OOB | 2 | Обязательно | Этот атрибут должен присутствовать. Он предоставляет сведения о подготовке, которые ожидает использовать это устройство P2P. |
Время ожидания конфигурации OOB | 5 | Обязательно | Этот атрибут должен присутствовать. Он предоставляет сведения о том, как долго устройство P2P будет ожидать ответа Wi-Fi Direct. |
Формат атрибута заголовка OOB
Имя поля | Размер (октеты) | Значение | Описание |
---|---|---|---|
Общая длина данных | 2 | Переменная | Длина всего большого двоичного объекта данных OOB (включая заголовок). |
Длина | 2 | Переменная | Длина следующих полей в заголовке OOB. |
Версия | 1 | 0x10 | Значение, определяющее версию этой записи OOB P2P. |
Тип OOB | 1 | Переменная | Значение, определяющее тип транзакции OOB. Конкретное значение определяется в таблице Типы транзакций OOB . |
ДА | 0 или 3 | Переменная | OUI для конкретного поставщика. Это необязательное значение. Должен присутствовать только в том случае, если тип OOB зависит от поставщика. |
Тип OUI | 0 или 1 | Переменная | Тип, зависящий от поставщика. Это необязательное значение. Должен присутствовать только в том случае, если тип OOB зависит от поставщика. |
Типы транзакций OOB
Тип OOB (шестнадцатеричный) | Описание |
---|---|
0x00 | Данные однонаправленной подготовки OOB |
0x01 | Данные прослушивателя подготовки OOB |
0x02 | Данные соединителя подготовки OOB |
0x03 | Данные OOB Reinvoke |
0x04 0xDC | Зарезервировано |
0xDD | Зависящие от поставщика |
0xDE 0xFF | Зарезервировано |
Формат атрибута сведений об устройстве OOB
Имя поля | Размер (октеты) | Значение | Описание |
---|---|---|---|
Идентификатор атрибута | 1 | 1 | Определение типа атрибута OOB P2P. Конкретное значение определено в таблице Атрибуты OOB P2P. |
Длина | 2 | Переменная | Длина следующих полей в атрибуте . |
Адрес устройства P2P | 6 | Как определено в спецификации P2P. | Идентификатор, используемый для уникальной ссылки на устройство P2P. |
Методы конфигурации | 2 | Как определено в спецификации P2P. | Методы WSC, поддерживаемые этим устройством. Примечание: Порядок байтов в поле "Методы конфигурации" должен быть большим. |
Тип основного устройства | 8 | Как определено в спецификации P2P. | Основной тип устройства P2P. Содержит только часть Data атрибута основного типа устройства WSC (исключает поля Идентификатор атрибута и Длина). Примечание: Порядок байтов в поле Основной тип устройства должен быть большим. |
Растровое изображение возможностей устройства | 1 | Как определено в спецификации P2P. | Набор параметров, указывающих возможности устройства P2P. |
Имя устройства | Переменная | Как определено в спецификации P2P. | Понятное имя устройства P2P. Содержит весь формат TLV атрибута имени устройства WSC. Примечание: Порядок байтов в поле Имя устройства должен быть большим. |
Атрибуты OOB P2P
Тип OOB (шестнадцатеричный) | Описание |
---|---|
0x00 | Состояние OOB |
0x01 | Сведения об устройстве OOB |
0x02 | Сведения о подготовке OOB |
0x03 | Идентификатор группы OOB |
0x04 | Канал прослушивания OOB |
0x05 | Время ожидания конфигурации OOB |
0x06 0xDC | Зарезервировано |
0xDD | Атрибут поставщика |
0xDE 0xFF | Зарезервировано |
Формат атрибута сведений о подготовке OOB
Имя поля | Размер (октеты) | Значение | Описание |
---|---|---|---|
Идентификатор атрибута | 1 | 1 | Определение типа атрибута OOB P2P. Конкретное значение определяется в таблице атрибутов OOB P2P . |
Длина | 2 | Переменная | Длина следующих полей в атрибуте. |
Растровое изображение параметров подготовки | 1 | Переменная | Набор параметров подготовки, определенных в таблице параметров подготовки . |
Выбранный метод конфигурации | 2 | Как определено в спецификации P2P. | Метод WSC, выбранный этим устройством P2P для подготовки. |
Длина закрепления | 1 | 0 - 8 | Число байтов в следующем поле данных ПИН-кода. Это поле, заданное в значение 0, указывает на отсутствие дополнительных данных ПИН-кода. |
Закрепление данных | Переменная | n | Это поле является необязательным. Это поле присутствует только в том случае, если поле Длина ПИН-кода не равно 0 и содержит массив октетов, представляющих ПИН-код, используемый для подготовки. |
Параметры подготовки
Биты | Сведения | Примечания |
---|---|---|
0 | Создание группы | Бит Создать новую группу имеет значение 1, если эти сведения о подготовке предназначены для формирования новой группы с целевым устройством P2P. В противном случае эти сведения о подготовке будут для присоединения к существующей группе. |
1 | Принудительное применение параметра типа группы | Бит Принудительное применение параметра типа группы имеет значение 1, если требуется принудительное применение бита требуемого типа группы. В противном случае бит требуемого типа группы является просто предпочтением. |
2 | Тип требуемой группы | Бит требуемого типа группы должен иметь значение 0, если тип требуемой группы является временным, и значение 1, если тип требуемой группы является постоянным. |
3 - 7 | Зарезервировано |
Формат атрибута времени ожидания конфигурации OOB
Имя поля | Размер (октеты) | Значение | Описание |
---|---|---|---|
Идентификатор атрибута | 1 | 5 | Определение типа атрибута OOB P2P. Конкретное значение определяется в таблице атрибутов OOB P2P . |
Длина | 2 | 1 | Длина следующих полей в атрибуте. |
Время ожидания конфигурации прослушивателя | 1 | 0–255 | Время, которое устройство P2P будет тратить на ожидание Wi-Fi прямой связи после передачи данных OOB в единицах 100 миллисекундах. (Максимум 25,5 секунды). |
Запись связывания устройств Windows
Запись связывания устройств Windows соответствует спецификации NDEF. В нем представлены дополнительные сведения для Windows о том, как обработать сообщение Выбор передачи подключения. Поля TNF и Type должны быть указаны в соответствии со спецификацией NDEF. Остальные поля, приведенные ниже, будут последовательно перечислены в поле Полезные данные записи NDEF.
Имя поля | Значение | Значение длины | Описание |
---|---|---|---|
ФНО | 0x02 | 3 бита | Формат следующего поля "Тип". Тип носителя, как определено в RFC 2046. |
Тип | 'application/vnd.ms-windows.devicepairing' | 0x28 байт | Новая строка типа, определяемая для этого сценария. |
MajorVersion | 0x1 | 2 байта | Основная версия должна быть 0x1. |
MinorVersion | 0x0 | 2 байта | Дополнительный номер версии должен быть 0x0. |
Флаги | 0x0 или 0x01 | 4 байта | Задайте значение 0x0, чтобы опробовать все транспорты. Задайте значение 0x1, чтобы выполнить последовательную попытку установки и остановить ее после первого успешного выполнения. Предпочтение для транспорта определяется последовательностью альтернативных записей перевозчика. Примечание Значения 0x0002 по 0x0064 зарезервированы. |
Длина понятного имени устройства | Длина поля понятного имени устройства. | 1 байт | Длина понятного имени устройства. |
Понятное имя устройства | Строка в кодировке UTF-8 размером до 255 байт. | Длина понятного имени устройства | Понятное имя устройства, которое будет отображаться в пользовательском интерфейсе согласия на клиенте. |
Wi-Fi Direct просто работает, формат тега передачи статических подключений
Ниже приведен пример типичной реализации пассивного nfc-тега. Это соответствует статическому случаю передачи подключения с записью Wi-Fi direct carrier, принтером общей сетевой папки и записью связывания ms-device.
В этой первой таблице показан формат части Wi-Fi прямого связывания тега.
Offset | Содержимое | Длина | Описание |
---|---|---|---|
0 | 0x91 | 1 | Заголовок записи NDEF: MB=1b, ME=0b, CF=0b, SR=1b, IL=0b, TNF=001b |
1 | 0x02 | 1 | Длина типа записи: 2 октета |
2 | 0x0A | 1 | Длина типа записи: 10 октетов |
3 | 0x48 0x73 | 2 | Тип записи: "Hs" |
5 | 0x12 | 1 | Номер версии: Основной = 1, Дополнительный = 2 |
6 | 0xD1 | 1 | Заголовок записи NDEF: MB=1b, ME=1b, CF=0b, SR=1b, IL=0b, TNF=001b |
7 | 0x02 | 1 | Длина типа записи: 2 октета |
8 | 0x04 | 1 | Длина полезных данных: 4 октета |
9 | 0x61 0x63 | 2 | Тип записи: "ac" |
11 | 0x01 | 1 | Флаги оператора: CPS=1, "активный" |
12 | 0x01 | 1 | Длина ссылки на данные носителя: 1 октет |
13 | 0x30 | 1 | Справочник по данным носителя: "0" |
14 | 0x00 | 1 | Вспомогательное число ссылок на данные: 0 |
15 | 0x1A | 1 | Заголовок записи NDEF: MB=0b, ME=0b, CF=0b, SR=1b, IL=1b, TNF=010b |
16 | 0x22 | 1 | Длина имени типа записи: 34 октета |
17 | 0x3E | 1 | Длина полезных данных: 62 октета |
18 | 0x01 | 1 | Длина идентификатора: 1 октет |
19 | 0x61 0x70 0x70 0x6C 0x69 0x63 0x61 0x74 0x69 0x6F 0x6E 0x2F 0x76 0x6E 0x64 0x2E 0x76 0x6E 0x64 0x2E 0x77 0x73 0x2E 0x77 0x66 0x64 0x2E 0x6F 0x6F 0x62 0x6D 0x73 0x2D 0x77 0x69 0x6E 0x64 0x6F |
34 | Имя типа записи: 'application/vnd.ms-windows.wfd.oob' |
53 | 0x30 | 1 | Идентификатор: "0" |
54 | 0x3E 0x00 | 2 | Wi-Fi Длина данных прямого OOB: 62 октета. Длина считывается как короткий без знака и включает весь большой двоичный объект. Включает 2 октета длины. Это значение должно храниться в минимальном формате. |
56 | 0x02, 0x00 | 2 | Длина заголовка: 2 октета |
58 | 0x10 | 1 | Версия: 0x10 |
59 | 0x00 | 1 | Тип OOB: 0x00 (однонаправленный) |
60 | 0x01 | 1 | Атрибут: 0x01 (атрибут сведений об устройстве) |
61 | 0x22 0x00 | 2 | Длина сведений об устройстве: 34 октета |
63 | 0x01 0x23 0x34 0xab 0xcd 0xef |
6 | Wi-Fi MAC-адрес прямого устройства P2P: "01:23:34:ab:cd:ef" |
69 | 0x01 0x00 | 2 | Тип конфигурации |
71 | 0x00 0x01 0x00 0x50 0xF2 0x00 0x00 0x00 |
8 | Тип основного устройства |
79 | 0x12 | 1 | Функция |
80 | 0x10 0x11 | 2 | Атрибут: имя устройства |
82 | 0x00 0x0d | 2 | Длина имени устройства: 13 октетов |
84 | 0x65 0x4d 0x6f 0x75 0x73 0x43 0x6f 0x6e 0x74 0x6f 0x73 0x6f 0x20 |
13 | Понятное имя устройства в UTF-8. Обратите внимание, что завершающий символ NULL отсутствует и UTF-8 может содержать один или два байта на символ. В этом примере читается "Мышь Contoso" |
97 | 0x02 | 1 | Атрибут: сведения о подготовке |
98 | 0x0c 0x00 | 2 | Длина сведений о подготовке: 12 октет |
100 | 0x07 | 1 | Задание растрового изображения: новая группа, принудительное применение постоянного |
101 | 0x01 0x00 | 2 | Метод Config: закрепление записи |
103 | 0x08 | 1 | Длина закрепления: 8 октетов |
104 | 0x05 0x06 0x07 0x08 0x01 0x02 0x03 0x04 |
8 | Закрепление: "12345678" |
112 | 0x05 | 1 | Атрибут. Сведения о времени ожидания конфигурации |
113 | 0x01 0x00 | 2 | Длина времени ожидания конфигурации |
115 | 0x64 | 1 | 10 секунд в единицах измерения 100 миллисекунд |
Вторая таблица иллюстрирует формат части тега, связанной с сетевым принтером.
Offset | Содержимое | Длина | Описание |
---|---|---|---|
116 | 0x12 | 1 | Заголовок записи NDEF: MB=0b,ME=0b, CF=0b, SR=1b, IL=0b,TNF=010b |
117 | 0x29 | 1 | Поле "Длина типа" |
118 | 0x19 | 1 | Поле "Длина полезных данных" |
119 | 0x61 0x70 0x70 0x6c 0x69 0x63 0x61 0x74 0x69 0x6f 0x6e 0x2f 0x76 0x6e 0x64 0x2e 0x6d 0x73 0x2d 0x77 0x69 0x6e 0x64 0x6f 0x77 0x73 0x2e 0x6e 0x77 0x70 0x72 0x69 0x6e 0x74 0x69 0x6e 0x67 0x2e 0x6f 0x6f 0x62 |
41 | Имя типа записи: "application/vnd.ms-windows.nwprinting.oob" |
160 | 0x5c 0x5c 0x70 0x72 0x69 0x6e 0x74 0x53 0x65 0x72 0x76 0x65 0x72 0x5c 0x70 0x72 0x69 0x6e 0x74 0x65 0x72 0x4e 0x61 0x6d 0x65 |
25 | Имя принтера: \printServer\printerName. |
В этой третьей таблице показан формат части MS-Device связывания тега.
Offset | Содержимое | Длина | Описание |
---|---|---|---|
185 | 0x52 | 1 | Заголовок записи NDEF: MB=0b, ME=1b, CF=0b, SR=1b, IL=0b,TNF=010b |
186 | 0x28 | 1 | Поле "Длина типа" |
187 | 0x15 | 1 | Поле "Длина полезных данных" |
188 | 0x61 0x70 0x70 0x6c 0x69 0x63 0x61 0x74 0x69 0x6f 0x6e 0x2f 0x76 0x6e 0x64 0x2e 0x6d 0x73 0x2d 0x77 0x69 0x6e 0x64 0x6f 0x77 0x73 0x2e 0x64 0x65 0x76 0x69 0x63 0x65 0x70 0x61 0x69 0x72 0x69 0x6E 0x67 |
40 | Имя типа записи: "application/vnd.ms-windows.devicepairing" |
228 | 0x00 0x00 0x01 0x00 |
4 | Версия: Основной = 1, Дополнительный = 0 |
232 | 0x00 | 1 | Флаги: установите значение 0, попробуйте все транспорты |
233 | 0x0F | 1 | Длина понятного имени устройства |
234 | 0x74 0x65 0x72 0x50 0x72 0x69 0x6e 0x43 0x6f 0x6e 0x74 0x43 0x6f 0x6e 0x74 0x6f 0x73 0x6f 0x20 |
15 | Понятное имя устройства, отображаемое пользователю: "Принтер Contoso" |
Wi-Fi требования к прямому подключению
На устройствах и клиентах должно быть включено Wi-Fi радио. В противном случае связывание завершится ошибкой.
Обработка пограничных обращений
Если пользователь ранее связал устройство, но затем вручную удалит устройство из списка устройств, повторное касание приведет к попытке установки или связывания.
Если пользователь входит в диапазон действия, но затем внезапно покидает перед передачей данных вне диапазона (OOB), устройство может стать доступным для подключения, но компьютер не будет искать устройство. В этом случае пользовательский интерфейс согласия с компьютера не будет, и пользователю потребуется снова коснуться. Если устройство уже доступно для обнаружения при повторном нажатии, оно должно оставаться обнаруживаемым и сбрасывать период ожидания.
Для устройств Wi-Fi Direct, если Wi-Fi отключается, установка не будет успешной.
Если пользователь касается двух устройств примерно в одно и то же время, будет предпринята попытка связывания только для первой полученной информации об OOB.
Любая попытка коснуться устройства в системе под управлением операционной системы, которая не поддерживает касание для установки или Касание для повторного подключения, может привести к переходу устройства в режим подключения, но связывание не будет выполнено. Пользователям потребуется использовать пользовательский интерфейс связывания, предоставленный для Bluetooth, и использовать кнопку связывания, чтобы инициировать связывание.