/* Test pedorro a ver que pasa con lo que esta programado!! */
/* Compilar : g++ -Wall -o test -I../include *.cpp */
-#include "bomb.h"
+#include "pump.h"
#include "conduct.h"
+#include "union.h"
+#include "splitter.h"
+#include "drainage.h"
+#include "exclusa.h"
#include <unistd.h>
using namespace std;
int main(int argc, char *argv[])
{
- Bomb *bomba;
- Conduct *canio1;
- Conduct *canio2;
+/*
+ Pump *bomba1;
+ Exclusa *exclusa1;
+ Conduct *salida1;
+ Conduct *salida2;
+ Conduct *entrada;
+ Splitter *split;
+ Drainage *dren1, *dren2;
+
- bomba = new Bomb("bomba");
- canio1 = new Conduct("cond_1");
- canio1->set_max_flow(10);
- canio2 = new Conduct("cond_2");
- canio2->set_max_flow(5);
+ 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");
- bomba->connect(canio1, IConector::OUT);
- canio1->connect(bomba, IConector::IN);
- canio1->connect(canio2, IConector::OUT);
- canio2->connect(canio1, IConector::IN);
+ split = new Splitter("splitter");
+ split->set_max_flow(8);
+ entrada = new Conduct("entrada");
+ entrada->set_max_flow(10);
+
+ 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;
while (i<10) {
- bomba->update();
- canio1->update();
- canio2->update();
+ bomba1->update();
+ exclusa1->update();
+ salida1->update();
+ salida2->update();
+ entrada->update();
+ split->update();
+ dren1->update();
+ dren2->update();
- bomba->simulate();
- canio1->simulate();
- canio2->simulate();
+ bomba1->simulate();
+ exclusa1->simulate();
+ salida1->simulate();
+ salida2->simulate();
+ entrada->simulate();
+ split->simulate();
+ dren1->simulate();
+ dren2->simulate();
sleep(1);
if (i == 5) {
- bomba->deactivate();
+ //bomba1->deactivate();
+ // Ahora cierro la exclusa!, la bomba deberia apagarse!!!
+ exclusa1->close();
}
i++;
}
- delete bomba;
- delete canio1;
- delete canio2;
+ delete bomba1;
+ delete salida1;
+ delete salida2;
+ delete entrada;
+ delete split;
+*/
+
+
+ // TRATANDO DE HACER ANDAR AL UNION
+ Pump *p1, *p2;
+ Conduct *c1, *c2, *c3;
+ Drainage *d1;
+ Union *u1;
+
+ p1 = new Pump("Bomba 1");
+ p1->set_max_flow(100);
+ p2 = new Pump("Bomba 2");
+ p2->set_max_flow(100);
+ c1 = new Conduct("Para B1");
+ c1->set_max_flow(3);
+ c2 = new Conduct("Para B2");
+ c2->set_max_flow(4);
+ c3 = new Conduct("Salida");
+ c3->set_max_flow(6);
+ d1 = new Drainage("Drenaje");
+ u1 = new Union("Union");
+ u1->set_max_flow(5);
+
+ p1->connect(c1, IConector::OUT);
+ p2->connect(c2, IConector::OUT);
+ c1->connect(p1, IConector::IN);
+ c2->connect(p2, IConector::IN);
+
+ u1->connect(c1, IConector::IN);
+ u1->connect(c2, IConector::IN);
+ c1->connect(u1, IConector::OUT);
+ c2->connect(u1, IConector::OUT);
+
+ u1->connect(c3, IConector::OUT);
+ c3->connect(u1, IConector::IN);
+
+ c3->connect(d1, IConector::OUT);
+ d1->connect(c3, IConector::IN);
+
+ int i = 0;
+ while (i<8) {
+ p1->update();
+ p2->update();
+ c1->update();
+ c2->update();
+ c3->update();
+ d1->update();
+ u1->update();
+
+ p1->simulate();
+ p2->simulate();
+ c1->simulate();
+ c2->simulate();
+ c3->simulate();
+ d1->simulate();
+ u1->simulate();
+
+ sleep(1);
+ if (i == 3) {
+ p2->deactivate();
+ }
+ if (i == 6) {
+ p1->deactivate();
+ }
+ i++;
+ }
+
return 1;
}