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