#include #include #include #include #include #include void usage() { printf("cmixer: vol|pcm digit\n"); } int get_value(int val) { if(val > 100){ val = 100; } return ((val&0xff)<<8)|(val&0xff); } int main(int argc, char **argv) { int mix; int vol; int stats = -1; mix = open("/dev/mixer", O_WRONLY); if (argc == 1){ usage(); ioctl(mix, MIXER_READ(SOUND_MIXER_VOLUME), &vol); printf("vol %d:%d\n", vol&0xff, (vol&0xff00)>>8); ioctl(mix, MIXER_READ(SOUND_MIXER_PCM), &vol); printf("pcm %d:%d\n", vol&0xff, (vol&0xff00)>>8); stats = 0; }else if (argc > 2){ if(strcmp(argv[1], "pcm") == 0){ vol = get_value(atoi(argv[2])); ioctl(mix, MIXER_WRITE(SOUND_MIXER_PCM), &vol); stats = 0; }else if(strcmp(argv[1], "vol") == 0){ vol = get_value(atoi(argv[2])); ioctl(mix, MIXER_WRITE(SOUND_MIXER_VOLUME), &vol); stats = 0; } } if(stats < 0){ usage(); } }