]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/src/main.cpp
Se modelo queda terminadoooooooooooooo. Hice todas las pruebas posibles y la
[z.facultad/75.42/plaqui.git] / Model / src / main.cpp
1
2 /* Test pedorro a ver que pasa con lo que esta programado!! */
3 /* Compilar : g++ -Wall -o test -I../include *.cpp */
4 #include "pump.h"
5 #include "conduct.h"
6 #include "union.h"
7 #include "splitter.h"
8 #include "drainage.h"
9 #include "exclusa.h"
10 #include <unistd.h>
11
12 using namespace std;
13 using namespace PlaQui::Model;
14
15 int main(int argc, char *argv[])
16 {
17 /*
18         Pump *bomba1;
19         Exclusa *exclusa1;
20         Conduct *salida1;
21         Conduct *salida2;
22         Conduct *entrada;
23         Splitter *split;
24         Drainage *dren1, *dren2;
25         
26
27         bomba1 = new Pump("bomba");
28         bomba1->set_max_flow(30);
29         salida1 = new Conduct("salida_1");
30         salida1->set_max_flow(2);
31         salida2 = new Conduct("salida_2");
32         salida2->set_max_flow(5);
33         exclusa1 = new Exclusa("exclusa1");
34
35         split = new Splitter("splitter");
36         split->set_max_flow(8);
37         entrada = new Conduct("entrada");
38         entrada->set_max_flow(10);
39
40         dren1 = new Drainage("drenaje1");
41         dren2 = new Drainage("drenaje2");
42
43         bomba1->connect(exclusa1, IConector::OUT);
44         exclusa1->connect(bomba1, IConector::IN);
45         exclusa1->connect(entrada, IConector::OUT);
46         entrada->connect(exclusa1, IConector::IN);
47         entrada->connect(split, IConector::OUT);
48         split->connect(entrada, IConector::IN);
49         split->connect(salida1, IConector::OUT);
50         split->connect(salida2, IConector::OUT);
51         salida1->connect(split, IConector::IN);
52         salida2->connect(split, IConector::IN);
53         salida1->connect(dren1, IConector::OUT);
54         salida2->connect(dren2, IConector::OUT);
55
56         //// LOGICA DE CONTROL!!
57         // CONECTO LA SALIDA DE LA EXCLUSA A LA ENTRADA DE LA BOMBA
58         bomba1->connect_input_logic( exclusa1->get_logic_output() );
59
60         int i = 0;
61         while (i<10) {
62                 bomba1->update();
63                 exclusa1->update();
64                 salida1->update();
65                 salida2->update();
66                 entrada->update();
67                 split->update();
68                 dren1->update();
69                 dren2->update();
70
71                 bomba1->simulate();
72                 exclusa1->simulate();
73                 salida1->simulate();
74                 salida2->simulate();
75                 entrada->simulate();
76                 split->simulate();
77                 dren1->simulate();
78                 dren2->simulate();
79                                         
80                 sleep(1);
81                 if (i == 5) {
82                         //bomba1->deactivate();
83                         // Ahora cierro la exclusa!, la bomba deberia apagarse!!!
84                         exclusa1->close();
85                 }
86                 i++;
87         }
88
89         delete bomba1;
90         delete salida1;
91         delete salida2;
92         delete entrada;
93         delete split;
94 */
95
96
97         // TRATANDO DE HACER ANDAR AL UNION
98         Pump *p1, *p2;
99         Conduct *c1, *c2, *c3;
100         Drainage *d1;
101         Union *u1;
102
103         p1 = new Pump("Bomba 1");
104         p1->set_max_flow(100);
105         p2 = new Pump("Bomba 2");
106         p2->set_max_flow(100);
107         c1 = new Conduct("Para B1");
108         c1->set_max_flow(3);
109         c2 = new Conduct("Para B2");
110         c2->set_max_flow(4);
111         c3 = new Conduct("Salida");
112         c3->set_max_flow(6);
113         d1 = new Drainage("Drenaje");
114         u1 = new Union("Union");
115         u1->set_max_flow(5);
116
117         p1->connect(c1, IConector::OUT);
118         p2->connect(c2, IConector::OUT);
119         c1->connect(p1, IConector::IN);
120         c2->connect(p2, IConector::IN);
121
122         u1->connect(c1, IConector::IN);
123         u1->connect(c2, IConector::IN);
124         c1->connect(u1, IConector::OUT);
125         c2->connect(u1, IConector::OUT);
126
127         u1->connect(c3, IConector::OUT);
128         c3->connect(u1, IConector::IN);
129
130         c3->connect(d1, IConector::OUT);
131         d1->connect(c3, IConector::IN);
132
133         int i = 0;
134         while (i<8) {
135                 p1->update();
136                 p2->update();
137                 c1->update();
138                 c2->update();
139                 c3->update();
140                 d1->update();
141                 u1->update();
142
143                 p1->simulate();
144                 p2->simulate();
145                 c1->simulate();
146                 c2->simulate();
147                 c3->simulate();
148                 d1->simulate();
149                 u1->simulate();
150                 
151                 sleep(1);
152                 if (i == 3) {
153                         p2->deactivate();
154                 }
155                 if (i == 6) {
156                         p1->deactivate();
157                 }
158                 i++;
159         }
160         
161         return 1;
162 }
163
164