]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se arregla bug en la union que hacia que el flujo inicial este en 0, y eso condicion...
authorRicardo Markiewicz <gazer.arg@gmail.com>
Thu, 20 Nov 2003 04:53:28 +0000 (04:53 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Thu, 20 Nov 2003 04:53:28 +0000 (04:53 +0000)
 circuito armado a andal mal.
 Ahora el ejemplo del server corre como trompada

Model/src/conduct.cpp
Model/src/main.cpp
Model/src/plantitem.cpp
Model/src/pump.cpp
Model/src/simulator.cpp
Model/src/splitter.cpp
Model/src/union.cpp

index b196eec9d14854022bf22ea32e1bfd5c41591fd0..f278904ed7dc1156db9e0196da86bec0e94ca343 100644 (file)
@@ -5,12 +5,12 @@ using namespace PlaQui::Model;
 
 Conduct::Conduct(const std::string &_name):Transport(_name)
 {
 
 Conduct::Conduct(const std::string &_name):Transport(_name)
 {
-       max_flow = actual_flow = 0.0f;
+       max_flow = 0.0f;
 
        // Inicio los parametros de conectores
        in_slots = 1;
        out_slots = 1;
 
        // Inicio los parametros de conectores
        in_slots = 1;
        out_slots = 1;
-       actual_flow = 9999;
+       actual_flow = 99999;
 }
 
 Conduct::~Conduct()
 }
 
 Conduct::~Conduct()
@@ -24,13 +24,10 @@ void Conduct::recieve_msg(int msg, IConector *who, void *data)
                        // Me preguntan por el flujo máximo.
                        // Primero me actualizo, y luego respondo
                        float tmp = *((float *)data);
                        // Me preguntan por el flujo máximo.
                        // Primero me actualizo, y luego respondo
                        float tmp = *((float *)data);
-       //              update();
                        actual_flow = (actual_flow>max_flow)?max_flow:actual_flow;
                        actual_flow = (actual_flow<tmp)?actual_flow:tmp;
 
                        send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, &actual_flow);
                        actual_flow = (actual_flow>max_flow)?max_flow:actual_flow;
                        actual_flow = (actual_flow<tmp)?actual_flow:tmp;
 
                        send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, &actual_flow);
-                       // FIXME : no tiene que ir
-                       if (out_list.size() == 0) tmp = max_flow;
                        who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &actual_flow);
                        updated = true;
                }
                        who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &actual_flow);
                        updated = true;
                }
@@ -55,13 +52,8 @@ void Conduct::update(int dir)
        // Seteo mi actualizar en true para evitar entrar de nuevo
        actual_flow = 99999;
        updated = true;
        // Seteo mi actualizar en true para evitar entrar de nuevo
        actual_flow = 99999;
        updated = true;
-       switch (dir) {
-               case IN:
-                       send_msg(IN, MSG_QUERY_MAX_FLOW_IN, (void *)&max_flow);
-               break;
-               case OUT:
-                       send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, (void *)&max_flow);
-       }
+       actual_flow = max_flow;
+       send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, (void *)&actual_flow);
 }
 
 void Conduct::simulate()
 }
 
 void Conduct::simulate()
@@ -71,7 +63,7 @@ void Conduct::simulate()
                return;
        }
 
                return;
        }
 
-       std::cout << name << "::Flujo actual = " << actual_flow << std::endl;
+       std::cout << name << "::Flujo actual = " << actual_flow << " de " << max_flow << std::endl;
        updated = false;
 }
 
        updated = false;
 }
 
index a656492b6385d9122ffdfa2e0f0cdc390e547b78..4470fc4afa62392d5725ebb264a67cea5528fb67 100644 (file)
@@ -19,10 +19,10 @@ int main(int argc, char *argv[])
        Simulator *sim = new Simulator(argv[1]);
 
        int i=0;
        Simulator *sim = new Simulator(argv[1]);
 
        int i=0;
-       while (i<10) {
+       while (i<2) {
                sim->simulate();
 
                sim->simulate();
 
-               std::cout << sim->get_state_as_xml() << std::endl << std::endl;
+//             std::cout << sim->get_state_as_xml() << std::endl << std::endl;
                i++;
        }
 
                i++;
        }
 
index efca4c18ef1ca0835399761e2a6c2ebf9dd1ddc4..ea3b85ee4d0f97e50ab73a6b28ab99eed4a92578 100644 (file)
@@ -36,4 +36,7 @@ void PlantItem::get_state_as_xml(std::stringstream &out)
        out << "\t<float name=\"" << name << "\">" << std::endl;
        out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
        out << "\t</float>" << std::endl;
        out << "\t<float name=\"" << name << "\">" << std::endl;
        out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
        out << "\t</float>" << std::endl;
+
+       // Para que quede bonito
+       actual_flow = 99999;
 }
 }
index 9c2a9b45b71a482e3db719324e8784d29d5ce92e..fb355a06e23c9c167a6136b6106bc758b997e1ab 100644 (file)
@@ -29,14 +29,13 @@ void Pump::update(int dir)
                actual_flow = max_flow;
        else
                actual_flow = 0;
                actual_flow = max_flow;
        else
                actual_flow = 0;
-       updated = true;
+       
        send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, (void *)&actual_flow);
        send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, (void *)&actual_flow);
+       updated = true;
 }
 
 void Pump::simulate()
 {
 }
 
 void Pump::simulate()
 {
-       std::cout << name << "::Flujo actual = " << ((active && open)?actual_flow:0) \
-       << " de " << max_flow;
        std::cout << ((active && open)?" (funcionando)":" (apagada)") << std::endl;
        updated = false;
 }
        std::cout << ((active && open)?" (funcionando)":" (apagada)") << std::endl;
        updated = false;
 }
@@ -53,18 +52,9 @@ bool Pump::get_output()
 void Pump::recieve_msg(int msg, IConector *who, void *data)
 {
        switch (msg) {
 void Pump::recieve_msg(int msg, IConector *who, void *data)
 {
        switch (msg) {
-               case MSG_QUERY_MAX_FLOW_OUT: {
-                       // Me preguntan por el flujo máximo.
-                       // Primero me actualizo, y luego respondo
-                       // TODO la bomba nunca deberia ser consultada,pues el flujo sale ella
-               /*      update();
-                       float tmp;
-                       tmp = (actual_flow<max_flow)?actual_flow:max_flow;
-                       who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &tmp);*/
-               }
-               break;
                case MSG_RESPONSE_MAX_FLOW: {
                        float tmp = *((float *)data);
                case MSG_RESPONSE_MAX_FLOW: {
                        float tmp = *((float *)data);
+                       if (max_flow < tmp) tmp = max_flow;
                        if (tmp < actual_flow) actual_flow = tmp;
                }
                break;
                        if (tmp < actual_flow) actual_flow = tmp;
                }
                break;
index 3aeacd667c25c3af77b8fce1853f51e7c6dbe673..106f6e39ef69fc2f51508fb7f6c08745a738575d 100644 (file)
@@ -78,6 +78,7 @@ void Simulator::add_conduct(const std::string &name, float flujo)
 {
        Conduct *p = new Conduct(name);
        // FIXME no va!!
 {
        Conduct *p = new Conduct(name);
        // FIXME no va!!
+       std::cout << flujo << std::endl;
        p->set_max_flow(flujo);
        conduct_lst.push_back(p);
        items.push_back(p);
        p->set_max_flow(flujo);
        conduct_lst.push_back(p);
        items.push_back(p);
index 360c004e7db730ee86b59cdea0532e320cebdafd..4d4497ef1d55a6858c702a8733dd870c92e681b6 100644 (file)
@@ -46,6 +46,7 @@ void Splitter::recieve_msg(int msg, IConector *who, void *data)
                break;
                case MSG_RESPONSE_MAX_FLOW: {
                        float max = *((float *)data);
                break;
                case MSG_RESPONSE_MAX_FLOW: {
                        float max = *((float *)data);
+                       std::cout << name << ":Split " << max << std::endl;
                        if (pos == OUT) {
                                if (max < actual_flow)  actual_flow = max;
                                if (max_flow < actual_flow) actual_flow = max_flow;
                        if (pos == OUT) {
                                if (max < actual_flow)  actual_flow = max;
                                if (max_flow < actual_flow) actual_flow = max_flow;
index 443cb2bfbf0f78bdd2c8d09fbb9c805d273ba2b2..baf3cc3a4f2593efede6827a4f95bc45a31813c0 100644 (file)
@@ -8,9 +8,10 @@ Union::Union(const std::string &_name):Transport(_name)
 {
        in_slots = 2;
        out_slots = 1;
 {
        in_slots = 2;
        out_slots = 1;
-       max_flow = actual_flow = 0.0f;
+       max_flow = 0.0f;
        in_on_zero = 0;
        in_ready = 0;
        in_on_zero = 0;
        in_ready = 0;
+       actual_flow = 999999;
 }
 
 Union::~Union()
 }
 
 Union::~Union()
@@ -110,7 +111,6 @@ void Union::simulate()
 
        std::cout << name << "::Flujo actual = " << actual_flow << std::endl;
        updated = false;
 
        std::cout << name << "::Flujo actual = " << actual_flow << std::endl;
        updated = false;
-       actual_flow = 99999;
        in_on_zero = 0;
        in_ready = 0;
 }
        in_on_zero = 0;
        in_ready = 0;
 }