11 #include <epicsTypes.h> 13 #include <epicsThread.h> 14 #include <epicsInterrupt.h> 20 #include <epicsExport.h> 24 #define DataTxCtrl_done 0x100000 25 #define DataTxCtrl_run 0x080000 26 #define DataTxCtrl_trig 0x040000 27 #define DataTxCtrl_ena 0x020000 28 #define DataTxCtrl_mode 0x010000 29 #define DataTxCtrl_len_mask 0x0007fc 30 #define DataTxCtrl_len_max DataTxCtrl_len_mask 33 volatile epicsUInt8* bufcontrol,
34 volatile epicsUInt8* buffer
56 SCOPED_LOCK(dataGuard);
73 throw std::runtime_error(
"Buffer Tx not enabled");
79 throw std::runtime_error(
"Buffer Tx not running or done");
91 const epicsUInt8 *ubuf
97 throw std::out_of_range(
"Tx buffer is too long");
102 SCOPED_LOCK(dataGuard);
110 for(index=0; index<len; index+=4) {
111 be_iowrite32(&dataBuf[index], *(epicsUInt32*)(&ubuf[index]) );
#define DataTxCtrl_len_max
INLINE void nat_iowrite32(volatile void *addr, epicsUInt32 val)
INLINE epicsUInt32 nat_ioread32(volatile void *addr)
#define be_iowrite32(A, D)
virtual epicsUInt32 lenMax() const OVERRIDE FINAL
virtual void dataTxEnable(bool) OVERRIDE FINAL
#define DataTxCtrl_len_mask
virtual bool dataTxEnabled() const OVERRIDE FINAL
Is card configured for buffer transmission?
virtual void dataSend(epicsUInt32 len, const epicsUInt8 *buf) OVERRIDE FINAL
Transmit a byte array.
virtual bool dataRTS() const OVERRIDE FINAL
Is card ready to send a buffer?
mrmDataBufTx(const std::string &n, volatile epicsUInt8 *bufcontrol, volatile epicsUInt8 *buffer)