pva2pva  1.4.1
 All Classes Functions Variables Pages
Public Types | Public Member Functions | Public Attributes | List of all members
PVIF Struct Referenceabstract

Public Types

enum  proc_t { ProcPassive, ProcInhibit, ProcForce }
 

Public Member Functions

 PVIF (dbChannel *ch)
 
virtual void put (epics::pvData::BitSet &mask, unsigned dbe, db_field_log *pfl)=0
 
virtual epics::pvData::Status get (const epics::pvData::BitSet &mask, proc_t proc=ProcInhibit, bool permit=true)=0
 
virtual unsigned dbe (const epics::pvData::BitSet &mask)=0
 Calculate DBE mask from changed bitset.
 

Public Attributes

dbChannel *const chan
 

Detailed Description

Definition at line 365 of file pvif.h.

Member Function Documentation

pvd::Status PVIF::get ( const epics::pvData::BitSet &  mask,
proc_t  proc = ProcInhibit,
bool  permit = true 
)
pure virtual

May copy from pvalue to PDB record (call dbChannelPut()) caller must lock record

Definition at line 1262 of file pvif.cpp.

1263 {
1264  dbCommon *precord = dbChannelRecord(chan);
1265 
1266  bool tryproc = proc!=ProcPassive ? proc==ProcForce :
1267  dbChannelField(chan) == &precord->proc ||
1268  (dbChannelFldDes(chan)->process_passive &&
1269  precord->scan == 0);
1270 
1271  pvd::Status ret;
1272 
1273  if (tryproc) {
1274  if (!permit) {
1275  return pvd::Status::error("Process not permitted");
1276 
1277  } else if (precord->pact) {
1278  if (precord->tpro)
1279  printf("%s: Active %s\n",
1280  epicsThreadGetNameSelf(), precord->name);
1281  precord->rpro = TRUE;
1282  } else {
1283  /* indicate that dbPutField called dbProcess */
1284  precord->putf = TRUE;
1285  long err = dbProcess(precord);
1286  if(err) {
1287  char buf[32];
1288  errSymLookup(err, buf, sizeof(buf));
1289  std::ostringstream msg;
1290  msg<<"process error : "<<buf;
1291  ret = pvd::Status::error(msg.str());
1292  }
1293  }
1294  }
1295 
1296  return ret;
1297 }
virtual void PVIF::put ( epics::pvData::BitSet &  mask,
unsigned  dbe,
db_field_log *  pfl 
)
pure virtual

Copy from PDB record to pvalue (call dbChannelGet()) caller must lock record


The documentation for this struct was generated from the following files: