- len = snprintf(str, sizeof(str),
- "%d;%d;%.1f;"
- "%.3f;%.3f;%.3f;"
- "%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;"
- "%.f;%.1f;%.1f\n", /* mAh, and temp */
- data.channel,
- data.state,
- data.timestamp,
-
- data.input_voltage,
- data.charging_voltage,
- data.charging_current,
-
- data.cell_voltage[0],
- data.cell_voltage[1],
- data.cell_voltage[2],
- data.cell_voltage[3],
- data.cell_voltage[4],
- data.cell_voltage[5],
- data.cell_voltage[6],
- data.cell_voltage[7],
- data.cell_voltage[8],
- data.cell_voltage[9],
- data.int_temp,
- data.ext_temp,
- data.total_charge);
-
- ret = write(outfd, str, len);
- if (ret < 0) {
- pr_err("write: %m\n");
- break;
- }
+ if (state_has_changed()) {
+ dt->start_time = time(NULL);
+ data.timestamp = 0;
+ store_str_variable_value_to_array("status",
+ state_to_str(plotter_state.system_status), dt->cfg);
+
+ store_int_variable_value_to_array("cell_count",
+ data.cell_count, dt->cfg);
+
+ ret = open_new_logfile(dt, data.channel);
+ if (ret < 0)
+ return ret;
+ }
+
+ len = snprintf(str, sizeof(str),
+ "%d;%d;%.1f;"
+ "%.3f;%.3f;%.3f;"
+ "%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;%.3f;"
+ "%.f;%.1f;%.1f\n", /* mAh, and temp */
+ data.channel,
+ data.state,
+ data.timestamp,
+
+ data.input_voltage,
+ data.charging_voltage,
+ data.charging_current,
+
+ data.cell_voltage[0],
+ data.cell_voltage[1],
+ data.cell_voltage[2],
+ data.cell_voltage[3],
+ data.cell_voltage[4],
+ data.cell_voltage[5],
+ data.cell_voltage[6],
+ data.cell_voltage[7],
+ data.cell_voltage[8],
+ data.cell_voltage[9],
+ data.int_temp,
+ data.ext_temp,
+ data.total_charge);
+
+ if (dt->outfd[data.channel] <= 0)
+ open_new_logfile(dt, data.channel);
+
+ ret = write(dt->outfd[data.channel], str, len);
+ if (ret < 0) {
+ pr_err("write: %m\n");
+ return -1;;