]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/pump.h
-se pueden tirar cables de una manera mas comoda pero como diria TU SAM puede fallar...
[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 protected:
46         /** Define si la bomba esta abierta o no. Esto lo maneja la logica de
47          * control
48          */
49         bool open;
50         /** Define si la bomba esta activa, es decir, si el control manual esta en
51          * "on" 
52          */
53         bool active;
54 private:
55         Pump(const Pump &):Control("null"),Source("null") {}
56         Pump &operator = (const Pump &) { return *this; }
57 };
58
59 }
60 }
61
62 #endif // _BOMB_H_