/* sound volume get/set code based on code from here: https://stackoverflow.com/a/7661176/5737011 https://stackoverflow.com/questions/7657624/get-master-sound-volume-in-c-in-linux/7661176#7661176 */ #include #include #include #include #include #define OSS_DEV "/dev/dsp" extern int oss_volume_get(unsigned char * r) { int fd, err; long v; if((fd=open(OSS_DEV, O_WRONLY))<0) return -1; if(ioctl(fd, SOUND_MIXER_READ_VOLUME, &v)<0) { err=errno; close(fd); errno=err; return -1; } close(fd); r[0] = v&255; r[1] = (v>>8)&255; return 0; } extern int oss_volume_set(unsigned char a, unsigned char b) { int fd, err; long v; if(a>100) a=100; if(b>100) b=100; v = a | (((unsigned)b) << 8); if((fd=open(OSS_DEV, O_WRONLY))<0) return -1; if(ioctl(fd, SOUND_MIXER_WRITE_VOLUME, &v)<0) { err=errno; close(fd); errno=err; return -1; } close(fd); return 0; }