123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /*
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
- enum {
- master_chan = 0x00,
- Speed_control = 0x00,
- /* Items below are defined by USB standard: */
- Mute_control = 0x01,
- Volume_control = 0x02,
- Bass_control = 0x03,
- Mid_control = 0x04,
- Treble_control = 0x05,
- Equalizer_control = 0x06,
- Agc_control = 0x07,
- Delay_control = 0x08,
- Bassboost_control = 0x09,
- Loudness_control = 0x0a,
- /* Items below are defined by implementation: */
- Channel_control = 0x0b,
- Resolution_control = 0x0c,
- Ncontrol,
- //Selector_control = 0x0d, // Currently disabled
- sampling_freq_control = 0x01,
- Audiocsp = 0x000101, /* audio.control.0 */
- AUDIO_INTERFACE = 0x24,
- AUDIO_ENDPOINT = 0x25,
- };
- #define AS_GENERAL 1
- #define FORMAT_TYPE 2
- #define FORMAT_SPECIFIC 3
- #define PCM 1
- #define PCM8 2
- #define IEEE_FLOAT 3
- #define ALAW 4
- #define MULAW 5
- #define SAMPLING_FREQ_CONTROL 0x01
- typedef struct Audioalt Audioalt;
- struct Audioalt {
- int nchan;
- int res;
- int subframesize;
- int minfreq, maxfreq; /* continuous freqs */
- int freqs[8]; /* discrete freqs */
- int caps; /* see below for meanings */
- };
- enum {
- /* Audioalt->caps bits */
- has_setspeed = 0x1, /* has a speed_set command */
- has_pitchset = 0x2, /* has a pitch_set command */
- has_contfreq = 0x4, /* frequency continuously variable */
- has_discfreq = 0x8, /* discrete set of frequencies */
- onefreq = 0x10, /* only one frequency */
- maxpkt_only = 0x80, /* packets must be padded to max size */
- };
- typedef u8 byte;
- extern int setrec;
- extern int verbose;
- extern int defaultspeed[2];
- extern Dev *ad;
- extern Dev *buttondev;
- extern Channel *controlchan;
- extern Dev *epdev[2];
- void audio_interface(Dev *d, Desc *dd);
- void setalt(Dev *d, int endpt, int value);
- int getalt(Dev *d, int endpt);
- int setspeed(int rec, int speed);
- int setcontrol(int rec, char *name, i32 *value);
- int getspecialcontrol(int rec, int ctl, int req, i32 *value);
- int getcontrol(int rec, char *name, i32 *value);
- int findalt(int rec, int nchan, int res, int speed);
- void getcontrols(void);
- void serve(void *);
- int nbchanprint(Channel *c, char *fmt, ...);
- int Aconv(Fmt *fp);
|