diff doc/readme-2-95.txt @ 560:b7eb98dbd800

bump to 2.96beta (REFACTORED VERSION)
author heinrichsweikamp
date Wed, 31 Jan 2018 19:39:37 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/readme-2-95.txt	Wed Jan 31 19:39:37 2018 +0100
@@ -0,0 +1,540 @@
+
+Doku- & Info-Sammlung zu p2_deco.c und der Einbettung in die V2.95a
+===================================================================
+
+Bedeutung der Bildschirm-Farben (in der Normaleinstellung):
+
+grün: feste Kolumnen oder "gute" Zustände.
+weiß: Zahlenwerte die im Normalbereich liegen
+blau: inaktive Einstellungen und Gase, sowie Werte die noch nicht
+      berechnet wurden oder die aufgrund von Einstellungsänderungen
+	  (Gaswechsel, LostGas, Setpoint-Wechsel, GF/aGF-Umschaltung, usw.)
+	  nicht mehr aktuell sind und gerade neu berechnet werden.
+gelb: Hinweise und Vorwarnungen die zu beachten sind, jedoch noch
+      kein unmittelbares Handeln erfordern.
+rot : Hinweise und Warnungen, die ein unmittelbaren Handeln erfordern.
+
+Die Schwellen für Vorwarnungen sind generell immer auf 70% eingestellt,
+für den aktuellen GF-Wert wird die GF-high Einstellung als Schwelle für
+die Vorwarnung benutzt.
+Vorwarnungen erscheinen als Warnungstext und/oder als Darstellung in
+gelber Farbe. Die endgültige Warnung erscheint dann in roter Farbe.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Die Deco-Engine wird über zwei Parameter kommandiert:
+
+	char_O_main_status:
+	steuert die Berechnung für die realen Gewebe
+
+	char_O_deco_status:
+	steuert die Berechnung der Deko/Aufstiegssimulation
+	
+Die Kommandos werden über Flags gegeben. Für beide Kommandoparameter
+definert sind:
+
+	DECO_MODE_LOOP:
+	Wenn gesetzt wird für Kreislaufsysteme gerechnet wenn nicht gesetzt
+	wird in OC gerechnet.
+
+	DECO_MODE_PSCR:
+	nur in Verbindung mit DECO_MODE_LOOP, schaltet von CCR auf pSCR um.
+
+Nur für char_O_deco_status definiert sind:
+
+	DECO_PLAN_ALTERNATE:
+	Auswahl ob der Normalplan oder ein alternativer Plan gerechnet
+	werden soll. Von den Ergebnissen des Normal-Plans leiten sich die
+	meisten Bildschirmanzeigen ab. Vom alternativen Plan werden nur
+	ausgewählte Daten angezeigt, z.B. die der fTTS oder Bailout-
+	Berechnung.
+
+	DECO_CNS_CALCULATE:
+	Wenn aktiviert, wird der CNS%-Wert berechnet wie er am Ende des
+	Tauchgangs sein wird. Dies kann sowohl im Rahmen des normalen wie
+	auch des alternativen Plans geschehen, es existieren für beide
+	Pläne eigene Ausgabevariablen.
+
+	DECO_VOLUME_CALCULATE:
+	Wenn aktiviert, werden die Gasbedarfe für den gesamten Tauchgang
+	berechnet. Dies kann sowohl im Rahmen des normalen wie auch des
+	alternativen Plans geschehen, jedoch existiert für diese Funktion
+	nur ein gemeinsamer Satz Ausgabevariablen. Wenn DECO_MODE_LOOP
+	gesetzt ist erfolgen keine Berechnungen, es werden stattdessen
+	Nullwerte ausgegeben.
+
+	DECO_ASCENT_DELAYED:
+	Wenn aktiviert wird der Aufstieg / dier Dekompression so berechnet
+	als ob der Aufstieg nicht sofort, sondern um char_I_extra_time
+	verzögert beginnt. Die Funktion kann in beiden Plänen verwendet
+	werden, wird jedoch sinnvoller Weise in Verbindung mit dem
+	alternativen Plan für fTTS bzw. Bailout-Berechnungen mit delayed
+	ascent benutzt.
+
+Die Deco-Engine generiert Warnungen, die in Form von Flags über die
+Variable char_O_deco_warnings ausgegeben werden:
+
+	DECO_WARNING_IBCD:
+	Wird gesetzt wenn das führende Gewebe im Zustand der isobaren
+	Gegendiffusion ist und derzeit netto tatsächlich am aufsättigen
+	ist. Auf dem Bildschirm wird unter der IBCD-Warnung zusätzlich
+	der aktuelle GF angezeigt, der bei Vorliegen dieser Warnung am
+	steigen ist.
+
+	DECO_WARNING_IBCD_lock:
+	In diesem Flag wird das Auftreten einer IBCD-Warnung bis über
+	das Tauchgangsende hinaus gespeichert. Wird im Deko-Kalkulator
+	benutzt um eine IBCD-Warnung zu geben falls eine solche irgend
+	wann im Verlaufe der Tauchgangs-Berechnung ausgetreten ist.
+
+	DECO_WARNING_MBUBBLES:
+	Wird gesetzt, wenn die Gewebe aktuell soweit übersättigt sind
+	dass mit der Produktion von Mikroblasen gerechnet werden muss.
+	Achtung: wenn dieses Flag zurückgesetzt wird sind nicht etwa
+	die Mikroblasen nicht mehr da, es liegen nur vermutlich nicht
+	mehr die Bedingungen für eine Produktion weiterer Mikroblasen
+	vor. Der Zustand der aktiven Mikroblasengeneration wird über
+	eine Mikroblasen-Warnung in Rot dargestellt.
+
+	DECO_WARNING_MBUBBLES_lock:
+	Wird gesetzt sowie erstmalig während eines Tauchgangs die
+	Mikroblasen-Warnung gegeben wurde. Bleibt über das Ende des
+	Tauchgangs hinaus gesetzt bis die Oberflächen-Berechnungen eine
+	Entsättigung der Gewebe melden. Solange diese Warnung aktiv ist
+	wird eine Mikroblasen-Warnung in Gelb ausgegeben, sowohl im Tauch-
+	wie auch im Oberflächen-Modus.
+
+	DECO_WARNING_OUTSIDE:
+	Wird gesetzt, wenn die Gewebe aktuell soweit übersättigt sind, dass
+	der Gültigkeitsbereich des ZHL-16 Modells verlassen ist.
+	Achtung: wenn dieses Flag zurückgesetzt wird ist nicht etwa der
+	Gültigkeitsbereich des Modells wiederhergestellt, es wird lediglich
+	weiter gerechnet als ob das Modell noch gelten würde. Inwieweit die
+	berechneten Werte (Deko-Plan, Ceiling, ...) dann tatsächlich noch
+	praktische Relevanz haben ist unbekannt und extrem von den
+	Rahmenbedingungen des Einzelfalls abhängig.
+	Solange die Gewebesättigungen außerhalb des Modellbereichs sind
+	wird eine Warnung in Rot ausgegeben.
+
+	DECO_WARNING_OUTSIDE_lock:
+	Wird zusammen mit DECO_WARNING_OUTSIDE gesetzt und wie bei den
+	Mikroblasen erst bei Entsättigung wieder gelöscht.
+
+	DECO_WARNING_STOPTABLE_OVERFLOW:
+	Diese Warnung zeigt an, dass der Tauchgang mehr Stopps erfordert
+	als in der Stopp-Tabelle gespeichert werden können. Abgeleitete
+	Werte wie die Aufstiegszeit, die CNS-Werte am Tauchgangsende und
+	die Gasbedarfe können nicht mehr vollständig ermittelt werden und
+	werden daher in der Farbe Blau für ungültige Werte dargestellt. Die
+	wahren Werte sind mindestens so hoch wie die derart angezeigten.
+	Die Angaben zu den ersten Stopps auf dem Bildschirm und in den
+	Custom-Views sind jedoch trotzdem korrekt und im weiteren Verlaufe
+	des Tauchgangs, wenn die ersten Stopps vorüber sind, wird die
+	Tabelle wieder ausreichen um alle restlichen Stopp-Daten zu
+	speichern und die Warnung wird zurückgenommen.
+	Diese Warnung wird nicht direkt angezeigt, sondern nur indirekt
+	über die ungültig-Kennzeichnung der betroffenen Werte und sollte
+	bei praktisch durchführbaren Tauchgängen nicht auftreten.
+
+	DECO_FLAG:
+	Dieses Flag wird gesetzt, wenn mindestens ein Gewebe am absättigen
+	ist. Mit ihm wird die Warnschwelle für zu hohe ppO2-Werte von der
+	normalen Schwelle auf die Deko-Schwelle umgeschaltet. Sollte wieder
+	tiefer getaucht werden (Jo-Jo) so dass alle Gewebe wieder am
+	aufsättigen sind, dann wird das Flag zurückgenommen und auch die
+	Warnschwelle wieder zurückgeschaltet.
+
+
+Viele der internen Routinen der Deko-Engine sind generisch ausgelegt und
+können sowohl für Berechnungen zu den realen Geweben benutzt werden, als
+auch für die Berechnungen im Rahmen des normalen und des alternativen
+Aufstiegs-/Dekompressionsplans. Gesteuert wird dies intern über die
+Variable tissue_increment, diese besteht aus einem Flag auf der höchsten
+Bitposition und einer Interger-Zahl in den Bitstellen darunter
+(Wertebereich 0 - 127). Ist das Flag (Bit 7) gesetzt, so werden die
+Berechnungen auf die realen Gewebedaten angewendet, andernfalls auf die
+von den Plänen simulierten. Mit der Integerzahl wird die Zeitdauer
+bestimmt, für die die Berechnung durchgeführt werden soll. Null bedeutet
+eine Zeitdauer von 2 Sekunden, die Zahlen von 1 bis 127 stehen für 1 bis
+127 volle Minuten. Durch dieses Vorgehen konnten viele Programmabschnitte
+deutlich beschleunigt werden.
+
+Die Deko-Engine wird jede Sekunde aufgerufen und aktualisiert die obigen
+sowie weitere Warnungen jede Sekunde bzw. wenn die entsprechenden
+Berechnungen durchgeführt wurden. Die Berechnungen für die realen Gewebe
+werden jede zweite Sekunde durchgeführt, sekündlich abwechselnd zwischen
+der Aktualisierung der Gewebedrücke und des CNS%-Wertes.
+Die Aufstiegs- und Dekompressions-Berechnungen werden bei jedem Aufruf
+bearbeitet, also in jeder Sekundescheibe. Es wird abwechselnd der Normal-
+und der Alternativ-Plan berechnet.
+Werden für die Aufstiegsberechnung wesentliche Parameter geändert, wie
+z.B. das geatmete oder die verfügbaren Gase, der Setpoint, die GF-
+Faktoren, usw., dann wird die laufende Berechnung abgebrochen und im
+nächsten Sekunden-Zyklus mit dem nächsten Normalplan begonnen.
+
+Die Daten zu den Gasen werden von der Assembler-Seite aus über folgende
+Funktionen gesetzt:
+
+	Für die Berechnung der realen Gewebe:
+
+		setup_gas_registers:
+		setzt ein OC-Gas und schaltet den Rechenmodus auf OC
+
+		setup_dil_registers:
+		setzt ein Diluent und schaltet auf CCR bzw. pSCR Modus
+
+	Für die Aufstiegs-/Dekoplanung:
+
+		deco_setup_oc_gases:
+		übermittelt die Daten OC-Gase sowie das aktuell geatmete
+		Gas und	schaltet den Rechnenmodus auf OC
+
+		deco_setup_cc_diluents:
+		übermittelt die Daten der Diluent sowie das aktuell benutzte
+		Diluent und schaltet auf den CCR bzw. pSCR Modus
+
+Die Aufstiegs-/Dekoplanung wird über einen Enum in char_O_deco_status
+gesteuert:
+
+- Einmalig am Beginn des Tauchgangs wird der Zustand DECO_STATUS_INIT
+  aufgerufen, dieser initialisiert die Deco-Engine. Nach Abschluss der
+  Initialisierung wechselt die Deco-Engine selbsttätig in den Zustand
+  DECO_STATUS_START weiter.
+
+- DECO_STATUS_START
+  startet eine neue Aufstiegs-/Dekoplanung basierend auf den gesetzten
+  Flags und Gasdaten, falls noch eine Aufstiegs- oder Dekoplanung läuft
+  wird diese abgebrochen. In diesem Zustand wird auch berechnet ob sich
+  der Tauchgang noch innerhalb der Nullzeit befindet. Falls ja, endet die
+  Aufstiegsplanung hier im Zustand ECO_STATUS_FINISHED, ansonsten wird
+  sie beim nächsten Aufruf der Deco-Engine im Zustand DECO_STATUS_ASCENT
+  fortgesetzt.
+
+- DECO_STATUS_ASCENT
+  führt die Berechnung des Aufstiegs bis zum ersten Deko-Stopp aus
+  (initial ascent). Im alternativen Planungsmodus werden hierbei auch
+  Gaswechsel ermittelt. Nach Abschluss der Aufstiegsberechnung wird der
+  Zustand auf DECO_STATUS_STOPS weitergeschaltet, der dann beim wiederum
+  nächsten Aufruf der Deco-Engine bearbeitet wird.
+
+- DECO_STATUS_STOPS
+  berechnet die Dekostopps und alle weiteren Aufstiege, sowie die CNS%-
+  Werte am Tauchgangsende und die Gasbedarfe sofern jeweils angefordert.
+  Diese Berechnungen laufen üblicherweise über mehrere Aufrufzyklen der
+  Deco-Engine, diese signalisiert am Ende jedes Zykluses mit
+  DECO_STATUS_STOPS dass (mindestens) ein weiterer Zyklus benötigt wird
+  oder mit DECO_STATUS_FINISHED dass die Berechnungen abgeschlossen sind.
+
+- DECO_STATUS_FINISHED
+  signalisiert, dass die Aufstiegs-/Dekompressionsplanung abgeschlossen
+  ist und die Ergebnisse in den entsprechenden Variablen bereitstehen
+  bzw. aktualisiert sind.
+  Die Kodierung von DECO_STATUS_FINISHED (benutzt als Ausgabe aus der
+  Deco-Engine) entspricht der Kodierung von DECO_STATUS_START (benutzt
+  als Eingabe in die Deco-Engine). Die Deco-Engine kann sofort wieder im
+  Zustand DECO_STATUS_START aufgerufen werden, worauf ein neuer Planungs-
+  zyklus beginnt.
+
+Die Einstellungen und Gasdaten können zwischen zwei Planungszyklen (d.h.
+zwischen den Zuständen DECO_STATUS_FINISHED und DECO_STATUS_START) ohne
+Einschränkungen geändert werden. Während ein Planungszyklus läuft ist
+dies nicht zulässig und kann zu falschen Ergebnissen führen.
+
+
+Planungsfunktionen 2nd Deco Plan:
+
+Über die Deko-Einstellungen, Untermenu "2nd Deco Plan" können erweiterte
+sowie alternative Aufstiegs-/Dekompressionsberechnungen aktiviert werden.
+
+	fTTS/Delay:
+
+	Wird hier ein Wert größer Null ausgewählt, dann wird ein zweiter,
+	alternativer Aufstiegs-/Dekoplan berechnet unter der Annahme, dass
+	die eingestellte Zeit in Minuten weiterhin auf der aktuellen Tiefe
+	verbracht wird und erst dann der Aufstieg beginnt. Die unter dieser
+	Annahme berechnete Aufstiegszeit wird als fTTS (future Time to
+	Surface) angezeigt. Weiterhin wird der CNS-Wert berechnet, der sich
+	am Ende eines derart verlängerten Tauchgangs ergeben wird, er kann
+	über einen	CustomView angesehen werden. Wenn dieser CNS-Wert 100%
+	erreicht wird außerdem eine Warnung ausgegeben.
+
+	Im Bailout-Fall wird keine fTTS-Berechnung durchgeführt, dafür
+	Erfolgt die Aktualisierung der Bailout-Aufstiegsberechnung dann in
+	Schnellerer 	Folge.	
+
+
+	Calc.Gas(B/O):
+
+	Wird diese Option aktiviert, dann wird der Gasbedarf berechnet, der
+	für die Beendigung des Tauchgangs unter Einhaltung der Aufstiegs-
+	geschwindigkeiten und ggf. Dekompressionsstopps benötigt wird. Wenn
+	bei fTTS/Delay Null eingestellt ist, dann wird diese Berechnung
+	während der normalen Aufstiegs-/Dekoberechnung durchgeführt und die
+	ermittelten Werte gelten bei sofortigem Beginn des Aufstiegs. Wenn
+	bei fTTS/Delay eine Zeit größer Null eingestellt ist, dann wird die
+	Berechnung im Rahmen des zweiten, alternativen Plans durchgeführt
+	Und die berechneten Gasbedarfe gelten für den verzögerten Aufstieg.
+
+
+	fTTS/Delay und Calc.Gas(B/O) im Modus CCR und pSCR:
+
+	Das oben beschriebene Verhalten verändert sich, wenn sich der OSTC
+	im CCR oder im pSCR Modus befindet: Wenn die Option Calc.Gas(B/O)
+	ausgeschaltet ist, dann gelten die berechnete Aufstiegszeit und der
+	CNS-Wert unter der Annahme dass bis zum Ende des Tauchgangs	weiterhin
+	vom Kreislaufgerät geatmet wird.
+	Wenn die Option Calc-Gas(B/O) hingegen eingeschaltet ist, dann wird
+	die Aufstiegszeit und der CNS-Wert unter der Annahme berechnet,
+	dass ab sofort ein Bailout erfolgt, auf dem ersten Bailoutgas für
+	die bei fTTS/Delay eingestellte Zeit auf der aktuellen Tiefe
+	verblieben wird und dann ein Bailout-Aufstieg eingeleitet wird.
+	Die sich so ergebende Aufstiegszeit wird als B/O-Zeit (BailOut)
+	angezeigt und die berechneten Gasmengen gelten für die OC-Bailout-
+	Gase.
+
+
+	Bottom Gas, Deco Gas:
+
+	Hier werden die Gasbedarfe in Litern pro Minute Oberflächenrate
+	(SAC) eingestellt. Diese Einstellungen werden auch vom Deko-
+	Kalkulator benutzt, der über das Simulations-Menu zu erreichen ist.
+
+
+	Tank Sizes:
+
+	Hier sind die Größen der Tanks für die OC-/Bailout-Gase in Litern
+	(Wasservolumen) einzustellen. Diese Einstellungen sind wichtig, da
+	sie für die Berechnung der Gasbedarfe im Tauchmodus benötigt
+	werden: Im Tauchmodus erfolgt die Ausgabe der benötigten Gasmengen
+	in Bar, bezogen auf die jeweiligen Flaschengrößen.
+
+
+	Tank Press Budget: (ex Tank Fill Press)
+
+	Hier wird festgelegt wie viel Gas aus den jeweiligen Tanks (Flaschen)
+	für den Tauchgang verwendet werden darf. Die Einstellung erfolgt in
+	Bar Flaschendruck. Erreicht der Bedarf eines Gases 70% des für das
+	Gas eingestellten Budgets, dann erfolgt eine Warnung in gelber Farbe.
+	Bei 100% erscheint die Warnung in roter Farbe.
+	Die benötigten Flaschendrücke können jederzeit über einen CustomView
+	eingesehen werden. Dieser zeigt aufgrund der begrenzten Bildschirm-
+	fläche nur die Bedarfe von bis zu vier Gasen an, die Warnungen werden
+	jedoch für alle 5 Gas erzeugt.
+	Alle Gasbedarfs- und Druckberechnungen erfolgen unter der Annahme
+	idealer Gase und ohne Betrachtung von temperaturbedingten Druck-
+	änderungen.
+
+
+Gaswechsel:
+
+Im Rahmen der Deko-Pläne werden automatisch Gaswechsel eingeplant, wenn
+ein besseres Gas verfügbar ist. Ein besseres, bzw. das beste Gas ist
+dasjenige Gas, dessen Wechseltiefe am dichtesten unterhalb der aktuellen
+Tiefe liegt. Nur aktivierte Gase die nicht als "Lost" markiert sind
+werden berücksichtigt. Gaswechsel werden als Stopp in die Stopp-Tabelle
+eingetragen. Die Dauer dieser Stopps beträgt standardmäßig 1 Minute.
+Sollte auf der Stopp-Stufe für den Gaswechsel auch ein Dekompressions-
+Stopp notwendig sein, so addiert sich die notwendige Stoppzeit für die
+Dekompression zu der für den Gaswechsel hinzu.
+
+Im Bereich zwischen der Grundtiefe und dem ersten Dekompressions-Stopp
+werden die Gaswechsel-Stopps auf die Tiefen gelegt, ab denen jeweils
+bessere Gase verfügbar werden. Gibt es ein besseres Gas auf der aktuellen
+Tiefe, so wird ein Wechsel auf der aktuellen Tiefe geplant. Dies geschieht
+jedoch nur im Modus alternativer Plan und nur wenn das nächste bessere
+Gas nicht in <= 1 Minute Aufstiegszeit erreicht wird. In Normal-Plan
+werden Wechsel auf ein besseres Gas erst ab dem ersten echten Deko-Stopp
+eingeplant.
+Im Falle, dass im alternativen Plan ein Bail-Out Szenario gerechnet wird
+sieht die Gaswahl- und Gaswechsel-Strategie wie folgt aus: zunächst wird
+dasjenige OC-Gas gewählt welches als 'First' konfiguriert ist. Auf diesem
+wird auf aktueller Tiefe für die Zeit verblieben, die als Delayed-Acent-
+Time eingestellt ist. Dann erfolgt die Suche nach einem besseren Gas, auf
+das je nach Verfügbarkeit im direkten Anschluss oder während des
+initialen Aufstiegs gewechselt wird. Ab Erreichen des ersten Dekostopps
+werden Gaswechsel in beiden Plänen (normaler und alternativer Plan)
+automatisch ermittelt und immer auf die nächsten passenden Dekostopps
+gelegt. Im CCR und im pSCR Modus werden derzeit keine automatischen
+Gaswechsel berechnet.
+
+-> Die Gaswechselzeit ist bereits in der Options-Tabelle angelegt, wird
+   aber momentan noch innerhalb von p2_deco.c auf 1 Minute erzwungen.
+
+Die Deko-Engine plant den Aufstieg mit einer einstellbaren Aufstiegs-
+geschwindigkeit von 5-10 Meter pro Minute, diese wird über eine Option in
+der Options-Tabelle eingestellt.
+
+-> Die Aufstiegsgeschwindigkeit ist bereits in der Options-Tabelle
+   angelegt, wird aber momentan noch innerhalb von p2_deco.c auf 10 m/min
+   erzwungen.
+
+Für die Ceiling-Berechnung ist eine neue Codezeile angelegt die dafür
+sorgt, dass die Ceiling genau dann zu Null wird, wenn auch die TTS zur
+NDL umschaltet. Bisher wird so gerundet, dass die Ceiling zu Null wird
+während noch eine TTS angezeigt wird. Die neue Zeile ist noch
+auskommentiert und die alte Formel in Betrieb um eine Vergleichbarkeit
+der gesamten Berechnungen mit der V2.27 zu ermöglichen. Zur Release-
+Version sollte entsprechend umkommentiert werden.
+
+
+Gasbedarfs-Berechnung:
+
+Es werden die Bedarfe aller Gase berechnet, die bei der Aufstiegs-/
+Dekompressionsberechnung eingeplant wurden. Es sind diese die Gase 1
+bis 5. Wird aktuell ein manuell konfiguriertes Gas ("Gas 6") geatmet,
+so wird dieses in der Gasbedarfsberechnung außen vor gelassen. Die
+Berechnung teilt sich in die Bereiche bottom und initial ascent, stops
+und intermediate ascents sowie final ascent.
+
+Im Bereich bottom und initial ascent wird die Bottom-Verbrauchsrate
+angesetzt, in den übrigen Bereichen die Deko-Verbrauchsrate.
+Die Aufstiegssegmente werden mit der konfigurierten Aufstiegsrate (5-10
+m/min) berechnet, der final ascent vom letzten Stopp bis zur Oberfläche
+mit 1 Meter/Minute. Gibt es keine Stopps, dann reicht der initial ascent
+vom Bottom bis zur Oberfläche und wird mit der konfigurierten Aufstiegs-
+rate gerechnet, zuzüglich eines Sicherheitsstopps von 3 Minuten auf 5
+Metern. Wenn es keinen Deko-Stopp gibt, aber einen Gaswechsel-Stopp der
+tiefer liegt als ein letzter regulärer Deko-Stopp liegen würde, dann wird
+der Aufstieg geteilt in einen intermediate ascent und einen final ascent.
+Für beide werden dann die entsprechenden Aufstiegsraten angesetzt.
+
+Alle Gaswechsel werden der Stopp-Tabelle entnommen, daher sind dort
+auch reine Gaswechsel-Stopps eingetragen, d.h. Stopps auf denen keine
+Dekompression notwendig ist. Auf den Stopps die einen Gaswechsel
+beinhalten wird der Gasbedarf wie folgt berechnet: Der Bedarf für die
+gesamte Stoppdauer wird dem neuen Gas zugerechnet, für die konfigurierte
+Gaswechsel-Dauer wird ein entsprechender Bedarf zusätzlich auf das alte
+Gas aufgeschlagen. So ist sichergestellt, dass die berechneten Gasvolumina
+genügend Reserve ausweisen um auf einem Gaswechsel-Stopp die Zeit zu haben
+das neue Gas verfügbar zu machen (Stage-Handling).
+
+Die Gasbedarfe werden zum einen in Litern berechnet, diese Werte werden
+vom Deko-Kalkulator genutzt, und zum anderen in bar Flaschendruck
+entsprechend der eingestellten Flaschengrößen. Hierbei wird mit idealen
+Gasen gerechnet, sprich Druck = benötigtes Volumen / Flaschengröße.
+Aus dem Vergleich von berechnetem Druckbedarf und konfiguriertem
+Flaschendruck werden die Vorwarnung (70%, gelb) und die Hauptwarnung
+(100%, rot) generiert. Um bei der Hauptwarnung noch eine minimale Reserve
+zu haben sollte daher der Flaschendruck etwas niedriger eingestellt
+werden als er tatsächlich ist.
+
+
+Gewebegrafik:
+
+Die Gewebegrafik ist so skaliert, dass die Länge der Balken dem Druck des
+Jeweiligen Inertgases entspricht. Während des Tauchgangs werden die
+Balken zusätzlich eingefärbt, die Farbe kennzeichnet ob das Gewebe gerade
+am aufsättigen oder am entsättigen ist. Die Balken für den Stickstoff
+beginnen weiter links da die Gewebe im Ausgleichzustand an der Oberfläche
+bereits zu einem Teil Stickstoff enthalten, nicht jedoch Helium. So
+beginnen die "Überdrücke" aus dem Ausgleichszustand heraus auf gleicher
+Linie.
+
+
+Stopp-Tabelle (Deko-Tabelle):
+
+Der Funktionsaufruf ist so verändert, dass beim Aufruf die Menge
+der einzutragenden Minuten übergeben werden kann. Diese werden dann auf
+den bestehenden Stopp aufaddiert bzw. es wird ein neuer Stopp angelegt.
+Es können auch Null Minuten übergeben werden und so ein Stopp "on the
+fly" erzeugt werden, z.B. für einen reinen Gaswechsel. Alle Operationen
+auf der Stopp-Tabelle sind angepasst um mit Stopps von Null-Dauer zu
+funktionieren.
+Ein Stopp-Eintrag kann maximal 99 Minuten Stoppdauer aufnehmen. Dauert
+ein Stopp länger, so wird eine weiterer Stopp auf gleicher Tiefe angelegt.
+
+
+No-Fly bzw. Altitude-Wait-Zeit:
+
+Diese Wartezeit wird wie eine Dekompression aus dem aktuellen Gewebe-
+zustand heraus auf eine fiktive Tiefe gerechnet, die der gewählten
+Höhenstufe entspricht. Für No-Fly wird dabei ein Kabinendruck von 0,6
+bar angesetzt. Der Rechenaufwand für diese Berechnung wird die die
+Verwendung eines iterativen Optimierungs-Algorithmus wesentlich
+reduziert. Der aktuelle Umgebungsdruck wird laufend in die Berechnung
+einbezogen, die sich ergebene Zeit auf volle 10 Minuten gerundet
+ausgegeben.
+
+
+Entsättigungszeit:
+
+Die Entsättigungzeit ist so definert dass der Rest-Stickstoffdruck in
+allen Geweben maximal 5% des Gewebedrucks aus natürlicher Sättigung
+(Atmung von Luft unter aktuellem Umgebungsdruck) entspricht. Der sich
+ergebene Druckwert wird dann ebenfalls für das Rest-Helium angesetzt.
+Der aktuelle Umgebungsdruck wird laufend in die Berechnung einbezogen,
+die sich ergebene Zeit auf volle 10 Minuten gerundet ausgegeben.
+
+
+pSCR Modus:
+
+Neben dem CCR-Modus wird nun auch der pSCR-Modus vollständig unterstützt,
+inklusive optionalen Sensoren. Die Bedienung und die Menus sind weitest-
+gehend identisch, nur dort wo im CCR-Modus zwischen den Setpoints und
+Sensorbetrieb ausgewählt wird befindet sich im pSCR-Modus die Auswahl
+zwischen Sensorbetrieb und berechneten ppO2-Werten.
+
+
+Handling von Gas 6:
+
+In der bisherigen Implementierung wurden Änderungen an den O2- und He-
+Prozenten des Gases 6 sofort an die Berechnungen für die realen Gewebe
+innerhalb von p2_deco.c übergeben, ohne dass dazu der dedizierte Menu-
+Eintrag welcher die Zusammensetzung von Gas 6 anzeigt explizit ausgewählt
+werden musste. Ebenso wurde das Gas6-Event ausgelöst sowie einer der
+Prozentwerte verstellt wurde. In den Teil von p2_deco.c, der die Deko-
+Berechnungen ausführt, wurden die Werte von Gas 6 jedoch erst übernommen,
+wenn besagter Menu-Eintrag ausgewählt wurde, was in der Praxis zu
+Diskrepanzen führen muss.
+
+In der jetzigen Implementierung werden die O2- und He-Prozentwerte erst
+dann übernommen und als Gas 6 aktiviert, wenn der Gas6-Menueintrag
+explizit ausgewählt wird. Die Übernahme erfolgt sodann konsistent in die
+Berechnung sowohl der realen Gewebe als auch in die Dekoberechnung, und
+auch das Gas6-Event wird erst dann gesetzt.
+
+
+Deko-Kalkulator:
+
+Der Deko-Kalkulator benutzt die Gasverbrauchsraten, die im Deko-Menu,
+Untermenu "2nd Deco Plan" eingestellt sind. Über das Menu "Calculator
+Setup" kann eingestellt werden, welcher CCR Setpoint für die Berechnungen
+benutzt werden soll (nur relevant im CCR Modus) und ob die normalen oder
+die alternativen (aGF) GF-Faktoren für die Dekoberechnung benutzt werden
+sollen (gilt für alle Modi). Der Deko-Kalkulator ermittelt die benötigten
+Gasmengen in Litern (exakt: Barlitern).
+Kommt es aufgrund der benutzen Gase und des Deko-Profils zu einer IBCD,
+dann wird auf der Ergebnisseite eine entsprechende Warnung ausgegeben.
+Erfordert die Dekompression mehr Stopps als im OSTC gespeichert werden
+können, dann wird die Deko-Berechnung abgebrochen und eine "incomplete"
+Warnung ausgegeben. Die angezeigte Aufstiegszeit, der CNS-Wert und die
+ermittelten Gasbedarfe gelten nur bis zum Ende der angezeigten Stopps.
+Achtung: Die tatsächlichen Werte bis zum Erreichen der Oberfläche können
+unter Umständen deutlich größer sein als die angezeigten, da insbesondere
+die letzten Stopps (die nicht mehr berücksichtigt werden konnten) typisch
+am längsten dauern! Dieser Fall sollte jedoch bei Profilen praktisch
+durchführbarer Tauchgängen nicht auftreten.
+
+
+"DECO ZONE" and GF-"Ampel"
+
+Sobald beim Aufstieg mindestens ein Gewebe beginnt abzusättigen erscheint
+auf der Anzeige "DECO ZONE" in grüner Schrift. Ab diesem Zeitpunkt wird
+auch die Warnschwelle für den ppO2 von der normalen Max-Schwelle auf die
+Deco-Max-Schwelle umgestellt. Sollte wieder tiefer getaucht werden und
+keines der Gewebe mehr absättigen, so verschwindet die Anzeige "DECO
+ZONE" wieder und auch die ppO2 Warnschwelle wird wieder auf den normalen
+Max-Wert zurück geschaltet.
+Überschreitet während des Aufenthalts in der DECO ZONE der aktuelle GF-
+Wert den eingestellten Wert für den GF-high, dann erscheint anstatt des
+Textes "DECO ZONE" der aktuelle GF-Wert in gelber Farbe. Erreicht oder
+überschreitet der aktuelle GF-Wert 100%, dann wird dieser in roter Farbe
+angezeigt.
+
+
+Allgemeines:
+
+Der Quellcode von p2_deco.c ist in bezüglich Lesbarkeit und Kommentierung
+überarbeitet, alle Variablen in p2_deco.c und shared_definitions.h sind
+funktional gruppiert und ebenfalls vollständig kommentiert. In diversen
+Assembler-Quellcode-Dateien wurde ebenfalls die Kommentierung verbessert.