From f3bd5d87a8378efff872110bcc7cc13915f9f2cd Mon Sep 17 00:00:00 2001 From: Malaurie Bernard <mbernard@kinouby> Date: Fri, 7 Jul 2023 09:28:41 +0200 Subject: [PATCH] Adaptation of cli code to new notations and creation of a check_configuration function for syringe --- cli.cpp | 37 ++++++++++++++++++++----------------- syringe.cpp | 18 ++++++++++++++++++ syringe.h | 3 +++ syringefilled.cpp | 2 +- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/cli.cpp b/cli.cpp index 5f807d0..abcd3fd 100644 --- a/cli.cpp +++ b/cli.cpp @@ -214,56 +214,59 @@ void Cli::loop (Stream& input) else if (kw(F("FMM"))) //*******************FRONT_DISTANCE*******************// { copyNextToTemp(); + String name_syringe = SyringeFilled :: get_syringe_filled_data()["name_syringe"]; if (_temp.length()) { if (isdigit(_temp[0])) - syringe_filled.set_remaining_volume_mL(syringe_filled.distance_to_volume(atof(_temp.c_str()), syringe_filled.get_id_syringe())); + syringe_filled.set_remaining_volume_mL(syringe_filled.distance_to_volume(atof(_temp.c_str()))); answer(syringe_filled.check_configuration(), F("invalid length to the front")); copyNextToTemp(); } - Serial.printf("%sFMM: %g ul (%g mm) (target)\n", _msgHeader, syringe_filled.get_remaining_volume_mL(), syringe_filled.volume_to_distance(syringe_filled.get_remaining_volume_mL(), syringe_filled.get_id_syringe())); + Serial.printf("%sFMM: %g ul (%g mm) (target)\n", _msgHeader, syringe_filled.get_remaining_volume_mL(), syringe_filled.volume_to_distance(syringe_filled.get_remaining_volume_mL())); } else if (kw(F("EMM"))) //*******************EXCHANGE_DISTANCE*******************// { copyNextToTemp(); + String name_syringe = SyringeFilled :: get_syringe_filled_data()["name_syringe"]; if (_temp.length()) { if (isdigit(_temp[0]) || _temp[0] == '-') - syringe_filled.set_exchange_volume_mL(syringe_filled.distance_to_volume(atof(_temp.c_str()), syringe_filled.get_id_syringe())); + syringe_filled.set_exchange_volume_mL(syringe_filled.distance_to_volume(atof(_temp.c_str()))); answer(syringe_filled.check_configuration(), F("invalid exchange length")); copyNextToTemp(); } - Serial.printf("%sRMM: %g ul (%g mm) (target)\n", _msgHeader, syringe_filled.get_exchange_volume_mL(), syringe_filled.volume_to_distance(syringe_filled.get_exchange_volume_mL(), syringe_filled.get_id_syringe())); + Serial.printf("%sRMM: %g ul (%g mm) (target)\n", _msgHeader, syringe_filled.get_exchange_volume_mL(), syringe_filled.volume_to_distance(syringe_filled.get_exchange_volume_mL())); } else if (kw(F("DIA"))) //*******************INTERNAL_DIAMETER*******************// { copyNextToTemp(); + String name_syringe = SyringeFilled :: get_syringe_filled_data()["name_syringe"]; if (_temp.length()) { - syringe_filled.get_id_syringe()->set_internal_diameter_mm(atof(_temp.c_str())); - answer(syringe_filled.get_id_syringe()->check_configuration(), F("invalid diameter")); + syringe.set_internal_diameter_mm(name_syringe, atof(_temp.c_str())); + answer( syringe.check_configuration(name_syringe), F("invalid diameter")); } - Serial.printf("%sDIA: %g mm\n", _msgHeader, syringe_filled.get_id_syringe()->get_internal_diameter_mm()); + Serial.printf("%sDIA: %g mm\n", _msgHeader, Syringe :: get_syringe_database()[name_syringe]["internal_diameter_mm"]); } else if (kw(F("RVM"))) { copyNextToTemp(); if (_temp == F("M4")) - syringe_filled.setMmPerRev(M4_MMREV); + syringe_filled.set_mm_per_revolution(M4_MMREV); else if (_temp == F("M5")) - syringe_filled.setMmPerRev(M5_MMREV); + syringe_filled.set_mm_per_revolution(M5_MMREV); else if (_temp.length() > 0) answer(false, F("invalid auger size: M4 or M5 are accepted")); - Serial.printf("%sRVM: %g mm per revolution\n", _msgHeader, syringe_filled.getMmPerRev()); + Serial.printf("%sRVM: %g mm per revolution\n", _msgHeader, syringe_filled.get_mm_per_revolution()); } else if (kw(F("ACC"))) //*******************ACCELERATION*******************// { copyNextToTemp(); if (_temp.length()) - syringe_filled.setAccelMmPerSecPerSec(atof(_temp.c_str())); - Serial.printf("%sACC: %g mm per second per second\n", _msgHeader, syringe_filled.getAccelMmPerSecPerSec()); + syringe_filled.set_accel_mm_per_sec_per_sec(atof(_temp.c_str())); + Serial.printf("%sACC: %g mm per second per second\n", _msgHeader, syringe_filled.get_accel_mm_per_sec_per_sec()); } else if (kw(F("DIR"))) //*******************DIRECTION*******************// { @@ -287,19 +290,19 @@ void Cli::loop (Stream& input) } else if (kw(F("STP"))) { - syringe_filled.stayHere(); + syringe_filled.stay_here(); answer(true); } else if (kw(F("SET0"))) { - syringe_filled.resetPosition(); + syringe_filled.reset_position(); answer(true); } else if (kw(F("DIS"))) //*******************DISTANCE_PARCOURU*******************// { Serial.printf("%sDIS: I %g W %g UL\n", _msgHeader, - syringe_filled.get_push()? syringe_filled.distance_to_volume(syringe_filled.stepToMm(syringe_filled.whereStep())): 0, - syringe_filled.get_push()? 0 : syringe_filled.distance_to_volume(syringe_filled.stepToMm(syringe_filled.whereStep()))); + syringe_filled.get_push()? syringe_filled.distance_to_volume(syringe_filled.step_to_mm(syringe_filled.where_step())): 0, + syringe_filled.get_push()? 0 : syringe_filled.distance_to_volume(syringe_filled.step_to_mm(syringe_filled.where_step()))); } else if (kw(F("ZERO"))) //*******************ZERO*******************// { @@ -329,7 +332,7 @@ void Cli::loop (Stream& input) } else if (kw(F("CONF"))) //*******************SHOW_CONFIGURATION*******************// { - syringe_filled.showConfiguration(syringe_filled.show_configuration()); + syringe_filled.show_configuration(); answer(true); } else if (kw(F("FS-LS"))) diff --git a/syringe.cpp b/syringe.cpp index 9100a21..23f69b8 100644 --- a/syringe.cpp +++ b/syringe.cpp @@ -84,6 +84,24 @@ const StaticJsonDocument<200>& Syringe :: get_syringe_database() } +//CONFIGURATION +bool Syringe :: check_configuration(String name) +{ + if (SyringeJSON[name]["total_volume_mL"] < 0) + return false; + + else if (SyringeJSON[name]["internal_diameter_mm"] < 0) + return false; + + else + return true; +} + + + + + + //Example : File f = ({ InterruptLock lock; filesystem->open(filename, "w"); }); and the f becomes the argument output_stream //useful in web.cpp via a button to save data void Syringe :: write_Json (Stream& output_stream) diff --git a/syringe.h b/syringe.h index e6d5742..92134b6 100644 --- a/syringe.h +++ b/syringe.h @@ -46,6 +46,9 @@ class Syringe float get_internal_diameter_mm(String name); static const StaticJsonDocument<200>& get_syringe_database(); + //CONFIGURATION + bool check_configuration(String name); + //JSON METHODS void write_Json (Stream& output_stream); void read_Json (Stream& input_stream); diff --git a/syringefilled.cpp b/syringefilled.cpp index 92f07c9..07d8dc8 100644 --- a/syringefilled.cpp +++ b/syringefilled.cpp @@ -11,7 +11,7 @@ SyringeFilled :: SyringeFilled (MotorHardware_t& stepper): Motor(stepper) set_exchange_volume_mL(1); set_remaining_volume_mL(1); set_push(true); - set_name_syringe("300912"); + set_name_syringe("BD_10mL"); set_screw_thread_mm(4); set_clockwise_equals_push(true); set_emergency(false); -- GitLab