* 3.15: (28 commits) update RELEASE_NOTES add option EPICS_NO_CALLBACK replace CALLBACK -> epicsCallback Update dbTest.c Remove links to wiki-ext Add POD annotations from Wiki to subArrayRecord and menuAlarmStat Rename subArrayRecord.dbd and menuAlarmStat.dbd to .pod Add POD annotations to longoutRecord from Wiki Rename longoutRecord.dbd longoutRecord.dbd.pod Add POD annotations to longinRecord from Wiki Rename longinRecord.dbd longinRecord.dbd.pod Add POD annotations to subRecord from Wiki Rename subRecord.dbd subRecord.dbd.pod Add POD annotations to selRecord from Wiki Rename selRecord.dbd selRecord.dbd.pod Add POD annotations to seqRecord from Wiki Rename seqRecord.dbd seqRecord.dbd.pod Fix menu declaration test too Add redefinition guard to menu-generated typedefs Updates to existing .dbd.pod texts, add event and fanout from wiki ... # Conflicts: # documentation/README.1st # documentation/README.html # modules/database/src/ioc/db/callback.h # modules/database/src/ioc/db/dbNotify.c # modules/database/src/ioc/db/menuAlarmStat.dbd # modules/database/src/ioc/db/menuFtype.dbd # modules/database/src/std/rec/compressRecord.dbd.pod # modules/database/src/std/rec/eventRecord.dbd # modules/database/src/std/rec/fanoutRecord.dbd # modules/database/src/std/rec/longinRecord.dbd # modules/database/src/std/rec/longoutRecord.dbd # modules/database/src/std/rec/selRecord.dbd # modules/database/src/std/rec/seqRecord.dbd # modules/database/src/std/rec/subArrayRecord.dbd # modules/database/src/std/rec/subRecord.dbd # modules/libcom/src/iocsh/menuAlarmStat.dbd.pod # modules/libcom/src/iocsh/menuFtype.dbd.pod # src/ioc/db/menuAlarmStat.dbd # src/ioc/db/menuFtype.dbd Manually fix some move+rename Make additional CALLBACK -> epicsCallback preserve INT64 in menuFtype preserve OLDSIM et al
92 lines
2.6 KiB
C
92 lines
2.6 KiB
C
/*************************************************************************\
|
||
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
|
||
* National Laboratory.
|
||
* Copyright (c) 2002 The Regents of the University of California, as
|
||
* Operator of Los Alamos National Laboratory.
|
||
* EPICS BASE Versions 3.13.7
|
||
* and higher are distributed subject to a Software License Agreement found
|
||
* in file LICENSE that is included with this distribution.
|
||
\*************************************************************************/
|
||
/* asSubRecordFunctions.c */
|
||
|
||
/* Author: Marty Kraimer Date: 01MAY2000 */
|
||
|
||
#include <stddef.h>
|
||
#include <stdlib.h>
|
||
#include <stdarg.h>
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
|
||
#include "dbAccess.h"
|
||
#include "cantProceed.h"
|
||
#include "callback.h"
|
||
#include "alarm.h"
|
||
#include "errlog.h"
|
||
#include "dbEvent.h"
|
||
#include "recSup.h"
|
||
#include "recGbl.h"
|
||
#include "registryFunction.h"
|
||
#include "asLib.h"
|
||
#include "asDbLib.h"
|
||
#include "subRecord.h"
|
||
#include "epicsExport.h"
|
||
|
||
/* The following is provided for access security*/
|
||
/*It allows a CA client to force access security initialization*/
|
||
|
||
static void myCallback(epicsCallback *pcallback)
|
||
{
|
||
ASDBCALLBACK *pasdbcallback = (ASDBCALLBACK *)pcallback;
|
||
subRecord *precord;
|
||
rset *prset;
|
||
|
||
callbackGetUser(precord,pcallback);
|
||
prset=(rset *)(precord->rset);
|
||
precord->val = 0.0;
|
||
if(pasdbcallback->status) {
|
||
recGblSetSevr(precord,READ_ALARM,precord->brsv);
|
||
recGblRecordError(pasdbcallback->status,precord,"asInit Failed");
|
||
}
|
||
dbScanLock((dbCommon *)precord);
|
||
(*prset->process)((dbCommon *)precord);
|
||
dbScanUnlock((dbCommon *)precord);
|
||
}
|
||
|
||
long asSubInit(subRecord *precord,void *process)
|
||
{
|
||
ASDBCALLBACK *pcallback;
|
||
|
||
pcallback = (ASDBCALLBACK *)callocMustSucceed(
|
||
1,sizeof(ASDBCALLBACK),"asSubInit");
|
||
precord->dpvt = (void *)pcallback;
|
||
callbackSetCallback(myCallback,&pcallback->callback);
|
||
callbackSetUser(precord,&pcallback->callback);
|
||
return(0);
|
||
}
|
||
|
||
long asSubProcess(subRecord *precord)
|
||
{
|
||
ASDBCALLBACK *pcallback = (ASDBCALLBACK *)precord->dpvt;
|
||
|
||
if(!precord->pact && precord->val==1.0) {
|
||
db_post_events(precord,&precord->val,DBE_VALUE);
|
||
callbackSetPriority(precord->prio,&pcallback->callback);
|
||
asInitAsyn(pcallback);
|
||
precord->pact=TRUE;
|
||
return(1);
|
||
}
|
||
db_post_events(precord,&precord->val,DBE_VALUE);
|
||
return(0);
|
||
}
|
||
|
||
static registryFunctionRef asSubRef[] = {
|
||
{"asSubInit",(REGISTRYFUNCTION)asSubInit},
|
||
{"asSubProcess",(REGISTRYFUNCTION)asSubProcess}
|
||
};
|
||
|
||
static void asSub(void)
|
||
{
|
||
registryFunctionRefAdd(asSubRef,NELEMENTS(asSubRef));
|
||
}
|
||
epicsExportRegistrar(asSub);
|