[tuxdroid-svn] r372 - in daemon/trunk: . libs
Status: Beta
Brought to you by:
ks156
From: neimad <c2m...@c2...> - 2007-06-13 19:47:43
|
Author: neimad Date: 2007-06-13 21:47:05 +0200 (Wed, 13 Jun 2007) New Revision: 372 Modified: daemon/trunk/libs/USBDaemon_usb_enum.c daemon/trunk/libs/USBDaemon_usb_enum.h daemon/trunk/main.c Log: * Added missing release and closing of USB device/interface: this is done in usb_release_TuxDroid(). * Since I found that the name usb_release_TuxDroid() didn't match too well usb_init_TuxDroid(), I used the metaphor of capturing and releasing a wild animal and renamed the latter usb_capture_TuxDroid() ;-) Modified: daemon/trunk/libs/USBDaemon_usb_enum.c =================================================================== --- daemon/trunk/libs/USBDaemon_usb_enum.c 2007-06-12 05:21:55 UTC (rev 371) +++ daemon/trunk/libs/USBDaemon_usb_enum.c 2007-06-13 19:47:05 UTC (rev 372) @@ -34,8 +34,8 @@ #include "USBDaemon_pidfile.h" /*_____________________ V A R I A B L E S __________________________________*/ -usb_dev_handle *tux_handle; -struct usb_device *tux_device; +usb_dev_handle *tux_handle = NULL; +struct usb_device *tux_device = NULL; usb_connection_status_t usb_connection_status = USB_DISCONNECTED; /*_____________________ F U N C T I O N S __________________________________*/ @@ -97,13 +97,34 @@ return tux_hdl; } -/************************************************************************ */ -/* usb_init_TuxDroid() */ +/** + * Close a Tux droid previously opened with usb_open_TuxDroid(). + */ +static void usb_close_TuxDroid(usb_dev_handle *tux_hdl) +{ + int err1, err2; -/************************************************************************ */ -int usb_init_TuxDroid(void) + err1 = usb_release_interface(tux_hdl, TUX_INTERFACE); + if (err1) + log_warning("failed releasing USB interface: %s (%d)", + strerror(errno), errno); + + err2 = usb_close(tux_hdl); + if (err1) + log_warning("failed closing USB device: %s (%d)", + strerror(errno), errno); +} + +/** + * Capture a Tux droid. + * + * \return 1 if successful, 0 otherwise + */ +int usb_capture_TuxDroid(void) { + log_debug("Capturing USB device"); + /* Find Tux */ do { @@ -147,3 +168,17 @@ return 1; } + +/** + * Release a Tux droid previously captured. + */ +void usb_release_TuxDroid(void) +{ + log_debug("Releasing USB device"); + + if (tux_handle != NULL) + usb_close_TuxDroid(tux_handle); + + tux_handle = NULL; + tux_device = NULL; +} Modified: daemon/trunk/libs/USBDaemon_usb_enum.h =================================================================== --- daemon/trunk/libs/USBDaemon_usb_enum.h 2007-06-12 05:21:55 UTC (rev 371) +++ daemon/trunk/libs/USBDaemon_usb_enum.h 2007-06-13 19:47:05 UTC (rev 372) @@ -75,6 +75,7 @@ /*_____________________ F U N C T I O N S __________________________________*/ extern struct usb_device *usb_find_TuxDroid(void); -extern int usb_init_TuxDroid(void); +extern int usb_capture_TuxDroid(void); +extern void usb_release_TuxDroid(void); #endif Modified: daemon/trunk/main.c =================================================================== --- daemon/trunk/main.c 2007-06-12 05:21:55 UTC (rev 371) +++ daemon/trunk/main.c 2007-06-13 19:47:05 UTC (rev 372) @@ -183,6 +183,8 @@ raise_privileges(); + usb_release_TuxDroid(); + if (daemonized && remove_pid()) log_error("Could not delete PID file"); @@ -390,8 +392,7 @@ usb_init(); #endif - /* open USB handler and setuid nobody */ - if (!usb_init_TuxDroid()) + if (!usb_capture_TuxDroid()) exit(1); if (drop_privileges() < 0) |