profile: fix displaying of profiles with multiple pressure sensors

When removing the MAX_CYLINDERS restriction, the layout of the
pressure readings was changed from a (cylinder,sample) to a
(sample,cylinder) scheme. I.e. previously there were one cylinder
block for each sample, then one sample block for one cylinder.

However, after populating the samples, the array size was reduced
to the actual number of used samples. With the new layout this
breaks indexing. Therefore, restore the old layout.

Fixes #2887

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-06-29 20:23:26 +02:00 committed by Dirk Hohndel
parent 628c7c8f13
commit 4ec88aa564

View file

@ -109,12 +109,12 @@ extern int get_maxdepth(const struct plot_info *pi);
static inline int get_plot_pressure_data(const struct plot_info *pi, int idx, enum plot_pressure sensor, int cylinder) static inline int get_plot_pressure_data(const struct plot_info *pi, int idx, enum plot_pressure sensor, int cylinder)
{ {
return pi->pressures[cylinder * pi->nr + idx].data[sensor]; return pi->pressures[cylinder + idx * pi->nr_cylinders].data[sensor];
} }
static inline void set_plot_pressure_data(struct plot_info *pi, int idx, enum plot_pressure sensor, int cylinder, int value) static inline void set_plot_pressure_data(struct plot_info *pi, int idx, enum plot_pressure sensor, int cylinder, int value)
{ {
pi->pressures[cylinder * pi->nr + idx].data[sensor] = value; pi->pressures[cylinder + idx * pi->nr_cylinders].data[sensor] = value;
} }
static inline int get_plot_sensor_pressure(const struct plot_info *pi, int idx, int cylinder) static inline int get_plot_sensor_pressure(const struct plot_info *pi, int idx, int cylinder)