diff --git a/PS3BT.cpp b/PS3BT.cpp
index 103d71ae..ba8e043b 100644
--- a/PS3BT.cpp
+++ b/PS3BT.cpp
@@ -49,26 +49,26 @@ pBtd(p) // pointer to USB class instance - mandatory
Reset();
}
-bool PS3BT::getButtonPress(Button b) {
- return (ButtonState & pgm_read_dword(&BUTTONS[(uint8_t)b]));
+bool PS3BT::getButtonPress(ButtonEnum b) {
+ return (ButtonState & pgm_read_dword(&PS3_BUTTONS[(uint8_t)b]));
}
-bool PS3BT::getButtonClick(Button b) {
- uint32_t button = pgm_read_dword(&BUTTONS[(uint8_t)b]);
+bool PS3BT::getButtonClick(ButtonEnum b) {
+ uint32_t button = pgm_read_dword(&PS3_BUTTONS[(uint8_t)b]);
bool click = (ButtonClickState & button);
ButtonClickState &= ~button; // Clear "click" event
return click;
}
-uint8_t PS3BT::getAnalogButton(Button a) {
- return (uint8_t)(l2capinbuf[pgm_read_byte(&ANALOGBUTTONS[(uint8_t)a])]);
+uint8_t PS3BT::getAnalogButton(ButtonEnum a) {
+ return (uint8_t)(l2capinbuf[pgm_read_byte(&PS3_ANALOG_BUTTONS[(uint8_t)a])]);
}
-uint8_t PS3BT::getAnalogHat(AnalogHat a) {
+uint8_t PS3BT::getAnalogHat(AnalogHatEnum a) {
return (uint8_t)(l2capinbuf[(uint8_t)a + 15]);
}
-int16_t PS3BT::getSensor(Sensor a) {
+int16_t PS3BT::getSensor(SensorEnum a) {
if(PS3Connected) {
if(a == aX || a == aY || a == aZ || a == gZ)
return ((l2capinbuf[(uint16_t)a] << 8) | l2capinbuf[(uint16_t)a + 1]);
@@ -85,7 +85,7 @@ int16_t PS3BT::getSensor(Sensor a) {
return 0;
}
-double PS3BT::getAngle(Angle a) {
+double PS3BT::getAngle(AngleEnum a) {
double accXval, accYval, accZval;
if(PS3Connected) {
@@ -112,7 +112,7 @@ double PS3BT::getAngle(Angle a) {
return (atan2(accXval, accZval) + PI) * RAD_TO_DEG;
}
-double PS3BT::get9DOFValues(Sensor a) { // Thanks to Manfred Piendl
+double PS3BT::get9DOFValues(SensorEnum a) { // Thanks to Manfred Piendl
if(!PS3MoveConnected)
return 0;
int16_t value = getSensor(a);
@@ -156,7 +156,7 @@ String PS3BT::getTemperature() {
return "Error";
}
-bool PS3BT::getStatus(Status c) {
+bool PS3BT::getStatus(StatusEnum c) {
return (l2capinbuf[(uint16_t)c >> 8] == ((uint8_t)c & 0xff));
}
@@ -544,7 +544,7 @@ void PS3BT::setRumbleOff() {
HID_Command(HIDBuffer, HID_BUFFERSIZE);
}
-void PS3BT::setRumbleOn(Rumble mode) {
+void PS3BT::setRumbleOn(RumbleEnum mode) {
uint8_t power[2] = {0xff, 0x00}; // Defaults to RumbleLow
if(mode == RumbleHigh) {
power[0] = 0x00;
@@ -566,18 +566,22 @@ void PS3BT::setLedRaw(uint8_t value) {
HID_Command(HIDBuffer, HID_BUFFERSIZE);
}
-void PS3BT::setLedOff(LED a) {
- HIDBuffer[11] &= ~((uint8_t)((pgm_read_byte(&LEDS[(uint8_t)a]) & 0x0f) << 1));
+void PS3BT::setLedOff(LEDEnum a) {
+ HIDBuffer[11] &= ~((uint8_t)((pgm_read_byte(&PS3_LEDS[(uint8_t)a]) & 0x0f) << 1));
HID_Command(HIDBuffer, HID_BUFFERSIZE);
}
-void PS3BT::setLedOn(LED a) {
- HIDBuffer[11] |= (uint8_t)((pgm_read_byte(&LEDS[(uint8_t)a]) & 0x0f) << 1);
- HID_Command(HIDBuffer, HID_BUFFERSIZE);
+void PS3BT::setLedOn(LEDEnum a) {
+ if(a == OFF)
+ setLedRaw(0);
+ else {
+ HIDBuffer[11] |= (uint8_t)((pgm_read_byte(&PS3_LEDS[(uint8_t)a]) & 0x0f) << 1);
+ HID_Command(HIDBuffer, HID_BUFFERSIZE);
+ }
}
-void PS3BT::setLedToggle(LED a) {
- HIDBuffer[11] ^= (uint8_t)((pgm_read_byte(&LEDS[(uint8_t)a]) & 0x0f) << 1);
+void PS3BT::setLedToggle(LEDEnum a) {
+ HIDBuffer[11] ^= (uint8_t)((pgm_read_byte(&PS3_LEDS[(uint8_t)a]) & 0x0f) << 1);
HID_Command(HIDBuffer, HID_BUFFERSIZE);
}
@@ -602,7 +606,7 @@ void PS3BT::HIDMove_Command(uint8_t* data, uint8_t nbytes) {
timerHID = millis();
}
-void PS3BT::moveSetBulb(uint8_t r, uint8_t g, uint8_t b) { //Use this to set the Color using RGB values
+void PS3BT::moveSetBulb(uint8_t r, uint8_t g, uint8_t b) { // Use this to set the Color using RGB values
// Set the Bulb's values into the write buffer
HIDMoveBuffer[3] = r;
HIDMoveBuffer[4] = g;
@@ -611,7 +615,7 @@ void PS3BT::moveSetBulb(uint8_t r, uint8_t g, uint8_t b) { //Use this to set the
HIDMove_Command(HIDMoveBuffer, HID_BUFFERSIZE);
}
-void PS3BT::moveSetBulb(Colors color) { //Use this to set the Color using the predefined colors in enum
+void PS3BT::moveSetBulb(ColorsEnum color) { // Use this to set the Color using the predefined colors in enum
moveSetBulb((uint8_t)(color >> 16), (uint8_t)(color >> 8), (uint8_t)(color));
}
diff --git a/PS3BT.h b/PS3BT.h
index b8725b00..bd14f4e4 100644
--- a/PS3BT.h
+++ b/PS3BT.h
@@ -56,32 +56,34 @@ public:
/** @name PS3 Controller functions */
/**
- * getButtonPress(Button b) will return true as long as the button is held down.
+ * getButtonPress(ButtonEnum b) will return true as long as the button is held down.
*
- * While getButtonClick(Button b) will only return it once.
+ * While getButtonClick(ButtonEnum b) will only return it once.
*
- * So you instance if you need to increase a variable once you would use getButtonClick(Button b),
- * but if you need to drive a robot forward you would use getButtonPress(Button b).
+ * So you instance if you need to increase a variable once you would use getButtonClick(ButtonEnum b),
+ * but if you need to drive a robot forward you would use getButtonPress(ButtonEnum b).
+ * @param b ::ButtonEnum to read.
+ * @return getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
*/
- bool getButtonPress(Button b);
- bool getButtonClick(Button b);
+ bool getButtonPress(ButtonEnum b);
+ bool getButtonClick(ButtonEnum b);
/**@}*/
/** @name PS3 Controller functions */
/**
* Used to get the analog value from button presses.
- * @param a The ::Button to read.
+ * @param a The ::ButtonEnum to read.
* The supported buttons are:
* ::UP, ::RIGHT, ::DOWN, ::LEFT, ::L1, ::L2, ::R1, ::R2,
* ::TRIANGLE, ::CIRCLE, ::CROSS, ::SQUARE, and ::T.
* @return Analog value in the range of 0-255.
*/
- uint8_t getAnalogButton(Button a);
+ uint8_t getAnalogButton(ButtonEnum a);
/**
* Used to read the analog joystick.
* @param a ::LeftHatX, ::LeftHatY, ::RightHatX, and ::RightHatY.
* @return Return the analog value in the range of 0-255.
*/
- uint8_t getAnalogHat(AnalogHat a);
+ uint8_t getAnalogHat(AnalogHatEnum a);
/**
* Used to read the sensors inside the Dualshock 3 and Move controller.
* @param a
@@ -90,47 +92,47 @@ public:
* and a temperature sensor inside.
* @return Return the raw sensor value.
*/
- int16_t getSensor(Sensor a);
+ int16_t getSensor(SensorEnum a);
/**
* Use this to get ::Pitch and ::Roll calculated using the accelerometer.
* @param a Either ::Pitch or ::Roll.
* @return Return the angle in the range of 0-360.
*/
- double getAngle(Angle a);
+ double getAngle(AngleEnum a);
/**
* Read the sensors inside the Move controller.
* @param a ::aXmove, ::aYmove, ::aZmove, ::gXmove, ::gYmove, ::gZmove, ::mXmove, ::mYmove, and ::mXmove.
* @return The value in SI units.
*/
- double get9DOFValues(Sensor a);
+ double get9DOFValues(SensorEnum a);
/**
- * Get the ::Status from the controller.
- * @param c The ::Status you want to read.
+ * Get the status from the controller.
+ * @param c The ::StatusEnum you want to read.
* @return True if correct and false if not.
*/
- bool getStatus(Status c);
+ bool getStatus(StatusEnum c);
/**
- * Read all the available ::Status from the controller.
+ * Read all the available ::StatusEnum from the controller.
* @return One large string with all the information.
*/
String getStatusString();
/**
* Read the temperature from the Move controller.
- * @return The temperature in degrees celsius.
+ * @return The temperature in degrees Celsius.
*/
String getTemperature();
- /** Used to set all LEDs and ::Rumble off. */
+ /** Used to set all LEDs and rumble off. */
void setAllOff();
- /** Turn off ::Rumble. */
+ /** Turn off rumble. */
void setRumbleOff();
/**
- * Turn on ::Rumble.
+ * Turn on rumble.
* @param mode Either ::RumbleHigh or ::RumbleLow.
*/
- void setRumbleOn(Rumble mode);
+ void setRumbleOn(RumbleEnum mode);
/**
- * Turn on ::Rumble using custom duration and power.
+ * Turn on rumble using custom duration and power.
* @param rightDuration The duration of the right/low rumble effect.
* @param rightPower The intensity of the right/low rumble effect.
* @param leftDuration The duration of the left/high rumble effect.
@@ -139,8 +141,8 @@ public:
void setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower);
/**
- * Set LED value without using the ::LED enum.
- * @param value See: ::LED enum.
+ * Set LED value without using ::LEDEnum.
+ * @param value See: ::LEDEnum.
*/
void setLedRaw(uint8_t value);
@@ -149,20 +151,20 @@ public:
setLedRaw(0);
};
/**
- * Turn the specific ::LED off.
- * @param a The ::LED to turn off.
+ * Turn the specific LED off.
+ * @param a The ::LEDEnum to turn off.
*/
- void setLedOff(LED a);
+ void setLedOff(LEDEnum a);
/**
- * Turn the specific ::LED on.
- * @param a The ::LED to turn on.
+ * Turn the specific LED on.
+ * @param a The ::LEDEnum to turn on.
*/
- void setLedOn(LED a);
+ void setLedOn(LEDEnum a);
/**
- * Toggle the specific ::LED.
- * @param a The ::LED to toggle.
+ * Toggle the specific LED.
+ * @param a The ::LEDEnum to toggle.
*/
- void setLedToggle(LED a);
+ void setLedToggle(LEDEnum a);
/**
* Use this to set the Color using RGB values.
@@ -170,10 +172,10 @@ public:
*/
void moveSetBulb(uint8_t r, uint8_t g, uint8_t b);
/**
- * Use this to set the color using the predefined colors in ::Colors.
+ * Use this to set the color using the predefined colors in ::ColorsEnum.
* @param color The desired color.
*/
- void moveSetBulb(Colors color);
+ void moveSetBulb(ColorsEnum color);
/**
* Set the rumble value inside the Move controller.
* @param rumble The desired value in the range from 64-255.
diff --git a/PS3Enums.h b/PS3Enums.h
index 8565e572..befb087e 100644
--- a/PS3Enums.h
+++ b/PS3Enums.h
@@ -20,8 +20,11 @@
#include "controllerEnums.h"
+/** Size of the output report buffer for the Dualshock and Navigation controllers */
+#define PS3_REPORT_BUFFER_SIZE 48
+
/** Report buffer for all PS3 commands */
-const uint8_t PS3_REPORT_BUFFER[] PROGMEM = {
+const uint8_t PS3_REPORT_BUFFER[PS3_REPORT_BUFFER_SIZE] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x27, 0x10, 0x00, 0x32,
@@ -33,14 +36,12 @@ const uint8_t PS3_REPORT_BUFFER[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
-/** Size of the output report buffer for the Dualshock and Navigation controllers */
-#define PS3_REPORT_BUFFER_SIZE 48
-
/** Size of the output report buffer for the Move Controller */
#define MOVE_REPORT_BUFFER_SIZE 7
/** Used to set the LEDs on the controllers */
-const uint8_t LEDS[] PROGMEM = {
+const uint8_t PS3_LEDS[] PROGMEM = {
+ 0x00, // OFF
0x01, // LED1
0x02, // LED2
0x04, // LED3
@@ -51,15 +52,15 @@ const uint8_t LEDS[] PROGMEM = {
0x0C, // LED7
0x0D, // LED8
0x0E, // LED9
- 0x0F // LED10
+ 0x0F, // LED10
};
/**
* Buttons on the controllers
*
- * Note: that the location is shiftet 9 when it's connected via USB.
+ * Note: that the location is shifted 9 when it's connected via USB.
*/
-const uint32_t BUTTONS[] PROGMEM = {
+const uint32_t PS3_BUTTONS[] PROGMEM = {
0x10, // UP
0x20, // RIGHT
0x40, // DOWN
@@ -82,15 +83,15 @@ const uint32_t BUTTONS[] PROGMEM = {
0x010000, // PS
0x080000, // MOVE - covers 12 bits - we only need to read the top 8
- 0x100000 // T - covers 12 bits - we only need to read the top 8
+ 0x100000, // T - covers 12 bits - we only need to read the top 8
};
/**
* Analog buttons on the controllers
*
- * Note: that the location is shiftet 9 when it's connected via USB.
+ * Note: that the location is shifted 9 when it's connected via USB.
*/
-const uint8_t ANALOGBUTTONS[] PROGMEM = {
+const uint8_t PS3_ANALOG_BUTTONS[] PROGMEM = {
23, // UP_ANALOG
24, // RIGHT_ANALOG
25, // DOWN_ANALOG
@@ -108,11 +109,11 @@ const uint8_t ANALOGBUTTONS[] PROGMEM = {
0, 0, // Skip PS and MOVE
// Playstation Move Controller
- 15 // T_ANALOG - Both at byte 14 (last reading) and byte 15 (current reading)
+ 15, // T_ANALOG - Both at byte 14 (last reading) and byte 15 (current reading)
};
/** Used to set the colors of the move controller. */
-enum Colors {
+enum ColorsEnum {
/** r = 255, g = 0, b = 0 */
Red = 0xFF0000,
/** r = 0, g = 255, b = 0 */
@@ -136,9 +137,9 @@ enum Colors {
/**
* Sensors inside the Sixaxis Dualshock 3 and Move controller.
*
- * Note: that the location is shiftet 9 when it's connected via USB.
+ * Note: that the location is shifted 9 when it's connected via USB.
*/
-enum Sensor {
+enum SensorEnum {
/** Accelerometer x-axis */
aX = 50,
/** Accelerometer y-axis */
@@ -174,13 +175,13 @@ enum Sensor {
};
/** Used to get the angle calculated using the accelerometer. */
-enum Angle {
+enum AngleEnum {
Pitch = 0x01,
Roll = 0x02,
};
-enum Status {
- // Note that the location is shiftet 9 when it's connected via USB
+enum StatusEnum {
+ // Note that the location is shifted 9 when it's connected via USB
// Byte location | bit location
Plugged = (38 << 8) | 0x02,
Unplugged = (38 << 8) | 0x03,
@@ -201,13 +202,13 @@ enum Status {
MoveHigh = (21 << 8) | 0x04,
MoveFull = (21 << 8) | 0x05,
- CableRumble = (40 << 8) | 0x10, //Opperating by USB and rumble is turned on
- Cable = (40 << 8) | 0x12, //Opperating by USB and rumble is turned off
- BluetoothRumble = (40 << 8) | 0x14, //Opperating by bluetooth and rumble is turned on
- Bluetooth = (40 << 8) | 0x16, //Opperating by bluetooth and rumble is turned off
+ CableRumble = (40 << 8) | 0x10, // Operating by USB and rumble is turned on
+ Cable = (40 << 8) | 0x12, // Operating by USB and rumble is turned off
+ BluetoothRumble = (40 << 8) | 0x14, // Operating by Bluetooth and rumble is turned on
+ Bluetooth = (40 << 8) | 0x16, // Operating by Bluetooth and rumble is turned off
};
-enum Rumble {
+enum RumbleEnum {
RumbleHigh = 0x10,
RumbleLow = 0x20,
};
diff --git a/PS3USB.cpp b/PS3USB.cpp
index 25bfba4b..7a15bb37 100644
--- a/PS3USB.cpp
+++ b/PS3USB.cpp
@@ -312,30 +312,30 @@ void PS3USB::printReport() { // Uncomment "#define PRINTREPORT" to print the rep
#endif
}
-bool PS3USB::getButtonPress(Button b) {
- return (ButtonState & pgm_read_dword(&BUTTONS[(uint8_t)b]));
+bool PS3USB::getButtonPress(ButtonEnum b) {
+ return (ButtonState & pgm_read_dword(&PS3_BUTTONS[(uint8_t)b]));
}
-bool PS3USB::getButtonClick(Button b) {
- uint32_t button = pgm_read_dword(&BUTTONS[(uint8_t)b]);
+bool PS3USB::getButtonClick(ButtonEnum b) {
+ uint32_t button = pgm_read_dword(&PS3_BUTTONS[(uint8_t)b]);
bool click = (ButtonClickState & button);
ButtonClickState &= ~button; // Clear "click" event
return click;
}
-uint8_t PS3USB::getAnalogButton(Button a) {
- return (uint8_t)(readBuf[(pgm_read_byte(&ANALOGBUTTONS[(uint8_t)a])) - 9]);
+uint8_t PS3USB::getAnalogButton(ButtonEnum a) {
+ return (uint8_t)(readBuf[(pgm_read_byte(&PS3_ANALOG_BUTTONS[(uint8_t)a])) - 9]);
}
-uint8_t PS3USB::getAnalogHat(AnalogHat a) {
+uint8_t PS3USB::getAnalogHat(AnalogHatEnum a) {
return (uint8_t)(readBuf[((uint8_t)a + 6)]);
}
-uint16_t PS3USB::getSensor(Sensor a) {
+uint16_t PS3USB::getSensor(SensorEnum a) {
return ((readBuf[((uint16_t)a) - 9] << 8) | readBuf[((uint16_t)a + 1) - 9]);
}
-double PS3USB::getAngle(Angle a) {
+double PS3USB::getAngle(AngleEnum a) {
if(PS3Connected) {
double accXval;
double accYval;
@@ -358,7 +358,7 @@ double PS3USB::getAngle(Angle a) {
return 0;
}
-bool PS3USB::getStatus(Status c) {
+bool PS3USB::getStatus(StatusEnum c) {
return (readBuf[((uint16_t)c >> 8) - 9] == ((uint8_t)c & 0xff));
}
@@ -419,7 +419,7 @@ void PS3USB::setRumbleOff() {
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
}
-void PS3USB::setRumbleOn(Rumble mode) {
+void PS3USB::setRumbleOn(RumbleEnum mode) {
if((mode & 0x30) > 0x00) {
uint8_t power[2] = {0xff, 0x00}; // Defaults to RumbleLow
if(mode == RumbleHigh) {
@@ -443,18 +443,22 @@ void PS3USB::setLedRaw(uint8_t value) {
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
}
-void PS3USB::setLedOff(LED a) {
- writeBuf[9] &= ~((uint8_t)((pgm_read_byte(&LEDS[(uint8_t)a]) & 0x0f) << 1));
+void PS3USB::setLedOff(LEDEnum a) {
+ writeBuf[9] &= ~((uint8_t)((pgm_read_byte(&PS3_LEDS[(uint8_t)a]) & 0x0f) << 1));
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
}
-void PS3USB::setLedOn(LED a) {
- writeBuf[9] |= (uint8_t)((pgm_read_byte(&LEDS[(uint8_t)a]) & 0x0f) << 1);
- PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
+void PS3USB::setLedOn(LEDEnum a) {
+ if(a == OFF)
+ setLedRaw(0);
+ else {
+ writeBuf[9] |= (uint8_t)((pgm_read_byte(&PS3_LEDS[(uint8_t)a]) & 0x0f) << 1);
+ PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
+ }
}
-void PS3USB::setLedToggle(LED a) {
- writeBuf[9] ^= (uint8_t)((pgm_read_byte(&LEDS[(uint8_t)a]) & 0x0f) << 1);
+void PS3USB::setLedToggle(LEDEnum a) {
+ writeBuf[9] ^= (uint8_t)((pgm_read_byte(&PS3_LEDS[(uint8_t)a]) & 0x0f) << 1);
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
}
@@ -506,7 +510,7 @@ void PS3USB::moveSetBulb(uint8_t r, uint8_t g, uint8_t b) { // Use this to set t
Move_Command(writeBuf, MOVE_REPORT_BUFFER_SIZE);
}
-void PS3USB::moveSetBulb(Colors color) { // Use this to set the Color using the predefined colors in "enums.h"
+void PS3USB::moveSetBulb(ColorsEnum color) { // Use this to set the Color using the predefined colors in "enums.h"
moveSetBulb((uint8_t)(color >> 16), (uint8_t)(color >> 8), (uint8_t)(color));
}
diff --git a/PS3USB.h b/PS3USB.h
index 9e40a2ea..dde40d5c 100644
--- a/PS3USB.h
+++ b/PS3USB.h
@@ -146,68 +146,70 @@ public:
/** @name PS3 Controller functions */
/**
- * getButtonPress(Button b) will return true as long as the button is held down.
+ * getButtonPress(ButtonEnum b) will return true as long as the button is held down.
*
- * While getButtonClick(Button b) will only return it once.
+ * While getButtonClick(ButtonEnum b) will only return it once.
*
- * So you instance if you need to increase a variable once you would use getButtonClick(Button b),
- * but if you need to drive a robot forward you would use getButtonPress(Button b).
+ * So you instance if you need to increase a variable once you would use getButtonClick(ButtonEnum b),
+ * but if you need to drive a robot forward you would use getButtonPress(ButtonEnum b).
+ * @param b ::ButtonEnum to read.
+ * @return getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
*/
- bool getButtonPress(Button b);
- bool getButtonClick(Button b);
+ bool getButtonPress(ButtonEnum b);
+ bool getButtonClick(ButtonEnum b);
/**@}*/
/** @name PS3 Controller functions */
/**
* Used to get the analog value from button presses.
- * @param a The ::Button to read.
+ * @param a The ::ButtonEnum to read.
* The supported buttons are:
* ::UP, ::RIGHT, ::DOWN, ::LEFT, ::L1, ::L2, ::R1, ::R2,
* ::TRIANGLE, ::CIRCLE, ::CROSS, ::SQUARE, and ::T.
* @return Analog value in the range of 0-255.
*/
- uint8_t getAnalogButton(Button a);
+ uint8_t getAnalogButton(ButtonEnum a);
/**
* Used to read the analog joystick.
* @param a ::LeftHatX, ::LeftHatY, ::RightHatX, and ::RightHatY.
* @return Return the analog value in the range of 0-255.
*/
- uint8_t getAnalogHat(AnalogHat a);
+ uint8_t getAnalogHat(AnalogHatEnum a);
/**
* Used to read the sensors inside the Dualshock 3 controller.
* @param a
* The Dualshock 3 has a 3-axis accelerometer and a 1-axis gyro inside.
* @return Return the raw sensor value.
*/
- uint16_t getSensor(Sensor a);
+ uint16_t getSensor(SensorEnum a);
/**
* Use this to get ::Pitch and ::Roll calculated using the accelerometer.
* @param a Either ::Pitch or ::Roll.
* @return Return the angle in the range of 0-360.
*/
- double getAngle(Angle a);
+ double getAngle(AngleEnum a);
/**
- * Get the ::Status from the controller.
- * @param c The ::Status you want to read.
+ * Get the ::StatusEnum from the controller.
+ * @param c The ::StatusEnum you want to read.
* @return True if correct and false if not.
*/
- bool getStatus(Status c);
+ bool getStatus(StatusEnum c);
/**
- * Read all the available ::Status from the controller.
+ * Read all the available ::StatusEnum from the controller.
* @return One large string with all the information.
*/
String getStatusString();
- /** Used to set all LEDs and ::Rumble off. */
+ /** Used to set all LEDs and rumble off. */
void setAllOff();
- /** Turn off ::Rumble. */
+ /** Turn off rumble. */
void setRumbleOff();
/**
- * Turn on ::Rumble.
+ * Turn on rumble.
* @param mode Either ::RumbleHigh or ::RumbleLow.
*/
- void setRumbleOn(Rumble mode);
+ void setRumbleOn(RumbleEnum mode);
/**
- * Turn on ::Rumble using custom duration and power.
+ * Turn on rumble using custom duration and power.
* @param rightDuration The duration of the right/low rumble effect.
* @param rightPower The intensity of the right/low rumble effect.
* @param leftDuration The duration of the left/high rumble effect.
@@ -216,8 +218,8 @@ public:
void setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower);
/**
- * Set LED value without using the ::LED enum.
- * @param value See: ::LED enum.
+ * Set LED value without using the ::LEDEnum.
+ * @param value See: ::LEDEnum.
*/
void setLedRaw(uint8_t value);
@@ -226,20 +228,20 @@ public:
setLedRaw(0);
}
/**
- * Turn the specific ::LED off.
- * @param a The ::LED to turn off.
+ * Turn the specific ::LEDEnum off.
+ * @param a The ::LEDEnum to turn off.
*/
- void setLedOff(LED a);
+ void setLedOff(LEDEnum a);
/**
- * Turn the specific ::LED on.
- * @param a The ::LED to turn on.
+ * Turn the specific ::LEDEnum on.
+ * @param a The ::LEDEnum to turn on.
*/
- void setLedOn(LED a);
+ void setLedOn(LEDEnum a);
/**
- * Toggle the specific ::LED.
- * @param a The ::LED to toggle.
+ * Toggle the specific ::LEDEnum.
+ * @param a The ::LEDEnum to toggle.
*/
- void setLedToggle(LED a);
+ void setLedToggle(LEDEnum a);
/**
* Use this to set the Color using RGB values.
@@ -247,10 +249,10 @@ public:
*/
void moveSetBulb(uint8_t r, uint8_t g, uint8_t b);
/**
- * Use this to set the color using the predefined colors in ::Colors.
+ * Use this to set the color using the predefined colors in ::ColorsEnum.
* @param color The desired color.
*/
- void moveSetBulb(Colors color);
+ void moveSetBulb(ColorsEnum color);
/**
* Set the rumble value inside the Move controller.
* @param rumble The desired value in the range from 64-255.
diff --git a/Wii.cpp b/Wii.cpp
index 6a6f9f21..62af423a 100755
--- a/Wii.cpp
+++ b/Wii.cpp
@@ -22,7 +22,8 @@
//#define EXTRADEBUG // Uncomment to get even more debugging data
//#define PRINTREPORT // Uncomment to print the report send by the Wii controllers
-const uint8_t LEDS[] PROGMEM = {
+const uint8_t WII_LEDS[] PROGMEM = {
+ 0x00, // OFF
0x10, // LED1
0x20, // LED2
0x40, // LED3
@@ -33,10 +34,10 @@ const uint8_t LEDS[] PROGMEM = {
0xC0, // LED7
0xD0, // LED8
0xE0, // LED9
- 0xF0 // LED10
+ 0xF0, // LED10
};
-const uint32_t BUTTONS[] PROGMEM = {
+const uint32_t WII_BUTTONS[] PROGMEM = {
0x00008, // UP
0x00002, // RIGHT
0x00004, // DOWN
@@ -53,9 +54,9 @@ const uint32_t BUTTONS[] PROGMEM = {
0x20000, // C
0x00400, // B
- 0x00800 // A
+ 0x00800, // A
};
-const uint32_t PROCONTROLLERBUTTONS[] PROGMEM = {
+const uint32_t WII_PROCONTROLLER_BUTTONS[] PROGMEM = {
0x00100, // UP
0x00080, // RIGHT
0x00040, // DOWN
@@ -78,7 +79,7 @@ const uint32_t PROCONTROLLERBUTTONS[] PROGMEM = {
0x00020, // L
0x00002, // R
0x08000, // ZL
- 0x00400 // ZR
+ 0x00400, // ZR
};
WII::WII(BTD *p, bool pair) :
@@ -845,7 +846,7 @@ void WII::Run() {
/************************************************************/
void WII::HID_Command(uint8_t* data, uint8_t nbytes) {
if(motionPlusInside)
- pBtd->L2CAP_Command(hci_handle, data, nbytes, interrupt_scid[0], interrupt_scid[1]); // It's the new wiimote with the Motion Plus Inside
+ pBtd->L2CAP_Command(hci_handle, data, nbytes, interrupt_scid[0], interrupt_scid[1]); // It's the new Wiimote with the Motion Plus Inside or Wii U Pro controller
else
pBtd->L2CAP_Command(hci_handle, data, nbytes, control_scid[0], control_scid[1]);
}
@@ -880,21 +881,25 @@ void WII::setLedRaw(uint8_t value) {
HID_Command(HIDBuffer, 3);
}
-void WII::setLedOff(LED a) {
+void WII::setLedOff(LEDEnum a) {
HIDBuffer[1] = 0x11;
- HIDBuffer[2] &= ~(pgm_read_byte(&LEDS[(uint8_t)a]));
+ HIDBuffer[2] &= ~(pgm_read_byte(&WII_LEDS[(uint8_t)a]));
HID_Command(HIDBuffer, 3);
}
-void WII::setLedOn(LED a) {
- HIDBuffer[1] = 0x11;
- HIDBuffer[2] |= pgm_read_byte(&LEDS[(uint8_t)a]);
- HID_Command(HIDBuffer, 3);
+void WII::setLedOn(LEDEnum a) {
+ if(a == OFF)
+ setLedRaw(0);
+ else {
+ HIDBuffer[1] = 0x11;
+ HIDBuffer[2] |= pgm_read_byte(&WII_LEDS[(uint8_t)a]);
+ HID_Command(HIDBuffer, 3);
+ }
}
-void WII::setLedToggle(LED a) {
+void WII::setLedToggle(LEDEnum a) {
HIDBuffer[1] = 0x11;
- HIDBuffer[2] ^= pgm_read_byte(&LEDS[(uint8_t)a]);
+ HIDBuffer[2] ^= pgm_read_byte(&WII_LEDS[(uint8_t)a]);
HID_Command(HIDBuffer, 3);
}
@@ -1033,25 +1038,25 @@ void WII::checkMotionPresent() {
/************************************************************/
-bool WII::getButtonPress(Button b) { // Return true when a button is pressed
+bool WII::getButtonPress(ButtonEnum b) { // Return true when a button is pressed
if(wiiUProControllerConnected)
- return (ButtonState & pgm_read_dword(&PROCONTROLLERBUTTONS[(uint8_t)b]));
+ return (ButtonState & pgm_read_dword(&WII_PROCONTROLLER_BUTTONS[(uint8_t)b]));
else
- return (ButtonState & pgm_read_dword(&BUTTONS[(uint8_t)b]));
+ return (ButtonState & pgm_read_dword(&WII_BUTTONS[(uint8_t)b]));
}
-bool WII::getButtonClick(Button b) { // Only return true when a button is clicked
+bool WII::getButtonClick(ButtonEnum b) { // Only return true when a button is clicked
uint32_t button;
if(wiiUProControllerConnected)
- button = pgm_read_dword(&PROCONTROLLERBUTTONS[(uint8_t)b]);
+ button = pgm_read_dword(&WII_PROCONTROLLER_BUTTONS[(uint8_t)b]);
else
- button = pgm_read_dword(&BUTTONS[(uint8_t)b]);
+ button = pgm_read_dword(&WII_BUTTONS[(uint8_t)b]);
bool click = (ButtonClickState & button);
ButtonClickState &= ~button; // clear "click" event
return click;
}
-uint8_t WII::getAnalogHat(Hat a) {
+uint8_t WII::getAnalogHat(HatEnum a) {
if(!nunchuckConnected)
return 127; // Return center position
else {
@@ -1063,7 +1068,7 @@ uint8_t WII::getAnalogHat(Hat a) {
}
}
-uint16_t WII::getAnalogHat(AnalogHat a) {
+uint16_t WII::getAnalogHat(AnalogHatEnum a) {
if(!wiiUProControllerConnected)
return 2000;
else {
diff --git a/Wii.h b/Wii.h
index 26c81fe5..294cd7a2 100755
--- a/Wii.h
+++ b/Wii.h
@@ -32,7 +32,7 @@
#define wii_clear_flag(flag) (wii_event_flag &= ~(flag))
/** Enum used to read the joystick on the Nunchuck. */
-enum Hat {
+enum HatEnum {
/** Read the x-axis on the Nunchuck joystick. */
HatX = 0,
/** Read the y-axis on the Nunchuck joystick. */
@@ -76,9 +76,11 @@ public:
*
* So you instance if you need to increase a variable once you would use getButtonClick(Button b),
* but if you need to drive a robot forward you would use getButtonPress(Button b).
+ * @param b ::ButtonEnum to read.
+ * @return getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
*/
- bool getButtonPress(Button b);
- bool getButtonClick(Button b);
+ bool getButtonPress(ButtonEnum b);
+ bool getButtonClick(ButtonEnum b);
/**@}*/
/** @name Wii Controller functions */
@@ -93,13 +95,13 @@ public:
* @param a Either ::HatX or ::HatY.
* @return Return the analog value in the range from approximately 25-230.
*/
- uint8_t getAnalogHat(Hat a);
+ uint8_t getAnalogHat(HatEnum a);
/**
* Used to read the joystick of the Wii U Pro Controller.
* @param a Either ::LeftHatX, ::LeftHatY, ::RightHatX or ::RightHatY.
* @return Return the analog value in the range from approximately 800-3200.
*/
- uint16_t getAnalogHat(AnalogHat a);
+ uint16_t getAnalogHat(AnalogHatEnum a);
/**
* Pitch calculated from the Wiimote. A complimentary filter is used if the Motion Plus is connected.
@@ -141,8 +143,8 @@ public:
void setRumbleToggle();
/**
- * Set LED value without using the ::LED enum.
- * @param value See: ::LED enum.
+ * Set LED value without using the ::LEDEnum.
+ * @param value See: ::LEDEnum.
*/
void setLedRaw(uint8_t value);
@@ -151,26 +153,26 @@ public:
setLedRaw(0);
};
/**
- * Turn the specific ::LED off.
- * @param a The ::LED to turn off.
+ * Turn the specific ::LEDEnum off.
+ * @param a The ::LEDEnum to turn off.
*/
- void setLedOff(LED a);
+ void setLedOff(LEDEnum a);
/**
- * Turn the specific ::LED on.
- * @param a The ::LED to turn on.
+ * Turn the specific ::LEDEnum on.
+ * @param a The ::LEDEnum to turn on.
*/
- void setLedOn(LED a);
+ void setLedOn(LEDEnum a);
/**
- * Toggle the specific ::LED.
- * @param a The ::LED to toggle.
+ * Toggle the specific ::LEDEnum.
+ * @param a The ::LEDEnum to toggle.
*/
- void setLedToggle(LED a);
+ void setLedToggle(LEDEnum a);
/**
* This will set the LEDs, so the user can see which connections are active.
*
- * The first ::LED indicate that the Wiimote is connected,
- * the second ::LED indicate indicate that a Motion Plus is also connected
- * the third ::LED will indicate that a Nunchuck controller is also connected.
+ * The first ::LEDEnum indicate that the Wiimote is connected,
+ * the second ::LEDEnum indicate indicate that a Motion Plus is also connected
+ * the third ::LEDEnum will indicate that a Nunchuck controller is also connected.
*/
void setLedStatus();
diff --git a/XBOXOLD.cpp b/XBOXOLD.cpp
index 7bde6133..298d5ab1 100644
--- a/XBOXOLD.cpp
+++ b/XBOXOLD.cpp
@@ -21,7 +21,7 @@
//#define PRINTREPORT // Uncomment to print the report send by the Xbox controller
/** Buttons on the controllers */
-const uint8_t XBOXOLDBUTTONS[] PROGMEM = {
+const uint8_t XBOXOLD_BUTTONS[] PROGMEM = {
0x01, // UP
0x08, // RIGHT
0x02, // DOWN
@@ -291,15 +291,15 @@ void XBOXOLD::printReport(uint16_t length) { //Uncomment "#define PRINTREPORT" t
#endif
}
-uint8_t XBOXOLD::getButtonPress(Button b) {
- uint8_t button = pgm_read_byte(&XBOXOLDBUTTONS[(uint8_t)b]);
+uint8_t XBOXOLD::getButtonPress(ButtonEnum b) {
+ uint8_t button = pgm_read_byte(&XBOXOLD_BUTTONS[(uint8_t)b]);
if(b == A || b == B || b == X || b == Y || b == BLACK || b == WHITE || b == L1 || b == R1) // A, B, X, Y, BLACK, WHITE, L1, and R1 are analog buttons
return buttonValues[button]; // Analog buttons
return (ButtonState & button); // Digital buttons
}
-bool XBOXOLD::getButtonClick(Button b) {
- uint8_t button = pgm_read_byte(&XBOXOLDBUTTONS[(uint8_t)b]);
+bool XBOXOLD::getButtonClick(ButtonEnum b) {
+ uint8_t button = pgm_read_byte(&XBOXOLD_BUTTONS[(uint8_t)b]);
if(b == A || b == B || b == X || b == Y || b == BLACK || b == WHITE || b == L1 || b == R1) { // A, B, X, Y, BLACK, WHITE, L1, and R1 are analog buttons
if(buttonClicked[button]) {
buttonClicked[button] = false;
@@ -313,7 +313,7 @@ bool XBOXOLD::getButtonClick(Button b) {
return click;
}
-int16_t XBOXOLD::getAnalogHat(AnalogHat a) {
+int16_t XBOXOLD::getAnalogHat(AnalogHatEnum a) {
return hatValue[a];
}
diff --git a/XBOXOLD.h b/XBOXOLD.h
index 8b3fcce0..b3c0ccb2 100644
--- a/XBOXOLD.h
+++ b/XBOXOLD.h
@@ -106,18 +106,17 @@ public:
/** @name Xbox Controller functions */
/**
- * getButtonPress(Button b) will return true as long as the button is held down.
+ * getButtonPress(ButtonEnum b) will return true as long as the button is held down.
*
- * While getButtonClick(Button b) will only return it once.
+ * While getButtonClick(ButtonEnum b) will only return it once.
*
- * So you instance if you need to increase a variable once you would use getButtonClick(Button b),
- * but if you need to drive a robot forward you would use getButtonPress(Button b).
- * @param b ::Button to read.
- * @return getButtonClick(Button b) will return a bool, but getButtonPress(Button b)
- * will return a byte if reading ::L2 or ::R2.
+ * So you instance if you need to increase a variable once you would use getButtonClick(ButtonEnum b),
+ * but if you need to drive a robot forward you would use getButtonPress(ButtonEnum b).
+ * @param b ::ButtonEnum to read.
+ * @return getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a byte if reading ::L2 or ::R2.
*/
- uint8_t getButtonPress(Button b);
- bool getButtonClick(Button b);
+ uint8_t getButtonPress(ButtonEnum b);
+ bool getButtonClick(ButtonEnum b);
/**@}*/
/** @name Xbox Controller functions */
@@ -126,7 +125,7 @@ public:
* @param a Either ::LeftHatX, ::LeftHatY, ::RightHatX or ::RightHatY.
* @return Returns a signed 16-bit integer.
*/
- int16_t getAnalogHat(AnalogHat a);
+ int16_t getAnalogHat(AnalogHatEnum a);
/** Turn rumble off the controller. */
void setRumbleOff() {
diff --git a/XBOXRECV.cpp b/XBOXRECV.cpp
index c4bf33b9..e70e322a 100644
--- a/XBOXRECV.cpp
+++ b/XBOXRECV.cpp
@@ -406,15 +406,15 @@ void XBOXRECV::printReport(uint8_t controller, uint8_t nBytes) { //Uncomment "#d
#endif
}
-uint8_t XBOXRECV::getButtonPress(Button b, uint8_t controller) {
+uint8_t XBOXRECV::getButtonPress(ButtonEnum b, uint8_t controller) {
if(b == L2) // These are analog buttons
return (uint8_t)(ButtonState[controller] >> 8);
else if(b == R2)
return (uint8_t)ButtonState[controller];
- return (bool)(ButtonState[controller] & ((uint32_t)pgm_read_word(&XBOXBUTTONS[(uint8_t)b]) << 16));
+ return (bool)(ButtonState[controller] & ((uint32_t)pgm_read_word(&XBOX_BUTTONS[(uint8_t)b]) << 16));
}
-bool XBOXRECV::getButtonClick(Button b, uint8_t controller) {
+bool XBOXRECV::getButtonClick(ButtonEnum b, uint8_t controller) {
if(b == L2) {
if(L2Clicked[controller]) {
L2Clicked[controller] = false;
@@ -428,13 +428,13 @@ bool XBOXRECV::getButtonClick(Button b, uint8_t controller) {
}
return false;
}
- uint16_t button = pgm_read_word(&XBOXBUTTONS[(uint8_t)b]);
+ uint16_t button = pgm_read_word(&XBOX_BUTTONS[(uint8_t)b]);
bool click = (ButtonClickState[controller] & button);
ButtonClickState[controller] &= ~button; // clear "click" event
return click;
}
-int16_t XBOXRECV::getAnalogHat(AnalogHat a, uint8_t controller) {
+int16_t XBOXRECV::getAnalogHat(AnalogHatEnum a, uint8_t controller) {
return hatValue[controller][a];
}
@@ -512,16 +512,18 @@ void XBOXRECV::setLedRaw(uint8_t value, uint8_t controller) {
XboxCommand(controller, writeBuf, 4);
}
-void XBOXRECV::setLedOn(LED led, uint8_t controller) {
- if(led != ALL) // All LEDs can't be on a the same time
- setLedRaw(pgm_read_byte(&XBOXLEDS[(uint8_t)led]) + 4, controller);
+void XBOXRECV::setLedOn(LEDEnum led, uint8_t controller) {
+ if(led == OFF)
+ setLedRaw(0);
+ else if(led != ALL) // All LEDs can't be on a the same time
+ setLedRaw(pgm_read_byte(&XBOX_LEDS[(uint8_t)led]) + 4);
}
-void XBOXRECV::setLedBlink(LED led, uint8_t controller) {
- setLedRaw(pgm_read_byte(&XBOXLEDS[(uint8_t)led]), controller);
+void XBOXRECV::setLedBlink(LEDEnum led, uint8_t controller) {
+ setLedRaw(pgm_read_byte(&XBOX_LEDS[(uint8_t)led]), controller);
}
-void XBOXRECV::setLedMode(LEDMode ledMode, uint8_t controller) { // This function is used to do some speciel LED stuff the controller supports
+void XBOXRECV::setLedMode(LEDModeEnum ledMode, uint8_t controller) { // This function is used to do some speciel LED stuff the controller supports
setLedRaw((uint8_t)ledMode, controller);
}
@@ -567,7 +569,7 @@ void XBOXRECV::onInit(uint8_t controller) {
if(pFuncOnInit)
pFuncOnInit(); // Call the user function
else {
- LED led;
+ LEDEnum led;
if(controller == 0)
led = LED1;
else if(controller == 1)
diff --git a/XBOXRECV.h b/XBOXRECV.h
index 25d7fe7f..41ebef47 100644
--- a/XBOXRECV.h
+++ b/XBOXRECV.h
@@ -120,19 +120,18 @@ public:
/** @name Xbox Controller functions */
/**
- * getButtonPress(uint8_t controller, Button b) will return true as long as the button is held down.
+ * getButtonPress(uint8_t controller, ButtonEnum b) will return true as long as the button is held down.
*
- * While getButtonClick(uint8_t controller, Button b) will only return it once.
+ * While getButtonClick(uint8_t controller, ButtonEnum b) will only return it once.
*
- * So you instance if you need to increase a variable once you would use getButtonClick(uint8_t controller, Button b),
- * but if you need to drive a robot forward you would use getButtonPress(uint8_t controller, Button b).
- * @param b ::Button to read.
+ * So you instance if you need to increase a variable once you would use getButtonClick(uint8_t controller, ButtonEnum b),
+ * but if you need to drive a robot forward you would use getButtonPress(uint8_t controller, ButtonEnum b).
+ * @param b ::ButtonEnum to read.
* @param controller The controller to read from. Default to 0.
- * @return getButtonClick(uint8_t controller, Button b) will return a bool, but getButtonPress(uint8_t controller, Button b)
- * will return a byte if reading ::L2 or ::R2.
+ * @return getButtonClick(uint8_t controller, ButtonEnum b) will return a bool, while getButtonPress(uint8_t controller, ButtonEnum b) will return a byte if reading ::L2 or ::R2.
*/
- uint8_t getButtonPress(Button b, uint8_t controller = 0);
- bool getButtonClick(Button b, uint8_t controller = 0);
+ uint8_t getButtonPress(ButtonEnum b, uint8_t controller = 0);
+ bool getButtonClick(ButtonEnum b, uint8_t controller = 0);
/**@}*/
/** @name Xbox Controller functions */
@@ -142,7 +141,7 @@ public:
* @param controller The controller to read from. Default to 0.
* @return Returns a signed 16-bit integer.
*/
- int16_t getAnalogHat(AnalogHat a, uint8_t controller = 0);
+ int16_t getAnalogHat(AnalogHatEnum a, uint8_t controller = 0);
/**
* Used to disconnect any of the controllers.
@@ -174,7 +173,7 @@ public:
*/
void setRumbleOn(uint8_t lValue, uint8_t rValue, uint8_t controller = 0);
/**
- * Set LED value. Without using the ::LED or ::LEDMode enum.
+ * Set LED value. Without using the ::LEDEnum or ::LEDMode enum.
* @param value See:
* setLedOff(uint8_t controller), setLedOn(uint8_t controller, LED l),
* setLedBlink(uint8_t controller, LED l), and setLedMode(uint8_t controller, LEDMode lm).
@@ -190,23 +189,23 @@ public:
setLedRaw(0, controller);
};
/**
- * Turn on a LED by using the ::LED enum.
- * @param l ::LED1, ::LED2, ::LED3 and ::LED4 is supported by the Xbox controller.
+ * Turn on a LED by using ::LEDEnum.
+ * @param l ::OFF, ::LED1, ::LED2, ::LED3 and ::LED4 is supported by the Xbox controller.
* @param controller The controller to write to. Default to 0.
*/
- void setLedOn(LED l, uint8_t controller = 0);
+ void setLedOn(LEDEnum l, uint8_t controller = 0);
/**
- * Turn on a LED by using the ::LED enum.
+ * Turn on a LED by using ::LEDEnum.
* @param l ::ALL, ::LED1, ::LED2, ::LED3 and ::LED4 is supported by the Xbox controller.
* @param controller The controller to write to. Default to 0.
*/
- void setLedBlink(LED l, uint8_t controller = 0);
+ void setLedBlink(LEDEnum l, uint8_t controller = 0);
/**
* Used to set special LED modes supported by the Xbox controller.
- * @param lm See ::LEDMode.
+ * @param lm See ::LEDModeEnum.
* @param controller The controller to write to. Default to 0.
*/
- void setLedMode(LEDMode lm, uint8_t controller = 0);
+ void setLedMode(LEDModeEnum lm, uint8_t controller = 0);
/**
* Used to get the battery level from the controller.
* @param controller The controller to read from. Default to 0.
diff --git a/XBOXUSB.cpp b/XBOXUSB.cpp
index 89b5f260..8ee06d4f 100644
--- a/XBOXUSB.cpp
+++ b/XBOXUSB.cpp
@@ -279,15 +279,15 @@ void XBOXUSB::printReport() { //Uncomment "#define PRINTREPORT" to print the rep
#endif
}
-uint8_t XBOXUSB::getButtonPress(Button b) {
+uint8_t XBOXUSB::getButtonPress(ButtonEnum b) {
if(b == L2) // These are analog buttons
return (uint8_t)(ButtonState >> 8);
else if(b == R2)
return (uint8_t)ButtonState;
- return (bool)(ButtonState & ((uint32_t)pgm_read_word(&XBOXBUTTONS[(uint8_t)b]) << 16));
+ return (bool)(ButtonState & ((uint32_t)pgm_read_word(&XBOX_BUTTONS[(uint8_t)b]) << 16));
}
-bool XBOXUSB::getButtonClick(Button b) {
+bool XBOXUSB::getButtonClick(ButtonEnum b) {
if(b == L2) {
if(L2Clicked) {
L2Clicked = false;
@@ -301,13 +301,13 @@ bool XBOXUSB::getButtonClick(Button b) {
}
return false;
}
- uint16_t button = pgm_read_word(&XBOXBUTTONS[(uint8_t)b]);
+ uint16_t button = pgm_read_word(&XBOX_BUTTONS[(uint8_t)b]);
bool click = (ButtonClickState & button);
ButtonClickState &= ~button; // clear "click" event
return click;
}
-int16_t XBOXUSB::getAnalogHat(AnalogHat a) {
+int16_t XBOXUSB::getAnalogHat(AnalogHatEnum a) {
return hatValue[a];
}
@@ -325,16 +325,18 @@ void XBOXUSB::setLedRaw(uint8_t value) {
XboxCommand(writeBuf, 3);
}
-void XBOXUSB::setLedOn(LED led) {
- if(led != ALL) // All LEDs can't be on a the same time
- setLedRaw((pgm_read_byte(&XBOXLEDS[(uint8_t)led])) + 4);
+void XBOXUSB::setLedOn(LEDEnum led) {
+ if(led == OFF)
+ setLedRaw(0);
+ else if(led != ALL) // All LEDs can't be on a the same time
+ setLedRaw(pgm_read_byte(&XBOX_LEDS[(uint8_t)led]) + 4);
}
-void XBOXUSB::setLedBlink(LED led) {
- setLedRaw(pgm_read_byte(&XBOXLEDS[(uint8_t)led]));
+void XBOXUSB::setLedBlink(LEDEnum led) {
+ setLedRaw(pgm_read_byte(&XBOX_LEDS[(uint8_t)led]));
}
-void XBOXUSB::setLedMode(LEDMode ledMode) { // This function is used to do some speciel LED stuff the controller supports
+void XBOXUSB::setLedMode(LEDModeEnum ledMode) { // This function is used to do some special LED stuff the controller supports
setLedRaw((uint8_t)ledMode);
}
diff --git a/XBOXUSB.h b/XBOXUSB.h
index 4df0ad0b..2b358fad 100644
--- a/XBOXUSB.h
+++ b/XBOXUSB.h
@@ -111,18 +111,17 @@ public:
/** @name Xbox Controller functions */
/**
- * getButtonPress(Button b) will return true as long as the button is held down.
+ * getButtonPress(ButtonEnum b) will return true as long as the button is held down.
*
- * While getButtonClick(Button b) will only return it once.
+ * While getButtonClick(ButtonEnum b) will only return it once.
*
- * So you instance if you need to increase a variable once you would use getButtonClick(Button b),
- * but if you need to drive a robot forward you would use getButtonPress(Button b).
- * @param b ::Button to read.
- * @return getButtonClick(Button b) will return a bool, but getButtonPress(Button b)
- * will return a byte if reading ::L2 or ::R2.
+ * So you instance if you need to increase a variable once you would use getButtonClick(ButtonEnum b),
+ * but if you need to drive a robot forward you would use getButtonPress(ButtonEnum b).
+ * @param b ::ButtonEnum to read.
+ * @return getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a byte if reading ::L2 or ::R2.
*/
- uint8_t getButtonPress(Button b);
- bool getButtonClick(Button b);
+ uint8_t getButtonPress(ButtonEnum b);
+ bool getButtonClick(ButtonEnum b);
/**@}*/
/** @name Xbox Controller functions */
@@ -131,7 +130,7 @@ public:
* @param a Either ::LeftHatX, ::LeftHatY, ::RightHatX or ::RightHatY.
* @return Returns a signed 16-bit integer.
*/
- int16_t getAnalogHat(AnalogHat a);
+ int16_t getAnalogHat(AnalogHatEnum a);
/** Turn rumble off and all the LEDs on the controller. */
void setAllOff() {
@@ -150,10 +149,10 @@ public:
*/
void setRumbleOn(uint8_t lValue, uint8_t rValue);
/**
- * Set LED value. Without using the ::LED or ::LEDMode enum.
+ * Set LED value. Without using the ::LEDEnum or ::LEDMode enum.
* @param value See:
- * setLedOff(), setLedOn(LED l),
- * setLedBlink(LED l), and setLedMode(LEDMode lm).
+ * setLedOff(), setLedOn(LEDEnum l),
+ * setLedBlink(LEDEnum l), and setLedMode(LEDModeEnum lm).
*/
void setLedRaw(uint8_t value);
@@ -162,20 +161,20 @@ public:
setLedRaw(0);
};
/**
- * Turn on a LED by using the ::LED enum.
- * @param l ::LED1, ::LED2, ::LED3 and ::LED4 is supported by the Xbox controller.
+ * Turn on a LED by using ::LEDEnum.
+ * @param l ::OFF, ::LED1, ::LED2, ::LED3 and ::LED4 is supported by the Xbox controller.
*/
- void setLedOn(LED l);
+ void setLedOn(LEDEnum l);
/**
- * Turn on a LED by using the ::LED enum.
+ * Turn on a LED by using ::LEDEnum.
* @param l ::ALL, ::LED1, ::LED2, ::LED3 and ::LED4 is supported by the Xbox controller.
*/
- void setLedBlink(LED l);
+ void setLedBlink(LEDEnum l);
/**
* Used to set special LED modes supported by the Xbox controller.
* @param lm See ::LEDMode.
*/
- void setLedMode(LEDMode lm);
+ void setLedMode(LEDModeEnum lm);
/**
* Used to call your own function when the controller is successfully initialized.
diff --git a/controllerEnums.h b/controllerEnums.h
index edb42987..b5129725 100644
--- a/controllerEnums.h
+++ b/controllerEnums.h
@@ -24,24 +24,25 @@
*/
/** Enum used to turn on the LEDs on the different controllers. */
-enum LED {
- LED1 = 0,
- LED2 = 1,
- LED3 = 2,
- LED4 = 3,
+enum LEDEnum {
+ OFF = 0,
+ LED1 = 1,
+ LED2 = 2,
+ LED3 = 3,
+ LED4 = 4,
- LED5 = 4,
- LED6 = 5,
- LED7 = 6,
- LED8 = 7,
- LED9 = 8,
- LED10 = 9,
+ LED5 = 5,
+ LED6 = 6,
+ LED7 = 7,
+ LED8 = 8,
+ LED9 = 9,
+ LED10 = 10,
/** Used to blink all LEDs on the Xbox controller */
- ALL = 4,
+ ALL = 5,
};
/** This enum is used to read all the different buttons on the different controllers */
-enum Button {
+enum ButtonEnum {
/**@{*/
/** These buttons are available on all the the controllers */
UP = 0,
@@ -106,7 +107,7 @@ enum Button {
};
/** Joysticks on the PS3 and Xbox controllers. */
-enum AnalogHat {
+enum AnalogHatEnum {
/** Left joystick x-axis */
LeftHatX = 0,
/** Left joystick y-axis */
diff --git a/examples/Bluetooth/PS3Multi/PS3Multi.ino b/examples/Bluetooth/PS3Multi/PS3Multi.ino
index dece1c98..20f0da8d 100644
--- a/examples/Bluetooth/PS3Multi/PS3Multi.ino
+++ b/examples/Bluetooth/PS3Multi/PS3Multi.ino
@@ -139,7 +139,7 @@ void onInit() {
for (uint8_t i = 0; i < length; i++) {
if ((PS3[i]->PS3Connected || PS3[i]->PS3NavigationConnected) && !oldControllerState[i]) {
oldControllerState[i] = true; // Used to check which is the new controller
- PS3[i]->setLedOn((LED)i); // Cast directly to LED enum - see: "controllerEnums.h"
+ PS3[i]->setLedOn((LEDEnum)(i + 1)); // Cast directly to LEDEnum - see: "controllerEnums.h"
}
}
}
diff --git a/examples/Bluetooth/WiiMulti/WiiMulti.ino b/examples/Bluetooth/WiiMulti/WiiMulti.ino
index d99da9a4..08444f10 100644
--- a/examples/Bluetooth/WiiMulti/WiiMulti.ino
+++ b/examples/Bluetooth/WiiMulti/WiiMulti.ino
@@ -122,7 +122,7 @@ void onInit() {
for (uint8_t i = 0; i < length; i++) {
if (Wii[i]->wiimoteConnected && !oldControllerState[i]) {
oldControllerState[i] = true; // Used to check which is the new controller
- Wii[i]->setLedOn((LED)i); // Cast directly to LED enum - see: "controllerEnums.h"
+ Wii[i]->setLedOn((LEDEnum)(i + 1)); // Cast directly to LEDEnum - see: "controllerEnums.h"
}
}
}
diff --git a/keywords.txt b/keywords.txt
index c4f5bd87..c04041ab 100644
--- a/keywords.txt
+++ b/keywords.txt
@@ -77,6 +77,7 @@ watingForConnection KEYWORD2
####################################################
# Constants and enums (LITERAL1)
####################################################
+OFF LITERAL1
LED1 LITERAL1
LED2 LITERAL1
LED3 LITERAL1
diff --git a/xboxEnums.h b/xboxEnums.h
index fa4b6c2c..84b137bb 100644
--- a/xboxEnums.h
+++ b/xboxEnums.h
@@ -21,7 +21,7 @@
#include "controllerEnums.h"
/** Enum used to set special LED modes supported by the Xbox controller. */
-enum LEDMode {
+enum LEDModeEnum {
ROTATING = 0x0A,
FASTBLINK = 0x0B,
SLOWBLINK = 0x0C,
@@ -29,15 +29,16 @@ enum LEDMode {
};
/** Used to set the LEDs on the controllers */
-const uint8_t XBOXLEDS[] PROGMEM = {
+const uint8_t XBOX_LEDS[] PROGMEM = {
+ 0x00, // OFF
0x02, // LED1
0x03, // LED2
0x04, // LED3
0x05, // LED4
- 0x01 // ALL - Used to blink all LEDs
+ 0x01, // ALL - Used to blink all LEDs
};
/** Buttons on the controllers */
-const uint16_t XBOXBUTTONS[] PROGMEM = {
+const uint16_t XBOX_BUTTONS[] PROGMEM = {
0x0100, // UP
0x0800, // RIGHT
0x0200, // DOWN
@@ -58,7 +59,7 @@ const uint16_t XBOXBUTTONS[] PROGMEM = {
0x0080, // Y
0x0004, // XBOX
- 0x0008 // SYNC
+ 0x0008, // SYNC
};
#endif