Added --version and --verbose command line options
This commit is contained in:
parent
8dfe076ca4
commit
75d18348b5
11 changed files with 60 additions and 17 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,6 +1,5 @@
|
|||
*~
|
||||
*.o
|
||||
.gitignore
|
||||
xboxdrv
|
||||
.sconsign.dblite
|
||||
usb.txt
|
||||
|
|
8
NEWS
8
NEWS
|
@ -1,3 +1,11 @@
|
|||
xboxdrv 0.2.1 - (??/Jun/2008)
|
||||
=============================
|
||||
|
||||
* added short note when USB device is busy
|
||||
* added note to README about running it via sudo
|
||||
* added some missing header files
|
||||
|
||||
|
||||
xboxdrv 0.2 - (03/May/2008)
|
||||
===========================
|
||||
|
||||
|
|
5
TODO
5
TODO
|
@ -1,3 +1,8 @@
|
|||
More general button map support:
|
||||
|
||||
% ./xboxdrv --buttonmap B=BTN_A,X=BTN_A,Y=KEY_B
|
||||
|
||||
So pressing B sends out BTN_A uinput event
|
||||
|
||||
Daemon Mode:
|
||||
SYSFS{idVendor}=="045e", SYSFS{idProduct}=="028e", RUN+="/home/ingo/projects/xboxdrv/trunk/xboxdrv --daemon"
|
||||
|
|
|
@ -69,7 +69,7 @@ Xbox360Controller::set_led(uint8_t status)
|
|||
}
|
||||
|
||||
bool
|
||||
Xbox360Controller::read(XboxGenericMsg& msg)
|
||||
Xbox360Controller::read(XboxGenericMsg& msg, bool verbose)
|
||||
{
|
||||
uint8_t data[32];
|
||||
int ret = usb_interrupt_read(handle, 1 /*EndPoint*/, (char*)data, sizeof(data), 0 /*Timeout*/);
|
||||
|
@ -82,20 +82,30 @@ Xbox360Controller::read(XboxGenericMsg& msg)
|
|||
}
|
||||
else if (ret == 0)
|
||||
{
|
||||
// happens with the Xbox360 controller every now and then, just
|
||||
// ignore, seems harmless, so just ignore
|
||||
if (verbose)
|
||||
{
|
||||
std::cout << "zero length read" << std::endl;
|
||||
// happens with the Xbox360 controller every now and then, just
|
||||
// ignore, seems harmless, so just ignore
|
||||
}
|
||||
}
|
||||
else if (ret == 3 && data[0] == 0x01 && data[1] == 0x03)
|
||||
{
|
||||
// std::cout << "Xbox360Controller: LED Status: " << int(data[2]) << std::endl;
|
||||
if (verbose)
|
||||
{
|
||||
std::cout << "Xbox360Controller: LED Status: " << int(data[2]) << std::endl;
|
||||
}
|
||||
}
|
||||
else if (ret == 3 && data[0] == 0x03 && data[1] == 0x03)
|
||||
{
|
||||
// data[2] == 0x00 means that rumble is disabled
|
||||
// data[2] == 0x01 unknown, but rumble works
|
||||
// data[2] == 0x02 unknown, but rumble works
|
||||
// data[2] == 0x03 is default with rumble enabled
|
||||
// std::cout << "Xbox360Controller: Rumble Status: " << int(data[2]) << std::endl;
|
||||
if (verbose)
|
||||
{
|
||||
// data[2] == 0x00 means that rumble is disabled
|
||||
// data[2] == 0x01 unknown, but rumble works
|
||||
// data[2] == 0x02 unknown, but rumble works
|
||||
// data[2] == 0x03 is default with rumble enabled
|
||||
std::cout << "Xbox360Controller: Rumble Status: " << int(data[2]) << std::endl;
|
||||
}
|
||||
}
|
||||
else if (ret == 20 && data[0] == 0x00 && data[1] == 0x14)
|
||||
{
|
||||
|
|
|
@ -40,7 +40,7 @@ public:
|
|||
void set_rumble(uint8_t left, uint8_t right);
|
||||
void set_led(uint8_t status);
|
||||
void send_raw(char* buffer, int len);
|
||||
bool read(XboxGenericMsg& msg);
|
||||
bool read(XboxGenericMsg& msg, bool verbose);
|
||||
|
||||
private:
|
||||
Xbox360Controller (const Xbox360Controller&);
|
||||
|
|
|
@ -76,7 +76,7 @@ Xbox360WirelessController::set_led(uint8_t status)
|
|||
}
|
||||
|
||||
bool
|
||||
Xbox360WirelessController::read(XboxGenericMsg& msg)
|
||||
Xbox360WirelessController::read(XboxGenericMsg& msg, bool verbose)
|
||||
{
|
||||
uint8_t data[32];
|
||||
int ret = usb_interrupt_read(handle, endpoint, (char*)data, sizeof(data), 0 /*Timeout*/);
|
||||
|
|
|
@ -41,7 +41,7 @@ public:
|
|||
|
||||
void set_rumble(uint8_t left, uint8_t right);
|
||||
void set_led(uint8_t status);
|
||||
bool read(XboxGenericMsg& msg);
|
||||
bool read(XboxGenericMsg& msg, bool verbose);
|
||||
uint8_t get_battery_status() const;
|
||||
private:
|
||||
Xbox360WirelessController (const Xbox360WirelessController&);
|
||||
|
|
|
@ -58,7 +58,7 @@ XboxController::set_led(uint8_t status)
|
|||
}
|
||||
|
||||
bool
|
||||
XboxController::read(XboxGenericMsg& msg)
|
||||
XboxController::read(XboxGenericMsg& msg, bool verbose)
|
||||
{
|
||||
// FIXME: Add tracking for duplicate data packages (send by logitech controller)
|
||||
uint8_t data[32];
|
||||
|
|
|
@ -37,7 +37,7 @@ public:
|
|||
|
||||
void set_rumble(uint8_t left, uint8_t right);
|
||||
void set_led(uint8_t status);
|
||||
bool read(XboxGenericMsg& msg);
|
||||
bool read(XboxGenericMsg& msg, bool verbose);
|
||||
|
||||
private:
|
||||
XboxController (const XboxController&);
|
||||
|
|
|
@ -30,7 +30,7 @@ public:
|
|||
virtual void set_rumble(uint8_t left, uint8_t right) =0;
|
||||
virtual void set_led(uint8_t status) =0;
|
||||
virtual void send_raw(char* buffer, int len) {}
|
||||
virtual bool read(XboxGenericMsg& msg) =0;
|
||||
virtual bool read(XboxGenericMsg& msg, bool verbose) =0;
|
||||
|
||||
private:
|
||||
XboxGenericController (const XboxGenericController&);
|
||||
|
|
23
xboxdrv.cpp
23
xboxdrv.cpp
|
@ -400,6 +400,7 @@ bool find_xbox360_controller(int id, struct usb_device** xbox_device, XPadDevice
|
|||
struct CommandLineOptions
|
||||
{
|
||||
bool daemon;
|
||||
bool verbose;
|
||||
bool silent;
|
||||
bool rumble;
|
||||
int led;
|
||||
|
@ -419,6 +420,7 @@ struct CommandLineOptions
|
|||
|
||||
CommandLineOptions() {
|
||||
daemon = false;
|
||||
verbose = false;
|
||||
silent = false;
|
||||
rumble = false;
|
||||
led = -1;
|
||||
|
@ -442,6 +444,8 @@ void print_command_line_help(int argc, char** argv)
|
|||
std::cout << std::endl;
|
||||
std::cout << "General Options: " << std::endl;
|
||||
std::cout << " -h, --help display this help and exit" << std::endl;
|
||||
std::cout << " -V, --version print the version number and exit" << std::endl;
|
||||
std::cout << " -v, --verbose print verbose messages" << std::endl;
|
||||
std::cout << " --help-led list possible values for the led" << std::endl;
|
||||
std::cout << " --help-devices list supported devices" << std::endl;
|
||||
std::cout << " -s, --silent do not display events on console" << std::endl;
|
||||
|
@ -507,6 +511,23 @@ void parse_command_line(int argc, char** argv, CommandLineOptions& opts)
|
|||
print_command_line_help(argc, argv);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
else if (strcmp(argv[i], "-v") == 0 ||
|
||||
strcmp(argv[i], "--verbose") == 0)
|
||||
{
|
||||
opts.verbose = true;
|
||||
}
|
||||
else if (strcmp(argv[i], "-V") == 0 ||
|
||||
strcmp(argv[i], "--version") == 0)
|
||||
{
|
||||
std::cout
|
||||
<< "xboxdrv 0.3\n"
|
||||
<< "Copyright (C) 2008 Ingo Ruhnke <grumbel@gmx.de>\n"
|
||||
<< "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
|
||||
<< "This is free software: you are free to change and redistribute it.\n"
|
||||
<< "There is NO WARRANTY, to the extent permitted by law."
|
||||
<< std::endl;
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
else if (strcmp(argv[i], "-s") == 0 ||
|
||||
strcmp(argv[i], "--silent") == 0)
|
||||
{
|
||||
|
@ -885,7 +906,7 @@ void controller_loop(uInput* uinput, XboxGenericController* controller, CommandL
|
|||
{
|
||||
XboxGenericMsg msg;
|
||||
|
||||
if (controller->read(msg))
|
||||
if (controller->read(msg, opts.verbose))
|
||||
{
|
||||
apply_deadzone(msg, opts.deadzone);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue