<?php

session_start();

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

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

$db = new SQLite3('../db-test/test.db');

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

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

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

//wenn bis hierhin ok: weitere Prüfung
$output2 = json_decode(shell_exec($command), true);
$bridges2 = $output2["data"];

//Die Messungen sind nicht identisch (egal ob wg Fehlercodes oder Daten, ungleiche Messungen sind immer schlecht) -> 2. Fehlerfall
//es wäre schon sehr eigenartig, wenn verschiedene Fehlercodes nacheinander ausgespuckt würden (Wackelkontakt?)
if($bridges1 !== $bridges2) {

	measurementsDiffer($bridges1, $bridges2);

}

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

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

//Wenn Fehlerspeicher gefüllt: Ausgabe und Abbruch
if (!empty($errors)) {
	
	measurementsContainErrors($bridges1);
	
}

// ----------
//Ab hier wird die Logik geprüft, die Messung ist bis hierhin äußerlich in Ordnung
// ----------


$bridges = translateArray($bridges, $translationMap, $translationMap2);
	
$cleaned_output = [];
$errors = [];

$ok = true;

// iteriere durch die Messung und prüfe, ob stets gilt [[20,20],[22,22]]
//wenn nein: Kurzschluss ($errors)
foreach($bridges as $bridge) {
	if($bridge[0] == $bridge[1]) {
		$cleaned_output[] = $bridge[0];
	}
	else {
		$ok = false;
		$errors[] = $bridge;
	}
}


//Haupt-Steckergrafik
$url = 'stecker.php?mode=fill&data=' . urlencode(json_encode($cleaned_output));

?>

<div class="content-header">Ergebnis</div>
<hr />
<h2>Vollständigkeit</h2>
<p><i>Die folgende Grafik zeigt Ihnen, auf welchen Adern eine durchgängige Verbindung erkannt wurde. Nur, wenn alle Pins grün gefüllt sind, ist das Spurkabel in Ordnung!</i></p>
<img src="<?php echo $url; ?>" />


<?php
	
	
$url = 'stecker.php?data=' . urlencode(json_encode($errors)); // Kodiert es für die URL


?>


<h2>Unzulässigkeiten</h2>
<p><i>Die folgende Grafik zeigt Ihnen, auf welchen Adern eine Verbindung zu einer anderen Ader erkannt wurde. Ist die Grafik leer, sind alle Adern korrekt isoliert.</i></p>
<?php

if($ok != true) {
	?>
	<p style='color: red !important'>
		Es wurde mindestens ein Kurzschluss gefunden!
	</p>
	<?php
	}
?>
<img src="<?php echo $url; ?>" />



<div class="save-button" onclick="window.location.href='#cable-check';"><img src="/vendor/icons/nav-arrow-left.svg" \>Zurück</div>

