Select Git revision
alarm_grammar.h
Forked from
cs / ds / alarm-handler
Source project has a limited visibility.
alarm_table.cpp 34.49 KiB
/*
* alarm_table.cpp
*
* $Author: graziano $
*
* $Revision: 1.5 $
*
* $Log: alarm_table.cpp,v $
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
*/
#include <sys/time.h>
#include <tango.h>
#include "alarm_table.h"
#include "alarm_grammar.h"
#include "cmd_thread.h"
static const char __FILE__rev[] = __FILE__ " $Revision: 1.5 $";
/*
* alarm_t class methods
*/
alarm_t::alarm_t()
{
grp=0;
on_counter=0;
off_counter=0;
freq_counter=0;
stat = S_NORMAL;
ack = ACK;
on_delay = 0;
off_delay = 0;
silent_time = -1;
cmd_name_a=string("");
cmd_name_n=string("");
enabled=true;
shelved=false;
}
bool alarm_t::operator==(const alarm_t &that)
{
// return((stat == that.stat) && (ack == that.ack));
//verify if stat not equal but only contained because added *n in internal alarm
return((stat.find(that.stat) != std::string::npos) && (ack == that.ack));
}
bool alarm_t::operator==(const string &n)
{
return(name == n);
}
void alarm_t::str2alm(const string &s)
{
istringstream is(s);
ostringstream temp_msg;
string temp_grp;
is >> ts.tv_sec >> ts.tv_usec >> name >> stat >> ack >> on_counter >> lev >> silent_time >> temp_grp >> msg; //stop at first white space in msg
temp_msg << is.rdbuf(); //read all remaining characters as msg
msg += temp_msg.str();
str2grp(temp_grp);
}
string alarm_t::alm2str(void)
{
ostringstream os;