Я играл с HID частью IOKit в последнее время на моем Mac с контроллером PS3. Мне удалось просмотреть образец кода и подключиться к моему контроллеру, получить поток данных и проанализировать его (все, включая акселерометр и гироскоп).
Однако сегодня я решил начать устанавливать светодиоды на задней панели устройства и запускать двигатели грохота, но я просто не могу заставить его работать!
Глядя на пример кода, который Apple предоставляет для IOHID, я не вижу ничего, что можно было бы установить при настройке на HID-устройстве, только получая данные. От поиска в Интернете (для мелочи много полдня) у меня есть то, что я считаю рабочим методом отправки, который использует IOHIDDeviceSetReport()
. Однако я не могу определить, какие данные я должен отправлять.
Я нашел несколько сайтов, которые перечисляют примеры данных:
- http://www.circuitsathome.com/mcu/ps3-and-wiimote-game-controllers-on-the-arduino-host-shield-part-2
- https://github.com/ribbotson/USB-Host/blob/master/ps3/PS3USB/ps3_usb.h
- http://wiibrew.org/wiki/Sixaxis
(Я знаю, что не все эти примеры относятся к Mac для контроллера PS3)
Многие люди, кажется, говорят об этом и даже делают это (я отказываюсь верить, что никто не получил эту работу), но я не могу найти ничего о том, как это сделать, что работает!
Я чувствую, что мне не хватает простого шага здесь, поэтому, если у кого-нибудь есть идеи, помощь или решение, пожалуйста, дайте мне знать.
Спасибо.
Пример кода того, как я пытаюсь отправить отчет (возвращается):
CFIndex len = 64;
uint8_t report[64] = {0x0};
IOReturn tIOReturn = IOHIDDeviceSetReport(deviceRef,
kIOHIDReportTypeOutput,
reportID,
report,
len);
Это просто посылает много ничего (буквально), но это просто пример того, что я использую, просто не могу сказать, что это неправильно.
Экстра: Я также заметил, что определение яблок IOHIDDeviceSetReport
отличается от приведенного примера.
Там он говорит, что report
должен быть "адресом буфера отчета". Но...
Там говорится: *report
(являющийся указателем) - это "байты отчета, которые должны быть отправлены на устройство".