<?php
session_start();


error_reporting(E_ALL);
ini_set('display_errors', 1);

require("../functions.php");

$view = $_GET["view"];
$meta = $_GET["meta"];
$_SESSION["meta"] = $meta;

if ($view == "results") {

    //Befehl zum Starten des Skripts
	$command = escapeshellcmd('python3 /var/www/html/python/selfcheck.py');

	//output und bridges sind die Ergebnisse des Durchlaufs
	$output = json_decode(shell_exec($command), true);
	$bridges = $output["data"];

    //Zeigt schon der Erste durchlauf Fehler auf, kann abgebrochen werden (1. Fehlerfall)
	if($output["logs"]["errorcode"] != 10) {
		?>
		<h3>
			Die Prüfung konnte nicht abgeschlossen werden. <i>Fehler <?php echo $output["logs"]["errorcode"]; ?></i>
		</h3>
		<?php 
		include("../errorcodes.php");
		die();
	}


    // Isoliere die Brücken und speichere sie als $bridges (hiermit wird später alles weitere verarbeitet)
	$bridges = array_map(function($entry) {
		return $entry[0];  
	}, $output["data"]);

	//Isoliere die Fehlercodes der ersten Messung; da Messungen identisch reicht erste Messung
	$errors = array_filter($output["data"], function($entry) {
		return $entry[1] !== 0;
	});

    //Wenn Fehlerspeicher gefüllt: Ausgabe und Abbruch
	if (!empty($errors)) {
		
		measurementsContainErrors($output["data"]);
		
	}

    ?>

    <div class="content-header">Selbstdiagnose - Ergebnisse</div>
    <hr />

    <style>
        table {
            font-size: 12px;
            line-height: 10px;
        }
        td {
            width: 2.5%;
            border: 1px solid black;
        }
    </style>

    <hr>
    <h2>Detailansicht</h2>
    <p>Der Pin der jeweiligen Spalte wird eingeschaltet; Pins, welche einen Eingang registrieren, werden in der entsprechenden Zeile grün dargestellt.</p>

    <table>
        <?php
        // Kopfzeile
        echo "<tr>";
        for ($j = 0; $j <= 32; $j++) {
            $index = $j - 1;
            if ($index == -1) {
                echo "<td></td>";
            } else {
                echo "<td>$index</td>";
            }
        }
        echo "</tr>";

        // Matrix
        for ($i = 0; $i <= 31; $i++) {
            echo "<tr>";
            echo "<td>$i</td>";

            for ($j = 0; $j <= 31; $j++) {
                $search = [$j, $i];
                if (in_array($search, $bridges)) {
                    echo "<td style='color: green;'>&#10004;</td>";
                } else {
                    echo "<td style='color: gray;'>-</td>";
                }
            }
            echo "</tr>";
        }
        ?>
    </table>
    <hr />
    <?php
    print("<p>Erklärung:<br>
        Jede Verbindung darf nur einmal aufgeführt sein. Gibt es Doppelungen, so besteht eine unzulässige Verbindung zu einem anderen Pin.
        Kann sich ein Pin nicht selbst auslesen, so weist dies auf einen internen Kabelbruch oder ein defektes Bauteil hin.
        Ist der Fehler spiegelsymmetrisch (z.B. 10-20 und 20-10), deutet dies auf einen Kurzschluss im System hin.
        Tritt der Fehler nur einseitig auf, ist ein Bauteil defekt.</p>");
    ?>

    <div class="save-button" onclick="window.location.href='#selfcheck'; pageload();$('.save-button').html('<img src=\'/vendor/icons/load.gif\' \>Bitte warten...');">
        <img src="/vendor/icons/nav-arrow-left.svg">Zurück
    </div>

<?php
} else {
    ?>
    <div class="content-header">Selbstdiagnose</div>

    <p>Sollten während Messungen Fehler aufgetreten sein, kann hier eine interne Diagnose durchgeführt werden. Dabei wird jeder "Pin" einmalig als Ausgang gesetzt und gleichzeitig der Wert ausgelesen. Nur, wenn der Pin selbst gelesen werden kann und keine unzulässigen Verbindungen zu anderen Pins bestehen, wird die Prüfung erfolgreich abgeschlossen.</p>
    <hr />
    <p><i>Bitte trennen Sie zuvor alle Verbindungen, sodass sich das Gerät im Leerlauf befindet. <b>Angeschlossene Kabel und Stecker verfälschen das Ergebnis!</b></i></p>
    <hr />

    <div class="save-button" onclick="window.location.href='#selfcheck'; pageload('results');$('.save-button').html('<img src=\'/vendor/icons/load.gif\' \>Bitte warten...');">
        <img src="/vendor/icons/ecg-monitoring-icon.svg">Selbstdiagnose ausführen
    </div>
<?php
}
?>
