Zoltan Hudak / UsbHostMAX3421E

Dependents:   UsbHostMAX3421E_Hello

Embed: (wiki syntax)

« Back to documentation index

PS3BT Class Reference

This BluetoothService class implements support for all the official PS3 Controllers: Dualshock 3, Navigation or a Motion controller via Bluetooth. More...

#include <PS3BT.h>

Inherits BluetoothService.

Public Member Functions

 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.
void attachOnInit (void(*funcOnInit)(void))
 Used to call your own function when the device is successfully initialized.
PS3 Controller functions
bool getButtonPress (ButtonEnum b)
 getButtonPress(ButtonEnum b) will return true as long as the button is held down.
bool getButtonClick (ButtonEnum b)
uint8_t getAnalogButton (ButtonEnum a)
 Used to get the analog value from button presses.
uint8_t getAnalogHat (AnalogHatEnum a)
 Used to read the analog joystick.
int16_t getSensor (SensorEnum a)
 Used to read the sensors inside the Dualshock 3 and Move controller.
float getAngle (AngleEnum a)
 Use this to get Pitch and Roll calculated using the accelerometer.
float get9DOFValues (SensorEnum a)
 Read the sensors inside the Move controller.
bool getStatus (StatusEnum c)
 Get the status from the controller.
void printStatusString ()
 Read all the available statuses from the controller and prints it as a nice formated string.
char * getTemperature ()
 Read the temperature from the Move controller.
void setAllOff ()
 Used to set all LEDs and rumble off.
void setRumbleOff ()
 Turn off rumble.
void setRumbleOn (RumbleEnum mode)
 Turn on rumble.
void setRumbleOn (uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower)
 Turn on rumble using custom duration and power.
void setLedRaw (uint8_t value)
 Set LED value without using LEDEnum.
void setLedOff ()
 Turn all LEDs off.
void setLedOff (LEDEnum a)
 Turn the specific LED off.
void setLedOn (LEDEnum a)
 Turn the specific LED on.
void setLedToggle (LEDEnum a)
 Toggle the specific LED.
void moveSetBulb (uint8_t r, uint8_t g, uint8_t b)
 Use this to set the Color using RGB values.
void moveSetBulb (ColorsEnum color)
 Use this to set the color using the predefined colors in ColorsEnum.
void moveSetRumble (uint8_t rumble)
 Set the rumble value inside the Move controller.
uint32_t getLastMessageTime ()
 Used to get the millis() of the last message.

Data Fields

bool PS3Connected
 Variable used to indicate if the normal Playstation controller is successfully connected.
bool PS3MoveConnected
 Variable used to indicate if the Move controller is successfully connected.
bool PS3NavigationConnected
 Variable used to indicate if the Navigation controller is successfully connected.

Protected Member Functions

bool checkHciHandle (uint8_t *buf, uint16_t handle)
 Used to check if the incoming L2CAP data matches the HCI Handle.

Protected Attributes

void(* pFuncOnInit )(void)
 Pointer to function called in onInit().
BTDpBtd
 Pointer to BTD instance.
uint16_t hci_handle
 The HCI Handle for the connection.
uint32_t l2cap_event_flag
 L2CAP flags of received Bluetooth events.
uint8_t identifier
 Identifier for L2CAP commands.

BluetoothService implementation

void disconnect ()
 Used this to disconnect any of the controllers.
void ACLData (uint8_t *ACLData)
 Used to pass acldata to the services.
void Run ()
 Used to run part of the state machine.
void Reset ()
 Use this to reset the service.
void onInit ()
 Called when the controller is successfully initialized.

Detailed Description

This BluetoothService class implements support for all the official PS3 Controllers: Dualshock 3, Navigation or a Motion controller via Bluetooth.

Information about the protocol can be found at the wiki: https://github.com/felis/USB_Host_Shield_2.0/wiki/PS3-Information.

Definition at line 33 of file PS3BT.h.


Constructor & Destructor Documentation

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.

Parameters:
pBtdPointer to BTD class instance.
btadr5,btadr4,btadr3,btadr2,btadr1,btadr0Pass 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.

Definition at line 23 of file PS3BT.cpp.


Member Function Documentation

void ACLData ( uint8_t *  ACLData ) [protected, virtual]

Used to pass acldata to the services.

Parameters:
ACLDataIncoming acldata.

Implements BluetoothService.

Definition at line 227 of file PS3BT.cpp.

void attachOnInit ( void(*)(void)  funcOnInit ) [inherited]

Used to call your own function when the device is successfully initialized.

Parameters:
funcOnInitFunction to call.

Definition at line 592 of file BTD.h.

bool checkHciHandle ( uint8_t *  buf,
uint16_t  handle 
) [protected, inherited]

Used to check if the incoming L2CAP data matches the HCI Handle.

Definition at line 605 of file BTD.h.

void disconnect (  ) [virtual]

Used this to disconnect any of the controllers.

Implements BluetoothService.

Definition at line 220 of file PS3BT.cpp.

float get9DOFValues ( SensorEnum  a )

Read the sensors inside the Move controller.

Parameters:
aaXmove, aYmove, aZmove, gXmove, gYmove, gZmove, mXmove, mYmove, and mXmove.
Returns:
The value in SI units.

Definition at line 112 of file PS3BT.cpp.

uint8_t getAnalogButton ( ButtonEnum  a )

Used to get the analog value from button presses.

Parameters:
aThe ButtonEnum to read. The supported buttons are: UP, RIGHT, DOWN, LEFT, L1, L2, R1, R2, TRIANGLE, CIRCLE, CROSS, SQUARE, and T.
Returns:
Analog value in the range of 0-255.

Definition at line 60 of file PS3BT.cpp.

uint8_t getAnalogHat ( AnalogHatEnum  a )

Used to read the analog joystick.

Parameters:
aLeftHatX, LeftHatY, RightHatX, and RightHatY.
Returns:
Return the analog value in the range of 0-255.

Definition at line 64 of file PS3BT.cpp.

float getAngle ( AngleEnum  a )

Use this to get Pitch and Roll calculated using the accelerometer.

Parameters:
aEither Pitch or Roll.
Returns:
Return the angle in the range of 0-360.

Definition at line 85 of file PS3BT.cpp.

bool getButtonPress ( ButtonEnum  b )

getButtonPress(ButtonEnum b) will return true as long as the button is held down.

While getButtonClick(ButtonEnum b) will only return it once.

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).

Parameters:
bButtonEnum to read.
Returns:
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.

Definition at line 49 of file PS3BT.cpp.

uint32_t getLastMessageTime (  )

Used to get the millis() of the last message.

Definition at line 175 of file PS3BT.h.

int16_t getSensor ( SensorEnum  a )

Used to read the sensors inside the Dualshock 3 and Move controller.

Parameters:
aThe 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.
Returns:
Return the raw sensor value.

Definition at line 68 of file PS3BT.cpp.

bool getStatus ( StatusEnum  c )

Get the status from the controller.

Parameters:
cThe StatusEnum you want to read.
Returns:
True if correct and false if not.

Definition at line 157 of file PS3BT.cpp.

char * getTemperature (  )

Read the temperature from the Move controller.

Returns:
The temperature in degrees Celsius.

Definition at line 141 of file PS3BT.cpp.

void moveSetBulb ( uint8_t  r,
uint8_t  g,
uint8_t  b 
)

Use this to set the Color using RGB values.

Parameters:
r,g,bRGB value.

Definition at line 607 of file PS3BT.cpp.

void moveSetBulb ( ColorsEnum  color )

Use this to set the color using the predefined colors in ColorsEnum.

Parameters:
colorThe desired color.

Definition at line 616 of file PS3BT.cpp.

void moveSetRumble ( uint8_t  rumble )

Set the rumble value inside the Move controller.

Parameters:
rumbleThe desired value in the range from 64-255.

Definition at line 620 of file PS3BT.cpp.

void onInit (  ) [protected, virtual]

Called when the controller is successfully initialized.

Use attachOnInit(void (*funcOnInit)(void)) to call your own function. This is useful for instance if you want to set the LEDs in a specific way.

Implements BluetoothService.

Definition at line 631 of file PS3BT.cpp.

void printStatusString (  )

Read all the available statuses from the controller and prints it as a nice formated string.

Definition at line 161 of file PS3BT.cpp.

void Reset (  ) [protected, virtual]

Use this to reset the service.

Implements BluetoothService.

Definition at line 207 of file PS3BT.cpp.

void Run (  ) [protected, virtual]

Used to run part of the state machine.

Implements BluetoothService.

Definition at line 457 of file PS3BT.cpp.

void setAllOff (  )

Used to set all LEDs and rumble off.

Definition at line 522 of file PS3BT.cpp.

void setLedOff (  )

Turn all LEDs off.

Definition at line 139 of file PS3BT.h.

void setLedOff ( LEDEnum  a )

Turn the specific LED off.

Parameters:
aThe LEDEnum to turn off.

Definition at line 567 of file PS3BT.cpp.

void setLedOn ( LEDEnum  a )

Turn the specific LED on.

Parameters:
aThe LEDEnum to turn on.

Definition at line 572 of file PS3BT.cpp.

void setLedRaw ( uint8_t  value )

Set LED value without using LEDEnum.

Parameters:
valueSee: LEDEnum.

Definition at line 562 of file PS3BT.cpp.

void setLedToggle ( LEDEnum  a )

Toggle the specific LED.

Parameters:
aThe LEDEnum to toggle.

Definition at line 581 of file PS3BT.cpp.

void setRumbleOff (  )

Turn off rumble.

Definition at line 533 of file PS3BT.cpp.

void setRumbleOn ( RumbleEnum  mode )

Turn on rumble.

Parameters:
modeEither RumbleHigh or RumbleLow.

Definition at line 543 of file PS3BT.cpp.

void setRumbleOn ( uint8_t  rightDuration,
uint8_t  rightPower,
uint8_t  leftDuration,
uint8_t  leftPower 
)

Turn on rumble using custom duration and power.

Parameters:
rightDurationThe duration of the right/low rumble effect.
rightPowerThe intensity of the right/low rumble effect.
leftDurationThe duration of the left/high rumble effect.
leftPowerThe intensity of the left/high rumble effect.

Definition at line 552 of file PS3BT.cpp.


Field Documentation

uint16_t hci_handle [protected, inherited]

The HCI Handle for the connection.

Definition at line 616 of file BTD.h.

uint8_t identifier [protected, inherited]

Identifier for L2CAP commands.

Definition at line 622 of file BTD.h.

uint32_t l2cap_event_flag [protected, inherited]

L2CAP flags of received Bluetooth events.

Definition at line 619 of file BTD.h.

BTD* pBtd [protected, inherited]

Pointer to BTD instance.

Definition at line 613 of file BTD.h.

void(* pFuncOnInit)(void) [protected, inherited]

Pointer to function called in onInit().

Definition at line 610 of file BTD.h.

Variable used to indicate if the normal Playstation controller is successfully connected.

Definition at line 177 of file PS3BT.h.

Variable used to indicate if the Move controller is successfully connected.

Definition at line 183 of file PS3BT.h.

Variable used to indicate if the Navigation controller is successfully connected.

Definition at line 185 of file PS3BT.h.