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