Feature #158
Von Julius Haman vor 20 Tagen aktualisiert
## Problem ErControl und AntInterface teilen sich seit #93 dieselbe Versionsnummer, ErControl prüfte beim Verbinden aber nur die Protokollversion. Eine AntInterface mit gleichem Protokoll, aber anderer Programmversion oder anderem Build (unvollständiges Update, manuell hinterlegter Pfad) wurde stillschweigend akzeptiert. Zusätzlich bleibt nach einem ErControl-Absturz ein verwaister AntInterface-Prozess bestehen, der den ANT-Stick blockiert (die Pipe-Namen sind pro Start eindeutig, der Altprozess wird also nicht verbunden, hält aber den Stick). ## Lösung ### Schritt 1: Versions- und Commit-Prüfung - `HelloMessage` bekommt `AppVersion` (Programmversion der `AntInterface.exe`) und `Commit` (Git-Kennung, aus der sie gebaut wurde). - ErControl vergleicht beides nach dem Verbinden mit den eigenen Werten. Bei Abweichung oder fehlenden Angaben (ältere AntInterface) wird ein fataler Fehler gemeldet und der eigene AntInterface-Prozess beendet. Die Meldung nennt Version und Commit beider Seiten und wird in Verbinden-Dialog, Verbindungstest und Gerätesuche statt des Stick-Hinweises angezeigt (diese Stellen zeigten für jeden fatalen Fehler den Hinweis, den ANT+-Stick anzustecken). Seiten. - Die Commit-Kennung wird nur verglichen, wenn beide Seiten eine echte kennen (Build ohne .git liefert `unknown`). - Dadurch fallen auch mehrere Builds mit gleicher Versionsnummer auf. ### Schritt 2: Verwaiste Prozesse - Vor dem Start verwaiste `AntInterface.exe`-Prozesse beenden (Elternprozess existiert nicht mehr, gleicher Pfad). - Kindprozess einem Windows Job Object mit `KILL_ON_JOB_CLOSE` zuweisen, damit nach einem Absturz keine Verwaisten mehr entstehen.