# HG changeset patch # User Bradley Conroy # Date 1406998170 18000 # Node ID b513c9c64c712f11ef8885152338efeddeaba4bf # Parent dd336488a69b479286ca8279091b9c68c262e7e0 mix.c - A very basic mixer. diff -r dd336488a69b -r b513c9c64c71 toys/pending/mix.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toys/pending/mix.c Sat Aug 02 11:49:30 2014 -0500 @@ -0,0 +1,64 @@ +/* mix.c - A very basic mixer. + * + * Copyright 2014 Brad Conroy, dedicated to the Public Domain. + * + +USE_MIX(NEWTOY(mix, "m:d:l#r#", TOYFLAG_USR|TOYFLAG_BIN)) +config MIX + bool "mix" + default n + help + usage: mix [-m mixer] [-d device] [-l level / left level] [-r right level] + + Lists/sets mixer devices/levels. +*/ + +#define FOR_mix +#include +#include "toys.h" + + +GLOBALS( + int right; + int level; + char *device; + char *mixer; +) + +void mix_main(void) +{ + const char *devices[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES; + char *mixer_name=(toys.optflags & FLAG_m)?TT.mixer:"/dev/mixer"; + int i, mask, device=-1, level, + mixer=xopen(mixer_name, O_RDWR|O_NONBLOCK); + + xioctl(mixer, SOUND_MIXER_READ_DEVMASK,&mask); + + if (!(toys.optflags & FLAG_d)){ + for (i = 0; i < SOUND_MIXER_NRDEVICES; ++i) + if (1<>8, level & 0xFF); + else printf("%s:%s = %d\n",mixer_name, devices[device], level); + return; + } + + level=TT.level; + if (!(toys.optflags & FLAG_r)) level = TT.right | (level<<8); + + xioctl(mixer, MIXER_WRITE(device),&level); + close(mixer); +}