-
-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cross-platform support #8
Comments
Currently libusb is not really meant to be used directly (driver only use it through hidapi-libusb), and having a hard dependency against libusb would mean losing support for hidraw only. A solution would be looking into a first draft implementation of libconvergence to replace hidapi/libuvc/libusb. Another would be platform testing to see how big of a issue this would be for short term. |
The USB interfaces we need to talk to are not HID interfaces, so hidapi is not an option. I'm not sure that it excludes hidapi-hidraw mode - that will still be used for talking to the HMD, and libusb will be used to talk directly to the (completely separate) camera sensor. |
Hello. I am linux user. I have oculus rift CV1 with oculus touch. Can I help you with something? |
Hi! This issue is about making sure that the new code (particularly the USB camera sensor access) is portable to Windows and MacOS - less so with Linux, which is where I'm doing my development. Take a look at the other issues I've filed and see if anything looks approachable for you. Otherwise, just testing things and reporting your experience is useful too. Don't expect too much yet though - it's early development still! I'm currently working on the https://github.com/thaytan/OpenHMD/tree/rift-correspondence-search but I think I'll do some consolidation of all the work so far to a new clean development branch soon. |
I've tried building rift-kalman-filter 678f7a1 on Windows 7 using VS2019 last weekend. Following the Readme file, first I tried Meson, but that failed - latest Meson installer requires Win10. After spending some hours gathering the dependency puzzle pieces and putting them together, I arrived at following configuration: Deps:
Missing
Config:
Build:
Now 'asm/byteorder.h' looks like a kernel header to me, so that's not cross-platform enough. |
I pushed a couple of fixes for MSVC (like the byteorder.h include), but it's not enough to get things building. The UVC driver directly uses the posix monotonic clock - an API that Windows doesn't have. It will need to go through the OpenHMD compat call, but that made me realise that there's probably more wrong with the timing handling on Windows around that. |
Apologies if I'm ignorantly bringing up wrong/irrelevant stuff, but a cursory search gives examples like profileapi.h QueryPerformanceCounter for the monotonic clock thing, and there's stuff like cross-platform libuvc, too. Don't know when I'll get to figuring out OpenHMD code, but I do love the idea of not only having free software drivers, but knowing them enough to play around with changes, too. |
OpenHMD has wrapper function for getting monotonic clock time already, I just didn't use it in that spot because it was awkward. This simple UVC driver is basically doing what libuvc does, but allows me to maintain a queue of zero-copy framebuffers, and to talk directly to the USB device to send the radio commands that makes the cameras listen for exposure triggers from the headset. |
In the interests of iterating fast, I've probably used posix or GNU specific API in places. Getting things running on Windows and other unixes needs testing.
UVC camera access is done directly through libusb, which should work cross-platform but again - needs testing.
The text was updated successfully, but these errors were encountered: