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

Reply via email to