changeset 490:68aa097f0062

BUGFIX (minor) deco_calc_CNS_planning should save ppO2 and gas switch history.
author JeanDo
date Sat, 29 Oct 2011 15:53:21 +0200
parents b8edb7362870
children 560764da0629
files code_part1/OSTC_code_c_part2/p2_deco.c
diffstat 1 files changed, 25 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/code_part1/OSTC_code_c_part2/p2_deco.c	Mon Oct 17 21:55:09 2011 +0200
+++ b/code_part1/OSTC_code_c_part2/p2_deco.c	Sat Oct 29 15:53:21 2011 +0200
@@ -2396,12 +2396,24 @@
 //
 // Input:   CNS_fraction, char_O_deco_time[], char_O_deco_depth[]
 // Output:  CNS_fraction, char_O_CNS_fraction
-// Trashed: char_I_actual_ppO2
 //
 void deco_calc_CNS_planning(void)
 {
+    overlay unsigned char  backup_gas_last_depth;
+    overlay unsigned char  backup_gas_last_used;
+    overlay unsigned short backup_gas_delay;
+    overlay unsigned short backup_dive_mins;
+    overlay unsigned char  backup_actual_ppO2;
+
     RESET_C_STACK
-    
+
+    // Backup state machine
+    backup_gas_last_depth = sim_gas_last_depth;
+    backup_gas_last_used  = sim_gas_last_used;
+    backup_gas_delay      = sim_gas_delay;
+    backup_dive_mins      = sim_dive_mins;
+    backup_actual_ppO2    = char_I_actual_ppO2;
+
     // Uses 1min CNS period:
     char_I_step_is_1min = 1;
     
@@ -2437,7 +2449,10 @@
         time = (unsigned char)(0.1 * char_I_bottom_depth + 0.5);
 
         for(t=0; t<time; ++t)
+        {
             deco_calc_CNS_fraction();
+            sim_dive_mins++;
+        }
 
         //---- Do all further stops
         for(i=0; i<NUM_STOPS; ++i)
@@ -2460,12 +2475,20 @@
 
             //---- Apply the stop
             for(t=0; t<time; ++t)
+            {
                 deco_calc_CNS_fraction();
+                sim_dive_mins++;
+            }
         }
     }
 
     // Back to normal mode...
     char_I_step_is_1min = 0;
+    sim_gas_last_depth  = backup_gas_last_depth;
+    sim_gas_last_used   = backup_gas_last_used;
+    sim_gas_delay       = backup_gas_delay;
+    sim_dive_mins       = backup_dive_mins;
+    char_I_actual_ppO2  = backup_actual_ppO2;
 }    
 
 //////////////////////////////////////////////////////////////////////////////