/*************************************************************************\ * Copyright (c) 2012 UChicago Argonne LLC, as Operator of Argonne * National Laboratory. * Copyright (c) 2002 The Regents of the University of California, as * Operator of Los Alamos National Laboratory. * SPDX-License-Identifier: EPICS * EPICS BASE is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. \*************************************************************************/ /* recGbl.h */ /* Record Global * Author: Marty Kraimer * Date: 13Jun95 */ #ifndef INCrecGblh #define INCrecGblh 1 #include #include "compilerDependencies.h" #include "epicsTypes.h" #include "dbCoreAPI.h" #ifdef __cplusplus extern "C" { #endif /** Feature test macro for alarm message (AMSG) field and support * * Covers addition of dbCommon::amsg, recGblSetSevrMsg(), lset::getAlarmMsg() * * @since 7.0.6 */ #define HAS_ALARM_MESSAGE 1 /*************************************************************************/ /* Structures needed for args */ struct link; struct dbAddr; struct dbr_alDouble; struct dbr_ctrlDouble; struct dbr_grDouble; struct dbCommon; /* Hook Routine */ typedef void (*RECGBL_ALARM_HOOK_ROUTINE)(struct dbCommon *prec, epicsEnum16 prev_sevr, epicsEnum16 prev_stat); DBCORE_API extern RECGBL_ALARM_HOOK_ROUTINE recGblAlarmHook; /* Global Record Support Routines */ DBCORE_API void recGblDbaddrError(long status, const struct dbAddr *paddr, const char *pcaller_name); DBCORE_API void recGblRecordError(long status, void *precord, const char *pcaller_name); DBCORE_API void recGblRecSupError(long status, const struct dbAddr *paddr, const char *pcaller_name, const char *psupport_name); DBCORE_API void recGblGetGraphicDouble(const struct dbAddr *paddr, struct dbr_grDouble *pgd); DBCORE_API void recGblGetControlDouble( const struct dbAddr *paddr, struct dbr_ctrlDouble *pcd); DBCORE_API void recGblGetAlarmDouble(const struct dbAddr *paddr, struct dbr_alDouble *pad); DBCORE_API void recGblGetPrec(const struct dbAddr *paddr, long *pprecision); DBCORE_API int recGblInitConstantLink(struct link *plink, short dbftype, void *pdest); DBCORE_API unsigned short recGblResetAlarms(void *precord); DBCORE_API int recGblSetSevr(void *precord, epicsEnum16 new_stat, epicsEnum16 new_sevr); DBCORE_API void recGblInheritSevr(int msMode, void *precord, epicsEnum16 stat, epicsEnum16 sevr); DBCORE_API int recGblSetSevrMsg(void *precord, epicsEnum16 new_stat, epicsEnum16 new_sevr, EPICS_PRINTF_FMT(const char *msg), ...) EPICS_PRINTF_STYLE(4,5); DBCORE_API int recGblSetSevrVMsg(void *precord, epicsEnum16 new_stat, epicsEnum16 new_sevr, const char *msg, va_list args); DBCORE_API void recGblFwdLink(void *precord); DBCORE_API void recGblGetTimeStamp(void *precord); DBCORE_API void recGblGetTimeStampSimm(void *prec, const epicsEnum16 simm, struct link *siol); DBCORE_API void recGblCheckDeadband(epicsFloat64 *poldval, const epicsFloat64 newval, const epicsFloat64 deadband, unsigned *monitor_mask, const unsigned add_mask); DBCORE_API void recGblSaveSimm(const epicsEnum16 sscn, epicsEnum16 *poldsimm, const epicsEnum16 simm); DBCORE_API void recGblCheckSimm(struct dbCommon *prec, epicsEnum16 *psscn, const epicsEnum16 oldsimm, const epicsEnum16 simm); DBCORE_API void recGblInitSimm(struct dbCommon *prec, epicsEnum16 *psscn, epicsEnum16 *poldsimm, epicsEnum16 *psimm, struct link *psiml); DBCORE_API long recGblGetSimm(struct dbCommon *prec, epicsEnum16 *psscn, epicsEnum16 *poldsimm, epicsEnum16 *psimm, struct link *psiml); #ifdef __cplusplus } #endif #endif /*INCrecGblh*/