Профиль hid bluetooth что

Профиль HID

Попытку реализации HID на КПК, я начну с ознакомления с профилями Bluetooth.

Что же такое профиль в технологии Bluetooth?

Профиль — это, всего на всего, набор функций или возможностей, доступных для определённого устройства Bluetooth и позволяющий устройству предоставлять или использовать эту возможность совместно с другими устройствами.

Так как мы рассматриваем профиль HID, то спецификация HID определена в «USB Device Class Definition for Human Interface Devices», (да-да, спецификация HID определена именно в документах USB). Bluetooth HID профиль должен использовать протоколы, процедуры и другие возможности, обозначенные именно в указанной спецификации.

Типичными примерами устройств, поддерживающих профиль HID, являются:

— клавиатуры и указывающие устройства, например мышь, трекбол, джойстик;

— оконечные устройства, например всевозможные ручки, переключатели, кнопки и слайдеры;

— устройства дистанционного контроля и управления, например пульты дистанционного управления, игровые устройства;

— устройства, не требующие действий от человека, но поддерживающие передачу данных в простом формате относительно возможностей HID, такие как: сканеры штрих-кода, термометры или вольтметры.

Класс устройств HID изначально был нацелен на устройства, взаимодействующие с человеком, однако этот класс хорошо применим к любым приложениям, требующим быстрые операции ввода-вывода с внешними интерфейсами и позволяющий устройствам описывать самих себя. Определение класса HID включает поддержку различных типов и способов вывода информации конечному пользователю. HID поддерживает инициализацию и управление описывающих самих себя устройств.

Спецификация USB включает концепцию, позволяющую вместо того, что бы иметь различные драйверы для каждого нового периферийного устройства, группировать вместе устройства, имеющие одинаковые характеристики представления данных (т.н. data reporting), в класс устройств и иметь единственный драйвер класса для каждой группы. Устройства, в свою очередь, имеют возможность описывать самих себя в драйвере класса, например, то, как они управляются и как именно они передают данные. Это позволяет отменить необходимость менять программное обеспечение драйвера для вновь разработанных устройств этого класса.

HID не специфичен относительно USB или другого типа транспорта передачи данных. Постепенно я буду описывать как использовать протокол HID поверх Bluetooth.

Информация об устройстве HID хранится в сегментах энергонезависимой памяти. Эти сегменты называются дескрипторами. Дескриптор интерфейса может идентифицировать устройство определить устройство, как принадлежащие к одному из конечного числа классов.

Класс устройств HID использует соответствующий драйвер класса HID для и извлечения и маршрутизации данных. Маршрутизация и извлечение данных осуществляется путем изучения дескрипторов устройства и данных, которые оно предоставляет.

Дескриптор класса устройства HID перечисляет другие имеющиеся дескрипторы и указывает из размер. Пример:

— дескриптор Report — описывает каждую часть данных, генерируемых устройством, и реальный размер этой части. Этот дескриптор, например, может определять элементы, описывающие какую либо позицию или состояние кнопки. Здесь информация элемента используется как для определения откуда маршрутизировать ввод, например, от мышки или от джойстика; или может использоваться для назначения функции ввода определенному программному обеспечению, например использовать ввод данных от джойстика для управления самолетом или танком :). Изучая элементы дескриптора Report, драйвер класса HID позволяет определять размер и состав данных, передаваемых от устройства HID.

— дескриптор Physical — устанавливает необязательные дескрипторы, которые предоставляют информацию о части или частях тела человека, используемых для активации элементов управления устройства.

На первый взгляд, то, что я здесь описал, кажется сложным. Мне тоже так казалось, когда я начал все это изучать. Надеюсь дальше все прояснится :).

Источник

Обучаем HID устройство (читай BT-клавиатуру) работать правильно

Приветствую, хабралюди!
Профиль hid bluetooth чтоНа ДР, мне друзья подарили BT-клавиатуру. Маленькая, беленькая, симпатичная, Удобная!
Подключил ее к своему Android 2.3.5 (SGSII), стал с ее помощью лазить по меню, запускать программы, дошел до Вконтакте и решил написать сообщение… а вот переключить на русский язык не смог, но как оказалось позже, это еще были только цветочки! Но кое-что мне удалось. Интересно как?

Сейчас я уже многое понял, и не знаю с чего начать свой рассказ. Поэтому будет долго и скучно, но игра стоит свеч!

Имеем:
Первые шаги

Начал я с того, что написал письмо в техподдержку клавиатуры, с вопросом: а не могли бы вы посодействовать с настройкой клавиатуры для Андроида? Получил, как и ожидалось, ласковый отказ: «Эта клавиатура сделана специально для iPad».

Кому лень было читать статьи, кратко поясню:
На Вашем Android устройстве есть папка (кстати зависит от устройства, подробности есть в статье выше)
/system/usr
где расположены нужные нам каталоги
keylayout и keychars
в них размещаются файлы типа имя_клавиатуры.kl и имя_клавиатуры.kcm.bin соответственно.

Первый (обычный текстовый) отвечает за соответствие сигналов клавиатуры (Linux key code) сигналам Android (Android key code name) и выглядит как список из таких команд:

key 30 A WAKE
Расшифровка: key [scancode] [Android key] [Flags]
По-русски: если на клавиатуре нажали кнопку с кодом 30, то системе будет послана клавиша А, при этом устройство проснется.

Флаг WAKE заставляет устройство проснуться и отреагировать на нажатие буквой А.
А флаг WAKE_DROPPED заставляет только проснуться, т.е. чтобы нажать А, надо будет нажать ее снова.
В статье есть описание и других флагов.

Второй (скомпилированный из исходника бинарник) отвечает за комбинации клавиш вместе с Shift, Alt и т.п. Здесь уже идет таблица из разных вариантов, описывающих действия над Android key. В исходном виде он выглядит как:

key A <
label: ‘A’
base: ‘a’
shift, capslock: ‘A’
ctrl, alt, meta: none
>

А скомпилирован он для ускорения работы и загрузки устройства.

Решаем что делать

Я написал в техподдержку клавиатуры снова, описав свои наблюдения. Но поддержки от них никакой не добился. Им это не интересно. Придется все делать самому.

Что, опять нужен root?

Для доступа в папку /system нужны права root. Значит нужно его получить и не потерять гарантию. Я долго искал способ и для себя один нашел. Ничего не нужно прошивать. Все можно вернуть назад. ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК! ВСЕ ТОЛЬКО ДЛЯ ОЗНАКОМЛЕНИЯ! НИКАКОЙ ОТВЕТСТВЕННОСТИ! Но для меня все сработало как надо.

Готовим файл

Первые грабли:
Определить имя нужного файла может быть затруднительно. Общий принцип названия файлов, согласно статье — Vendor_XXXX_Product_XXXX_Version_XXXX.kl или DEVICE_NAME.kl

Ну вот, нашли файл, скачали, сделали копию, открыли текстовым редактором типа notepad.
У меня файл назывался Broadcom_Bluetooth_HID.kl

Тааааак, и что тут у нас?

Все понятно, какие-то коды, какие-то кнопки, что к чему не особо понятно, но мы уже готовы к этому, потому что внимательно читали эту статью с начала и до сюда. А как же определить коды клавиш?

Вторые грабли:
Чтобы определить коды клавиш понадобится средство отладки или.

Просто заходим на маркет и находим то что нужно, не с первой попытки конечно. Я перепробовал 3-4 программы. Не все могли похвастаться нужной функцией — многие отображали только Android коды, которые уже прописаны в нашем файле. А нам нужны scancod’ы!

Получаем scancod’ы

Я «отксерил» свою клавиатуру на копире и ручкой стал подписывать коды, которые мне давала программа KeyEvent Display. Так я получил набор кодов, осталось переписать их в файл и назначить им правильные функции.
Профиль hid bluetooth что

Редактируем файл

Открываем первую статью по клавиатурам и методично назначаем новые значения нашим кнопкам.
Получается что-то вроде этого:

Третьи грабли:
Не все кнопки будут работать с Вашей версией Android OS! Обратите внимание на колонку Version в первой статье про клавиатуры. Если вы используете те коду, которые предназначены для версий больше вашей, тогда с этого места клавиатура не будет работать.

Все кнопки, указанные после неправильной не будут функционировать.

Поэтому, для будущей совместимости, я в своем файле, клавиши предназначенные не для моей версии Android OS, перенес в конец. Как показала практика, в этом случае все работает и файл готов к переносу на другие версии ОС.

Закидываем файл в систему

Здесь не обойтись без консольной утилиты. Подключаем девайс по USB в режиме отладки и выполняем последовательно команды в консоли cmd.exe:

Четвертые грабли:
Папка /system находится на файловой системе в режиме только для чтения. Для того, чтобы туда писать, нужно перемонтировать систему в режиме RW. Но для этого, нужно определить точку монтирования и тип файловой системы при помощи простой команды mount.

После перезагрузки устройства, файловая система снова станет «только для чтения».

Пояснения к командам:
Проверяем
Заработало!

Поздравляю! По-другому и быть не могло! Вы молодец! Только… как же на русский-то перейти?
Не долго гугля, я нашел простой ответ — нужна софтварная клавиатура, поддерживающая аппаратную. Таких немного. Идеальная, на мой взглад, на сегодня — ruKeybord
Устанавливаем, настраиваем, в раскладках устанавливаем аппаратную клавиатуру вместо qwerty и т.п.
Теперь можно переключать раскладку через Alt+Shift (UPD: или Shift+Space). И флажок показывается.

Кто еще не в курсе, чтобы быстро переключаться между клавиатурами, подержите палец на любом поле ввода и выберите из выпавшего меню «Режим ввода».

Итоги

Как ни старался, но заставить заработать все кнопки, подобно компьютеру, на 2.3.5 невозможно. Но скоро я обновлюсь до Android OS 4 и новые кнопки заработают. На первой фотографии я сижу в putty и редактирую сайт. Очень не хватает кнопки Ctrl. Очень жду обновления ОС. Доволен результатом.

Источник

Профили и версии Bluetooth в наушниках

Профиль hid bluetooth что

Профиль hid bluetooth что

Содержание

Содержание

Bluetooth — это беспроводная технология обмена данными на небольшом расстоянии. Пользователи привыкли к этой возможности, но что мы о ней знаем, какие отличия современных версий Bluetooth, какие профили и кодеки существуют и чем они отличаются?

Bluetooth 1.2 (2003)

Мы пропустили версии 1.0 и 1.1, т.к. они предлагали довольно примитивные возможности и имели проблемы с развертыванием и совместимостью. А вот версия 1.2 стала первой, широко используемой технологией Bluetooth. Адаптивная перестройка частоты (AFH) помогла избежать помех с Wi-Fi и другими технологиями на схожей частоте. Скорость сопряжения была улучшена.

Bluetooth 2.0 и 2.1 (2004)

Фирменное обозначение Bluetooth 2.0 + EDR. Технология EDR является профилем, который позволил повысить скорость передачи данных. В тандеме с трехбитовым кодированием (против однобитового) скорость увеличилась с 1 до 3 Мбит/с (на практике до 2,1 Мбит/с). Была улучшена обработка помех, и устройства начали потреблять меньше энергии. В версии 2.1 было добавлено спаривание устройств (SSP), чтобы сделать соединение быстрее и безопаснее.

Bluetooth 3 + HS (2009)

Фирменное наименование Bluetooth 3.0 + HS (High Speed). Новая версия позволяла устанавливать соединение по Bluetooth с использованием частот Wi-Fi, что дало возможность повысить скорость передачи до 24 Мбит/с. Но если в устройстве отсутствовал Wi-Fi-модуль, то скорость ограничивалась все теми же 3 Мбит/с, что и в предыдущей версии Bluetooth 2.

Bluetooth 4.0, 4.1, и 4.2 (2011–2014)

Появление технологии Low Energy в Bluetooth 4 позволило уменьшить энергопотребление для некоторых периферийных устройств, но не для беспроводных наушников. В этой же версии каждое из устройств получило возможность одновременно быть и концентратором, и клиентом. Это значительно расширило функциональность портативной техники, позволив пользователю, к примеру, управлять некоторыми функциями своего смартфона с помощью наушников или умных часов.

Профиль hid bluetooth что

В Bluetooth 4.1 не было революционных изменений по сравнению с версией 4.0. Разработчики усилили защиту от помех благодаря встроенному фильтру диапазона LTE-сетей. В результате Bluetooth-устройство с версией 4.1 будет искать другой канал с меньшим количеством помех и немного другой частотой. Также в новой версии оба сопряженных устройства могут быть как ведущими, так и ведомыми. Максимальное время прерывания соединения без потери сопряжения увеличилось с 30 секунд до 3 минут.

В версии 4.2 появились новые возможности для Интернета вещей. Каждому устройству с поддержкой Bluetooth 4.2 теперь был присвоен уникальный IP-адрес.

В версии Bluetooth 5.1 внедрена возможность определения физического местоположения устройств в помещении вплоть до сантиметра, чтобы обеспечить более надежное соединение. Также, в новой версии, устройства сопрягаются быстрее за счет улучшенного кэширования. В 5.1 устройствам стало доступно больше каналов для подключения, что уменьшило количество помех. Это полезно, когда в одном помещении находится много Bluetooth-устройств.

Отличия версий Bluetooth 4.0 и 5.0 (2016)

Давайте рассмотрим отличия этих версий более подробно, т.к. здесь есть несколько революционных изменений. В новой версии Bluetooth появилось больше улучшений. Они включают в себя:

Одним из ключевых улучшений версии 5.0 является усовершенствованная технология Low Energy, которая ранее имела серьезные ограничения по использованию беспроводных наушников. Теперь любые аудиоустройства, оснащенные модулем Bluetooth, могут обмениваться данными с источником по технологии Low Energy, что существенно снижает энергопотребление периферии.

В чем отличие версий, профилей и кодеков Bluetooth

Итак, мы разобрались с версиями популярной технологии, которые отличаются скоростью, зоной действия и дополнительными возможностями. Но что такое профили Bluetooth и как они влияют на работу наушников и других совместимых устройств?

Профили определяют набор возможностей, которые пользователь получает при подключении устройств по Bluetooth. К примеру, выбирая новые наушники, нужно обращать внимание не только на версию BT, но и на набор профилей, т.к. он напрямую влияет на функциональность аудиоустройства. Для передачи аудиопотока с максимальным качеством по Bluetooth используется профиль A2DP, речь о котором пойдет ниже.

Мультимедиа в современных устройствах передается через профиль, но самое главное — это кодек, с помощью которого происходит сжатие аудиопотока и передача его на гарнитуру с последующим декодированием. При равных условиях от типа используемого кодека зависит качество звучания.

Какие бывают профили Bluetooth

Теперь более подробно остановимся на разновидностях профилей. Профили Bluetooth представляют собой наборы инструкций, которые определяют порядок работы и реализации функций между устройствами Bluetooth. Существует около двух десятков профилей для любых устройств и целей — от передачи файлов до беспроводной печати, но нас интересуют те, которые используются в беспроводных гарнитурах.

HSP — обеспечивает базовую производительность гарнитуры с микрофонным входом, монофоническим звуком до 64 кбит/с и ограниченным дистанционным управлением — передачей сигнала вызова, ответом на звонок, завершением вызова и регулировкой громкости.

HFP — более продвинутая версия HSP, разработанная для монофонических гарнитур с функцией Hands Free с целью отвечать на звонки без обращения к телефону. Поддерживает некоторые голосовые команды. С версии HFP 1.7 добавилась поддержка кодека mSBC, поддержка статуса индикатора заряда батареи наушников.

AVRCP — обеспечивает дистанционное управление воспроизведением мультимедиа: переключение и перемотка трека, пауза, запуск воспроизведения, регулировка громкости. Профиль AVRCP предназначен только для дистанционного управления и не используется для передачи аудиопотока.

Версии AVRCP:

1.0 — дистанционное управление, включая старт воспроизведения, паузу и стоп.

1.3 — доступ к метаданным и чтение состояния медиа-плеера:

1.4 — возможность подключения к нескольким медиаплеерам:

1.5 — исправления багов по абсолютному контролю громкости, просмотру и другим функциям;

1.6 — просмотр данных и информации о треках:

AVRCP 1.6 поддерживается всеми Android-устройствами, начиная с версии 8.0.

A2DP — предназначен для передачи мультимедиа и стереозвука по Bluetooth, обеспечивая намного лучшее качество передачи звука по сравнению с HSP/HFP. Сам по себе не позволяет осуществлять дистанционное управление функциями воспроизведения, поэтому чаще всего используется в связке с AVRCP.

Версии A2DP:

1.2 — расширение списка поддерживаемых кодеков.

1.3 — все из 1.2 плюс уменьшение задержек при передаче потока для улучшения синхронизации аудио/видео, а также:

Таком образом, чтобы слушать аудиопоток с качественным стереозвуком и управлять функциями воспроизведения, необходима гарнитура и передающее устройств (хост) с поддержкой профилей AVRCP и A2DP одновременно.

Давайте также рассмотрим второстепенные профили, которые предлагают дополнительные функции.

PBAP — используется для доступа к телефонной книге телефона при помощи беспроводной гарнитуры. На практике это позволяет гарнитуре озвучивать имя абонента, который звонит, а также осуществлять голосовые команды доступа к телефонной книге для набора номера.

SPP — профиль, который определяет — каким образом два устройства будут обмениваться данными, эмулируя проводное соединение подобное USB или RS-232.

DID — идентифицирует класс устройства, производителя и модель. Например, это дает возможность видеть на экране телефона полное название модели подключенной гарнитуры.

ICP — поддержка голосовых звонков между совместимыми Bluetooth-устройствами.

SDAP — профиль используется приложениями для обнаружения услуг, которые могут быть доступными для конкретных подключенных устройств, подключенных по Bluetooth. К примеру, приложение для потокового вещания аудио с помощью SDAP может проверить, поддерживает ли данная модель наушников кодек aptX HD. Еще одним примером будет доступ к премиальному контенту при использовании определенных моделей наушников, или, наоборот, блокирование доступа для некоторых моделей гарнитур в связи с соблюдением авторских прав на цифровой контент.

Какие бывают кодеки Bluetooth

Качество звучания при равных условиях зависит от максимального битрейта и алгоритмов кодирования. Для этих целей используются разные кодеки. На гистограмме ниже можно увидеть, насколько разнится битрейт самых популярных кодеков Bluetooth. Стоит отметить, что кодек должен обязательно поддерживаться и передающим и принимающим устройством

Битрейт популярных кодеков Bluetooth

Профиль hid bluetooth что

SBC находится внизу списка среди самых популярных кодеков Bluetooth. Однако он является неотъемлемым для всех устройств с поддержкой A2DP, что делает его практически универсальным.

SBC обеспечивает низкую нагрузку на мобильный процессор, но достигается это за счет агрессивной обработки и снижения частотного диапазона. В результате происходит значительная потеря данных исходного аудиофайла, что особенно заметно на высоких частотах с появлением фонового шума.

AptX, aptX LL, aptX HD, и aptX Adaptive от Qualcomm

Крупный производитель мобильных процессоров, компания Qualcomm продвигает свои собственные кодеки, встраивая их поддержку в фирменные процессоры. Кодеки отличаются пропускной способностью, и как следствие, качеством звука, которое они обеспечивают. Но в целом вся линейка AptX показывает достойное звучание, а AptX HD многие пользователи называют «золотым стандартом».

AptX предлагает битрейт лишь немногим больше стандартного SBC, но обеспечивает звучание на голову выше за счет иных алгоритмов работы, не так агрессивно «срезая» высокие частоты. Хоть такой алгоритм требует больше вычислительных мощностей, что усиливает нагрузку на процессор, современные устройства имеют достаточный запас производительности для работы со всей линейкой AptX.

AptX HD дает возможность слышать существенно меньше фонового шума и расслышать практически каждый элемент музыкальной композиции. Это достигается за счет кодирования звука либо без потерь, либо с минимальными потерями, которые связаны с ограничениями стандарта Bluetooth.

AptX LL обеспечивает минимальную задержку при передаче звука. Чтобы человеческий мозг не заметил отставания аудио от видео, необходимо, чтобы задержка при передаче аудиопотока была не более 40 мс. AptX LL с минимальной задержкой дает возможность смотреть контент и играть в игры без отставания звука.

AptX Adaptive находится между AptX HD и AptX по качеству передачи звука. При этом он приближается к AptX LL по показателю задержки — 40–80 мс. Кодек имеет переменный битрейт 279–420 кБ\с, который адаптируется под качество воспроизводимых файлов.

LDAC от Sony

LDAC. Компания Sony предложила свой кодек, чтобы не проиграть битву за меломанов. LDAC имеет три режима работы, которые позволяют передавать поток с битрейтом вплоть до 990 кбит/с. Но режим с приоритетом на качество поддерживается достаточно скромным количеством устройств. Существуют некоторые проблемы в стабильности работы в режиме с самым высоким битрейтом. А два первых режима в 660 кбит\с и 330 кбит\с по качеству не превосходят кодеки AptX.

Популярный кодек, который используется многими стриминговыми музыкальными сервисами, включая iTunes. Максимальный битрейт — 256 кбит/с. Главной задачей этого кодека было превзойти качество SBC и возможности формата MP3. За счет более сложных алгоритмов обработки, AAC действительно сохраняет больше музыкальной информации по сравнению со стандартным кодеком.

Кодек несколько отличается при работе на Android и iOS устройствах. В Андроид он получил название Fraunhofer FDK AAC, а для устройств iOS и Mac — Apple AAC.

Источник

Профиль hid bluetooth что

С помощью Bluetooth вы можете выполнять такие действия, как соединение телефона с динамиками для прослушивания музыки, передачи и получения файлов на другие устройства и от них, подключение смартфона без порта к беспроводным наушникам и т. д. Однако существуют специальные «Профили», которые делают это возможным для устройства Bluetooth, чтобы эффективно выполнять свои функции.

Существует множество устройств, которыми можно управлять с помощью Bluetooth, и для каждой функции есть специальные профили Bluetooth.

Проще говоря, профили Bluetooth определенный спецификации беспроводного интерфейса. Вы когда-нибудь задумывались, как вы можете осуществлять беспроводную потоковую передачу звука со смартфона на Bluetooth наушники, или звуковую панель; или как вы можете обмениваться файлами с другим устройством через Bluetooth? Тогда вам следует взглянуть на некоторые из наиболее распространенных профилей Bluetooth.

1. Расширенный профиль распространения аудио (A2DP)

Если вы используете наушники Bluetooth, наушники, автомобильную стереосистему, ваше устройство использует этот профиль для обеспечения передачи высококачественного звука.

2. Аудио/видео профиль дистанционного управления (AVRCP)

Этот профиль отвечает за функциональность удаленного управления устройствами Bluetooth. Вы найдете этот профиль на таких устройствах, как телевизоры, наушники, интеллектуальные колонки, звуковые панели, смартфоны и другое стереооборудование. ACRCP предоставляет интерфейс, который позволяет вашему устройству Bluetooth ставить на паузу музыку, увеличивать и уменьшать громкость, переходить к следующему и предыдущему файлу в вашем списке воспроизведения и т. д.

AVRCP играет жизненно важную роль в управляющем устройстве (например, смартфоне) и целевом устройстве (гарнитуре Bluetooth, динамике и т. д.).

Когда вы нажимаете кнопку (воспроизведение, паузы, затем и т. д.) На управляющем устройстве, команда обнаруживается контроллером с помощью AVRCP. Профиль впоследствии преобразует команду в A/V-сигнал управления, который он передает целевому устройству.

3. Профиль передачи файлов (FTP)

4. Профиль громкой связи (HFP)

Как указано в названии, профиль Hands-Free (HFP) отвечает за успешное выполнение беспроводных телефонных звонков с устройства Bluetooth. Вы найдете этот профиль в мобильных телефонах, автомобильной информационно-развлекательной системе, наушниках и т. д.

HFP использует кодек Continuious Variable Slope Delta (CVSD) (кодирование используется для сжатия данных аудиосигналов) для передачи голоса и для определения некоторых параметров управления голосом (например, громкости). Если вы собираетесь использовать громкую связь во время вождения или в любом другом месте, ваше устройство должно иметь этот профиль.

5. Профиль гарнитуры (HSP)

6. Базовый профиль печати (BPP)

7. Профиль устройства интерфейса пользователя (HID)

Этот профиль обычно используется периферийными устройствами с поддержкой Bluetooth, такими как беспроводные клавиатуры, мыши, игровые контроллеры и т. д. Профиль Human Interface Device определяет функции и протоколы, с помощью которых эти устройства взаимодействуют с устройством Bluetooth.

Хотя существует более 20 профилей Bluetooth, вышеупомянутые профили являются наиболее важными, поскольку они используются в нашей повседневной жизни. Они находятся в устройствах, которыми вы пользуетесь каждый день: мобильные телефоны, ноутбуки, гарнитуры, периферийные устройства, принтеры, автомобили, умные бытовые приборы и т. д.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *