QuoteThe next release will include instructions how it should work on Linux (can't test it though). A GPL'd library is required to use BlueZ under Linux with BlueCove (which my program uses). As far as I understand (and I could be wrong about that) I am not allowed to ship a GPL'd library with my code since my license (modfied MIT) is not compatible with the GPL.That's true, users will have to install it themselves or better yet, Johnny Lee agrees to change it to GPL.
The next release will include instructions how it should work on Linux (can't test it though). A GPL'd library is required to use BlueZ under Linux with BlueCove (which my program uses). As far as I understand (and I could be wrong about that) I am not allowed to ship a GPL'd library with my code since my license (modfied MIT) is not compatible with the GPL.
I was referring to this Java Bluetooth library. The license of my software is in no way influenced by Johnny Lee since I'm not using his code.
java -cp bluecove-2.0.3-20080112.060257-1.jar:bluecove-gpl-2.0.3-20080115.211318-1.jar.jar:WiimoteWhiteboard.jar -jar WiimoteWhiteboard.jar
java.lang.IllegalStateException: Bluetooth failed to initialize. There is probably a problem with your local Bluetooth stack or API. at wiiremotej.WiiRemoteJ.<clinit>(WiiRemoteJ.java:57) at org.uweschmidt.wiimote.whiteboard.WiimoteDataHandler.<init>(WiimoteDataHandler.java:92) at org.uweschmidt.wiimote.whiteboard.WiimoteWhiteboard.startup(WiimoteWhiteboard.java:73) at org.jdesktop.application.Application$1.run(Application.java:171) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)Caused by: javax.bluetooth.BluetoothStateException: BlueCove com.intel.bluetooth.BluetoothStackBlueZ not available at com.intel.bluetooth.BlueCoveImpl.loadStackClass(BlueCoveImpl.java:277) at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:312) at com.intel.bluetooth.BlueCoveImpl.access$100(BlueCoveImpl.java:64) at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:533) at java.security.AccessController.doPrivileged(Native Method) at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:531) at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:520) at javax.bluetooth.LocalDevice.<init>(LocalDevice.java:67) at javax.bluetooth.LocalDevice.getLocalDeviceInstance(LocalDevice.java:74) at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:90) at wiiremotej.WiiRemoteJ.<clinit>(WiiRemoteJ.java:49) ... 11 more
I was under the impression of yours being a Java port since you mentioned porting of Johnny's code. Anyway, you probably want to include the full GPL license in LICENSE/COPYING, or just copying gpl-<ver> from their website. It wasn't quite clear what the license of your code is.
To the fun part : I downloaded the latest snapshot of bluecove-xxx.jar and bluecove-gpl-xxx.jar (not the source code) from their server, copied both files into the root directory of WiimoteWhiteboard and ran it with:Code: [Select]java -cp bluecove-2.0.3-20080112.060257-1.jar:bluecove-gpl-2.0.3-20080115.211318-1.jar.jar:WiimoteWhiteboard.jar -jar WiimoteWhiteboard.jar
It all started with a port of Johnny's app but I didn't really take Johnny's code since I used entirely different libraries.I don't really understand the license confusion. The file LICENSE.txt as well as a folder Licenses should be present in the ZIP-file you downloaded. My code is licensed under MIT. I slightly modified the license though because of the license of one of the libraries I use (WiiRemoteJ).
You don't need the bluecove-2.0.3-SNAPSHOT.jar since it is bundled with the JAR-file. And why did you take the oldest snapshots (1)? Try the latest bluecove-gpl (45).
$ java -cp bluecove-gpl-2.0.3-20080309.181821-45.jar:WiimoteWhiteboard.jar -jar WiimoteWhiteboard.jar java.lang.IllegalStateException: Bluetooth failed to initialize. There is probably a problem with your local Bluetooth stack or API. at wiiremotej.WiiRemoteJ.<clinit>(WiiRemoteJ.java:57) at org.uweschmidt.wiimote.whiteboard.WiimoteDataHandler.<init>(WiimoteDataHandler.java:92) at org.uweschmidt.wiimote.whiteboard.WiimoteWhiteboard.startup(WiimoteWhiteboard.java:73) at org.jdesktop.application.Application$1.run(Application.java:171) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)Caused by: javax.bluetooth.BluetoothStateException: BlueCove com.intel.bluetooth.BluetoothStackBlueZ not available at com.intel.bluetooth.BlueCoveImpl.loadStackClass(BlueCoveImpl.java:277) at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:312) at com.intel.bluetooth.BlueCoveImpl.access$100(BlueCoveImpl.java:64) at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:533) at java.security.AccessController.doPrivileged(Native Method) at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:531) at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:520) at javax.bluetooth.LocalDevice.<init>(LocalDevice.java:67) at javax.bluetooth.LocalDevice.getLocalDeviceInstance(LocalDevice.java:74) at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:90) at wiiremotej.WiiRemoteJ.<clinit>(WiiRemoteJ.java:49) ... 11 more
And do you have a working BlueZ Bluetooth stack on your Linux system? This is required to run since BlueCove is just using the native OS Bluetooth stack.
I got my Java Whiteboard running on Linux (latest Ubuntu) yesterday. Click here for instructions.Uwe
It works great =) and seems to have more features than the current Linux Whiteboard. Do you have plan for future improvements?.
Localization: The software is kinda ready to be localized. But I won't do it unless people really want it since supporting multiple languages potentially slows down development (more people involved).
Adaptive Mouse Smoothing: See this post.
Supporting more than 2 Wiimotes: Currently restricted by the user interface and the clustering algorithm (for now only simple pairing of IR dots from 2 Wiimotes)
IMO it'd better be done sooner rather than later, it would take a huge amount of time/effort when your app gets big enough. You can make it i18n-ready but leave other locales alone until someone volunteers.
QuoteAdaptive Mouse Smoothing: See this post.It is done in Linux Whiteboard during the calibration process. The default number of past cursor positions remembered is 7. But depending on the jerkiness, it will be increased if the precision is low and decreased otherwise. That allows drawing with good precision: to 1px when needed.
QuoteSupporting more than 2 Wiimotes: Currently restricted by the user interface and the clustering algorithm (for now only simple pairing of IR dots from 2 Wiimotes)That actually put me off for quite sometime in implementing battery and otherwise individual Wiimotes' information in fear of cluttering the interface. Besides, with the current Linux Whiteboard, there is only 1 Wiimote as far as it concerns. All IR signals (and battery :s ) are processed in the API before they get to the main program.
Nice. But why during the calibration? I wanted to constantly adjust the averaging based on "IR Pen movement speed", if you know what I mean.
So you support more than 2 Wiimotes? How are you solving the problem of "clustering" IR dots: As you know, each Wiimote reports the positions of up to four IR dots. How do you calculate which IR dots "belong together"?