/* 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 #define epicsExportSharedSymbols #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")); } StringArrayPtr AlarmSeverityFunc::getSeverityNames() { static size_t severityCount = 5; static StringArrayPtr severityNames; static Mutex mutex; Lock xx(mutex); if(severityNames.get()==NULL) { severityNames = StringArrayPtr(new StringArray()); 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")); } StringArrayPtr AlarmStatusFunc::getStatusNames() { static size_t statusCount = 8; static StringArrayPtr statusNames; static Mutex mutex; Lock xx(mutex); if(statusNames.get()==NULL) { statusNames = StringArrayPtr(new StringArray()); 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")); } }}