pva2pva  1.4.0
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

◆ get()

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 1258 of file pvif.cpp.

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

◆ put()

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: