Switch to using the settings table for current volume instead of /tmp/curvol

This commit is contained in:
Junior 2019-07-02 08:49:32 -04:00
parent 81a9e1e37e
commit 127b8b32f4
2 changed files with 36 additions and 9 deletions

View File

@ -5,17 +5,28 @@ function killPlayingSong() {
}
function setSystemVolume($newvol = null) {
global $globaldbh;
if ( is_null($newvol) ) return false;
system("HOME=/home/web && /usr/bin/amixer -q sset Master " . $newvol);
file_put_contents("/tmp/curvol", $newvol);
$query = "UPDATE " . SETTINGSTABLE . " SET value=:value WHERE parameter='CURVOLUME'";
$fields = array();
$fields[':value'] = $newvol;
$sth = $globaldbh->prepare($query);
$sth->execute($fields);
return true;
}
function getSystemVolume() {
$curvol = file_get_contents("/tmp/curvol");
//$curvol = trim(shell_exec("HOME=/home/web && /usr/bin/amixer sget Master | grep \"Front Left:\" | awk '{print $4}'"));
global $globaldbh;
$query = "SELECT value FROM " . SETTINGSTABLE . " WHERE parameter='CURVOLUME'";
$sth = $globaldbh->prepare($query);
$sth->execute();
if ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
$curvol = $row['value'];
} else {
$curvol = '0';
}
return $curvol;
}
?>

View File

@ -1,9 +1,17 @@
#!/usr/bin/perl
use Time::HiRes qw(usleep);
use DBI;
use DBD::mysql;
use Config::INI::Reader;
sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
$maxvolume = 32768;
my $confcontents = Config::INI::Reader->read_file('/etc/homeaudio.ini');
my $Config = $confcontents->{_};
$dsn = "DBI:mysql:" . $Config->{DBNAME} . ":" . $Config->{DBHOST};
$dbh = DBI->connect($dsn, $Config->{DBUSER}, $Config->{DBPASS}, {RaiseError=>1});
if ( $ARGV[0] eq "-show" ) {
$showmute = 1;
@ -13,8 +21,16 @@ if ( $ARGV[0] eq "-show" ) {
$sound = `/usr/bin/amixer sget Master`;
$mute = trim(`/usr/bin/amixer sget Master | grep "Front Left:" | awk '{print \$6}'`);
$curvol = int(`cat /tmp/curvol`);
$stepval = int($maxvolume * 0.1);
$sth = $dbh->prepare("SELECT value FROM settings WHERE parameter='CURVOLUME'");
$sth->execute();
if ( $sth->rows > 0 ) {
@result = $sth->fetchrow_array();
$curvol = $result[0];
} else {
$curvol = 0;
}
$sth->finish();
$stepval = int($curvol * 0.1);
@mixer = split(/\n/, $sound);
#if ( index($mixer[@mixer-1], "[on]") > 0 ) {
if ( $mute eq "[on]" ) {