本文整理汇总了C++中db_post_events函数的典型用法代码示例。如果您正苦于以下问题:C++ db_post_events函数的具体用法?C++ db_post_events怎么用?C++ db_post_events使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了db_post_events函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: monitor
static void monitor(boRecord *prec)
{
unsigned short monitor_mask;
monitor_mask = recGblResetAlarms(prec);
/* check for value change */
if (prec->mlst != prec->val){
/* post events for value change and archive change */
monitor_mask |= (DBE_VALUE | DBE_LOG);
/* update last value monitored */
prec->mlst = prec->val;
}
/* send out monitors connected to the value field */
if (monitor_mask){
db_post_events(prec,&prec->val,monitor_mask);
}
if(prec->oraw!=prec->rval) {
db_post_events(prec,&prec->rval,
monitor_mask|DBE_VALUE|DBE_LOG);
prec->oraw = prec->rval;
}
if(prec->orbv!=prec->rbv) {
db_post_events(prec,&prec->rbv,
monitor_mask|DBE_VALUE|DBE_LOG);
prec->orbv = prec->rbv;
}
return;
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:29,代码来源:boRecord.c
示例2: special
static long special(DBADDR *paddr,int after)
{
aiRecord *prec = (aiRecord *)(paddr->precord);
aidset *pdset = (aidset *) (prec->dset);
int special_type = paddr->special;
switch(special_type) {
case(SPC_LINCONV):
if(pdset->number<6) {
recGblDbaddrError(S_db_noMod,paddr,"ai: special");
return(S_db_noMod);
}
prec->init=TRUE;
if ((prec->linr == menuConvertLINEAR) && pdset->special_linconv) {
double eoff = prec->eoff;
double eslo = prec->eslo;
long status;
prec->eoff = prec->egul;
status = (*pdset->special_linconv)(prec,after);
if (eoff != prec->eoff)
db_post_events(prec, &prec->eoff, DBE_VALUE|DBE_LOG);
if (eslo != prec->eslo)
db_post_events(prec, &prec->eslo, DBE_VALUE|DBE_LOG);
return(status);
}
return(0);
default:
recGblDbaddrError(S_db_badChoice,paddr,"ai: special");
return(S_db_badChoice);
}
}
开发者ID:T-A-R-L-A,项目名称:EPICS-Base,代码行数:31,代码来源:aiRecord.c
示例3: monitor
static void monitor(calcoutRecord *prec)
{
unsigned monitor_mask;
double *pnew;
double *pprev;
int i;
monitor_mask = recGblResetAlarms(prec);
/* check for value change */
recGblCheckDeadband(&prec->mlst, prec->val, prec->mdel, &monitor_mask, DBE_VALUE);
/* check for archive change */
recGblCheckDeadband(&prec->alst, prec->val, prec->adel, &monitor_mask, DBE_ARCHIVE);
/* send out monitors connected to the value field */
if (monitor_mask){
db_post_events(prec, &prec->val, monitor_mask);
}
/* check all input fields for changes*/
for (i = 0, pnew = &prec->a, pprev = &prec->la; i<CALCPERFORM_NARGS;
i++, pnew++, pprev++) {
if ((*pnew != *pprev) || (monitor_mask&DBE_ALARM)) {
db_post_events(prec, pnew, monitor_mask|DBE_VALUE|DBE_LOG);
*pprev = *pnew;
}
}
/* Check OVAL field */
if (prec->povl != prec->oval) {
db_post_events(prec, &prec->oval, monitor_mask|DBE_VALUE|DBE_LOG);
prec->povl = prec->oval;
}
return;
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:35,代码来源:calcoutRecord.c
示例4: monitor
static void monitor(aSubRecord *prec)
{
int i;
unsigned short monitor_mask;
monitor_mask = recGblResetAlarms(prec) | DBE_VALUE | DBE_LOG;
/* Post events for VAL field */
if (prec->val != prec->oval) {
db_post_events(prec, &prec->val, monitor_mask);
prec->oval = prec->val;
}
/* Event posting on VAL arrays depends on the setting of prec->eflg */
switch (prec->eflg) {
case aSubEFLG_NEVER:
break;
case aSubEFLG_ON_CHANGE:
for (i = 0; i < NUM_ARGS; i++) {
epicsUInt32 alen = dbValueSize((&prec->ftva)[i]) * (&prec->neva)[i];
void *povl = (&prec->ovla)[i];
void *pval = (&prec->vala)[i];
if (memcmp(povl, pval, alen)) {
memcpy(povl, pval, alen);
db_post_events(prec, pval, monitor_mask);
}
}
break;
case aSubEFLG_ALWAYS:
for (i = 0; i < NUM_ARGS; i++)
db_post_events(prec, (&prec->vala)[i], monitor_mask);
break;
}
return;
}
开发者ID:paulscherrerinstitute,项目名称:mrfioc2,代码行数:35,代码来源:aSubRecord.c
示例5: monitor
static void monitor(subRecord *prec)
{
unsigned monitor_mask;
double *pnew;
double *pold;
int i;
/* get alarm mask */
monitor_mask = recGblResetAlarms(prec);
/* check for value change */
recGblCheckDeadband(&prec->mlst, prec->val, prec->mdel, &monitor_mask, DBE_VALUE);
/* check for archive change */
recGblCheckDeadband(&prec->alst, prec->val, prec->adel, &monitor_mask, DBE_ARCHIVE);
/* send out monitors connected to the value field */
if (monitor_mask) {
db_post_events(prec, &prec->val, monitor_mask);
}
/* check all input fields for changes */
for (i = 0, pnew = &prec->a, pold = &prec->la;
i < INP_ARG_MAX; i++, pnew++, pold++) {
if (*pnew != *pold) {
db_post_events(prec, pnew, monitor_mask | DBE_VALUE | DBE_LOG);
*pold = *pnew;
}
}
return;
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:31,代码来源:subRecord.c
示例6: monitor
static void monitor(compressRecord *prec)
{
unsigned short alarm_mask = recGblResetAlarms(prec);
unsigned short monitor_mask = alarm_mask | DBE_LOG | DBE_VALUE;
if (alarm_mask || prec->nuse != prec->ouse) {
db_post_events(prec, &prec->nuse, monitor_mask);
prec->ouse = prec->nuse;
}
db_post_events(prec, prec->bptr, monitor_mask);
}
开发者ID:zlxmsu,项目名称:TestEpics,代码行数:11,代码来源:compressRecord.c
示例7: putAcks
static long putAcks(DBADDR *paddr, const unsigned short *pbuffer, long nRequest,
long no_elements, long offset)
{
dbCommon *precord = paddr->precord;
if (*pbuffer >= precord->acks) {
precord->acks = 0;
db_post_events(precord, NULL, DBE_ALARM);
db_post_events(precord, &precord->acks, DBE_VALUE | DBE_ALARM);
}
return 0;
}
开发者ID:T-A-R-L-A,项目名称:EPICS-Base,代码行数:12,代码来源:dbAccess.c
示例8: asSubProcess
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);
}
开发者ID:A2-Collaboration,项目名称:epics,代码行数:14,代码来源:asSubRecordFunctions.c
示例9: monitor
static void monitor(selRecord *prec)
{
unsigned short monitor_mask;
double delta;
double *pnew;
double *pprev;
int i;
monitor_mask = recGblResetAlarms(prec);
/* check for value change */
delta = prec->mlst - prec->val;
if(delta<0.0) delta = -delta;
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
/* post events for value change */
monitor_mask |= DBE_VALUE;
/* update last value monitored */
prec->mlst = prec->val;
}
/* check for archive change */
delta = prec->alst - prec->val;
if(delta<0.0) delta = -delta;
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
/* post events on value field for archive change */
monitor_mask |= DBE_LOG;
/* update last archive value monitored */
prec->alst = prec->val;
}
/* send out monitors connected to the value field */
if (monitor_mask)
db_post_events(prec, &prec->val, monitor_mask);
monitor_mask |= DBE_VALUE|DBE_LOG;
/* trigger monitors of the SELN field */
if (prec->nlst != prec->seln) {
prec->nlst = prec->seln;
db_post_events(prec, &prec->seln, monitor_mask);
}
/* check all input fields for changes, even if VAL hasn't changed */
for(i=0, pnew=&prec->a, pprev=&prec->la; i<SEL_MAX; i++, pnew++, pprev++) {
if(*pnew != *pprev) {
db_post_events(prec, pnew, monitor_mask);
*pprev = *pnew;
}
}
return;
}
开发者ID:ukaea,项目名称:epics,代码行数:49,代码来源:selRecord.c
示例10: putAckt
static long putAckt(DBADDR *paddr, const unsigned short *pbuffer, long nRequest,
long no_elements, long offset)
{
dbCommon *precord = paddr->precord;
if (*pbuffer == precord->ackt) return 0;
precord->ackt = *pbuffer;
db_post_events(precord, &precord->ackt, DBE_VALUE | DBE_ALARM);
if (!precord->ackt && precord->acks > precord->sevr) {
precord->acks = precord->sevr;
db_post_events(precord, &precord->acks, DBE_VALUE | DBE_ALARM);
}
db_post_events(precord, NULL, DBE_ALARM);
return 0;
}
开发者ID:T-A-R-L-A,项目名称:EPICS-Base,代码行数:15,代码来源:dbAccess.c
示例11: refresh_bits
/* refreshes all the bit fields based on a hardware value
and sends monitors if the bit's value or the record's
severity/status have changed */
static void refresh_bits(mbbiDirectRecord *prec,
unsigned short monitor_mask)
{
unsigned short i;
unsigned short mask = 1;
unsigned short momask;
unsigned char *bit;
bit = &(prec->b0);
for (i=0; i<NUM_BITS; i++, mask = mask << 1, bit++) {
momask = monitor_mask;
if (prec->val & mask) {
if (*bit == 0) {
*bit = 1;
momask |= DBE_VALUE | DBE_LOG;
}
} else {
if (*bit != 0) {
*bit = 0;
momask |= DBE_VALUE | DBE_LOG;
}
}
if (momask)
db_post_events(prec,bit,momask);
}
}
开发者ID:zlxmsu,项目名称:TestEpics,代码行数:29,代码来源:mbbiDirectRecord.c
示例12: monitor
static void monitor(ifstatRecord *prec)
{
unsigned short monitor_mask;
double delta;
monitor_mask = recGblResetAlarms(prec);
/* check for value change */
delta = prec->mlst - prec->val;
if(delta<0.0) delta = -delta;
if (delta > prec->mdel) {
/* post events for value change */
monitor_mask |= DBE_VALUE;
/* update last value monitored */
prec->mlst = prec->val;
}
/* check for archive change */
delta = prec->alst - prec->val;
if(delta<0.0) delta = -delta;
if (delta > prec->adel) {
/* post events on value field for archive change */
monitor_mask |= DBE_LOG;
/* update last archive value monitored */
prec->alst = prec->val;
}
/* send out monitors connected to the value field */
if (monitor_mask){
db_post_events(prec,&prec->val,monitor_mask);
}
return;
}
开发者ID:RaonControl,项目名称:siteApps,代码行数:32,代码来源:ifstatRecord.c
示例13: interruptCallback
static void interruptCallback(void *drvPvt, asynUser *pasynUser,
epicsInt32 value)
{
devBusyPvt *pPvt = (devBusyPvt *)drvPvt;
busyRecord *pr = (busyRecord *)pPvt->pr;
unsigned short monitor_mask;
dbScanLock((dbCommon *)pr);
asynPrint(pPvt->pasynUser, ASYN_TRACEIO_DEVICE,
"%s devAsynBusy::interruptCallback new value=%d\n",
pr->name, value);
/* If the current value of the record is 1 and the new value is 0 then post monitors
* and call recGblFwdLink
* Ignore the callback if pr->pact=1 because a write operation is in progress. */
if ((pr->pact == 0) && (pr->val == 1) && (value == 0)) {
/* If the current value of the record is 1 and the new value is 0 then post monitors
* and call recGblFwdLink */
asynPrint(pPvt->pasynUser, ASYN_TRACEIO_DEVICE,
"%s devAsynBusy::interruptCallback 1 to 0 transition, posting monitors and calling recGblFwdLink\n",
pr->name);
pr->val = value;
monitor_mask = recGblResetAlarms(pr);
/* post events for value change and archive change */
monitor_mask |= (DBE_VALUE | DBE_LOG);
/* update last value monitored */
pr->mlst = pr->val;
/* send out monitors connected to the value field */
if (monitor_mask){
db_post_events(pr,&pr->val,monitor_mask);
}
recGblFwdLink(pr);
}
dbScanUnlock((dbCommon *)pr);
}
开发者ID:epics-modules,项目名称:busy,代码行数:34,代码来源:devBusyAsyn.c
示例14: monitor
static void monitor(aoRecord *prec)
{
unsigned short monitor_mask;
double delta;
monitor_mask = recGblResetAlarms(prec);
/* check for value change */
delta = prec->mlst - prec->val;
if(delta<0.0) delta = -delta;
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
/* post events for value change */
monitor_mask |= DBE_VALUE;
/* update last value monitored */
prec->mlst = prec->val;
}
/* check for archive change */
delta = prec->alst - prec->val;
if(delta<0.0) delta = -delta;
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
/* post events on value field for archive change */
monitor_mask |= DBE_LOG;
/* update last archive value monitored */
prec->alst = prec->val;
}
/* send out monitors connected to the value field */
if (monitor_mask){
db_post_events(prec,&prec->val,monitor_mask);
}
if(prec->omod) monitor_mask |= (DBE_VALUE|DBE_LOG);
if(monitor_mask) {
prec->omod = FALSE;
db_post_events(prec,&prec->oval,monitor_mask);
if(prec->oraw != prec->rval) {
db_post_events(prec,&prec->rval,
monitor_mask|DBE_VALUE|DBE_LOG);
prec->oraw = prec->rval;
}
if(prec->orbv != prec->rbv) {
db_post_events(prec,&prec->rbv,
monitor_mask|DBE_VALUE|DBE_LOG);
prec->orbv = prec->rbv;
}
}
return;
}
开发者ID:A2-Collaboration,项目名称:epics,代码行数:47,代码来源:aoRecord.c
示例15: checkLinks
static void checkLinks(calcoutRecord *prec)
{
DBLINK *plink;
rpvtStruct *prpvt = prec->rpvt;
int i;
int stat;
int caLink = 0;
int caLinkNc = 0;
epicsEnum16 *plinkValid;
if (calcoutRecDebug) printf("checkLinks() for %p\n", prec);
plink = &prec->inpa;
plinkValid = &prec->inav;
for (i = 0; i<CALCPERFORM_NARGS+1; i++, plink++, plinkValid++) {
if (plink->type == CA_LINK) {
caLink = 1;
stat = dbCaIsLinkConnected(plink);
if (!stat && (*plinkValid == calcoutINAV_EXT_NC)) {
caLinkNc = 1;
}
else if (!stat && (*plinkValid == calcoutINAV_EXT)) {
*plinkValid = calcoutINAV_EXT_NC;
db_post_events(prec, plinkValid, DBE_VALUE);
caLinkNc = 1;
}
else if (stat && (*plinkValid == calcoutINAV_EXT_NC)) {
*plinkValid = calcoutINAV_EXT;
db_post_events(prec, plinkValid, DBE_VALUE);
}
}
}
if (caLinkNc)
prpvt->caLinkStat = CA_LINKS_NOT_OK;
else if (caLink)
prpvt->caLinkStat = CA_LINKS_ALL_OK;
else
prpvt->caLinkStat = NO_CA_LINKS;
if (!prpvt->cbScheduled && caLinkNc) {
/* Schedule another CALLBACK */
prpvt->cbScheduled = 1;
callbackRequestDelayed(&prpvt->checkLinkCb, .5);
}
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:47,代码来源:calcoutRecord.c
示例16: monitor
static void monitor(struct cvtRecord *pcvt)
{
unsigned short monitor_mask;
double delta;
monitor_mask = recGblResetAlarms(pcvt);
/* check for value change */
delta = pcvt->mlst - pcvt->val;
if (delta < 0.0)
delta = -delta;
if (delta > pcvt->mdel) {
/* post events for value change */
monitor_mask |= DBE_VALUE;
/* update last value monitored */
pcvt->mlst = pcvt->val;
}
/* check for archive change */
delta = pcvt->alst - pcvt->val;
if (delta < 0.0)
delta = -delta;
if (delta > pcvt->adel) {
/* post events on value field for archive change */
monitor_mask |= DBE_LOG;
/* update last archive value monitored */
pcvt->alst = pcvt->val;
}
/* send out monitors connected to the value field */
if (monitor_mask) {
db_post_events(pcvt, &pcvt->val, monitor_mask);
}
if (pcvt->drty & DRTY_METH) {
db_post_events(pcvt, &pcvt->meth, DBE_VALUE|DBE_LOG);
}
if (pcvt->drty & DRTY_SPEC) {
db_post_events(pcvt, &pcvt->spec, DBE_VALUE|DBE_LOG);
}
if (pcvt->drty & DRTY_BDIR) {
db_post_events(pcvt, &pcvt->bdir, DBE_VALUE|DBE_LOG);
}
if (pcvt->drty & DRTY_TDIR) {
db_post_events(pcvt, &pcvt->tdir, DBE_VALUE|DBE_LOG);
}
if (pcvt->drty & DRTY_ISTA) {
db_post_events(pcvt, &pcvt->ista, DBE_VALUE|DBE_LOG|DBE_ALARM);
}
if (pcvt->drty & DRTY_X) {
db_post_events(pcvt, &pcvt->x, DBE_VALUE|DBE_LOG);
}
if (pcvt->drty & DRTY_Y) {
db_post_events(pcvt, &pcvt->y, DBE_VALUE|DBE_LOG);
}
pcvt->drty = DRTY_NONE;
return;
}
开发者ID:ISISComputingGroup,项目名称:EPICS-csm,代码行数:55,代码来源:cvtRecord.c
示例17: monitor
static void monitor(eventRecord *prec)
{
unsigned short monitor_mask;
/* get previous stat and sevr and new stat and sevr*/
monitor_mask = recGblResetAlarms(prec);
db_post_events(prec,&prec->val,monitor_mask|DBE_VALUE);
return;
}
开发者ID:ISISComputingGroup,项目名称:EPICS-base,代码行数:9,代码来源:eventRecord.c
示例18: monitor_field
static void monitor_field(aliveRecord *prec, void *field)
{
unsigned short monitor_mask;
monitor_mask = recGblResetAlarms(prec);
monitor_mask |= DBE_VALUE;
db_post_events(prec,field,monitor_mask);
return;
}
开发者ID:epics-modules,项目名称:alive,代码行数:10,代码来源:aliveRecord.c
示例19: monitor
static void monitor(aliveRecord *prec)
{
unsigned short monitor_mask;
monitor_mask = recGblResetAlarms(prec);
monitor_mask |= DBE_VALUE|DBE_LOG;
db_post_events(prec,&prec->val,monitor_mask);
return;
}
开发者ID:epics-modules,项目名称:alive,代码行数:10,代码来源:aliveRecord.c
示例20: monitor
static void monitor(subRecord *prec)
{
unsigned monitor_mask;
double delta;
double *pnew;
double *pold;
int i;
/* get alarm mask */
monitor_mask = recGblResetAlarms(prec);
/* check for value change */
delta = prec->val - prec->mlst;
if (delta < 0.0) delta = -delta;
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
/* post events for value change */
monitor_mask |= DBE_VALUE;
/* update last value monitored */
prec->mlst = prec->val;
}
/* check for archive change */
delta = prec->val - prec->alst;
if (delta < 0.0) delta = -delta;
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
/* post events on value field for archive change */
monitor_mask |= DBE_LOG;
/* update last archive value monitored */
prec->alst = prec->val;
}
/* send out monitors connected to the value field */
if (monitor_mask) {
db_post_events(prec, &prec->val, monitor_mask);
}
/* check all input fields for changes */
for (i = 0, pnew = &prec->a, pold = &prec->la;
i < INP_ARG_MAX; i++, pnew++, pold++) {
if (*pnew != *pold) {
db_post_events(prec, pnew, monitor_mask | DBE_VALUE | DBE_LOG);
*pold = *pnew;
}
}
return;
}
开发者ID:ISISComputingGroup,项目名称:EPICS-base,代码行数:42,代码来源:subRecord.c
注:本文中的db_post_events函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论