-
Couldn't load subscription status.
- Fork 6
USB and serial devices support, Win32, CMake #4
Conversation
by using ANSI C functions instead of obsolete POSIX ones.
Works with SpaceExplorer and should mostly work with all USB devices if the usbdev.c implementation is merged.
Using `hidapi` as a HID access library. Tested on Windows with SpaceExplorer. Should work on Linux. Needs hid.c and hidapi.h from here: https://github.com/libusb/hidapi
Format VID and PID properly in debug messages. Print more information on unknown 3Dconnexion devices. Dump unknown HID reports.
The SpacePilot should be correct taken from Base.xml of the official driver (v. 10.4.10). The others just seem right from pictures and user manuals.
Builds with MSVS 2019
Added RS-232 serial port HAL (Hardware Abstraction Layer) for Win32 and POSIX (Linux, UNIX). Implemented rough first serial device support by heavily borrowing code from spacenavd. Tested working on Win32 with a SpaceBall 3003 FLX (apart from a timing problem when opening). The POSIX HAL tested on Windows but is far from ready.
Currently tested USB devices: "SpaceTraveler" "SpacePilot" "SpaceExplorer" - 6DOF hat working. - All button press and release events detected. - Buttons correctly identified. - LED On/Off working.
Tested working on Win32 with a SpaceTec IMC "SpaceBall 3003 FLX" and a 3Dconnexion "Magellan / SpaceMouse" (apart from a checksum error when receiving button and 6DOF data simultaneously).
Writing to the screen and controlling the backlight works. The API for writing to the screen is not finalized. Also mark the tested and fully working USB devices as such: Spaceball 5000 USB SpaceTraveler SpacePilot SP1 USB SpaceExplorer
|
Thank you for your contribution, but I can't merge this as it stands for a number of reasons:
There are three ways forward that I can see:
Let me know which way you prefer. Edit: if you want to discuss any of this in real-time, I'm always idling in #spacenav on libera.chat (IRC) as "nuclear". |
|
It would have surprised me, if you had just merged this pull request. I created it only to replace my original three, since they are now obsolete - essentially to "let you know" of the current state of the code. The work I did was out of curiosity how to communicate with space mice and your nascent libspnavdev looked as a perfect starting point. As for the ways to continue:
P.S. It has turned into a hobby of sniping cheap space mice just to test if they work correctly or to implement the support (I do realize I'm duplicating code from P.P.S. CMake is non-itrusive and is not necessary. You can completely ignore the commit adding it if you want. |
|
And of course I would be very glad if you give me specific comments and suggestions of what could/should be done differently or improved. |
|
Nice collection :) Ok, in that case no worries, but it would be helpful if you have said what the pull request was about, because usually it's meant for contributions intended to be merged, so that's what I thought this is. If you don't have the time to work on spacenavd, I think the best approach would be #2. I'll try to get it done soon and then I will be in a better position to discuss what to merge and how. |


Implement support for pretty much all 3Dconnexion 6DOF controllers - USB and serial.
Win32: Add Windows example.
CMake build system.