At Mon, 21 Jul 2003 19:03:29 +0100, James Courtier-Dutton wrote: > > Takashi Iwai wrote: > > At Mon, 21 Jul 2003 00:40:32 +0100, > > James Courtier-Dutton wrote: > > > >>Hi, > >> > >>Is there any way to tell if a USB sound card has been disconnected or not? > > > > > > IIRC, this is not notified to the application. > > the app simply would get an error at the further access. > > it sounds not bad to notify the status change to the application by > > some way. > > perhaps we can add a new control element for this purpose. > > and after disconnection, only this element survives to communicate > > with the application... > > > So, the app gets an error. Which error?
well, when the disconnection happens, the file ops table is replaced with the dummy one, which contains only the release and the poll callbacks. i'm not sure which errors are returned for the null entries. it's defined in the kernel vfs. IIRC, EINVAL for read/write and ENOTTY for ioctl. so, this is not a good way as the identifer. > How do I test to see if the error is due to a non-existant device, or > just underrun/overrun etc. > > I would be happy if there was a reliable way to tell. > This would only give us the "disconnect" event. > How would one know if the device was connected again? > Maybe a tidy way to do this would be a new alsa events device. > So, we open the "events" device, and it can then inform us of hardware > changes. I know that USB is the only form of device that > connects/disconnects via a user action at the moment, but I am sure > others will come along. E.g. Bluetooth etc. > For USB, usbaudio.c definitely gets informed about usb device > removal/addition, how can we get that message passed up to the application? in the current scheme, reconnection is difficult, i must say. since the device instance is kept until all the device files of the disconnected device are released, if you connect it again, the driver will try to create another instance. so, eventually you will have two different instances... so the app must close the device anyway when it's disconnected, and reopen it somehow, then resume the status and restart. about the connection notification: it's a good question. ALSA has no global control device (except for the sequencer). all device files are based on the card. of course, we can create a new device, but is there any other demand for such a global control? Takashi ------------------------------------------------------- This SF.net email is sponsored by: VM Ware With VMware you can run multiple operating systems on a single machine. WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the same time. Free trial click here: http://www.vmware.com/wl/offer/345/0 _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel