kopia lustrzana https://github.com/craigerl/digipi
Merge 6d345b5d98
into 0801d552b0
commit
a9b94c8b92
|
@ -8,7 +8,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Get all the available controls
|
// Get all the available controls
|
||||||
$output = shell_exec("sudo amixer scontrols");
|
$output = shell_exec("sudo amixer -M scontrols");
|
||||||
preg_match_all('/\'.*\'/', $output, $scontrols);
|
preg_match_all('/\'.*\'/', $output, $scontrols);
|
||||||
|
|
||||||
// Handle POST
|
// Handle POST
|
||||||
|
@ -20,15 +20,19 @@ if (isset($_POST["audio"])) {
|
||||||
$phpname = str_replace(" ", "_", $name);
|
$phpname = str_replace(" ", "_", $name);
|
||||||
$plevel = $_POST["pl$phpname"];
|
$plevel = $_POST["pl$phpname"];
|
||||||
$clevel = $_POST["cl$phpname"];
|
$clevel = $_POST["cl$phpname"];
|
||||||
|
$eselect = $_POST["e$phpname"];
|
||||||
$mute = 'mute';
|
$mute = 'mute';
|
||||||
$cap = 'nocap';
|
$cap = 'nocap';
|
||||||
|
|
||||||
if($_POST["ps$phpname"] == 'on')
|
if($_POST["ps$phpname"] == 'on')
|
||||||
$mute = 'unmute';
|
$mute = 'unmute';
|
||||||
if($_POST["cs$phpname"] == 'on')
|
if($_POST["cs$phpname"] == 'on')
|
||||||
$cap = 'cap';
|
$cap = 'cap';
|
||||||
|
|
||||||
shell_exec("sudo amixer set $scontrol $mute playback $plevel% capture $clevel% $cap");
|
if($eselect)
|
||||||
|
shell_exec("sudo amixer -M set $scontrol $eselect");
|
||||||
|
else
|
||||||
|
shell_exec("sudo amixer -M set $scontrol $mute playback $plevel% capture $clevel% $cap");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +46,7 @@ foreach ($scontrols[0] as $scontrol) {
|
||||||
$name = substr($scontrol, 1, -1);
|
$name = substr($scontrol, 1, -1);
|
||||||
|
|
||||||
// Get the current control settings and capabilties
|
// Get the current control settings and capabilties
|
||||||
$output = shell_exec("sudo amixer get $scontrol");
|
$output = shell_exec("sudo amixer -M get $scontrol");
|
||||||
|
|
||||||
$checked = 0;
|
$checked = 0;
|
||||||
foreach(preg_split("/((\r?\n)|(\r\n?))/", $output) as $line) {
|
foreach(preg_split("/((\r?\n)|(\r\n?))/", $output) as $line) {
|
||||||
|
@ -51,8 +55,6 @@ foreach ($scontrols[0] as $scontrol) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preg_match_all('/Capabilities:.*pvolume/', $output)) {
|
if (preg_match_all('/Capabilities:.*pvolume/', $output)) {
|
||||||
//$level = $level_match[1];
|
|
||||||
|
|
||||||
// Grab the first level. Not supporting stereo.
|
// Grab the first level. Not supporting stereo.
|
||||||
preg_match_all('/Playback [0-9]+ \[([0-9]+)%\]/', $output, $levels);
|
preg_match_all('/Playback [0-9]+ \[([0-9]+)%\]/', $output, $levels);
|
||||||
$level = $levels[1][0];
|
$level = $levels[1][0];
|
||||||
|
@ -67,6 +69,8 @@ foreach ($scontrols[0] as $scontrol) {
|
||||||
echo " checked";
|
echo " checked";
|
||||||
echo "></td>";
|
echo "></td>";
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
echo "<td></td>";
|
||||||
echo "</tr>";
|
echo "</tr>";
|
||||||
}
|
}
|
||||||
elseif (preg_match_all('/Capabilities:.*pswitch/', $output)) {
|
elseif (preg_match_all('/Capabilities:.*pswitch/', $output)) {
|
||||||
|
@ -79,6 +83,25 @@ foreach ($scontrols[0] as $scontrol) {
|
||||||
echo "></td>";
|
echo "></td>";
|
||||||
echo "</tr>";
|
echo "</tr>";
|
||||||
}
|
}
|
||||||
|
elseif (preg_match_all('/Capabilities:.*enum/', $output)) {
|
||||||
|
preg_match_all('/Items: (.*)/', $output, $sitems);
|
||||||
|
$items = preg_split("/('[^']*')|\h+/", $sitems[1][0], -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
|
||||||
|
preg_match_all('/Item0: (.*)/', $output, $mitem0);
|
||||||
|
$item0 = $mitem0[1][0];
|
||||||
|
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td>$name</td><td></td><td></td>";
|
||||||
|
echo "<td><select name='e$name'>";
|
||||||
|
foreach($items as $item) {
|
||||||
|
$itemname = substr($item, 1, -1);
|
||||||
|
echo '<option value="'.$item.'"';
|
||||||
|
if($item0 == $item)
|
||||||
|
echo 'selected';
|
||||||
|
echo '>'.$itemname.'</option>';
|
||||||
|
}
|
||||||
|
echo "</select></td>";
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the Capture sliders
|
// Create the Capture sliders
|
||||||
|
@ -88,7 +111,7 @@ foreach ($scontrols[0] as $scontrol) {
|
||||||
$name = substr($scontrol, 1, -1);
|
$name = substr($scontrol, 1, -1);
|
||||||
|
|
||||||
// Get the current control settings and capabilties
|
// Get the current control settings and capabilties
|
||||||
$output = shell_exec("sudo amixer get $scontrol");
|
$output = shell_exec("sudo amixer -M get $scontrol");
|
||||||
|
|
||||||
$checked = 0;
|
$checked = 0;
|
||||||
foreach(preg_split("/((\r?\n)|(\r\n?))/", $output) as $line) {
|
foreach(preg_split("/((\r?\n)|(\r\n?))/", $output) as $line) {
|
||||||
|
@ -96,12 +119,17 @@ foreach ($scontrols[0] as $scontrol) {
|
||||||
$checked = 1;
|
$checked = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preg_match_all('/Capabilities:.*cvolume/', $output)) {
|
if (preg_match_all('/Capabilities:.*[c ]volume/', $output)) {
|
||||||
//$level = $level_match[1];
|
$level = 0;
|
||||||
|
|
||||||
// Grab the first level. Not supporting stereo.
|
// Grab the first level. Not supporting stereo.
|
||||||
preg_match_all('/Capture [0-9]+ \[([0-9]+)%\]/', $output, $levels);
|
if(preg_match_all('/Capture [0-9]+ \[([0-9]+)%\]/', $output, $levels))
|
||||||
$level = $levels[1][0];
|
$level = $levels[1][0];
|
||||||
|
else {
|
||||||
|
// Handle generic volume control as capture device
|
||||||
|
preg_match_all('/ [0-9]+ \[([0-9]+)%\]/', $output, $levels);
|
||||||
|
$level = $levels[1][0];
|
||||||
|
}
|
||||||
|
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
echo "<td>$name</td>";
|
echo "<td>$name</td>";
|
||||||
|
@ -113,10 +141,12 @@ foreach ($scontrols[0] as $scontrol) {
|
||||||
echo " checked";
|
echo " checked";
|
||||||
echo "></td>";
|
echo "></td>";
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
echo "<td></td>";
|
||||||
echo "</tr>";
|
echo "</tr>";
|
||||||
}
|
}
|
||||||
elseif (preg_match_all('/Capabilities:.*cswitch/', $output)) {
|
elseif (preg_match_all('/Capabilities:.*cswitch/', $output)) {
|
||||||
$checked = preg_match_all('/Playback.*\[on\]/', $output);
|
$checked = preg_match_all('/Capture.*\[on\]/', $output);
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
echo "<td>$name</td><td></td><td></td>";
|
echo "<td>$name</td><td></td><td></td>";
|
||||||
echo "<td><input type='checkbox' name='cs$name'";
|
echo "<td><input type='checkbox' name='cs$name'";
|
||||||
|
|
Ładowanie…
Reference in New Issue