first usable version of kernel and commands
After an year of hard work, this is a first "usable" version of Jehanne.
This commit is contained in:
93
sys/include/usb/audio.h
Normal file
93
sys/include/usb/audio.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* 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,
|
||||
|
||||
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 uint8_t 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, int32_t *value);
|
||||
int getspecialcontrol(int rec, int ctl, int req, int32_t *value);
|
||||
int getcontrol(int rec, char *name, int32_t *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);
|
Reference in New Issue
Block a user