/** * This file is part of WiiuseJ. * * WiiuseJ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * WiiuseJ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with WiiuseJ. If not, see . */ package wiiusej.wiiuseapievents; /** * Class used to represent a status event. This class is used to know what are * the settings of the wiimote. * * @author guiguito */ public class StatusEvent extends WiiUseApiEvent { private static short WIIMOTE_LED_1 = 1; private static short WIIMOTE_LED_2 = 2; private static short WIIMOTE_LED_3 = 4; private static short WIIMOTE_LED_4 = 8; /* ATTACHMENT CONSTANTS */ private static short EXP_NONE = 0; private static short EXP_NUNCHUK = 1; private static short EXP_CLASSIC = 2; private static short EXP_GUITAR_HERO_3 = 3; /* Status variables */ private boolean connected = false; private float batteryLevel = -1; private short leds = 0; private boolean isSpeakerEnabled = false; private int attachment = 0; private boolean isRumbleActive = false; private boolean isContinuousActive = false; private boolean isIrActive = false; private boolean isMotionSensingActive = false; /** * Construct the StatusEvent setting up the id. * * @param id * the Wiimote id */ public StatusEvent(int id) { super(id, WiiUseApiEvent.STATUS_EVENT); } /** * Build a StatusEvent with all fields set. * * @param id * id of the wiimote * @param connect * true if the wiimote is connected * @param batt * battery level * @param led * status of leds * @param speak * speakers status * @param attach * attachment status * @param rumbleState * true if rumble is active * @param continuousState * true if continuous flag is activated * @param irState * true if ir is active * @param motionSensingState * true if accelerometer is active */ public StatusEvent(int id, boolean connect, float batt, short led, boolean speak, int attach, boolean rumbleState, boolean continuousState, boolean irState, boolean motionSensingState) { super(id, WiiUseApiEvent.STATUS_EVENT); connected = connect; this.batteryLevel = batt; this.leds = led; this.isSpeakerEnabled = speak; this.attachment = attach; isRumbleActive = rumbleState; isContinuousActive = continuousState; isIrActive = irState; isMotionSensingActive = motionSensingState; } /** * True if the wiimote is connected false otherwise. * * @return return the connected status. */ public boolean isConnected() { return connected; } /** * Get battery level. * * @return battery level. 1 = 100% */ public float getBatteryLevel() { return batteryLevel; } /** * Get status of the leds . * * @return a short representing LEDS turned on. */ public short getLeds() { return leds; } /** * Get led1 status. * * @return true if the led is set. */ public boolean isLed1Set() { if ((leds & WIIMOTE_LED_1) > 0) { return true; } else { return false; } } /** * Get led2 status. * * @return true if the led is set. */ public boolean isLed2Set() { if ((leds & WIIMOTE_LED_2) > 0) { return true; } else { return false; } } /** * Get led3 status. * * @return true if the led is set. */ public boolean isLed3Set() { if ((leds & WIIMOTE_LED_3) > 0) { return true; } else { return false; } } /** * Get led4 status. * * @return true if the led is set. */ public boolean isLed4Set() { if ((leds & WIIMOTE_LED_4) > 0) { return true; } else { return false; } } /** * Tell if the speaker is enable for this wiimote * * @return TRUE if it enabled false otherwise */ public boolean isSpeakerEnabled() { return isSpeakerEnabled; } /** * Get the int representing the attachment type. * * @return value of the Attachment Type */ public int getAttachment() { return attachment; } /** * Get the status of rumble. * * @return true if the rumble is active false otherwise */ public boolean isRumbleActive() { return isRumbleActive; } /** * Tell if the CONTINUOUS option is activated. * * @return the isContinuousActive */ public boolean isContinuousActive() { return isContinuousActive; } /** * Tell if the IR Tracking is active. * * @return TRUE if it is active or false otherwise. */ public boolean isIrActive() { return isIrActive; } /** * Get the flag indicating if the motion sensing is active. * * @return true if the motion sensing is active false otherwise */ public boolean isMotionSensingActive() { return isMotionSensingActive; } @Override public String toString() { String out = ""; /* Status */ out += "/*********** STATUS EVENT : WIIMOTE ID :" + super.getWiimoteId() + " ********/\n"; out += "--- connected : " + connected + "\n"; out += "--- Battery level : " + batteryLevel + "\n"; out += "--- Leds : " + leds + "\n"; out += "--- Speaker enabled : " + isSpeakerEnabled + "\n"; out += "--- Attachment ? : " + attachment + "\n"; out += "--- Rumble ? : " + isRumbleActive + "\n"; out += "--- Continuous ? : " + isContinuousActive + "\n"; out += "--- IR active ? : " + isIrActive + "\n"; out += "--- Motion sensing active ? : " + isMotionSensingActive + "\n"; return out; } }