]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/pump.h
Se agrega drenaje copado
[z.facultad/75.42/plaqui.git] / Model / include / pump.h
1
2 #ifndef _BOMB_H_
3 #define _BOMB_H_
4
5 #include "source.h"
6 #include "bypass.h"
7
8 namespace PlaQui {
9
10 namespace Model {
11
12 /** Bomba hidráulica
13  *
14  *  La bomba es un elemento que toma líquido de alguna fuente
15  *  misteriosa y lo envía por su salida. La cantidad de fluido que
16  *  envía va a depender exclusivamente del sistema al cual está conectado.
17  *  La bomba es "inteligente", y es capaz de reducir el flujo que envía
18  *  dependiendo de las condiciones que le ponga el sistema, reduciendo
19  *  así el flujo de manera automática para evitar sobrecargas.
20  *
21  *  La bomba tiene 2 interruptores, uno manual y otro automático.
22  *  Si el manual está apagado, la bomba se considera apagada e ignora
23  *  todo mensage del interruptor automático. En esta condición envía
24  *  0 cuando se le consulta por su flojo máximo.
25  *
26  */
27 class Pump:public Source {
28 public:
29         /// Constructor
30         Pump(const std::string &_name);
31         /// Destructor
32         virtual ~Pump();
33
34         virtual void update(int dir=OUT);
35         virtual void simulate();
36
37         virtual bool get_output();
38
39         virtual void recieve_msg(int msg, IConector *who, void *data);
40
41         /// Activa la bomba
42         void activate() { active = true; }
43         /// Desactiva la bomba
44         void deactivate() { active = false; }
45         void get_state_as_xml(std::stringstream &out);
46 protected:
47         /** Define si la bomba esta abierta o no. Esto lo maneja la logica de
48          * control
49          */
50         bool open;
51         /** Define si la bomba esta activa, es decir, si el control manual esta en
52          * "on" 
53          */
54         bool active;
55 private:
56         Pump(const Pump &):Control("null"),Source("null") {}
57         Pump &operator = (const Pump &) { return *this; }
58 };
59
60 }
61 }
62
63 #endif // _BOMB_H_