Haiku — свободная операционная система для персональных компьютеров, первая версия которой нацелена на бинарную совместимость с операционной системой BeOS.

Haiku воплощает в себе основные идеи BeOS. Это будет модульная система, архитектурно решённая как «модульное ядро», способная динамически подгружать необходимые модули. К интересным особенностям системы следует отнести архитектуру трансляторов — системных интерпретаторов файловых форматов (например, JPEG).

О проекте

ad block

Закладки

BeOS Joystick Framework

Эта статья - скорее дополнение к статье ITO Takayuki “BeOS Joystick Driver”, так что советуем для начала ознакомиться с ней.

Я плохой писатель статей (даже на шведском), но я третий, кто пытается реализовать в Haiku работу с джойстиками, и, думаю, надо оставить что-то после себя для четвёртого, если я вдруг брошу эту работу :)

Когда я начал изучать joystick framework, я не думал, что это будет трудно; как же я обманывался ха, я даже не знал, как общаться с железом. Тем не менее, после некоторого тестирования (методом проб и ошибок), думаю, я нашёл кое-какую информацию о joystick framework, но я сначала я опишу своё понимание работы joystick framework.

Класс BJoystick в libdevice.so общается с джойстиком, объявленным в dev/joystick/”portname”/”joystick name”, таким образом обычный игровой порт (gameport) и usb_joy от ITO работают как отдельные устройства.

usb_joy = dev/joysticks/usb/0 (для первого устройства)
usb_joy = dev/joysticks/usb/1 (для второго и т. д.)
gameport = dev/joysticks/gameport/201
etc
emuxkigameport = dev/joysticks/ emuxkigameport /et18

emuxkigameport — это драйвер, который был подарен Haiku, он заставляет работать игровые порты на звуковых картах SB Live и Audigy. Я пытался добавить его в emuxki, но в этом случае звук прерывался, когда я двигал джойстик. Этот драйвер использует обычный игровой порт.

Как же он работает? Можно сказать, что у нас есть два способа общения с джойстиком — через usb_joy и emuxkigameport. Сначала у вас должна быть копия файла описания джойстика в onfig/settings/joystick/”portname”/”joystick name”. Думаю, это должна быть именно копия, поскольку приложение Joystick Preference модифицирует файл, так что симлинк не рекомендуется.

Сначала о usb_joy. Когда BJoystick посылают ioct (я не проверял, но думаю, что правильно понял, да?) драйверу, usb_joy делает всё сам, забирая информацию из USB и читая файо описания джойстика из /settings/joystick/”portname”/”joystick name”.

А как работает emuxkigameport? BJoystick посылает ту же информацию, что и в случае с usb_joy, но в данном случае emuxkigameport перенаправляет ioct драйверу, который называется generic gameport и расположен в drivers/generic. Этот драйвер загружает файл в config/settings/joystick/”portname”/”joystick name”, с этим файлом он знает, какой модуль нужно загружать, и загружает его, но в этом месте должен быть файл описания джойстика, иначе вы сможете использовать джойстик только в стандартном режиме (то же самое, как если бы модуля для вашего джойстика и вовсе не существовало).

Об использовании BeOS Joystick Framework в Haiku. Да, он работает, но не usb_joy, так как он рушит систему. Вам нужно скопировать libdevice.so, приложение Joystick preference, etc/joysticks, media/joy, generic/gamport и хайковский emuxkigameport. Я тестировал только stickit и приложение joystick preference из BeOS R5, а игры не тестировал.

Что получается на данный момент? Я буду продолжать, но сконцентрируюсь на драйвере usb_joy, чтобы понять, что с ним не так. Было бы здорово, если бы кто-нибудь помог мне определить, насколько хорошей идеей будет использование модулей в драйвере USB, чтобы обрабатывать различия в различных джойстиках, или в мире USB таких различий вообще не существует.

Если хотите ещё прочитать про джойстики, вот вам несколько ссылок:



оригинал

2008/08/11
метки:

Архивы

Сентябрь 2007| Октябрь 2007| Январь 2008| Февраль 2008| Март 2008| Апрель 2008| Май 2008| Июнь 2008| Июль 2008| Август 2008| Сентябрь 2008