2 #ifndef _LOGIC_CONTROL_H_
3 #define _LOGIC_CONTROL_H_
11 /** Modelo de control lógico para automatización
14 class LogicControl:public IConector {
18 * \param ins Cantidad de entradas
19 * \param outs Cantidad de salidas
21 LogicControl(int ins, int outs):IConector(ins, outs) {}
23 virtual ~LogicControl() {}
25 /** Retorna el estado actual.
27 * Esta función retorna un valor booleano resultado
28 * de aplicar la operación lógica que cada hijo decida
31 virtual bool get_output() = 0;
33 /** Dice si la logica esta o no en operacion
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
43 bool is_operational() { return (in_list.begin() != in_list.end()); }
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;
51 void set_name(const std::string &_name) { name = _name; }
52 std::string get_name() { return name; }
59 #endif // _LOGIC_CONTROL_H_