mrfioc2  2.3.0
evgDbus.cpp
Go to the documentation of this file.
1 #include "evgDbus.h"
2 
3 #include <iostream>
4 
5 #include <mrfCommonIO.h>
6 #include <errlog.h>
7 #include <mrfCommon.h>
8 
9 #include "evgRegMap.h"
10 
11 evgDbus::evgDbus(const std::string& name, const epicsUInt32 id,
12  volatile epicsUInt8* const pReg):
13 mrf::ObjectInst<evgDbus>(name),
14 m_id(id),
15 m_pReg(pReg) {
16 }
17 
19 }
20 
21 void
22 evgDbus::setSource(epicsUInt16 src) {
23  epicsUInt32 mask = src << (4 * m_id);
24 
25  //Read-Modify-Write
26  epicsUInt32 dbusSrc = READ32(m_pReg, DBusSrc);
27 
28  //Zeroing out the bits that belong to this Dbus
29  dbusSrc = dbusSrc & ~(0xf << (4 * m_id));
30 
31  dbusSrc = dbusSrc | mask;
32  WRITE32(m_pReg, DBusSrc, dbusSrc);
33 }
34 
35 epicsUInt16
37  epicsUInt32 dbusSrc = READ32(m_pReg, DBusSrc);
38  return dbusSrc & (0xf << (4 * m_id));
39 }
40 
epicsUInt16 getSource() const
Definition: evgDbus.cpp:36
#define READ32(base, offset)
Definition: mrfCommonIO.h:114
void setSource(epicsUInt16)
Definition: evgDbus.cpp:22
evgDbus(const std::string &, const epicsUInt32, volatile epicsUInt8 *const)
Definition: evgDbus.cpp:11
Definition: evgDbus.h:7
~evgDbus()
Definition: evgDbus.cpp:18
Definition: flash.cpp:23
#define WRITE32(base, offset, value)
Definition: mrfCommonIO.h:119