summaryrefslogtreecommitdiffstats
path: root/core/profile.c
diff options
context:
space:
mode:
authorGravatar Willem Ferguson <willemferguson@zoology.up.ac.za>2018-03-14 17:13:37 +0200
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2018-04-28 20:11:22 +0300
commit81a812539c95f2e709995d446065803c09e9136a (patch)
treee75422bbd34a909e3f897e3200e6624ad83e6b9a /core/profile.c
parente9fd4cb7dca13c01f85ad63b667100ee15d7dc6d (diff)
downloadsubsurface-81a812539c95f2e709995d446065803c09e9136a.tar.gz
Plot OC-pO2 graph for SCR dives
This commit allows plotting the OC-equivalent pO2 graph for PSCR dives. This happens in both the cases where there is no external O2-monitoring AND when there is external pO2 monitoring. The calculations are only done for PSCR dives and is achieved as follows: 1) Within plot-info create a pressure-t called OC_pO2 in profile.h and populate this variable with the open-circuit pO2 values in profile.c. 2) Create a new partialPressureGasItem ocpo2GasItem in profilewidget2.h and, in profilewidget2.cpp, initialise it to read the plot-info OC_pO2 values and enable its display by using the setVisible method. The diveplotdatamodel was also touched in order to achieve this. 3) Create a pref button that controls the display of OC-pO2 for SCR dives 4) Change the colour of the OC-pO2 grpah to orange 5) Change the connection of the crr_OC_pO2 signal to be appropriate 6) rename the OC_pO2 attribute to scr_OC-pO2 Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Diffstat (limited to 'core/profile.c')
-rw-r--r--core/profile.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/core/profile.c b/core/profile.c
index 835e68dcc..c5105c4f5 100644
--- a/core/profile.c
+++ b/core/profile.c
@@ -1214,6 +1214,8 @@ static void calculate_gas_information_new(struct dive *dive, struct divecomputer
fill_pressures(&entry->pressures, amb_pressure, gasmix, entry->o2pressure.mbar / 1000.0, dive->dc.divemode);
fn2 = (int)(1000.0 * entry->pressures.n2 / amb_pressure);
fhe = (int)(1000.0 * entry->pressures.he / amb_pressure);
+ if (dc->divemode == PSCR) // OC pO2 is calulated for PSCR with or without external PO2 monitoring.
+ entry->scr_OC_pO2.mbar = (int) depth_to_mbar(entry->depth, dive) * get_o2(get_gasmix(dive, dc, entry->sec, &ev, gasmix)) / 1000;
/* Calculate MOD, EAD, END and EADD based on partial pressures calculated before
* so there is no difference in calculating between OC and CC