Интерфейс устройства HID в MAC

Я должен создать программное обеспечение / драйвер для OSX, который взаимодействует с устройством HID, подключенным через USB. Цели применения заключаются в следующем,

  1. Определите, когда устройство HID подключено или удалено. PID и VID устройства известны.
  2. Считайте серийный номер устройства HID, версию прошивки и другую информацию о подключенном устройстве, которое соответствует VID и PID.
  3. Получайте отчеты и настраивайте отчеты для устройства HID, когда оно подключено.
  4. Связь с другим приложением, с помощью которого пользователь может изменять настройки устройства HID

Я не являюсь разработчиком драйверов, но у меня есть опыт работы с C, C ++, Obj C и т. Д. Мне интересно, каким будет наилучший способ достижения указанных целей. То есть я должен разработать расширение ядра (драйвер) или есть лучшая альтернатива?

Проблемы, с которыми я сталкиваюсь,

  • Начиная с разработки драйверов
  • Приложение Mac, связывающееся с драйвером.

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

Также просим упомянуть форумы или сообщества, которые могут быть полезны при разработке драйвера устройства для Mac.

Спасибо вам всем за помощь. 🙂

1

Решение

MacOS X уже имеет драйверы для устройств HID. Поэтому вам не нужно разрабатывать специальный драйвер / расширение для него.

Вы можете использовать кроссплатформенную библиотеку с открытым исходным кодом hidapi для связи с HID-устройствами.

2

Другие решения

Другой ответ на этот вопрос, безусловно, справедлив для множества разных вариантов использования, и я советую идти по этому пути, где это возможно. Однако, безусловно, есть случаи, когда вам нужно копаться в кексте. В частности, если устройство HID должно выступать в качестве системной клавиатуры или указательного устройства, но не используется встроенным стеком HID, как вы хотите, вам может потребоваться (или вы захотите) разработать ядро. космический водитель. (Тем не менее, у вас есть возможность вставлять события в систему управления окнами из пространства пользователя, поэтому сначала я создам прототип вашего варианта использования, если у вас есть сомнения.)

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

Для примера кода, проверьте собственный открытый исходный код Apple. (IOHIDFamily, IOUSBFamily и т. Д.) Поиск в Интернете классов, с которыми вы работаете, также приведет к появлению стороннего кода OSS на Github и т. Д.

Переполнение стека и соответствующие списки рассылки для разработчиков Apple (Darwin-драйверы, Darwin-kernel или Usb, в зависимости от вопроса) и, возможно, форумы разработчиков (я считаю, что им трудно следить / постоянно следить), вероятно, являются лучшими сообществами для этого. Такие вещи.

1

По вопросам рекламы [email protected]