Ich hab das Installationsscript nicht weiter gepflegt. Hier mal meine letzten Dateien, welche nach wie vor noch funktionieren.
PioneerAVR.php
<?
include "PioneerAVR_Const.ips.php";
include "PioneerAVR_Vars.ips.php";
include "PioneerAVR_Inet.ips.php"; // Internetradio Funktionen
// Name des variablenprofils für den funtionsschalter
$VAR_PROFILE_FUNCTION="AV_Function";
// ab hier braucht nichts geändert zu werden
$INET_RADIO_HIDDEN=true;
$TUNER_RADIO_HIDDEN=true;
// aufruf per register variable, script oder webfront?
if($IPS_SENDER == "RegisterVariable") {
// daten aus dem cutter aufruf registervariable
$data=$IPS_VALUE;
//echo $data ;
// lange zeile? dann war es die display anzeige
if (strlen($data) ==32 )
{
// display
$display = hex2str($data);
//echo $display;
// display variable updaten
SetValueString(ID_DISPLAY, $display);
// solange daten kommen ist das gerät an. aber dann jedesmal die power variable updaten und prüfen ist zu langsam
}
else
{
// befehl bzw. antwort parsen
//echo $data ;
// funktionen gibt es mit drei und zwei zeichen
$lv_fkt2 = substr($data,0,2); // funktion ersten 2 zeichen
$lv_val2 = substr($data,2,4); // value die letzten zeichen
$lv_fkt3 = substr($data,0,3); // funktion ersten 3 zeichen
$lv_val3 = substr($data,3,3); // value die letzten zeichen
// lautstärke
if ($lv_fkt3=="VOL")
{
// umrechnung des wertes in dB quelle: pioneer javascript
// echo (($lv_val3-161)*0.5)."dB";
// verstärker anzeige in dB. Rückgabe aber als Integer einfach als Prozent übernehmen
// nur bei veränderung aktualisieren
if (GetValue(ID_VOL) != $lv_val3)
{
SetValue(ID_VOL,$lv_val3);
}
}
// mute
if ($lv_fkt3=="MUT")
{
// mute ändern nur wenn die variable nicht aktuell ist
if($lv_val3=="1" && GetValue(ID_MUTE)==true)
{
SetValue(ID_MUTE,false); // mute off
}
if($lv_val3=="0" && GetValue(ID_MUTE)==false)
{
SetValue(ID_MUTE,true); // mute on
}
}
// funktion (eingänge)
if ($lv_fkt2=="FN")
{
// funktion ändern nur wenn die variable nicht aktuell ist
if (GetValue(ID_FUNCTION) != $lv_val2)
{
// liste der gültigen funktionen
if ($lv_val2==26 || $lv_val2==25 || $lv_val2==21 || $lv_val2==20 || $lv_val2==17 || $lv_val2==2)
{
SetValue(ID_FUNCTION,$lv_val2); // funktion setzen
echo"set ".$lv_fkt2." to ".$lv_val2.$function_list[0];
// beschriftung des feldes ändern wieder auf default
IPS_SetVariableProfileAssociation($VAR_PROFILE_FUNCTION,0,$function_list[0],"",-1);
}
else
{
echo "integer".(integer)$lv_val2;
SetValue(ID_FUNCTION,0); // funktion =0 also diverses für die keine schaltfläche hinterlegt sind. bzw nicht gebraucht werden.
// beschriftung des feldes ändern
IPS_SetVariableProfileAssociation($VAR_PROFILE_FUNCTION,0,$function_list[(integer)$lv_val2],"",-1);
}
}
// wenn internet radio und die optionen noch nicht eingeblendet dann einblenden.
if ($lv_val2==26 && $INET_RADIO_HIDDEN==true)
{
// inet radion steuerung einblenden. methode führt refresh automstisch aus
InetRadioOn();
}
else
{
// inet radion steuerung einblenden. methode führt refresh automstisch aus
InetRadioOff();
}
// wenn tuner radio und die optionen noch nicht eingeblendet dann einblenden.
if ($lv_val2==02 && $TUNER_RADIO_HIDDEN==true)
{
// tuner radion steuerung einblenden. methode führt refresh automstisch aus
TunerRadioOn();
}
else
{
// tuner radion steuerung einblenden. methode führt refresh automstisch aus
TunerRadioOff();
}
}
// listening mode
if ($lv_fkt2=="LM")
{
echo "Listening Mode".$lv_val2;
SetValue(ID_LISTENING_MODE,$listening[$lv_val2]); //
}
// key lock
if ($lv_fkt3=="PKL")
{
//echo "Key Lock".$lv_val3;
SetValue(ID_KEYLOCK,$lv_val3); //
}
// request input name
if ($lv_fkt3=="RGB")
{
echo "request input name".$lv_val3;
//SetValue(ID_KEYLOCK,$lv_val3); //
}
}
}
if($IPS_SENDER == "WebFront") {
// aktion per webfront
// TODO: anpassen auf das installscript
// internetradio buttons
if ($IPS_VARIABLE==ID_INET_RADIO)
{
//echo "test ".$IPS_VALUE;
SetValue(ID_INET_RADIO,$IPS_VALUE); //
// letzten Status merken ob play oder stop
if ($IPS_VALUE<=1)
SetValue(ID_INET_RADIO_BUTTONS,$IPS_VALUE); //
if ($IPS_VALUE == 0)
{
$ret = sendCommand("20NW");
}
if ($IPS_VALUE == 1)
$ret = sendCommand("10NW");
if ($IPS_VALUE == 2)
$ret = sendCommand("12NW");
if ($IPS_VALUE == 3)
$ret = sendCommand("13NW");
if ($IPS_VALUE == 4)
$ret = sendCommand("18NW");
// da die buttons nicht dauerhaft aktiv sein können, wird einfach der wert -1 gesetzt, so
// ist keiner aktiv, aber nur bei aktionen >1
if ($IPS_VALUE>1)
SetValue(ID_INET_RADIO, GetValue(ID_INET_RADIO_BUTTONS)); //
}
// power schalter
if ($IPS_VARIABLE==ID_POWER)
{
// je nach zustand ausschalten. einschalten geht nicht über lan!
if ($IPS_VALUE == true)
{
// wenn der pioneer eingeschaltet ist und dann vom netz getrennt wird und danach wieder strom bekommt
// behält er den letzten zustand. fazit: schaltbare steckdose
// nachteil: dann ggf. einschalten über die fernbedienung nicht mehr möglich
//
// wenn auf true gewechelt, dann kein wechsel vornehmen da einschalten nicht möglich
//SetValue($ID_POWER, false);
//socket aktualisieren da unter umständen keine verbinung zustande kommt
IPS_ApplyChanges(ID_SOCKET);
}
else
{
$ret = sendCommand("PF"); /// ausschaltbefehl
SetValue(ID_POWER, $IPS_VALUE); // varaible für power off setzen
avOff(); // variablen + schalter ausblenden
}
}
// display schalter zur statusabfrage
if ($IPS_VARIABLE==ID_DISPLAY)
{
$ret = sendCommand("STS"); // Display Status abfrage, ergebnis wird nach und nach angezeigt
}
// mute schalter
if ($IPS_VARIABLE==ID_MUTE)
{
// je nach zustand ausschalten. einschalten geht nicht über lan!
if ($IPS_VALUE == true)
{
$ret = sendCommand("MO"); // mute on
SetValue(ID_MUTE, $IPS_VALUE);
}
else
{
$ret = sendCommand("MF"); // mute off
SetValue(ID_MUTE, $IPS_VALUE);
}
}
// lautstärke schalter
if ($IPS_VARIABLE==ID_VOL)
{
//echo $IPS_VALUE."VL";
if (GetValue(ID_VOL) != $IPS_VALUE )
{
// Werte von 0 bis 161(voll aufgedreht)
// so muss auch das profil der volumen variablen angelegt sein.
$ret = sendCommand($IPS_VALUE."VL"); // vol direkt setzen
SetValue(ID_VOL, $IPS_VALUE);
}
}
// funktions schalter
if ($IPS_VARIABLE==ID_FUNCTION)
{
//echo $IPS_VALUE."FN";
if (GetValue(ID_FUNCTION) != $IPS_VALUE )
{
// einstelige zahlen mit 0 voranstellen
$tmp_val = substr("0".$IPS_VALUE,-2);
$ret = sendCommand($tmp_val."FN"); // Funktion direkt setzen
// bei internetradio ein und ausblenden
if ($IPS_VALUE==26)
{
InetRadioOn();
}
if (GetValue(ID_FUNCTION)==26)
{
InetRadioOff();
}
SetValue(ID_FUNCTION, $tmp_val);
}
}
// listening mode schalter
if ($IPS_VARIABLE==ID_CHANGE_LISTENING_MODE)
{
//echo "Value ".$IPS_VALUE;
if ($IPS_VALUE=="0")
{
$ret = sendCommand("0005SR"); // auto cycle
}
else if ($IPS_VALUE=="1")
{
$ret = sendCommand("0001SR"); // STEREO cycle
}
else if ($IPS_VALUE=="2")
{
$ret = sendCommand("0010SR"); // Standard cycle
}
else if ($IPS_VALUE=="3")
{
$ret = sendCommand("0100SR"); // Adv. Surround cycle
}
// einstelige zahlen mit 0 voranstellen
//$tmp_val = substr("0".$IPS_VALUE,-2);
//$ret = sendCommand($tmp_val."FN"); // Funktion direkt setzen
SetValue(ID_CHANGE_LISTENING_MODE, $IPS_VALUE);
}
// key lock schalter
if ($IPS_VARIABLE==ID_KEYLOCK)
{
setValue(ID_KEYLOCK,$IPS_VALUE);
$ret = sendCommand($IPS_VALUE."PKL"); // key lock setzen
}
}
// zeitliche events abfragen
if($IPS_SENDER == "TimerEvent") {
// aktion per timer (hearth beat script)
// Socket prüfung funktioniert nicht. daher die ping variante
// hearthbeat für power on
if (Sys_Ping($IP_DEVICE, 1000) )
{
// gerät eingeschaltet, aber variable nicht erneut setzen wenn schon on
if (GetValue(ID_POWER)==false)
{
echo "Now ON";
SetValue(ID_POWER,true);
// prüfkommando nur beim einschalten absenden
// regelmäßige prüfung nicht notwendig da bei fernbedienungsaktionen die anworten empfangen werden
$ret = sendCommand("?V"); // welche lautstärke
$ret = sendCommand("?M"); // mute
$ret = sendCommand("?F"); // funktion
$ret = sendCommand("?L"); // listening mode
$ret = sendCommand("?PKL"); // keylock
avOn(); // variablen, schalter einblenden
}
}
else
{
// gerät ausgeschaltet, aber variable nicht erneut setzen wenn schon off
if (GetValue(ID_POWER)==true)
{
// beschriftung der funktion wieder auf default ändern
IPS_SetVariableProfileAssociation($VAR_PROFILE_FUNCTION,0,$function_list[0],"");
SetValue(ID_POWER,false);
avOff(); // variablen, schalter ausblenden
}
}
}
// funktion um die hexzeile vom reciever in ascii zu decodieren
function hex2str($hex)
{
// die ersten zeichen gehören zur funktionsart
$hex = substr($hex,4,strlen($hex) - 4);
//echo $hex;
// TODO: for schleife ist eigentlich zu langsam, gibt es was besseres?
$str="";
for($i=0;$i<strlen($hex);$i+=2)
{
$str.=chr(hexdec(substr($hex,$i,2)));
}
return $str;
}
function sendCommand($com)
{
$feedback= CSCK_SendText(ID_SOCKET, $com.chr(13));
return $feedback;
}
// av reciver on - also bedienelemente sichtbar machen
function avOn()
{
// power wurde nicht ausgeblendet
IPS_SetHidden(ID_MUTE, false);
IPS_SetHidden(ID_VOL, false);
IPS_SetHidden(ID_FUNCTION, false);
IPS_SetHidden(ID_LISTENING_MODE, false);
IPS_SetHidden(ID_DISPLAY, false);
IPS_SetHidden(ID_CHANGE_LISTENING_MODE, false);
IPS_SetHidden(ID_KEYLOCK, false);
// beim einschalten ist ggf. noch der modus internetradio aktiv gewesen. dann aktivieren damit danach das ausblenden funktioniert
if (GetValue(ID_FUNCTION) == 26)
{
// inet radion steuerung einblenden. methode führt refresh automstisch aus
InetRadioOn();
}
IPS_SetHidden(ID_TUNER_CONTROL, false);
}
// av reciver off - also bedienelemente ausblenden, dadurch kein exception handling im script
function avOff()
{
// power bleibt immer sichtbar damit bleibt es beim zusammenklappen im webfront (oder falls mal einschalten geht)
// das diplay löschen damit im ausgeschalteten zustand nicht ein alter text stehen bleibt.
SetValue(ID_DISPLAY, " "); // bei aus das diplay löschen
// andere elemente ausblenden
IPS_SetHidden(ID_MUTE, true);
IPS_SetHidden(ID_VOL, true);
IPS_SetHidden(ID_FUNCTION, true);
IPS_SetHidden(ID_LISTENING_MODE, true);
IPS_SetHidden(ID_DISPLAY, true);
IPS_SetHidden(ID_LISTENING_MODE, true);
IPS_SetHidden(ID_CHANGE_LISTENING_MODE, true);
IPS_SetHidden(ID_KEYLOCK, true);
IPS_SetHidden(ID_TUNER_CONTROL, true);
InetRadioOff();
}
// TODO: ins installscript übernehmen
function InetRadioOn()
{
$INET_RADIO_HIDDEN= false;
IPS_SetHidden(ID_INET_RADIO, false);
IPS_SetHidden(ID_INET_RADIO_BUTTONS, false);
IPS_SetHidden(ID_INET_STATION, false);
$html = ReadStationList();
setValue(ID_INET_STATION,$html);
}
function InetRadioOff()
{
$INET_RADIO_HIDDEN=true;
IPS_SetHidden(ID_INET_RADIO, true);
IPS_SetHidden(ID_INET_RADIO_BUTTONS, true);
IPS_SetHidden(ID_INET_STATION, true);
}
// TODO: ins installscript übernehmen
function TunerRadioOn()
{
$TUNER_RADIO_HIDDEN= false;
//IPS_SetHidden(ID_INET_RADIO, false);
//IPS_SetHidden(ID_INET_STATION, false);
IPS_SetHidden(ID_TUNER_CONTROL, false);
//$html = ReadStationList();
//setValue(ID_INET_STATION,$html);
}
function TunerRadioOff()
{
$TUNER_RADIO_HIDDEN=true;
//IPS_SetHidden(ID_INET_RADIO, true);
IPS_SetHidden(ID_TUNER_CONTROL, true);
//IPS_SetHidden(ID_INET_STATION, true);
}
?>
PioneerAVR_Inet.php
<?
function ReadStationList()
{
$radiostations = file_get_contents('http://192.168.0.48/InternetRadioSettingListHandler.asp');
// anfangs und endzeichen abschneiden damit besser geparst werden kann
// todo: um ein anständiges parsen kümmern ala dtd
//$mark =chr(34)."R".chr(34).":[";
//$pos = strrpos($radiostations, $mark);
//$pos2 = strripos($radiostations, "]
}");
//$cleanedList = substr($radiostations, $pos + strlen($mark), $pos2-($pos + strlen($mark)));
// die geschweiften klammern entfernen, stören später
$radiostations = str_replace("{
", "", $radiostations);
$radiostations = str_replace("},", ",", $radiostations);
$radionArray = explode(",
",$radiostations);
//print_r($radionArray);
// position über "C":
$mark_pos_c = chr(34)."C".chr(34).":";
// Name über "T":
$mark_pos_t = chr(34)."T".chr(34).":";
// URL über "U":
$mark_pos_u = chr(34)."U".chr(34).":";
// durch array laufen und die positionen suchen.
$StationList;
for ($i = 0; $i < count($radionArray); $i=$i+3) {
$zeile_1 = explode(chr(34).":",$radionArray[$i]);
$zeile_2 = explode(chr(34).":",$radionArray[$i+1]);
$zeile_3 = explode(chr(34).":",$radionArray[$i+2]);
$val_c= $zeile_1[count($zeile_1)-1];
$val_t = trim(str_replace("
","", $zeile_2[count($zeile_2)-1]),chr(34));
$val_u = trim(str_replace("
","", $zeile_3[count($zeile_3)-1]),chr(34));
$StationList[$val_c]=array($val_t,$val_u);
}
//print_r($StationList);
return AnzeigeAufbereiten($StationList);
}
// anzeige aufbereiten in eine html box
function AnzeigeAufbereiten($StationList)
{
// Anzeige aufbereiten
$str = "<table width='90%' align='center'>"; // Farbe anpassen oder style entfernen
$str .= "<tr><b></b><td><b>Nr</b></td><td><b>Station</b></td><td><b>Nr</b></td><td><b>Station</b></td><td><b></b></td><td><b></b></td><td><b></b></td></tr>";
//echo "size".sizeof($bahn->timetable);
for($i=1; $i<=sizeof($StationList) / 2; $i++)
{
$eintrag[0] = $i;
$station = $StationList[$i];
$eintrag[1] = $station[0];
$eintrag[2] = sizeof($StationList) / 2 + $i;
$station = $StationList[sizeof($StationList) / 2 + $i];
$eintrag[3] = $station[0];
$str .= "<tr>";
foreach($eintrag as $data)
$str .= '<td>'.$data.'</td>';
$str .= "</tr>";
}
$str .= "</table>";
return $str;
}
?>
PioneerAVR_Vars.php
<?
// statusvariablen des verstärkers
define ("ID_POWER", 22689 /*[EG\Wohnzimmer\AV Reciever\Power]*/);
define ("ID_DISPLAY", 23232 /*[EG\Wohnzimmer\AV Reciever\Display]*/);
define ("ID_MUTE", 50311 /*[EG\Wohnzimmer\AV Reciever\Mute]*/);
define ("ID_VOL", 37499 /*[EG\Wohnzimmer\AV Reciever\Lautstärke]*/);
define ("ID_FUNCTION", 27244 /*[EG\Wohnzimmer\AV Reciever\Funktion]*/);
define ("ID_LISTENING_MODE", 33459 /*[EG\Wohnzimmer\AV Reciever\Active Listening Mode]*/);
define ("ID_CHANGE_LISTENING_MODE", 18331 /*[EG\Wohnzimmer\AV Reciever\Listening Mode]*/);
define ("ID_INET_RADIO", 28544 /*[EG\Wohnzimmer\AV Reciever\Internet Radio Controll]*/);
define ("ID_INET_RADIO_BUTTONS", 50525 /*[EG\Wohnzimmer\AV Reciever\Internet Radio Button]*/);
define ("ID_INET_STATION", 54532 /*[EG\Wohnzimmer\AV Reciever\Internet Radio Stationen]*/);
define ("ID_KEYLOCK", 18908 /*[EG\Wohnzimmer\AV Reciever\Tastensperre]*/);
define ("ID_TUNER_CONTROL", 20834 /*[EG\Wohnzimmer\AV Reciever\Tuner Control]*/);
$IP_DEVICE="192.168.0.48";
// statusvariablen webfront und socket
define ("ID_SOCKET", 32739 /*[AV_SOCKET]*/);
define ("ID_WEBFRONT", 21641 /*[WebFront]*/);
?>
PioneerAVR_Const.php
<?
// funktionen ggf umbenenen falls diese auch im gerät umbenannt wurden
$function_list = array(
0 => "DIVERSE",
4 => "DVD",
25 => "BD",
5 => "TV/SAT",
15 => "DVR/BDR",
10 => "XBOX",
14 => "VIDEO 2",
19 => "PS3",
20 => "Apple TV",
21 => "Blueray",
17 => "iPod/USB",
1 => "CD",
97 => "CD-R/TAPE",
2 => "TUNER",
26 => "INTERNET RADIO",
33 => "ADAPTER PORT"
);
// listening modes
$listening = array(
"0001" => "STEREO",
"0002" => "F.S.SURR FOCUS",
"0003" => "F.S.SURR WIDE",
"0004" => "RETRIEVER AIR",
"0101" => "DOLBY PLIIx MOVIE",
"0102" => "DOLBY PLII MOVIE",
"0103" => "DOLBY PLIIx MUSIC",
"0104" => "DOLBY PLII MUSIC",
"0105" => "DOLBY PLIIx GAME",
"0106" => "DOLBY PLII GAME",
"0107" => "DOLBY PRO LOGIC",
"0108" => "Neo:6 CINEMA",
"0109" => "Neo:6 MUSIC",
"010a" => "XM HD Surround",
"010b" => "NEURAL SURR",
"010c" => "",
"010d" => "DOLBY PLIIz HEIGHT",
"010e" => "WIDE SURR MOV",
"010f" => "WIDE SURR MUS",
"0201" => "ACTION",
"0202" => "DRAMA",
"0203" => "SCI-FI",
"0204" => "MONO FILM",
"0205" => "ENT.SHOW",
"0206" => "EXPANDED",
"0207" => "TV SURROUND",
"0208" => "ADVANCED GAME",
"0209" => "SPORTS",
"020a" => "CLASSICAL",
"020b" => "ROCK/POP",
"020c" => "UNPLUGGED",
"020d" => "EXT.STEREO",
"020e" => "PHONES SURR",
"0301" => "DOLBY PLIIx MV +THX",
"0302" => "DOLBY PLII MV +THX",
"0303" => "DOLBY PL +THX CIN",
"0304" => "Neo:6 CIN +THX",
"0305" => "THX CINEMA",
"0306" => "DOLBY PLIIx MS +THX",
"0307" => "DOLBY PLII MS +THX",
"0308" => "DOLBY PL +THX MS",
"0309" => "Neo:6 MUS +THX",
"030a" => "THX MUSIC",
"030b" => "DOLBY PLIIx GM +THX",
"030c" => "DOLBY PLII GM +THX",
"030d" => "DOLBY PL +THX GM",
"030e" => "THX ULTRA2 GM",
"030f" => "THX SELCT2 GM",
"0310" => "THX GAMES",
"0311" => "DOLBY PLIIz +THX MV",
"0312" => "DOLBY PLIIz +THX MU",
"0313" => "DOLBY PLIIz +THX GM",
"0401" => "STEREO",
"0402" => "DOLBY PLII MOVIE",
"0403" => "DOLBY PLIIx MOVIE",
"0404" => "Neo:6 CINEMA",
"0405" => "",
"0406" => "DOLBY DIGITAL EX",
"0407" => "DOLBY PLIIx MOVIE",
"0408" => "DTS+Neo:6",
"0409" => "ES MATRIX",
"040a" => "ES DISCRETE",
"040b" => "DTS-ES 7.1",
"040c" => "XM HD Surround",
"040d" => "NEURAL SURR",
"040e" => "RETRIEVER AIR",
"0501" => "STEREO",
"0502" => "DOLBY PLII MOVIE",
"0503" => "DOLBY PLIIx MOVIE",
"0504" => "Neo:6 CINEMA",
"0505" => "",
"0506" => "DOLBY DIGITAL EX",
"0507" => "DOLBY PLIIx MOVIE",
"0508" => "DTS+Neo:6",
"0509" => "ES MATRIX",
"050a" => "ES DISCRETE",
"050b" => "DTS-ES 7.1",
"050c" => "XM HD Surround",
"050d" => "NEURAL SURR",
"050e" => "RETRIEVER AIR",
"0601" => "STEREO",
"0602" => "DOLBY PLII MOVIE",
"0603" => "DOLBY PLIIx MOVIE",
"0604" => "Neo:6 CINEMA",
"0605" => "",
"0606" => "DOLBY DIGITAL EX",
"0607" => "DOLBY PLIIx MOVIE",
"0608" => "",
"0609" => "ES MATRIX",
"060a" => "ES DISCRETE",
"060b" => "DTS-ES 7.1",
"0701" => "",
"0702" => "DOLBY PLII MOVIE",
"0703" => "DOLBY PLIIx MOVIE",
"0704" => "Neo:6 CINEMA",
"0705" => "",
"0706" => "DOLBY DIGITAL EX",
"0707" => "DOLBY PLIIx MOVIE",
"0708" => "",
"0709" => "ES MATRIX",
"070a" => "ES DISCRETE",
"070b" => "DTS-ES 7.1",
"0881" => "OPTIMUM",
"0e01" => "HDMI THROUGH",
"0f01" => "MULTI CH IN",
"1101" => "DOLBY PLIIx MOVIE",
"1102" => "DOLBY PLIIx MUSIC",
"1103" => "DOLBY DIGITAL EX",
"1104" => "",
"1105" => "ES MATRIX",
"1106" => "ES DISCRETE",
"1107" => "DTS-ES 7.1",
"1108" => "",
"1109" => "DOLBY PLIIz HEIGHT",
"110a" => "WIDE SURR MOV",
"110b" => "WIDE SURR MUS",
"1301" => "THX Surr EX",
"1302" => "Neo:6 +THX CIN",
"1303" => "ES MTRX+THX CN",
"1304" => "ES DISC+THX CN",
"1305" => "ES 7.1+THX CIN",
"1306" => "DOLBY PLIIx MV +THX",
"1307" => "THX ULTRA2 CIN",
"1308" => "THX SELCT2 CIN",
"1309" => "THX CINEMA",
"130a" => "Neo:6 +THX MS",
"130b" => "ES MTRX+THX MS",
"130c" => "ES DISC+THX MS",
"130d" => "ES 7.1 +THX MS",
"130e" => "DOLBY PLIIx MS +THX",
"130f" => "THX ULTRA2 MS",
"1310" => "THX SELCT2 MS",
"1311" => "THX MUSIC",
"1312" => "Neo:6 +THX GM",
"1313" => "ES MTRX+THX GM",
"1314" => "ES DISC+THX GM",
"1315" => "ES 7.1 +THX GM",
"1316" => "DOLBY EX +THX GM",
"1317" => "THX ULTRA2 GM",
"1318" => "THX SELCT2 GM",
"1319" => "THX GAMES",
"131a" => "DOLBY PLIIz +THX MV",
"131b" => "DOLBY PLIIz +THX MU",
"131c" => "DOLBY PLIIz +THX GM",
)
?>