Added return value to read() call
This commit is contained in:
parent
62c5b6cf9f
commit
71e9349aab
8 changed files with 31 additions and 20 deletions
|
@ -60,7 +60,7 @@ Xbox360Controller::set_led(uint8_t status)
|
|||
usb_interrupt_write(handle, 2, ledcmd, sizeof(ledcmd), 0);
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
Xbox360Controller::read(XboxGenericMsg& msg)
|
||||
{
|
||||
uint8_t data[32];
|
||||
|
@ -81,6 +81,7 @@ Xbox360Controller::read(XboxGenericMsg& msg)
|
|||
{
|
||||
msg.type = GAMEPAD_XBOX360;
|
||||
msg.xbox360 = *reinterpret_cast<Xbox360Msg*>(data);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -92,6 +93,8 @@ Xbox360Controller::read(XboxGenericMsg& msg)
|
|||
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -39,7 +39,7 @@ public:
|
|||
|
||||
void set_rumble(uint8_t left, uint8_t right);
|
||||
void set_led(uint8_t status);
|
||||
void read(XboxGenericMsg& msg);
|
||||
bool read(XboxGenericMsg& msg);
|
||||
|
||||
private:
|
||||
Xbox360Controller (const Xbox360Controller&);
|
||||
|
|
|
@ -74,7 +74,7 @@ Xbox360WirelessController::set_led(uint8_t status)
|
|||
usb_interrupt_write(handle, endpoint, ledcmd, sizeof(ledcmd), 0);
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
Xbox360WirelessController::read(XboxGenericMsg& msg)
|
||||
{
|
||||
uint8_t data[32];
|
||||
|
@ -122,6 +122,7 @@ Xbox360WirelessController::read(XboxGenericMsg& msg)
|
|||
{
|
||||
msg.type = GAMEPAD_XBOX360_WIRELESS;
|
||||
msg.xbox360 = *reinterpret_cast<Xbox360Msg*>(&data[6]);
|
||||
return true;
|
||||
}
|
||||
else if (data[0] == 0x00 && data[1] == 0x00 && data[2] == 0x00 && data[3] == 0x13)
|
||||
{ // Battery status
|
||||
|
@ -136,6 +137,8 @@ Xbox360WirelessController::read(XboxGenericMsg& msg)
|
|||
{
|
||||
// unknown/junk
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -43,7 +43,7 @@ public:
|
|||
|
||||
void set_rumble(uint8_t left, uint8_t right);
|
||||
void set_led(uint8_t status);
|
||||
void read(XboxGenericMsg& msg);
|
||||
bool read(XboxGenericMsg& msg);
|
||||
uint8_t get_battery_status() const;
|
||||
private:
|
||||
Xbox360WirelessController (const Xbox360WirelessController&);
|
||||
|
|
|
@ -57,7 +57,7 @@ XboxController::set_led(uint8_t status)
|
|||
// Controller doesn't have a LED
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
XboxController::read(XboxGenericMsg& msg)
|
||||
{
|
||||
// FIXME: Add tracking for duplicate data packages (send by logitech controller)
|
||||
|
@ -74,7 +74,9 @@ XboxController::read(XboxGenericMsg& msg)
|
|||
{
|
||||
msg.type = GAMEPAD_XBOX;
|
||||
msg.xbox = *reinterpret_cast<XboxMsg*>(data);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -39,7 +39,7 @@ public:
|
|||
|
||||
void set_rumble(uint8_t left, uint8_t right);
|
||||
void set_led(uint8_t status);
|
||||
void read(XboxGenericMsg& msg);
|
||||
bool read(XboxGenericMsg& msg);
|
||||
|
||||
private:
|
||||
XboxController (const XboxController&);
|
||||
|
|
|
@ -29,7 +29,7 @@ public:
|
|||
|
||||
virtual void set_rumble(uint8_t left, uint8_t right) =0;
|
||||
virtual void set_led(uint8_t status) =0;
|
||||
virtual void read(XboxGenericMsg& msg) =0;
|
||||
virtual bool read(XboxGenericMsg& msg) =0;
|
||||
|
||||
private:
|
||||
XboxGenericController (const XboxGenericController&);
|
||||
|
|
29
xboxdrv.cpp
29
xboxdrv.cpp
|
@ -601,21 +601,24 @@ void controller_loop(XboxGenericController* controller, CommandLineOptions& opts
|
|||
while(!quit)
|
||||
{
|
||||
XboxGenericMsg msg;
|
||||
controller->read(msg);
|
||||
if (opts.verbose)
|
||||
std::cout << msg << std::endl;
|
||||
if (uinput) uinput->send(msg);
|
||||
|
||||
if (opts.rumble)
|
||||
|
||||
if (controller->read(msg))
|
||||
{
|
||||
if (opts.gamepad_type == GAMEPAD_XBOX)
|
||||
if (opts.verbose)
|
||||
std::cout << msg << std::endl;
|
||||
if (uinput) uinput->send(msg);
|
||||
|
||||
if (opts.rumble)
|
||||
{
|
||||
controller->set_rumble(msg.xbox.lt, msg.xbox.rt);
|
||||
}
|
||||
else if (opts.gamepad_type == GAMEPAD_XBOX360 ||
|
||||
opts.gamepad_type == GAMEPAD_XBOX360_WIRELESS)
|
||||
{
|
||||
controller->set_rumble(msg.xbox360.lt, msg.xbox360.rt);
|
||||
if (opts.gamepad_type == GAMEPAD_XBOX)
|
||||
{
|
||||
controller->set_rumble(msg.xbox.lt, msg.xbox.rt);
|
||||
}
|
||||
else if (opts.gamepad_type == GAMEPAD_XBOX360 ||
|
||||
opts.gamepad_type == GAMEPAD_XBOX360_WIRELESS)
|
||||
{
|
||||
controller->set_rumble(msg.xbox360.lt, msg.xbox360.rt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue