From 0bf2cae32e3f2f41099abb2b4fa388babcdc526d Mon Sep 17 00:00:00 2001
From: Malaurie Bernard <mbernard@kinouby>
Date: Thu, 6 Jul 2023 14:15:36 +0200
Subject: [PATCH] Correection of the way to use arduinoJson structure, and
 cretio of a name attribute to use it as the key

---
 syringe.cpp       | 59 +++++++++++++++++++++++++----------------------
 syringe.h         | 20 ++++++++--------
 syringefilled.cpp |  2 +-
 3 files changed, 44 insertions(+), 37 deletions(-)

diff --git a/syringe.cpp b/syringe.cpp
index d3e641d..bb0f0ca 100644
--- a/syringe.cpp
+++ b/syringe.cpp
@@ -7,44 +7,49 @@
 Syringe :: Syringe()
 {
     //First Syringe
-    set_ref("300912");
-    set_brand("BD");
-    set_total_volume_mL(10);
-    set_internal_diameter_mm(14.5);
-    
+    set_syringe("BD_10mL", "300912","BD", 10, 14.5);
+    set_syringe("Terumo_5mL", "0197","Terumo", 5, 10);
 }
 
-Syringe :: Syringe(string ref, string brand, float total_volume_mL, float internal_diameter_mm)
+Syringe :: Syringe(String name, string ref, string brand, float total_volume_mL, float internal_diameter_mm)
 {
-    set_ref(ref);
-    set_brand(brand);
-    set_total_volume_mL(total_volume_mL);
-    set_internal_diameter_mm(internal_diameter_mm);
+    set_ref(name, ref);
+    set_brand(name, brand);
+    set_total_volume_mL(name, total_volume_mL);
+    set_internal_diameter_mm(name, internal_diameter_mm);
     
 }
 
 
 
-
 //SET METHODS
-void Syringe :: set_ref(string ref)
+void Syringe :: set_syringe(String name, string ref, string brand, float total_volume_mL, float internal_diameter_mm)
+{
+    SyringeJSON["name"] = name;
+    set_ref(name, ref);
+    set_brand(name, brand);
+    set_total_volume_mL(name, total_volume_mL);
+    set_internal_diameter_mm(name, internal_diameter_mm);
+}
+
+void Syringe :: set_ref(String name, string ref)
 {
-    SyringeJSON["ref"] = ref;
+    SyringeJSON[name]["ref"] = ref;
 }
 
-void Syringe :: set_brand(string brand)
+void Syringe :: set_brand(String name, string brand)
 {
-    SyringeJSON["brand"] = brand;
+    SyringeJSON[name]["brand"] = brand;
 }
 
-void Syringe :: set_total_volume_mL(float total_volume_mL)
+void Syringe :: set_total_volume_mL(String name, float total_volume_mL)
 {
-    SyringeJSON["total_volume_mL"] = total_volume_mL;
+    SyringeJSON[name]["total_volume_mL"] = total_volume_mL;
 }
 
-void Syringe :: set_internal_diameter_mm(float internal_diameter_mm)
+void Syringe :: set_internal_diameter_mm(String name, float internal_diameter_mm)
 {
-    SyringeJSON["internal_diameter_mm"] = internal_diameter_mm;
+    SyringeJSON[name]["internal_diameter_mm"] = internal_diameter_mm;
 }
 
 
@@ -52,24 +57,24 @@ void Syringe :: set_internal_diameter_mm(float internal_diameter_mm)
 
 
 //GET METHODS
-string Syringe :: get_ref()
+string Syringe :: get_ref(String name)
 {
-    return SyringeJSON["ref"].as<string>();
+    return SyringeJSON[name]["ref"].as<string>();
 }
 
-string Syringe :: get_brand( )
+string Syringe :: get_brand(String name)
 {
-    return SyringeJSON["brand"].as<string>();
+    return SyringeJSON[name]["brand"].as<string>();
 }
 
-float Syringe :: get_total_volume_mL()
+float Syringe :: get_total_volume_mL(String name)
 {
-    return SyringeJSON["total_volume_mL"].as<float>();
+    return SyringeJSON[name]["total_volume_mL"].as<float>();
 }
 
-float Syringe :: get_internal_diameter_mm()
+float Syringe :: get_internal_diameter_mm(String name)
 {
-    return SyringeJSON["internal_diameter_mm"].as<float>();
+    return SyringeJSON[name]["internal_diameter_mm"].as<float>();
 }
 
 
diff --git a/syringe.h b/syringe.h
index b7d8f5d..7ff5edb 100644
--- a/syringe.h
+++ b/syringe.h
@@ -15,6 +15,7 @@ class Syringe
 {
   private :
 
+  string _name; //Would be used as the key
   string _ref;
   string brand;
   float _total_volume_mL;
@@ -26,20 +27,21 @@ class Syringe
   
   //CONSTRUCTORS
   Syringe(); //There is no arguments because we add the generic syringe to use
-  Syringe(string ref, string brand, float total_volume_mL, float internal_diameter_mm); //There are arguments because we need to know what values to add in the Json document (no default syringe)
+  Syringe(String name, string ref, string brand, float total_volume_mL, float internal_diameter_mm); //There are arguments because we need to know what values to add in the Json document (no default syringe)
 
   //SET METHODS
-  void set_ref(string ref);
-  void set_brand(string brand);
-  void set_total_volume_mL(float total_volume_mL);
-  void set_internal_diameter_mm(float internal_diameter_mm);
+  void set_syringe(String name, string ref, string brand, float total_volume_mL, float internal_diameter_mm);
 
+  void set_ref(String name, string ref);
+  void set_brand(String name, string brand);
+  void set_total_volume_mL(String name, float total_volume_mL);
+  void set_internal_diameter_mm(String name, float internal_diameter_mm);
 
   //GET METHODS
-  string get_ref();
-  string get_brand();
-  float get_total_volume_mL();
-  float get_internal_diameter_mm();
+  string get_ref(String name);
+  string get_brand(String name);
+  float get_total_volume_mL(String name);
+  float get_internal_diameter_mm(String name);
 
   //JSON DOCUMENT
   StaticJsonDocument<200> SyringeJSON;  //200 = RAM allocated to this document
diff --git a/syringefilled.cpp b/syringefilled.cpp
index 39ef443..7e1a495 100644
--- a/syringefilled.cpp
+++ b/syringefilled.cpp
@@ -326,6 +326,6 @@ void SyringeFilled :: read_Json (Stream& input_stream) //file_name sera le nom d
 
 InterruptLock lock; //useful thanks to its constructor (so a is not visible in the code)
 deserializeJson(SyringeFilledJSON, input_stream);
-  
 
 }
+
-- 
GitLab