/* alarm.cpp */ /** * Copyright - See the COPYRIGHT that is included with this distribution. * EPICS pvData is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. */ /** * @author mrk */ #include #include #include #include #include #include #include namespace epics { namespace pvData { AlarmSeverity AlarmSeverityFunc::getSeverity(int value) { if(value<0 || value>4) { throw std::logic_error(String("getSeverity value is illegal")); } switch (value) { case 0: return noAlarm; case 1: return minorAlarm; case 2: return majorAlarm; case 3: return invalidAlarm; case 4: return undefinedAlarm; } throw std::logic_error(String("should never get here")); } StringArray AlarmSeverityFunc::getSeverityNames() { static size_t severityCount = 5; static StringArray severityNames; static Mutex mutex; Lock xx(mutex); if(severityNames.size()==0) { severityNames.reserve(severityCount); severityNames.push_back("NONE"); severityNames.push_back("MINOR"); severityNames.push_back("MAJOR"); severityNames.push_back("INVALID"); severityNames.push_back("UNDEFINED"); } return severityNames; } AlarmSeverity Alarm::getSeverity() const { switch(severity) { case 0: return noAlarm; case 1: return minorAlarm; case 2: return majorAlarm; case 3: return invalidAlarm; case 4: return undefinedAlarm; } throw std::logic_error(String("should never get here")); } AlarmStatus AlarmStatusFunc::getStatus(int value) { if(value<0 || value>7) { throw std::logic_error(String("getStatus value is illegal")); } switch (value) { case 0: return noStatus; case 1: return deviceStatus; case 2: return driverStatus; case 3: return recordStatus; case 4: return dbStatus; case 5: return confStatus; case 6: return undefinedStatus; case 7: return clientStatus; } throw std::logic_error(String("should never get here")); } StringArray AlarmStatusFunc::getStatusNames() { static size_t statusCount = 8; static StringArray statusNames; static Mutex mutex; Lock xx(mutex); if(statusNames.size()==0) { statusNames.reserve(statusCount); statusNames.push_back("NONE"); statusNames.push_back("DEVICE"); statusNames.push_back("DRIVER"); statusNames.push_back("RECORD"); statusNames.push_back("DB"); statusNames.push_back("CONF"); statusNames.push_back("UNDEFINED"); statusNames.push_back("CLIENT"); } return statusNames; } AlarmStatus Alarm::getStatus() const { switch(status) { case 0: return noStatus; case 1: return deviceStatus; case 2: return driverStatus; case 3: return recordStatus; case 4: return dbStatus; case 5: return confStatus; case 6: return undefinedStatus; case 7: return clientStatus; } throw std::logic_error(String("should never get here")); } }}