mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
Overloaded PS3BT/PS3USB's setRumbleOn to accept custom rumble settings.
This commit is contained in:
parent
904f2ff25a
commit
adff5d790d
4 changed files with 343 additions and 321 deletions
|
@ -608,7 +608,13 @@ void PS3BT::setRumbleOn(Rumble mode) {
|
|||
HID_Command(HIDBuffer, HID_BUFFERSIZE);
|
||||
}
|
||||
}
|
||||
|
||||
void PS3BT::setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower) {
|
||||
HIDBuffer[3] = rightDuration;
|
||||
HIDBuffer[4] = rightPower;
|
||||
HIDBuffer[5] = leftDuration;
|
||||
HIDBuffer[6] = leftPower;
|
||||
HID_Command(HIDBuffer, HID_BUFFERSIZE);
|
||||
}
|
||||
void PS3BT::setLedOff(LED a) {
|
||||
HIDBuffer[11] &= ~((uint8_t)((pgm_read_byte(&LEDS[(uint8_t)a]) & 0x0f) << 1));
|
||||
HID_Command(HIDBuffer, HID_BUFFERSIZE);
|
||||
|
|
272
PS3BT.h
272
PS3BT.h
|
@ -65,143 +65,151 @@
|
|||
*/
|
||||
class PS3BT : public BluetoothService {
|
||||
public:
|
||||
/**
|
||||
* Constructor for the PS3BT class.
|
||||
* @param pBtd Pointer to BTD class instance.
|
||||
* @param btadr5,btadr4,btadr3,btadr2,btadr1,btadr0
|
||||
* Pass your dongles Bluetooth address into the constructor,
|
||||
* This will set BTD#my_bdaddr, so you don't have to plug in the dongle before pairing with your controller.
|
||||
*/
|
||||
PS3BT(BTD *pBtd, uint8_t btadr5 = 0, uint8_t btadr4 = 0, uint8_t btadr3 = 0, uint8_t btadr2 = 0, uint8_t btadr1 = 0, uint8_t btadr0 = 0);
|
||||
/**
|
||||
* Constructor for the PS3BT class.
|
||||
* @param pBtd Pointer to BTD class instance.
|
||||
* @param btadr5,btadr4,btadr3,btadr2,btadr1,btadr0
|
||||
* Pass your dongles Bluetooth address into the constructor,
|
||||
* This will set BTD#my_bdaddr, so you don't have to plug in the dongle before pairing with your controller.
|
||||
*/
|
||||
PS3BT(BTD *pBtd, uint8_t btadr5=0, uint8_t btadr4=0, uint8_t btadr3=0, uint8_t btadr2=0, uint8_t btadr1=0, uint8_t btadr0=0);
|
||||
|
||||
/** @name BluetoothService implementation */
|
||||
/**
|
||||
* Used to pass acldata to the services.
|
||||
* @param ACLData Incoming acldata.
|
||||
*/
|
||||
virtual void ACLData(uint8_t* ACLData);
|
||||
/** Used to run part of the state maschine. */
|
||||
virtual void Run();
|
||||
/** Use this to reset the service. */
|
||||
virtual void Reset();
|
||||
/** Used this to disconnect any of the controllers. */
|
||||
virtual void disconnect();
|
||||
/**@}*/
|
||||
/** @name BluetoothService implementation */
|
||||
/**
|
||||
* Used to pass acldata to the services.
|
||||
* @param ACLData Incoming acldata.
|
||||
*/
|
||||
virtual void ACLData(uint8_t* ACLData);
|
||||
/** Used to run part of the state maschine. */
|
||||
virtual void Run();
|
||||
/** Use this to reset the service. */
|
||||
virtual void Reset();
|
||||
/** Used this to disconnect any of the controllers. */
|
||||
virtual void disconnect();
|
||||
/**@}*/
|
||||
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* getButtonPress(Button b) will return true as long as the button is held down.
|
||||
*
|
||||
* While getButtonClick(Button 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).
|
||||
*/
|
||||
bool getButtonPress(Button b);
|
||||
bool getButtonClick(Button b);
|
||||
/**@}*/
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* Used to get the analog value from button presses.
|
||||
* @param a The ::Button 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* Used to read the sensors inside the Dualshock 3 and Move controller.
|
||||
* @param a
|
||||
* The Dualshock 3 has a 3-axis accelerometer and a 1-axis gyro inside.
|
||||
* The Move controller has a 3-axis accelerometer, a 3-axis gyro, a 3-axis magnetometer
|
||||
* and a temperature sensor inside.
|
||||
* @return Return the raw sensor value.
|
||||
*/
|
||||
int16_t getSensor(Sensor 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* Get the ::Status from the controller.
|
||||
* @param c The ::Status you want to read.
|
||||
* @return True if correct and false if not.
|
||||
*/
|
||||
bool getStatus(Status c);
|
||||
/**
|
||||
* Read all the available ::Status 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.
|
||||
*/
|
||||
String getTemperature();
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* getButtonPress(Button b) will return true as long as the button is held down.
|
||||
*
|
||||
* While getButtonClick(Button 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).
|
||||
*/
|
||||
bool getButtonPress(Button b);
|
||||
bool getButtonClick(Button b);
|
||||
/**@}*/
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* Used to get the analog value from button presses.
|
||||
* @param a The ::Button 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* Used to read the sensors inside the Dualshock 3 and Move controller.
|
||||
* @param a
|
||||
* The Dualshock 3 has a 3-axis accelerometer and a 1-axis gyro inside.
|
||||
* The Move controller has a 3-axis accelerometer, a 3-axis gyro, a 3-axis magnetometer
|
||||
* and a temperature sensor inside.
|
||||
* @return Return the raw sensor value.
|
||||
*/
|
||||
int16_t getSensor(Sensor 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* Get the ::Status from the controller.
|
||||
* @param c The ::Status you want to read.
|
||||
* @return True if correct and false if not.
|
||||
*/
|
||||
bool getStatus(Status c);
|
||||
/**
|
||||
* Read all the available ::Status 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.
|
||||
*/
|
||||
String getTemperature();
|
||||
|
||||
/** Used to set all LEDs and ::Rumble off. */
|
||||
void setAllOff();
|
||||
/** Turn off ::Rumble. */
|
||||
void setRumbleOff();
|
||||
/**
|
||||
* Turn on ::Rumble.
|
||||
* @param mode Either ::RumbleHigh or ::RumbleLow.
|
||||
*/
|
||||
void setRumbleOn(Rumble mode);
|
||||
/**
|
||||
* Turn the specific ::LED off.
|
||||
* @param a The ::LED to turn off.
|
||||
*/
|
||||
void setLedOff(LED a);
|
||||
/**
|
||||
* Turn the specific ::LED on.
|
||||
* @param a The ::LED to turn on.
|
||||
*/
|
||||
void setLedOn(LED a);
|
||||
/**
|
||||
* Toggle the specific ::LED.
|
||||
* @param a The ::LED to toggle.
|
||||
*/
|
||||
void setLedToggle(LED a);
|
||||
/** Used to set all LEDs and ::Rumble off. */
|
||||
void setAllOff();
|
||||
/** Turn off ::Rumble. */
|
||||
void setRumbleOff();
|
||||
/**
|
||||
* Turn on ::Rumble.
|
||||
* @param mode Either ::RumbleHigh or ::RumbleLow.
|
||||
*/
|
||||
void setRumbleOn(Rumble mode);
|
||||
/**
|
||||
* 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.
|
||||
* @param leftPower The intensity of the left/high rumble effect.
|
||||
*/
|
||||
void setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower);
|
||||
/**
|
||||
* Turn the specific ::LED off.
|
||||
* @param a The ::LED to turn off.
|
||||
*/
|
||||
void setLedOff(LED a);
|
||||
/**
|
||||
* Turn the specific ::LED on.
|
||||
* @param a The ::LED to turn on.
|
||||
*/
|
||||
void setLedOn(LED a);
|
||||
/**
|
||||
* Toggle the specific ::LED.
|
||||
* @param a The ::LED to toggle.
|
||||
*/
|
||||
void setLedToggle(LED a);
|
||||
|
||||
/**
|
||||
* Use this to set the Color using RGB values.
|
||||
* @param r,g,b RGB value.
|
||||
*/
|
||||
void moveSetBulb(uint8_t r, uint8_t g, uint8_t b);
|
||||
/**
|
||||
* Use this to set the color using the predefined colors in ::Colors.
|
||||
* @param color The desired color.
|
||||
*/
|
||||
void moveSetBulb(Colors color);
|
||||
/**
|
||||
* Set the rumble value inside the Move controller.
|
||||
* @param rumble The desired value in the range from 64-255.
|
||||
*/
|
||||
void moveSetRumble(uint8_t rumble);
|
||||
/**@}*/
|
||||
/**
|
||||
* Use this to set the Color using RGB values.
|
||||
* @param r,g,b RGB value.
|
||||
*/
|
||||
void moveSetBulb(uint8_t r, uint8_t g, uint8_t b);
|
||||
/**
|
||||
* Use this to set the color using the predefined colors in ::Colors.
|
||||
* @param color The desired color.
|
||||
*/
|
||||
void moveSetBulb(Colors color);
|
||||
/**
|
||||
* Set the rumble value inside the Move controller.
|
||||
* @param rumble The desired value in the range from 64-255.
|
||||
*/
|
||||
void moveSetRumble(uint8_t rumble);
|
||||
/**@}*/
|
||||
|
||||
/** Variable used to indicate if the normal playstation controller is successfully connected. */
|
||||
bool PS3Connected;
|
||||
/** Variable used to indicate if the move controller is successfully connected. */
|
||||
bool PS3MoveConnected;
|
||||
/** Variable used to indicate if the navigation controller is successfully connected. */
|
||||
bool PS3NavigationConnected;
|
||||
/** Variable used to indicate if the normal playstation controller is successfully connected. */
|
||||
bool PS3Connected;
|
||||
/** Variable used to indicate if the move controller is successfully connected. */
|
||||
bool PS3MoveConnected;
|
||||
/** Variable used to indicate if the navigation controller is successfully connected. */
|
||||
bool PS3NavigationConnected;
|
||||
|
||||
private:
|
||||
/* mandatory members */
|
||||
|
|
|
@ -464,7 +464,13 @@ void PS3USB::setRumbleOn(Rumble mode) {
|
|||
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
void PS3USB::setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower) {
|
||||
writeBuf[1] = rightDuration;
|
||||
writeBuf[2] = rightPower;
|
||||
writeBuf[3] = leftDuration;
|
||||
writeBuf[4] = leftPower;
|
||||
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));
|
||||
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
|
||||
|
|
346
PS3USB.h
346
PS3USB.h
|
@ -63,192 +63,194 @@
|
|||
*/
|
||||
class PS3USB : public USBDeviceConfig {
|
||||
public:
|
||||
/**
|
||||
* Constructor for the PS3USB class.
|
||||
* @param pUsb Pointer to USB class instance.
|
||||
* @param btadr5,btadr4,btadr3,btadr2,btadr1,btadr0
|
||||
* Pass your dongles Bluetooth address into the constructor,
|
||||
* so you are able to pair the controller with a Bluetooth dongle.
|
||||
*/
|
||||
PS3USB(USB *pUsb, uint8_t btadr5 = 0, uint8_t btadr4 = 0, uint8_t btadr3 = 0, uint8_t btadr2 = 0, uint8_t btadr1 = 0, uint8_t btadr0 = 0);
|
||||
/**
|
||||
* Constructor for the PS3USB class.
|
||||
* @param pUsb Pointer to USB class instance.
|
||||
* @param btadr5,btadr4,btadr3,btadr2,btadr1,btadr0
|
||||
* Pass your dongles Bluetooth address into the constructor,
|
||||
* so you are able to pair the controller with a Bluetooth dongle.
|
||||
*/
|
||||
PS3USB(USB *pUsb, uint8_t btadr5=0, uint8_t btadr4=0, uint8_t btadr3=0, uint8_t btadr2=0, uint8_t btadr1=0, uint8_t btadr0=0);
|
||||
|
||||
/** @name USBDeviceConfig implementation */
|
||||
/**
|
||||
* Initialize the PS3 Controller.
|
||||
* @param parent Hub number.
|
||||
* @param port Port number on the hub.
|
||||
* @param lowspeed Speed of the device.
|
||||
* @return 0 on success.
|
||||
*/
|
||||
virtual uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed);
|
||||
/**
|
||||
* Release the USB device.
|
||||
* @return 0 on success.
|
||||
*/
|
||||
virtual uint8_t Release();
|
||||
/**
|
||||
* Poll the USB Input endpoins and run the state machines.
|
||||
* @return 0 on success.
|
||||
*/
|
||||
virtual uint8_t Poll();
|
||||
/** @name USBDeviceConfig implementation */
|
||||
/**
|
||||
* Initialize the PS3 Controller.
|
||||
* @param parent Hub number.
|
||||
* @param port Port number on the hub.
|
||||
* @param lowspeed Speed of the device.
|
||||
* @return 0 on success.
|
||||
*/
|
||||
virtual uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed);
|
||||
/**
|
||||
* Release the USB device.
|
||||
* @return 0 on success.
|
||||
*/
|
||||
virtual uint8_t Release();
|
||||
/**
|
||||
* Poll the USB Input endpoins and run the state machines.
|
||||
* @return 0 on success.
|
||||
*/
|
||||
virtual uint8_t Poll();
|
||||
/**
|
||||
* Get the device address.
|
||||
* @return The device address.
|
||||
*/
|
||||
virtual uint8_t GetAddress() { return bAddress; };
|
||||
/**
|
||||
* Used to check if the controller has been initialized.
|
||||
* @return True if it's ready.
|
||||
*/
|
||||
virtual bool isReady() { return bPollEnable; };
|
||||
/**@}*/
|
||||
|
||||
/**
|
||||
* Get the device address.
|
||||
* @return The device address.
|
||||
*/
|
||||
virtual uint8_t GetAddress() {
|
||||
return bAddress;
|
||||
};
|
||||
/**
|
||||
* Used to set the Bluetooth address inside the Dualshock 3 and Navigation controller.
|
||||
* @param BDADDR Your dongles Bluetooth address.
|
||||
*/
|
||||
void setBdaddr(uint8_t* BDADDR);
|
||||
/**
|
||||
* Used to set the Bluetooth address inside the Move controller.
|
||||
* @param BDADDR Your dongles Bluetooth address.
|
||||
*/
|
||||
void setMoveBdaddr(uint8_t* BDADDR);
|
||||
|
||||
/**
|
||||
* Used to check if the controller has been initialized.
|
||||
* @return True if it's ready.
|
||||
*/
|
||||
virtual bool isReady() {
|
||||
return bPollEnable;
|
||||
};
|
||||
/**@}*/
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* getButtonPress(Button b) will return true as long as the button is held down.
|
||||
*
|
||||
* While getButtonClick(Button 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).
|
||||
*/
|
||||
bool getButtonPress(Button b);
|
||||
bool getButtonClick(Button b);
|
||||
/**@}*/
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* Used to get the analog value from button presses.
|
||||
* @param a The ::Button 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* Get the ::Status from the controller.
|
||||
* @param c The ::Status you want to read.
|
||||
* @return True if correct and false if not.
|
||||
*/
|
||||
bool getStatus(Status c);
|
||||
/**
|
||||
* Read all the available ::Status from the controller.
|
||||
* @return One large string with all the information.
|
||||
*/
|
||||
String getStatusString();
|
||||
|
||||
/**
|
||||
* Used to set the Bluetooth address inside the Dualshock 3 and Navigation controller.
|
||||
* @param BDADDR Your dongles Bluetooth address.
|
||||
*/
|
||||
void setBdaddr(uint8_t* BDADDR);
|
||||
/**
|
||||
* Used to set the Bluetooth address inside the Move controller.
|
||||
* @param BDADDR Your dongles Bluetooth address.
|
||||
*/
|
||||
void setMoveBdaddr(uint8_t* BDADDR);
|
||||
/** Used to set all LEDs and ::Rumble off. */
|
||||
void setAllOff();
|
||||
/** Turn off ::Rumble. */
|
||||
void setRumbleOff();
|
||||
/**
|
||||
* Turn on ::Rumble.
|
||||
* @param mode Either ::RumbleHigh or ::RumbleLow.
|
||||
*/
|
||||
void setRumbleOn(Rumble mode);
|
||||
/**
|
||||
* 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.
|
||||
* @param leftPower The intensity of the left/high rumble effect.
|
||||
*/
|
||||
void setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower);
|
||||
/**
|
||||
* Turn the specific ::LED off.
|
||||
* @param a The ::LED to turn off.
|
||||
*/
|
||||
void setLedOff(LED a);
|
||||
/**
|
||||
* Turn the specific ::LED on.
|
||||
* @param a The ::LED to turn on.
|
||||
*/
|
||||
void setLedOn(LED a);
|
||||
/**
|
||||
* Toggle the specific ::LED.
|
||||
* @param a The ::LED to toggle.
|
||||
*/
|
||||
void setLedToggle(LED a);
|
||||
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* getButtonPress(Button b) will return true as long as the button is held down.
|
||||
*
|
||||
* While getButtonClick(Button 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).
|
||||
*/
|
||||
bool getButtonPress(Button b);
|
||||
bool getButtonClick(Button b);
|
||||
/**@}*/
|
||||
/** @name PS3 Controller functions */
|
||||
/**
|
||||
* Used to get the analog value from button presses.
|
||||
* @param a The ::Button 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* 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);
|
||||
/**
|
||||
* Get the ::Status from the controller.
|
||||
* @param c The ::Status you want to read.
|
||||
* @return True if correct and false if not.
|
||||
*/
|
||||
bool getStatus(Status c);
|
||||
/**
|
||||
* Read all the available ::Status from the controller.
|
||||
* @return One large string with all the information.
|
||||
*/
|
||||
String getStatusString();
|
||||
/**
|
||||
* Use this to set the Color using RGB values.
|
||||
* @param r,g,b RGB value.
|
||||
*/
|
||||
void moveSetBulb(uint8_t r, uint8_t g, uint8_t b);
|
||||
/**
|
||||
* Use this to set the color using the predefined colors in ::Colors.
|
||||
* @param color The desired color.
|
||||
*/
|
||||
void moveSetBulb(Colors color);
|
||||
/**
|
||||
* Set the rumble value inside the Move controller.
|
||||
* @param rumble The desired value in the range from 64-255.
|
||||
*/
|
||||
void moveSetRumble(uint8_t rumble);
|
||||
/**@}*/
|
||||
|
||||
/** Used to set all LEDs and ::Rumble off. */
|
||||
void setAllOff();
|
||||
/** Turn off ::Rumble. */
|
||||
void setRumbleOff();
|
||||
/**
|
||||
* Turn on ::Rumble.
|
||||
* @param mode Either ::RumbleHigh or ::RumbleLow.
|
||||
*/
|
||||
void setRumbleOn(Rumble mode);
|
||||
/**
|
||||
* Turn the specific ::LED off.
|
||||
* @param a The ::LED to turn off.
|
||||
*/
|
||||
void setLedOff(LED a);
|
||||
/**
|
||||
* Turn the specific ::LED on.
|
||||
* @param a The ::LED to turn on.
|
||||
*/
|
||||
void setLedOn(LED a);
|
||||
/**
|
||||
* Toggle the specific ::LED.
|
||||
* @param a The ::LED to toggle.
|
||||
*/
|
||||
void setLedToggle(LED a);
|
||||
|
||||
/**
|
||||
* Use this to set the Color using RGB values.
|
||||
* @param r,g,b RGB value.
|
||||
*/
|
||||
void moveSetBulb(uint8_t r, uint8_t g, uint8_t b);
|
||||
/**
|
||||
* Use this to set the color using the predefined colors in ::Colors.
|
||||
* @param color The desired color.
|
||||
*/
|
||||
void moveSetBulb(Colors color);
|
||||
/**
|
||||
* Set the rumble value inside the Move controller.
|
||||
* @param rumble The desired value in the range from 64-255.
|
||||
*/
|
||||
void moveSetRumble(uint8_t rumble);
|
||||
/**@}*/
|
||||
|
||||
/** Variable used to indicate if the normal playstation controller is successfully connected. */
|
||||
bool PS3Connected;
|
||||
/** Variable used to indicate if the move controller is successfully connected. */
|
||||
bool PS3MoveConnected;
|
||||
/** Variable used to indicate if the navigation controller is successfully connected. */
|
||||
bool PS3NavigationConnected;
|
||||
/** Variable used to indicate if the normal playstation controller is successfully connected. */
|
||||
bool PS3Connected;
|
||||
/** Variable used to indicate if the move controller is successfully connected. */
|
||||
bool PS3MoveConnected;
|
||||
/** Variable used to indicate if the navigation controller is successfully connected. */
|
||||
bool PS3NavigationConnected;
|
||||
|
||||
protected:
|
||||
/** Pointer to USB class instance. */
|
||||
USB *pUsb;
|
||||
/** Device address. */
|
||||
uint8_t bAddress;
|
||||
/** Endpoint info structure. */
|
||||
EpInfo epInfo[PS3_MAX_ENDPOINTS];
|
||||
/** Pointer to USB class instance. */
|
||||
USB *pUsb;
|
||||
/** Device address. */
|
||||
uint8_t bAddress;
|
||||
/** Endpoint info structure. */
|
||||
EpInfo epInfo[PS3_MAX_ENDPOINTS];
|
||||
|
||||
private:
|
||||
bool bPollEnable;
|
||||
bool bPollEnable;
|
||||
|
||||
uint32_t timer; // used to continuously set PS3 Move controller Bulb and rumble values
|
||||
uint32_t timer; // used to continuously set PS3 Move controller Bulb and rumble values
|
||||
|
||||
uint32_t ButtonState;
|
||||
uint32_t OldButtonState;
|
||||
uint32_t ButtonClickState;
|
||||
uint32_t ButtonState;
|
||||
uint32_t OldButtonState;
|
||||
uint32_t ButtonClickState;
|
||||
|
||||
uint8_t my_bdaddr[6]; // Change to your dongles Bluetooth address in the constructor
|
||||
uint8_t readBuf[EP_MAXPKTSIZE]; // General purpose buffer for input data
|
||||
uint8_t writeBuf[EP_MAXPKTSIZE]; // General purpose buffer for output data
|
||||
uint8_t my_bdaddr[6]; // Change to your dongles Bluetooth address in the constructor
|
||||
uint8_t readBuf[EP_MAXPKTSIZE]; // General purpose buffer for input data
|
||||
uint8_t writeBuf[EP_MAXPKTSIZE]; // General purpose buffer for output data
|
||||
|
||||
void readReport(); // read incoming data
|
||||
void printReport(); // print incoming date - Uncomment for debugging
|
||||
void readReport(); // read incoming data
|
||||
void printReport(); // print incoming date - Uncomment for debugging
|
||||
|
||||
/* Private commands */
|
||||
void PS3_Command(uint8_t* data, uint16_t nbytes);
|
||||
void enable_sixaxis(); // Command used to enable the Dualshock 3 and Navigation controller to send data via USB
|
||||
void Move_Command(uint8_t* data, uint16_t nbytes);
|
||||
/* Private commands */
|
||||
void PS3_Command(uint8_t* data, uint16_t nbytes);
|
||||
void enable_sixaxis(); // Command used to enable the Dualshock 3 and Navigation controller to send data via USB
|
||||
void Move_Command(uint8_t* data, uint16_t nbytes);
|
||||
};
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue