#include "drainage.h"
#include "exclusa.h"
#include <unistd.h>
+#include <iostream>
+#include "simulador.h"
using namespace std;
using namespace PlaQui::Model;
int main(int argc, char *argv[])
{
- Pump *bomba1;
- Exclusa *exclusa1;
- Conduct *salida1;
- Conduct *salida2;
- Conduct *entrada;
- Splitter *split;
- Drainage *dren1, *dren2;
-
+ Simulador *sim = new Simulador();
- bomba1 = new Pump("bomba");
- bomba1->set_max_flow(30);
- salida1 = new Conduct("salida_1");
- salida1->set_max_flow(2);
- salida2 = new Conduct("salida_2");
- salida2->set_max_flow(5);
- exclusa1 = new Exclusa("exclusa1");
+ sim->add_pump("bomba1");
+ sim->add_conduct("c");
+ sim->add_conduct("c1");
+ sim->add_drainage("d");
+ sim->add_tank("tanque");
- split = new Splitter("splitter");
- split->set_max_flow(8);
- entrada = new Conduct("entrada");
- entrada->set_max_flow(10);
+ sim->connect("bomba1", "c", IConector::OUT);
+ sim->connect("c", "tanque", IConector::OUT);
+ sim->connect("tanque", "c1", IConector::OUT);
+ sim->connect("c1", "d", IConector::OUT);
- dren1 = new Drainage("drenaje1");
- dren2 = new Drainage("drenaje2");
-
- bomba1->connect(exclusa1, IConector::OUT);
- exclusa1->connect(bomba1, IConector::IN);
- exclusa1->connect(entrada, IConector::OUT);
- entrada->connect(exclusa1, IConector::IN);
- entrada->connect(split, IConector::OUT);
- split->connect(entrada, IConector::IN);
- split->connect(salida1, IConector::OUT);
- split->connect(salida2, IConector::OUT);
- salida1->connect(split, IConector::IN);
- salida2->connect(split, IConector::IN);
- salida1->connect(dren1, IConector::OUT);
- salida2->connect(dren2, IConector::OUT);
-
- //// LOGICA DE CONTROL!!
- // CONECTO LA SALIDA DE LA EXCLUSA A LA ENTRADA DE LA BOMBA
- bomba1->connect_input_logic( exclusa1->get_logic_output() );
-
- int i = 0;
+ int i=0;
while (i<10) {
- bomba1->update();
- exclusa1->update();
- salida1->update();
- salida2->update();
- entrada->update();
- split->update();
- dren1->update();
- dren2->update();
-
- bomba1->simulate();
- exclusa1->simulate();
- salida1->simulate();
- salida2->simulate();
- entrada->simulate();
- split->simulate();
- dren1->simulate();
- dren2->simulate();
-
- sleep(1);
- if (i == 5) {
- //bomba1->deactivate();
- // Ahora cierro la exclusa!, la bomba deberia apagarse!!!
- exclusa1->close();
+ sim->simulate();
+ if (i == 4) {
+ if (!sim->pump_deactivate("bomba1")) {
+ std::cout << "c no es pump :-)" << std::endl;
+ }
}
i++;
}
- delete bomba1;
- delete salida1;
- delete salida2;
- delete entrada;
- delete split;
+ delete sim;
return 1;
}