support for alarm status, timeStamp.userTag, and alarm limits

This commit is contained in:
Marty Kraimer
2011-10-21 10:37:37 -04:00
parent 2f71c5cf85
commit 4048a7eaa5
29 changed files with 452 additions and 141 deletions
+10 -1
View File
@@ -45,12 +45,18 @@ bool PVAlarm::attach(PVField *pvField)
pvField->message(noAlarmFound,errorMessage);
return false;
}
pvSeverity = pvInt;
pvInt = pvStructure->getIntField(String("status"));
if(pvInt==0) {
pvField->message(noAlarmFound,errorMessage);
return false;
}
pvStatus = pvInt;
PVString *pvString = pvStructure->getStringField(String("message"));
if(pvInt==0) {
pvField->message(noAlarmFound,errorMessage);
return false;
}
pvSeverity = pvInt;
pvMessage = pvString;
return true;
}
@@ -58,6 +64,7 @@ bool PVAlarm::attach(PVField *pvField)
void PVAlarm::detach()
{
pvSeverity = 0;
pvStatus = 0;
pvMessage = 0;
}
@@ -73,6 +80,7 @@ void PVAlarm::get(Alarm & alarm) const
throw std::logic_error(notAttached);
}
alarm.setSeverity(AlarmSeverityFunc::getSeverity(pvSeverity->get()));
alarm.setStatus(AlarmStatusFunc::getStatus(pvStatus->get()));
alarm.setMessage(pvMessage->get());
}
@@ -83,6 +91,7 @@ bool PVAlarm::set(Alarm const & alarm)
}
if(pvSeverity->isImmutable() || pvMessage->isImmutable()) return false;
pvSeverity->put(alarm.getSeverity());
pvStatus->put(alarm.getStatus());
pvMessage->put(alarm.getMessage());
return true;
}