USB Host Shield 2.0
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
XBOXONE Class Reference

#include <XBOXONE.h>

Inheritance diagram for XBOXONE:
Inheritance graph
[legend]
Collaboration diagram for XBOXONE:
Collaboration graph
[legend]

Public Member Functions

 XBOXONE (USB *pUsb)
 
USBDeviceConfig implementation
virtual uint8_t Init (uint8_t parent, uint8_t port, bool lowspeed)
 
virtual uint8_t Release ()
 
virtual uint8_t Poll ()
 
virtual uint8_t GetAddress ()
 
virtual bool isReady ()
 
uint8_t readPollInterval ()
 
virtual bool VIDPIDOK (uint16_t vid, uint16_t pid)
 
Xbox Controller functions
uint16_t getButtonPress (ButtonEnum b)
 
bool getButtonClick (ButtonEnum b)
 
int16_t getAnalogHat (AnalogHatEnum a)
 
void attachOnInit (void(*funcOnInit)(void))
 
void setRumbleOff ()
 
void setRumbleOn (uint8_t leftTrigger, uint8_t rightTrigger, uint8_t leftMotor, uint8_t rightMotor)
 
- Public Member Functions inherited from USBDeviceConfig
virtual uint8_t ConfigureDevice (uint8_t parent, uint8_t port, bool lowspeed)
 
virtual void ResetHubPort (uint8_t port)
 
virtual bool DEVCLASSOK (uint8_t klass)
 
virtual bool DEVSUBCLASSOK (uint8_t subklass)
 

Public Attributes

bool XboxOneConnected
 

Protected Member Functions

void PrintEndpointDescriptor (const USB_ENDPOINT_DESCRIPTOR *ep_ptr)
 
UsbConfigXtracter implementation
void EndpointXtract (uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep)
 

Protected Attributes

USBpUsb
 
uint8_t bAddress
 
EpInfo epInfo [XBOX_ONE_MAX_ENDPOINTS]
 
uint8_t bConfNum
 
uint8_t bNumEP
 
uint32_t qNextPollTime
 

Detailed Description

This class implements support for a Xbox ONE controller connected via USB.

Definition at line 67 of file XBOXONE.h.

Constructor & Destructor Documentation

◆ XBOXONE()

XBOXONE::XBOXONE ( USB pUsb)

Constructor for the XBOXONE class.

Parameters
pUsbPointer to USB class instance.

Definition at line 27 of file XBOXONE.cpp.

Member Function Documentation

◆ Init()

uint8_t XBOXONE::Init ( uint8_t  parent,
uint8_t  port,
bool  lowspeed 
)
virtual

Initialize the Xbox Controller.

Parameters
parentHub number.
portPort number on the hub.
lowspeedSpeed of the device.
Returns
0 on success.

Reimplemented from USBDeviceConfig.

Definition at line 46 of file XBOXONE.cpp.

◆ Release()

uint8_t XBOXONE::Release ( )
virtual

Release the USB device.

Returns
0 on success.

Reimplemented from USBDeviceConfig.

Definition at line 286 of file XBOXONE.cpp.

◆ Poll()

uint8_t XBOXONE::Poll ( )
virtual

Poll the USB Input endpoins and run the state machines.

Returns
0 on success.

Reimplemented from USBDeviceConfig.

Definition at line 300 of file XBOXONE.cpp.

◆ GetAddress()

virtual uint8_t XBOXONE::GetAddress ( )
inlinevirtual

Get the device address.

Returns
The device address.

Reimplemented from USBDeviceConfig.

Definition at line 99 of file XBOXONE.h.

◆ isReady()

virtual bool XBOXONE::isReady ( )
inlinevirtual

Used to check if the controller has been initialized.

Returns
True if it's ready.

Definition at line 107 of file XBOXONE.h.

◆ readPollInterval()

uint8_t XBOXONE::readPollInterval ( )
inline

Read the poll interval taken from the endpoint descriptors.

Returns
The poll interval in ms.

Definition at line 115 of file XBOXONE.h.

◆ VIDPIDOK()

virtual bool XBOXONE::VIDPIDOK ( uint16_t  vid,
uint16_t  pid 
)
inlinevirtual

Used by the USB core to check what this driver support.

Parameters
vidThe device's VID.
pidThe device's PID.
Returns
Returns true if the device's VID and PID matches this driver.

Reimplemented from USBDeviceConfig.

Definition at line 125 of file XBOXONE.h.

◆ getButtonPress()

uint16_t XBOXONE::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
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a word if reading L2 or R2.

Definition at line 385 of file XBOXONE.cpp.

◆ getButtonClick()

bool XBOXONE::getButtonClick ( 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
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a word if reading L2 or R2.

Definition at line 399 of file XBOXONE.cpp.

◆ getAnalogHat()

int16_t XBOXONE::getAnalogHat ( AnalogHatEnum  a)

Return the analog value from the joysticks on the controller.

Parameters
aEither LeftHatX, LeftHatY, RightHatX or RightHatY.
Returns
Returns a signed 16-bit integer.

Definition at line 429 of file XBOXONE.cpp.

◆ attachOnInit()

void XBOXONE::attachOnInit ( void(*)(void)  funcOnInit)
inline

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

Parameters
funcOnInitFunction to call.

Definition at line 159 of file XBOXONE.h.

◆ setRumbleOff()

void XBOXONE::setRumbleOff ( )

Used to set the rumble off.

Definition at line 473 of file XBOXONE.cpp.

◆ setRumbleOn()

void XBOXONE::setRumbleOn ( uint8_t  leftTrigger,
uint8_t  rightTrigger,
uint8_t  leftMotor,
uint8_t  rightMotor 
)

Used to turn on rumble continuously.

Parameters
leftTriggerLeft trigger force.
rightTriggerRight trigger force.
leftMotorLeft motor force.
rightMotorRight motor force.

Definition at line 495 of file XBOXONE.cpp.

◆ EndpointXtract()

void XBOXONE::EndpointXtract ( uint8_t  conf,
uint8_t  iface,
uint8_t  alt,
uint8_t  proto,
const USB_ENDPOINT_DESCRIPTOR ep 
)
protectedvirtual

UsbConfigXtracter implementation, used to extract endpoint information.

Parameters
confConfiguration value.
ifaceInterface number.
altAlternate setting.
protoInterface Protocol.
epEndpoint Descriptor.

Reimplemented from UsbConfigXtracter.

Definition at line 239 of file XBOXONE.cpp.

◆ PrintEndpointDescriptor()

void XBOXONE::PrintEndpointDescriptor ( const USB_ENDPOINT_DESCRIPTOR ep_ptr)
protected

Used to print the USB Endpoint Descriptor.

Parameters
ep_ptrPointer to USB Endpoint Descriptor.

Definition at line 265 of file XBOXONE.cpp.

Member Data Documentation

◆ XboxOneConnected

bool XBOXONE::XboxOneConnected

True if a Xbox ONE controller is connected.

Definition at line 177 of file XBOXONE.h.

◆ pUsb

USB* XBOXONE::pUsb
protected

Pointer to USB class instance.

Definition at line 181 of file XBOXONE.h.

◆ bAddress

uint8_t XBOXONE::bAddress
protected

Device address.

Definition at line 183 of file XBOXONE.h.

◆ epInfo

EpInfo XBOXONE::epInfo[XBOX_ONE_MAX_ENDPOINTS]
protected

Endpoint info structure.

Definition at line 185 of file XBOXONE.h.

◆ bConfNum

uint8_t XBOXONE::bConfNum
protected

Configuration number.

Definition at line 188 of file XBOXONE.h.

◆ bNumEP

uint8_t XBOXONE::bNumEP
protected

Total number of endpoints in the configuration.

Definition at line 190 of file XBOXONE.h.

◆ qNextPollTime

uint32_t XBOXONE::qNextPollTime
protected

Next poll time based on poll interval taken from the USB descriptor.

Definition at line 192 of file XBOXONE.h.


The documentation for this class was generated from the following files: