[Tech] Informazioni dal Sistema Operativo

Valerio Montagnani tech@vmontagnani.it
Mer 1 Set 2004 16:33:34 CEST


On Wed, 1 Sep 2004 15:54:04 +0200 (CEST)
ME wrote:


> Noooooo!!!! NON basta!!!! Se l'utente ha attivo esd perché sta facendo
> girare GNOME, non ti serve ad una cippa sapere se usa OSS o alsa,
> perchéil device è loccato già da esd! e soprattutto, è indifferente
> che moduli abbia, perché devi comunque usare esd per accedere al
> device!
> 
> E la stessa cosa vale se sta facendo girare KDE e c'è arts attivo!
> 

Non ho a che fare con interfacce grafiche. I programmi girano su server
e funzionano a linea di comando.
Ti faccio un esempio.

Sull'autostrada ci sono dei sensori acustici che misurano il traffico.
Il software acquisisce il segnale tramite scheda audio di un server
dedicato.
L'acquisizione avviene tramite apertura (a intervalli regolari) del
dispositivo/etc/dsp con la chiamata 

fd=open("/dev/dsp",O_RDONLY); 
e le operazioni di impostazione di ioctl(fd, SOUND_PCM_SETFMT, &arg)
(per farti un'esempio) e tutto quello che concerne l'impostazione dei
parametri ecc...

SOUND_PCM_SETFMT è una macro che setta il dsp in base alla variabile
arg. Se arg= FORMAT e FORMAT è per esempio AFMT_S16_LE allora il dsp
verrà impostato in modo da formattare i dati secondo lo standard Little
Endia a 16 bit (SIGNED).

Questo con le librerie oss.

la stessa cosa con Alsa si fa così:

snd_pcm_open (&play_had, argv[1], SND_PCM_STREM_PLABACK , 0)
snd_pcm_hw_params_set_format (play_hand, hw_par, SND_PCM_FORMAT_S16_LE);

Trasferito il software di acquisizione sui server (che non conosco a
priori), una routine deve leggere ciò che hanno dentro e usare la
chiamata oss se hanno quei driver, altrimenti quelle alsa.

Nessun utente lavora su quei server. 
Per questo ti parlavo di un autodetect.

Ciao, Vale



Maggiori informazioni sulla lista flug-tech