Skip to content
Snippets Groups Projects
web.cpp 37 KiB
Newer Older
David Gauchard's avatar
David Gauchard committed

    HeapSelectIram abc;
    couleurs[0] = couleur1;
    couleurs[1] = couleur2;
    couleurs[2] = couleur3;
    couleurs[3] = couleur4;
    couleurs[4] = couleur5;
    couleurs[5] = couleur6;
    couleurs[6] = couleur7;
    couleurs[7] = couleur8;
    couleurs[8] = couleur9;
    couleurs[9] = couleur10;


    configurations = ESPUI.addControl(ControlType::Tab, "Configurations", "Configurations");
    new_syringe = ESPUI.addControl(ControlType::Tab, "Nouvelle Seringue", "Nouvelle seringue");
    features = ESPUI.addControl(ControlType::Tab, "Caracteristiques du pousse-seringue", "Caracteristiques du pousse-seringue");
    //***Syringe-pump***//
    status_syringe_pump = ESPUI.label("Etat du pousse-seringue :", ControlColor::None, "A l'arrêt");

    stop_syringe_pump = ESPUI.addControl(ControlType::Button, "Mise en marche", "\u26D4", ControlColor::None, status_syringe_pump, [&](Control* sender, int value){stop_syringe_pump_callback(sender, value);});

    status_syringe_filled_placement = ESPUI.label("Etat de la seringue :", ControlColor::None, "Enlevée");
    syringe_filled_placement = ESPUI.addControl(ControlType::Switcher, "Mise en marche", "Arrêt", ControlColor::None, status_syringe_filled_placement,[&](Control* sender, int value){syringe_filled_placement_callback(sender, value);});
    ESPUI.addControl(ControlType::Separator, "", "", ControlColor::None);

    //***Limit-switch***//
    status_limit_switch = ESPUI.label("Etat du capteur de fin de course:", ControlColor::None, "Off");
    calibration = ESPUI.button("Callibration", [&](Control* sender, int value){calibration_callback(sender, value);}, ControlColor::None, "\u21E4");
    fast_backward = ESPUI.button("Initialisation", [&](Control* sender, int value){fast_backward_callback(sender, value);}, ControlColor::None, "\u2BC7 \u2BC7");
    slow_backward = ESPUI.addControl(ControlType::Button, "Initialisation", "\u2BC7", ControlColor::None, fast_backward, [&](Control* sender, int value){slow_backward_callback(sender, value);});
    slow_forward = ESPUI.addControl(ControlType::Button, "Initialisation", "\u2BC8", ControlColor::None, fast_backward, [&](Control* sender, int value){slow_forward_callback(sender, value);});
    fast_forward =  ESPUI.addControl(ControlType::Button, "Initialisation", "\u2BC8 \u2BC8", ControlColor::None, fast_backward, [&](Control* sender, int value){fast_forward_callback(sender, value);});
    confirm_initialisation = ESPUI.button("Valider l'initialisation", [&](Control* sender, int value){confirm_initialisation_callback(sender, value);}, ControlColor::None, "\u2714");
    ESPUI.addControl(ControlType::Separator, "", "", ControlColor::None);
Malaurie Bernard's avatar
Malaurie Bernard committed
    //Exchange_values_wanted
Malaurie Bernard's avatar
Malaurie Bernard committed
    initial_volume_mL_label =ESPUI.addControl( ControlType::Label, "Configuration de l'échange", "Volume initial contenu dans la seringue : ", ControlColor::None);
    initial_volume_mL =  ESPUI.addControl( ControlType::Number, "Volume initial contenu dans la seringue : ", "0", ControlColor::None, initial_volume_mL_label, [&](Control* sender, int value){initial_volume_mL_callback(sender, value);});
    volume_exchange_mL_label = ESPUI.addControl(ControlType::Label, "Configuration de l'échange", "Volume à échanger en mL", ControlColor::None, initial_volume_mL_label);
    volume_exchange_mL = ESPUI.addControl(ControlType::Number,"Configuration de l'échange", "0", ControlColor::None, initial_volume_mL_label, [&](Control* sender, int value){volume_exchange_mL_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    exchange_throughtput_uL_per_min_or_duration_sec_label = ESPUI.addControl(ControlType::Label, "Configuration de l'échange", "Débit de l'échange en uL/sec", ControlColor::None, initial_volume_mL_label);
    exchange_throughtput_uL_per_min_or_duration_sec = ESPUI.addControl(ControlType::Number,"Configuration de l'échange", "0", ControlColor::None, initial_volume_mL_label, [&](Control* sender, int value){exchange_throughtput_uL_per_min_or_duration_sec_callback(sender, value);});
    number_max_min(0, 500, exchange_throughtput_uL_per_min_or_duration_sec);
    throughput_or_duration = ESPUI.addControl(ControlType::Button, "Configuration de l'échange", "\u21C6", ControlColor::None, initial_volume_mL_label, [&](Control* sender, int value){throughput_or_duration_callback(sender, value);});

    label_push_pull_choice = ESPUI.addControl(ControlType::Label, "Injection ou Aspiration", "Injection", ControlColor::None, initial_volume_mL_label);
    switch_push_pull_choice = ESPUI.addControl(ControlType::Switcher, "Injection ou Aspiration", "Injection", ControlColor::None, initial_volume_mL_label, [&](Control* sender, int value){switch_push_pull_choice_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    ESPUI.updateSwitcher(switch_push_pull_choice, true); //pour mettre a "Injection" par défaut au début
    start_exchange = ESPUI.addControl(ControlType::Button, "Start exchange", "\xF0\x9F\x8F\x81", ControlColor::None, initial_volume_mL_label, [&](Control* sender, int value){start_exchange_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    //Remaning_values
    label_remaining_volume_mL = ESPUI.label("Caractéristiques de l'échange en cours", ControlColor::None, "Volume restant en mL");
    remaining_volume_mL = ESPUI.addControl(ControlType::Slider, "Volume", "0", ControlColor::None, label_remaining_volume_mL, [&](Control* sender, int value){remaining_volume_mL_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    label_remaining_time_sec = ESPUI.addControl( ControlType::Label, "Caractéristiques de l'échange en cours", "Temps restant en sec", ControlColor::None, label_remaining_volume_mL);
    remaining_time_sec = ESPUI.addControl(ControlType::Slider, "Temps", "0", ControlColor::None, label_remaining_volume_mL, [&](Control* sender, int value){remaining_time_sec_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed



    ESPUI.sliderContinuous = true;


    //Configurations
    //Choice_of_syringe_model
    syringe_selection = ESPUI.addControl(ControlType::Select, "Choix de la seringue :", "", ControlColor::None, configurations, [&](Control* sender, int value){syringe_selection_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    select_syringe_update(configurations);
    syringe_volume_mL_value = 5;
    syringe_volume_mL_string = "Volume total: " + std::to_string(syringe_volume_mL_value) + "mL";
    syringe_volume_mL =ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue : ", syringe_volume_mL_string.c_str() , ControlColor::None, configurations);

    syringe_diameter_mm_value = 5;
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_diameter_mm_string = "internal diameter : " + std::to_string(syringe_diameter_mm_value) + "mm";
    syringe_diameter_mm =ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue : ", syringe_diameter_mm_string.c_str(), ControlColor::None, syringe_volume_mL);
    choose_syringe = ESPUI.addControl(ControlType::Button, "Choisir cette seringue", "\u2714", ControlColor::None, syringe_selection, [&](Control* sender, int value){choose_syringe_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    load_syringe_json = ESPUI.addControl(ControlType::Button, "Charger les seringues", "\u2714", ControlColor::None, configurations, [&](Control* sender, int value){load_syringe_json_callback(sender, value);});
  
    ESPUI.addControl(ControlType::Separator, "", "", ControlColor::None, configurations);
Malaurie Bernard's avatar
Malaurie Bernard committed
   
    //New_syringe
    name_new_syringe_label = ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Nom de la seringue :", ControlColor::None, new_syringe);
    name_new_syringe = ESPUI.addControl(ControlType::Text, "Nouvelle seringue", "", ControlColor::None, name_new_syringe_label, [&](Control* sender, int value){name_new_syringe_callback(sender, value);});
    internal_diameter_mm_new_syringe_label =ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Diamètre interne de la seringue en mm :", ControlColor::None, name_new_syringe_label);
    internal_diameter_mm_new_syringe = ESPUI.addControl(ControlType::Number, "Diamètre interne de la seringue en mm", "5", ControlColor::None, name_new_syringe_label, [&](Control* sender, int value){internal_diameter_mm_new_syringe_callback(sender, value);});
    number_max_min(0, 500, internal_diameter_mm_new_syringe);

    total_volume_mL_new_syringe_label =ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Volume total de la seringue en mL :", ControlColor::None, name_new_syringe_label);
    total_volume_mL_new_syringe = ESPUI.addControl(ControlType::Number, "Volume total de la seringue en mL", "5", ControlColor::None, name_new_syringe_label, [&](Control* sender, int value){total_volume_mL_new_syringe_callback(sender, value);});
    number_max_min(0, 500, total_volume_mL_new_syringe);

    ESPUI.addControl(ControlType::Separator, "Je suis là", "", ControlColor::None, name_new_syringe_label);

Malaurie Bernard's avatar
Malaurie Bernard committed
    save_syringe = ESPUI.addControl(ControlType::Button, "Sauvegarder la seringue", "\u2714", ControlColor::None, new_syringe, [&](Control* sender, int value){save_syringe_callback(sender, value);});
    syringe_pump_length_mm_value  = ESPUI.addControl(ControlType::Number, "Longueur totale du pousse-seringue", "50", ControlColor::None, features, [&](Control* sender, int value){syringe_pump_length_mm_callback(sender, value);});
    lead_screw_pitch_mm = ESPUI.addControl(ControlType::Number, "Avance par tour", "0.7", ControlColor::None, features, [&](Control* sender, int value){number_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    clockwise_equals_push_label = ESPUI.addControl(ControlType::Label, "Sens de rotation du moteur", "Horaire = Injection", ControlColor::None, features);
    clockwise_equals_push = ESPUI.addControl(ControlType::Switcher, "Sens de rotation du moteur", "Horaire =", ControlColor::None, clockwise_equals_push_label, [&](Control* sender, int value){clockwise_equals_push_callback(sender, value);});
Malaurie Bernard's avatar
Malaurie Bernard committed
    ESPUI.updateSwitcher(clockwise_equals_push, true); //set "Horaire = Injection" at the beginning
    microstep_configuration = ESPUI.addControl(ControlType::Number, "Configuration Hardware des microsteps", "16", ControlColor::None, features, [&](Control* sender, int value){microstep_configuration_callback(sender, value);});
    motor_steps = ESPUI.addControl(ControlType::Number, "Caractéristique du moteur (nombre de pas possibles ?)", "2000", ControlColor::None, features,[&](Control* sender, int value){motor_steps_callback(sender, value);});
    motor_release_label = ESPUI.addControl(ControlType::Label, "Relachement du moteur", "Off", ControlColor::None, features);
    motor_release = ESPUI.addControl(ControlType::Switcher, "Relachement du moteur", "", ControlColor::None, motor_release_label, [&](Control* sender, int value){motor_release_callback(sender, value);});
 
Malaurie Bernard's avatar
Malaurie Bernard committed

    ESPUI.begin("ESPUI Control");
Malaurie Bernard's avatar
Malaurie Bernard committed
/************CALLBACK_METHODS****************/
Malaurie Bernard's avatar
Malaurie Bernard committed
//GENERAL CALLBACKS//
void Web :: number_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the number controller via the serial port.
***/
    Serial.println("Type: number");
    Serial.println(String("Value: ") + String(sender->value));
    Serial.println(String("ID: ") + sender->id);
    Serial.println("");
David Gauchard's avatar
David Gauchard committed

David Gauchard's avatar
David Gauchard committed

void Web :: stop_syringe_pump_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Linking the switch of the syringe pump status and the actions.
***/
    style_syringe_pump_off();
    Serial.println("Syringe_pump stopped");
    Serial.println(String("ID: ") + sender->id);
    Serial.println("");

void Web :: syringe_filled_placement_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Linking the switch of the syringe filled status(placed or not) and the actions.
***/
David Gauchard's avatar
David Gauchard committed
    {
        style_syringe_filled_placement_on();
        style_syringe_filled_placement_off();
    Serial.println("Syringe_filled_placement");
    Serial.println(String("Value: ") + String(sender->value));
    Serial.println(String("ID: ") + sender->id);
    Serial.println("");
void Web :: calibration_callback (Control *sender, int type) 
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
Malaurie Bernard's avatar
Malaurie Bernard committed
-Action   : Enable the syringe-pump calibration and change the style appropriately.
        syringe_filled.go_to_limit_switch();
        ESPUI.print(status_syringe_pump, "En marche");
        style (status_syringe_pump, 1);
    
    Serial.println("Calibration");
    Serial.println(String("Value: ") + String(sender->type));
    Serial.println(String("ID: ") + sender->id);
    Serial.println("");
void Web :: fast_backward_callback (Control *sender, int type) 
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : 
***/
{
    switch (type)
    {
    case B_DOWN:

        digitalWrite(SLEEP, LOW);

        syringe_filled.move_to_mm(syringe_filled.get_clockwise_equals_push()? -50:50);
        style_syringe_pump_off();
        motor_release_action();

    serial_print ("Fast_backward", sender);
void Web :: fast_forward_callback (Control *sender, int type) 
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : 
***/
{

    switch (type)
    {
    case B_DOWN:

        digitalWrite(SLEEP, LOW);

        syringe_filled.move_to_mm(syringe_filled.get_clockwise_equals_push()? 50:-50);
        style_syringe_pump_off();
    serial_print ("Fast_forward", sender);
void Web :: slow_backward_callback (Control *sender, int type) 
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : 
***/
{
    switch (type)
    {
    case B_DOWN:

        digitalWrite(SLEEP, LOW);
            
        syringe_filled.move_to_mm(syringe_filled.get_clockwise_equals_push()? -50:50);
        style_syringe_pump_off();
    serial_print ("Slow_backward", sender);
void Web :: slow_forward_callback (Control *sender, int type) 
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : 
***/
{
    switch (type)
    {
    case B_DOWN:
        syringe_filled.move_to_mm(syringe_filled.get_clockwise_equals_push()? 50:-50);
        style_syringe_pump_off();
        
        motor_release_action();
    serial_print ("Slow_forward", sender);
void Web :: confirm_initialisation_callback (Control *sender, int type) 
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : 
***/
{
    switch (type)
    {
    case B_DOWN:

Malaurie Bernard's avatar
Malaurie Bernard committed
        //
        syringe_filled.reset_position();
Malaurie Bernard's avatar
Malaurie Bernard committed
        number_max_min(0, syringe.get_syringe_database_object()[syringe_filled.get_syringe_name()]["total_volume_mL"], remaining_volume_mL);
        ESPUI.updateSlider(remaining_volume_mL, syringe_filled.get_remaining_volume_mL());
        
        syringe_filled.set_update_remaining_volume(true);
    serial_print ("Confirm_initialisation", sender);
void Web :: volume_exchange_mL_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Enable to choose the volume that woud be exchanged.
***/
    syringe_filled.set_exchange_volume_mL(atof(sender->value.c_str()));
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json ();

    serial_print ("Volume_exchange (sender->value)", sender);

    Serial.println("Volume_exchange (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_exchange_volume_mL()));
    Serial.println("");
    
Malaurie Bernard's avatar
Malaurie Bernard committed
void Web :: throughput_or_duration_callback (Control *sender, int type) 
/***
-Argument : 
-Return   : 
-Action   : 
***/
{
    switch (type)
    {
    case B_DOWN:

        if (syringe_filled.get_throughput())
        {
            syringe_filled.set_throughput(false);
            ESPUI.print(exchange_throughtput_uL_per_min_or_duration_sec_label, "Durée de l'échange en sec");
        }
        else
        {
            syringe_filled.set_throughput(true);
            ESPUI.print(exchange_throughtput_uL_per_min_or_duration_sec_label, "Débit de l'échange en uL/min");
        }
        
        break;

    case B_UP:

        break;
    }
    
    serial_print ("throughput_or_duration", sender);
}


void Web :: exchange_throughtput_uL_per_min_or_duration_sec_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Enable to choose the volume that woud be exchanged.
***/
    syringe_filled.set_exchange_throughput_uL_per_sec(atof(sender->value.c_str()));
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json ();
    serial_print ("Exchange_throughtput (sender->value)", sender);

    Serial.println("Exchange_throughtput (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_exchange_throughput_uL_per_min()));
void Web :: switch_push_pull_choice_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Change the label_push_pull_choice to display the choice.
            Change the style of the controller involved.
***/
        syringe_filled.set_push(true);
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe_filled.save_json ();
Malaurie Bernard's avatar
Malaurie Bernard committed
        ESPUI.print(label_push_pull_choice, "Injection");

        syringe_filled.set_push(false);
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe_filled.save_json ();
Malaurie Bernard's avatar
Malaurie Bernard committed
        ESPUI.print(label_push_pull_choice, "Aspiration");
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json();
    serial_print ("Push_pull_choice (sender->value)", sender);

    Serial.println("Push_pull_choice (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_push()));
    Serial.println("");
void Web :: remaining_volume_mL_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Linking the display with the current volume remaining.
***/
    ESPUI.updateSlider(remaining_volume_mL, syringe_filled.get_remaining_volume_mL());
void Web :: remaining_time_sec_callback (Control* sender, int value)
Malaurie Bernard's avatar
Malaurie Bernard committed
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Linking the display with the current time remaining for the exchange.
***/
    float remaining_time_sec_value = syringe_filled.get_remaining_volume_mL()/syringe_filled.get_exchange_throughput_uL_per_min();
Malaurie Bernard's avatar
Malaurie Bernard committed
    ESPUI.updateSlider(remaining_time_sec, remaining_time_sec_value);
}

void Web :: start_exchange_callback (Control* sender, int value)
{

    syringe_filled.start_exchange();
    style_syringe_pump_on();
    serial_print ("Exchange start", sender);
//configurations  = Configurations
void Web :: initial_volume_mL_callback (Control* sender, int value)
{
    syringe_filled.set_remaining_volume_mL((sender->value).toFloat());
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json();
    serial_print ("syringe_initial_volume (sender->value)", sender);

    Serial.println("syringe_initial_volume (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_remaining_volume_mL()));
    Serial.println("");


void Web :: choose_syringe_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the button state via the serial port.
***/

        syringe_volume_mL_value = syringe.get_syringe_database()[select_value]["total_volume_mL"];
        syringe_volume_mL_string = "Volume total: " + std::to_string(syringe_volume_mL_value) + "mL";
        ESPUI.print(syringe_volume_mL, syringe_volume_mL_string.c_str());

        syringe_diameter_mm_value = syringe.get_syringe_database()[select_value]["internal_diameter_mm"];
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe_diameter_mm_string = "internal diameter : " + std::to_string(syringe_diameter_mm_value) + "mm";
        ESPUI.print(syringe_diameter_mm, syringe_diameter_mm_string.c_str());

    serial_print ("choose_syringe", sender);
Malaurie Bernard's avatar
Malaurie Bernard committed
    serial_print ("name_syringe_chosen (sender->value)", sender);
    Serial.println("Volume_total (json value)");
Malaurie Bernard's avatar
Malaurie Bernard committed
    Serial.println(String("Value: ") + String((syringe.get_syringe_database()[syringe_filled.get_syringe_name()]["total_volume_mL"]).as<const char*>()));
    Serial.println("internal_diameter (json value)");
Malaurie Bernard's avatar
Malaurie Bernard committed
    Serial.println(String("Value: ") + String(syringe.get_syringe_database()[syringe_filled.get_syringe_name()]["internal_diameter"].as<const char*>()));
Malaurie Bernard's avatar
Malaurie Bernard committed
void Web :: load_syringe_json_callback (Control* sender, int value)
/***
-Argument : /
-Return   : /
-Action   : /
***/
{
    switch (value)
    {
    case B_DOWN:


        for (int i=0; i<option_nb; i++)
        {
        ESPUI.removeControl(options_id[i], false);
        }
        option_nb = 0;

        select_syringe_update(configurations);

        break;

    case B_UP:
        break;
    }
    Serial.println ("load_syringe_json");


}




void Web :: name_new_syringe_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the new syringe name chosen via the serial port.
***/

    serial_print ("name_new_syringe (sender->value)", sender);
void Web :: total_volume_mL_new_syringe_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the new syringe name chosen via the serial port.
***/
{
    total_volume_mL_new_syringe_value = sender->value;

    serial_print ("total_volume_new_syringe", sender);

void Web :: internal_diameter_mm_new_syringe_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the new syringe name chosen via the serial port.
***/
{
    internal_diameter_mm_new_syringe_value = sender->value,

    serial_print ("internal_diameter_new_syringe", sender);

Malaurie Bernard's avatar
Malaurie Bernard committed
void Web :: save_syringe_callback (Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the button state via the serial port.
            Enable to save data in the syringe_json file.
***/
        syringe.set_syringe(name_new_syringe_value, total_volume_mL_new_syringe_value.toFloat(), internal_diameter_mm_new_syringe_value.toFloat());
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe.save_json();
Malaurie Bernard's avatar
Malaurie Bernard committed
        options_id[option_nb] = ESPUI.addControl(ControlType::Option, name_new_syringe_value.c_str(), name_new_syringe_value.c_str(), ControlColor::None, syringe_selection);
        option_nb++;
Malaurie Bernard's avatar
Malaurie Bernard committed
    serial_print ("save_syringe", sender);
//features : Configurations avancées
void Web :: syringe_pump_length_mm_callback(Control* sender, int type)
Malaurie Bernard's avatar
Malaurie Bernard committed
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the number controller via the serial port.
            Change the syringe_pump_length value
    syringe_filled.set_syringe_pump_length_mm(sender->type);
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json();
    serial_print ("syringe_pump_length (sender->value)", sender);

    Serial.println("syringe_pump_length (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_syringe_pump_length_mm()));
void Web :: clockwise_equals_push_callback(Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the convention chosen via the serial port.
            Change the clockwise_equals_push_label to display the information.
***/
{
    switch (value)
    {
    case S_ACTIVE:
        syringe_filled.set_clockwise_equals_push(true);
Malaurie Bernard's avatar
Malaurie Bernard committed
        ESPUI.print(clockwise_equals_push_label, "Horaire = Injection");
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe_filled.save_json();
        syringe_filled.set_clockwise_equals_push(false);
Malaurie Bernard's avatar
Malaurie Bernard committed
        ESPUI.print(clockwise_equals_push_label, "Horaire = Aspiration");
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe_filled.save_json();

    serial_print ("clockwise_equals_push (sender->value)", sender);

    Serial.println("clockwise_equals_push (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_clockwise_equals_push()));
    Serial.println("");
void Web :: microstep_configuration_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the number controller via the serial port.
            Change the microstep_configuration value.
***/
{
    syringe_filled.set_microstep_configuration(sender->type);
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json();

    serial_print ("microstep_configuration (sender->value)", sender);

    Serial.println("microstep_configuration (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_microstep_configuration()));
    Serial.println("");
}

void Web :: motor_steps_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the number controller via the serial port.
            Change the motor_steps value.
***/
{
    syringe_filled.set_motor_steps(sender->type);
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json();

    serial_print ("motor_steps (sender->value)", sender);

    Serial.println("motor_steps (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_motor_steps()));
    Serial.println("");
}

void Web :: motor_release_callback(Control* sender, int value)
 {
    switch (value)
    {
    case S_ACTIVE:
        syringe_filled.set_motor_release(true);
        ESPUI.print(motor_release_label, "On");
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe_filled.save_json();
        
        break;

    case S_INACTIVE:
        syringe_filled.set_motor_release(false);

        if (!syringe_filled.is_running())
            digitalWrite(SLEEP, HIGH);

        ESPUI.print(motor_release_label, "Off");
Malaurie Bernard's avatar
Malaurie Bernard committed
        syringe_filled.save_json();
        break;
    }

    serial_print ("motor_release (sender->value)", sender);

    Serial.println("motor_release (json value)");
    Serial.println(String("Value: ") + String(syringe_filled.get_motor_release()));
    Serial.println("");
 }

void Web :: syringe_selection_callback(Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return   : /
-Action   : Print the value of the syringe name chosen via the serial port.
***/
{
    syringe_filled.set_name_syringe(select_value);
Malaurie Bernard's avatar
Malaurie Bernard committed
    syringe_filled.save_json();
    serial_print ("syringe_selection (sender->value)", sender);

/***
-Argument : /
-Return   : /
-Action   : Update the display of the syringe-pump status to match when the motor runs or not (so when we initialize, it stop by itself)
***/
{
    if (syringe_filled.is_running())
    {
/*************STYLE_METHODS****************/
/***
-Argument : The controller id and the style wanted.
-Return   : /
-Action   : Change style (1 is active, green; 2 is inactive, red; 3 is neutral, brown)
***/
{

    switch (style)
    {
    case 1:
        ESPUI.setPanelStyle(id, couleurs[0]);
        ESPUI.setElementStyle(id, couleurs[1]);
        break;

    case 2:
        ESPUI.setPanelStyle(id, couleurs[2]);
        ESPUI.setElementStyle(id, couleurs[3]);
        break;

    case 3:
        ESPUI.setPanelStyle(id, couleurs[4]);
        ESPUI.setElementStyle(id, couleurs[5]);
        break;

    }

}

-Action   : Set up the initial style of every controller.
    //***ABOVE***//
    
    style (status_syringe_pump, 2);
    style (label_remaining_volume_mL, 3);
Malaurie Bernard's avatar
Malaurie Bernard committed
    style (remaining_volume_mL, 3);
Malaurie Bernard's avatar
Malaurie Bernard committed
    style (label_remaining_time_sec, 3);
    style (remaining_time_sec, 3);

Malaurie Bernard's avatar
Malaurie Bernard committed
    
Malaurie Bernard's avatar
Malaurie Bernard committed
    //configurations
    style (syringe_volume_mL, 3);
    style (syringe_diameter_mm, 3);
Malaurie Bernard's avatar
Malaurie Bernard committed
    style (load_syringe_json, 3);
    
    style (internal_diameter_mm_new_syringe, 3);
    style (total_volume_mL_new_syringe, 3);
Malaurie Bernard's avatar
Malaurie Bernard committed
    style (save_syringe, 3);
    style (name_new_syringe_label, 3);
    style (internal_diameter_mm_new_syringe_label, 3);
    style (total_volume_mL_new_syringe_label, 3);
Malaurie Bernard's avatar
Malaurie Bernard committed
    style (save_syringe_label, 3);
Malaurie Bernard's avatar
Malaurie Bernard committed
    //features
    style (syringe_pump_length_mm_value, 3);
Malaurie Bernard's avatar
Malaurie Bernard committed
    style (lead_screw_pitch_mm, 3);
    style (clockwise_equals_push_label, 3);
    style (clockwise_equals_push, 3);
    style (microstep_configuration, 3);
    style (motor_steps, 3);
    style (motor_release_label, 3);
    style (motor_release, 3);
/***
-Argument : Integer defining the theme wanted.
-Return   : /
-Action   : Change the interface theme for dark, light of colorful theme.
***/
{
    if (theme ==1)
    {
    //Creation des différents styles

    //Les verts pour la mise en mrche de la seringue
    sprintf(couleur1, "background-color: #%06X;", (unsigned int) 0xb2dbbf);
    sprintf(couleur2, "background-color: #%06X;", (unsigned int) 0x5a8668);

    //Le rouge pour la seringue a l'arrêt
    sprintf(couleur3, "background-color: #%06X;", (unsigned int) 0xc97064);
    sprintf(couleur4, "background-color: #%06X;", (unsigned int) 0x762419);

    //Les marrons pour la config des seringues
    sprintf(couleur5, "background-color: #%06X;", (unsigned int) 0xce9f6f);
    sprintf(couleur6, "background-color: #%06X;", (unsigned int) 0x926448);

    //Pas utilisé pour le moment
    sprintf(couleur7, "background-color: #%06X;", (unsigned int) 0x0a7477);
    sprintf(couleur8, "background-color: #%06X;", (unsigned int) 0x052a38);
    sprintf(couleur9, "background-color: #%06X;", (unsigned int) 0x044365);
    sprintf(couleur10, "background-color: #%06X;", (unsigned int) 0x58b8c3);


        
    }
}
/***
-Argument : /
-Return   : /
-Action   : Change the status_syringe_pump label to display the information.
            Change the style of the controller involved.
            Causes the movement of the syringe pump.
***/