]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/logiccontrol.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 / logiccontrol.h
1
2 #ifndef _LOGIC_CONTROL_H_
3 #define _LOGIC_CONTROL_H_
4
5 #include "iconector.h"
6
7 namespace PlaQui {
8 namespace Model {
9
10 /** Modelo de control lógico para automatización
11  *
12  */
13 class LogicControl:public IConector {
14 public:
15         /** Constructor
16          *
17          *  \param ins Cantidad de entradas
18          *  \param outs Cantidad de salidas
19          */
20         LogicControl(int ins, int outs):IConector(ins, outs) {}
21         /// Destructor
22         virtual ~LogicControl() {}
23
24         /** Retorna el estado actual.
25          *
26          *  Esta función retorna un valor booleano resultado
27          *  de aplicar la operación lógica que cada hijo decida
28          *  implementar.
29          */
30         virtual bool get_output() = 0;
31
32         /** Dice si la logica esta o no en operacion
33          *
34          *  La logica de control puede no estar siendo utilizada, y eso
35          *  se deduce si tiene alguien conectado a sus entradas (o sea, si
36          *  tiene alguien a quien consultar por un estado logico).
37          *  Si no hay nadie conectado, se contempla que no se esta utilizando
38          *  y se debe utilizar en los casos que sea necesario para no recibir
39          *  entradas falsas en los objetos controlados.
40          *  \see Exclusa::update
41          */
42         bool is_operational() { return (in_list.begin() != in_list.end()); }
43 };
44
45 }
46 }
47 #endif // _LOGIC_CONTROL_H_
48