Improved XboxdrvDaemon::status() output
This commit is contained in:
parent
800c24f008
commit
ce4ae7c9e1
3 changed files with 63 additions and 61 deletions
76
TODO
76
TODO
|
@ -44,8 +44,6 @@ Stuff to do before 0.7.2 release:
|
|||
|
||||
== Generic ==
|
||||
|
||||
* document that Xbox360 wireless controller shuts down at 15min
|
||||
|
||||
* add glib and dbus dependencies to .deb control file
|
||||
|
||||
* mimic-xpad is broken, should handle wireless and wired controllers
|
||||
|
@ -63,13 +61,31 @@ Stuff to do before 0.7.2 release:
|
|||
|
||||
* implement Options::set_device_usbid() and CommandLineParser::set_device_usbid()
|
||||
|
||||
|
||||
== Unsolved/WontFix ==
|
||||
|
||||
== Other ==
|
||||
* after every thread cleanup, do an enumeration over all USB devices,
|
||||
find those not currently used by a Slot and recreate them, this
|
||||
should fix resume issues, this would also fix the issue with
|
||||
ignoring controllers when all slots are full
|
||||
|
||||
* give proper exit code when no controller is found
|
||||
-> bad idea, as it would let unused controllers slip into the free
|
||||
slots, could lead to unexpected behaviour
|
||||
|
||||
* sort options a bit more between global ones, slot local ones and
|
||||
config local ones
|
||||
-> maybe as D-Bus interface?
|
||||
|
||||
* allow multiple controllers in non-daemon mode
|
||||
-> not a good idea, complicates stuff and duplicates code
|
||||
|
||||
* remember controllers that couldn't be used when all slots where full
|
||||
and use them when a slot got free -> discard, bad idea, as it
|
||||
results in confusing behaviour
|
||||
|
||||
|
||||
|
||||
* glib/D-Bus causes crash/exit when USBController::get_name() returns an invalid unicode string?!
|
||||
|
||||
* move sigint/sigterm handling out of main.cpp and into xboxdrv_daemon.cpp (needs to use gmain_quit())
|
||||
|
||||
* BTN_A@joystick.1 doesn't work for a single joystick, why? (joystick isn't id=0, why?)
|
||||
|
||||
|
@ -81,9 +97,15 @@ Stuff to do before 0.7.2 release:
|
|||
-> figure out how exactly device names are choosen (first free or
|
||||
are there other means? need to take special axes/buttons into account)
|
||||
|
||||
* add extra arguments to --on-connect and --on-disconnect (controller name, usb path, etc.)
|
||||
* done -> document
|
||||
* currently returns: "-1:-1" "-1:-1" "not implemented"
|
||||
== Daemon ==
|
||||
|
||||
* check how daemon reacts on suspend
|
||||
- suspending the computer leads to LIBUSB_ERROR_IO, unplugging the
|
||||
controller leads to LIBUSB_ERROR_OTHER
|
||||
-> couldn't be replicated, both give LIBUSB_ERROR_OTHER
|
||||
- errno is set to EBUSY
|
||||
- the device handle can't be reused, device has to be reallocated
|
||||
- integrate this with the "keep backlog of devices currently in use"
|
||||
|
||||
|
||||
== Daemon ==
|
||||
|
@ -91,40 +113,15 @@ Stuff to do before 0.7.2 release:
|
|||
* improve output in daemon mode, when --quiet is not given print the
|
||||
number of allocated controller slots
|
||||
|
||||
* check how daemon reacts on suspend
|
||||
- suspending the computer leads to LIBUSB_ERROR_IO, unplugging the
|
||||
controller leads to LIBUSB_ERROR_OTHER
|
||||
- errno is set to EBUSY
|
||||
- the device handle can't be reused, device has to be reallocated
|
||||
- integrate this with the "keep backlog of devices currently in use"
|
||||
|
||||
* get rid of all std::cout stuff when using detached daemon, redirect
|
||||
log output to a file, syslog or somewhere else:
|
||||
|
||||
--silent: stops event output
|
||||
--quiet: stops all stdout output (automatically used when --detach is given)
|
||||
--quiet: stops all stdout output (automatically used when --detach is given, except for errors)
|
||||
--verbose: print info level log output
|
||||
--debug: print debug level log output
|
||||
|
||||
|
||||
== Unsolved/WontFix ==
|
||||
|
||||
* after every thread cleanup, do an enumeration over all USB devices,
|
||||
find those not currently used by a Slot and recreate them, this
|
||||
should fix resume issues, this would also fix the issue with
|
||||
ignoring controllers when all slots are full
|
||||
|
||||
-> bad idea, as it would let unused controllers slip into the free
|
||||
slots, could lead to unexpected behaviour
|
||||
|
||||
* allow multiple controllers in non-daemon mode
|
||||
-> not a good idea, complicates stuff and duplicates code
|
||||
|
||||
* remember controllers that couldn't be used when all slots where full
|
||||
and use them when a slot got free -> discard, bad idea, as it
|
||||
results in confusing behaviour
|
||||
|
||||
|
||||
== D-Bus ==
|
||||
|
||||
* interface for next release:
|
||||
|
@ -132,6 +129,15 @@ Stuff to do before 0.7.2 release:
|
|||
Daemon/GetControllerSlotCount -> INT // do we need those or can
|
||||
Daemon/GetControllerCount -> INT // directories be browsed?
|
||||
|
||||
== Other ==
|
||||
|
||||
* document that Xbox360 wireless controller shuts down at 15min
|
||||
|
||||
* give proper exit code when no controller is found
|
||||
|
||||
* sort options a bit more between global ones, slot local ones and
|
||||
config local ones
|
||||
|
||||
* in INI files should allow:
|
||||
|
||||
[xboxdrv]
|
||||
|
|
|
@ -50,19 +50,23 @@ USBController::USBController(libusb_device* dev) :
|
|||
% static_cast<int>(desc.idProduct)).str();
|
||||
|
||||
char buf[1024];
|
||||
ret = libusb_get_string_descriptor_ascii(m_handle, desc.iManufacturer,
|
||||
reinterpret_cast<unsigned char*>(buf), sizeof(buf));
|
||||
if (ret == LIBUSB_SUCCESS)
|
||||
{
|
||||
m_name = buf;
|
||||
int len;
|
||||
if (false)
|
||||
{ // FIXME: do we need the manufacturer name?
|
||||
len = libusb_get_string_descriptor_ascii(m_handle, desc.iManufacturer,
|
||||
reinterpret_cast<unsigned char*>(buf), sizeof(buf));
|
||||
if (len > 0)
|
||||
{
|
||||
m_name.append(buf, len);
|
||||
m_name.append(" ");
|
||||
}
|
||||
}
|
||||
|
||||
ret = libusb_get_string_descriptor_ascii(m_handle, desc.iProduct,
|
||||
len = libusb_get_string_descriptor_ascii(m_handle, desc.iProduct,
|
||||
reinterpret_cast<unsigned char*>(buf), sizeof(buf));
|
||||
if (ret == LIBUSB_SUCCESS)
|
||||
if (len > 0)
|
||||
{
|
||||
m_name += " ";
|
||||
m_name += buf;
|
||||
m_name.append(buf, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -875,39 +875,31 @@ XboxdrvDaemon::status()
|
|||
{
|
||||
std::ostringstream out;
|
||||
|
||||
out << boost::format("SLOT STATUS CONFIG USBID USBPATH NAME\n");
|
||||
out << boost::format("SLOT CFG NCFG USBID USBPATH NAME\n");
|
||||
for(ControllerSlots::iterator i = m_controller_slots.begin(); i != m_controller_slots.end(); ++i)
|
||||
{
|
||||
if ((*i)->get_thread())
|
||||
{
|
||||
int config_count = -1;
|
||||
int current_config = -1;
|
||||
|
||||
if (UInputMessageProcessor* msg_proc
|
||||
= dynamic_cast<UInputMessageProcessor*>((*i)->get_thread()->get_message_proc()))
|
||||
{
|
||||
current_config = msg_proc->get_config()->get_current_config();
|
||||
config_count = msg_proc->get_config()->config_count();
|
||||
}
|
||||
|
||||
out << boost::format("%4d %6s %3d/%-2d %5s %7s %s\n")
|
||||
out << boost::format("%4d %3d %4d %5s %7s %s\n")
|
||||
% (i - m_controller_slots.begin())
|
||||
% " ok "
|
||||
% (current_config+1) % config_count
|
||||
% (*i)->get_config()->get_current_config()
|
||||
% (*i)->get_config()->config_count()
|
||||
% (*i)->get_thread()->get_usbid()
|
||||
% (*i)->get_thread()->get_usbpath()
|
||||
% (*i)->get_thread()->get_name();
|
||||
}
|
||||
else
|
||||
{
|
||||
out << boost::format("%4d empty\n")
|
||||
% (i - m_controller_slots.begin());
|
||||
out << boost::format("%4d %3d %4d - -\n")
|
||||
% (i - m_controller_slots.begin())
|
||||
% (*i)->get_config()->get_current_config()
|
||||
% (*i)->get_config()->config_count();
|
||||
}
|
||||
}
|
||||
|
||||
for(Threads::iterator i = m_inactive_threads.begin(); i != m_inactive_threads.end(); ++i)
|
||||
{
|
||||
out << boost::format(" - %5s %7s %s\n")
|
||||
out << boost::format(" - %5s %7s %s\n")
|
||||
% (*i)->get_usbid()
|
||||
% (*i)->get_usbpath()
|
||||
% (*i)->get_name();
|
||||
|
|
Loading…
Add table
Reference in a new issue