Skip to content
Snippets Groups Projects
syringe.h 1.52 KiB

#pragma once

#include "motor.h"

#include <ArduinoJson.h>
#include <interrupts.h> // InterruptLock
using InterruptLock = esp8266::InterruptLock;

#include <iostream>
using namespace std;


class Syringe
{
  private :

  String _name; //Would be used as the key
  String _ref;
  String brand;
  float _total_volume_mL;
  float _internal_diameter_mm;

  //JSON DOCUMENT
  static StaticJsonDocument<200> syringe_json;  //200 = RAM allocated to this document


  public :
  
  //CONSTRUCTORS
  Syringe(); //There is no arguments because we add the generic syringe to use
  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_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 name);
  string get_brand(String name);
  float get_total_volume_mL(String name);
  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);

};

extern Syringe syringe;