175 lines
4.3 KiB
Java
175 lines
4.3 KiB
Java
package wiiusej;
|
|
|
|
/**
|
|
* Singleton used to manipulate WiiUse Api.
|
|
* @author gduche
|
|
*
|
|
*/
|
|
public class WiiUseApi {
|
|
|
|
static {
|
|
System.loadLibrary("libWiiuseJ");
|
|
}
|
|
|
|
private static WiiUseApi instance = new WiiUseApi();
|
|
|
|
/**
|
|
* Get the only instance of WiiUseApi.
|
|
* @return
|
|
*/
|
|
static WiiUseApi getInstance(){
|
|
return instance;
|
|
}
|
|
|
|
/**
|
|
* Load the library.
|
|
*
|
|
* @return 0 if there is an error, 1 if everything is ok.
|
|
*/
|
|
native int loadLibrary();
|
|
|
|
/**
|
|
* Try to connect to 2 wiimotes. Make them rumble to show they are
|
|
* connected.
|
|
*
|
|
* @return 0 if there is an error otherwise it returns the number of
|
|
* wiimotes connected.
|
|
*/
|
|
native int doConnections();
|
|
|
|
/**
|
|
* Close connection to the wiimote with the given id.
|
|
*
|
|
*/
|
|
native void closeConnection(int id);
|
|
|
|
/**
|
|
* Shutdown Wiiuse API.
|
|
* @return 0 if there is an error, 1 if everything is ok.
|
|
*/
|
|
native void shutdownApi();
|
|
|
|
/**
|
|
* Activate rumble on the wiimote with the given id.
|
|
* @param id the id of the wiimote.
|
|
*/
|
|
native void activateRumble(int id);
|
|
|
|
/**
|
|
* Deactivate rumble on the wiimote with the given id.
|
|
*
|
|
* @param id the id of the wiimote.
|
|
*/
|
|
native void deactivateRumble(int id);
|
|
|
|
/**
|
|
* Activate IR Tracking on the wiimote with the given id.
|
|
* @param id the id of the wiimote.
|
|
*/
|
|
native void activateIRTracking(int id);
|
|
|
|
/**
|
|
* Deactivate IR Tracking on the wiimote with the given id.
|
|
* @param id the id of the wiimote.
|
|
*/
|
|
native void deactivateIRTracking(int id);
|
|
|
|
/**
|
|
* Activate motion sensing on the wiimote with the given id.
|
|
* @param id the id of the wiimote.
|
|
*/
|
|
native void activateMotionSensing(int id);
|
|
|
|
/**
|
|
* Deactivate motion sensing on the wiimote with the given id.
|
|
* @param id the id of the wiimote.
|
|
*/
|
|
native void deactivateMotionSensing(int id);
|
|
|
|
/**
|
|
* Set wiimote leds status.
|
|
* @param id the id of the wiimote concerned
|
|
* @param led1 status of led1: True=ON, False=OFF
|
|
* @param led2 status of led2: True=ON, False=OFF
|
|
* @param led3 status of led3: True=ON, False=OFF
|
|
* @param led4 status of led4: True=ON, False=OFF
|
|
*/
|
|
native void setLeds(int id, boolean led1, boolean led2, boolean led3, boolean led4);
|
|
|
|
/**
|
|
* Set how many degrees an angle must change to generate an event.
|
|
* @param id id of the wiimote concerned
|
|
* @param angle minimum angle detected by an event
|
|
*/
|
|
native void setOrientThreshold(int id, float angle);
|
|
|
|
/**
|
|
* Make the the accelerometers give smoother results.
|
|
* This is set by default.
|
|
* @param id the id of the wiimote concerned
|
|
*/
|
|
native void activateSmoothing(int id);
|
|
|
|
/**
|
|
* Make the the accelerometers give raw results.
|
|
* @param id the id of the wiimote concerned
|
|
*/
|
|
native void deactivateSmoothing(int id);
|
|
|
|
/**
|
|
* Make the wiimote generate an event each time we poll.
|
|
* Not set by default.
|
|
* @param id the id of the wiimote concerned
|
|
*/
|
|
native void activateContinuous(int id);
|
|
|
|
/**
|
|
* Make the wiimote generate an event only when there is one.
|
|
* @param id the id of the wiimote concerned
|
|
*/
|
|
native void deactivateContinuous(int id);
|
|
|
|
/**
|
|
* Get status and values from the wiimotes and send it through callbacks.
|
|
*
|
|
* @param id the id of the wiimote of which we want the status.
|
|
*/
|
|
native void getStatus(int id);
|
|
|
|
/**
|
|
* Get status and values from the wiimotes and send it through callbacks.
|
|
*
|
|
* @param mote The WiimoteEvent object to fill with the datas.
|
|
*/
|
|
native void specialPoll(WiiMoteEvent mote);
|
|
|
|
|
|
/* Tests */
|
|
public static void main(String[] args) {
|
|
|
|
/* Test JNI Side */
|
|
WiiUseApi manager = new WiiUseApi();
|
|
|
|
int value = manager.loadLibrary();
|
|
System.out.println("loadLibrary : " + value);
|
|
|
|
value = manager.doConnections();
|
|
System.out.println("doConnections : " + value);
|
|
|
|
WiiMoteEvent mote = new WiiMoteEvent();
|
|
|
|
manager.getStatus(1);
|
|
System.out.println("Status : \n" + mote);
|
|
|
|
System.out.println("");
|
|
System.out.println("!!!!!!!!!!!!!! Polling !!!!!!!!!");
|
|
while (true) {
|
|
manager.specialPoll(mote);
|
|
System.out.println(mote);
|
|
mote.EmptyIRPoints();
|
|
}
|
|
// manager.closeConnectionsAndShutDown();
|
|
}
|
|
|
|
}
|