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