Files
jlibwiiuse/WiiuseJ/src/wiiusej/WiiUseApi.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();
}
}