mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 18:13:24 +00:00
cleanup: move fill_default_cylinder from planner.c to equipment.c
Moreover, move the declaration from dive.h to equipment.h. The result is a) more consistent and b) more logical. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
e008b42a59
commit
36754d3399
4 changed files with 31 additions and 32 deletions
|
@ -376,7 +376,6 @@ extern void copy_used_cylinders(const struct dive *s, struct dive *d, bool used_
|
|||
extern void copy_samples(const struct divecomputer *s, struct divecomputer *d);
|
||||
extern bool is_cylinder_used(const struct dive *dive, int idx);
|
||||
extern bool is_cylinder_prot(const struct dive *dive, int idx);
|
||||
extern void fill_default_cylinder(const struct dive *dive, cylinder_t *cyl);
|
||||
extern void add_gas_switch_event(struct dive *dive, struct divecomputer *dc, int time, int idx);
|
||||
extern struct event *add_event(struct divecomputer *dc, unsigned int time, int type, int flags, int value, const char *name);
|
||||
extern void remove_event(struct event *event);
|
||||
|
|
|
@ -392,6 +392,36 @@ cylinder_t *get_or_create_cylinder(struct dive *d, int idx)
|
|||
return &d->cylinders.cylinders[idx];
|
||||
}
|
||||
|
||||
/* if a default cylinder is set, use that */
|
||||
void fill_default_cylinder(const struct dive *dive, cylinder_t *cyl)
|
||||
{
|
||||
const char *cyl_name = prefs.default_cylinder;
|
||||
struct tank_info_t *ti = tank_info;
|
||||
pressure_t pO2 = {.mbar = 1600};
|
||||
|
||||
if (!cyl_name)
|
||||
return;
|
||||
while (ti->name != NULL && ti < tank_info + MAX_TANK_INFO) {
|
||||
if (strcmp(ti->name, cyl_name) == 0)
|
||||
break;
|
||||
ti++;
|
||||
}
|
||||
if (ti->name == NULL)
|
||||
/* didn't find it */
|
||||
return;
|
||||
cyl->type.description = strdup(ti->name);
|
||||
if (ti->ml) {
|
||||
cyl->type.size.mliter = ti->ml;
|
||||
cyl->type.workingpressure.mbar = ti->bar * 1000;
|
||||
} else {
|
||||
cyl->type.workingpressure.mbar = psi_to_mbar(ti->psi);
|
||||
if (ti->psi)
|
||||
cyl->type.size.mliter = lrint(cuft_to_l(ti->cuft) * 1000 / bar_to_atm(psi_to_bar(ti->psi)));
|
||||
}
|
||||
// MOD of air
|
||||
cyl->depth = gas_mod(cyl->gasmix, pO2, dive, 1);
|
||||
}
|
||||
|
||||
cylinder_t create_new_cylinder(const struct dive *d)
|
||||
{
|
||||
cylinder_t cyl = empty_cylinder;
|
||||
|
|
|
@ -92,6 +92,7 @@ extern void set_weightsystem(struct dive *dive, int idx, weightsystem_t ws);
|
|||
extern void reset_cylinders(struct dive *dive, bool track_gas);
|
||||
extern int gas_volume(const cylinder_t *cyl, pressure_t p); /* Volume in mliter of a cylinder at pressure 'p' */
|
||||
extern int find_best_gasmix_match(struct gasmix mix, const struct cylinder_table *cylinders);
|
||||
extern void fill_default_cylinder(const struct dive *dive, cylinder_t *cyl); /* dive is needed to fill out MOD, which depends on salinity. */
|
||||
extern cylinder_t create_new_cylinder(const struct dive *dive); /* dive is needed to fill out MOD, which depends on salinity. */
|
||||
#ifdef DEBUG_CYL
|
||||
extern void dump_cylinders(struct dive *dive, bool verbose);
|
||||
|
|
|
@ -175,37 +175,6 @@ static int tissue_at_end(struct deco_state *ds, struct dive *dive, struct deco_s
|
|||
return surface_interval;
|
||||
}
|
||||
|
||||
|
||||
/* if a default cylinder is set, use that */
|
||||
void fill_default_cylinder(const struct dive *dive, cylinder_t *cyl)
|
||||
{
|
||||
const char *cyl_name = prefs.default_cylinder;
|
||||
struct tank_info_t *ti = tank_info;
|
||||
pressure_t pO2 = {.mbar = 1600};
|
||||
|
||||
if (!cyl_name)
|
||||
return;
|
||||
while (ti->name != NULL && ti < tank_info + MAX_TANK_INFO) {
|
||||
if (strcmp(ti->name, cyl_name) == 0)
|
||||
break;
|
||||
ti++;
|
||||
}
|
||||
if (ti->name == NULL)
|
||||
/* didn't find it */
|
||||
return;
|
||||
cyl->type.description = strdup(ti->name);
|
||||
if (ti->ml) {
|
||||
cyl->type.size.mliter = ti->ml;
|
||||
cyl->type.workingpressure.mbar = ti->bar * 1000;
|
||||
} else {
|
||||
cyl->type.workingpressure.mbar = psi_to_mbar(ti->psi);
|
||||
if (ti->psi)
|
||||
cyl->type.size.mliter = lrint(cuft_to_l(ti->cuft) * 1000 / bar_to_atm(psi_to_bar(ti->psi)));
|
||||
}
|
||||
// MOD of air
|
||||
cyl->depth = gas_mod(cyl->gasmix, pO2, dive, 1);
|
||||
}
|
||||
|
||||
/* calculate the new end pressure of the cylinder, based on its current end pressure and the
|
||||
* latest segment. */
|
||||
static void update_cylinder_pressure(struct dive *d, int old_depth, int new_depth, int duration, int sac, cylinder_t *cyl, bool in_deco, enum divemode_t divemode)
|
||||
|
|
Loading…
Add table
Reference in a new issue