42#ifndef _uhal_ProtocolPCIe_hpp_
43#define _uhal_ProtocolPCIe_hpp_
84 File(
const std::string& aPath,
int aFlags);
87 const std::string& getPath()
const;
88 void setPath(
const std::string& aPath);
93 void createBuffer(
const size_t aNrBytes);
95 void read(
const uint32_t aAddr,
const uint32_t aNrWords, std::vector<uint32_t>& aValues);
97 void write(
const uint32_t aAddr,
const std::vector<uint32_t>& aValues);
99 void write(
const uint32_t aAddr,
const uint8_t*
const aPtr,
const size_t aNrBytes);
101 void write(
const uint32_t aAddr,
const std::vector<std::pair<const uint8_t*, size_t> >& aData);
103 bool haveLock()
const;
120 static std::string getSharedMemName(
const std::string& );
128 PCIe (
const std::string& aId,
const URI& aUri );
144 void implementDispatch ( std::shared_ptr< Buffers > aBuffers );
147 virtual void Flush();
150 virtual void dispatchExceptionHandler();
160 uint32_t getMaxSendSize();
166 uint32_t getMaxReplySize();
178 void write(
const std::shared_ptr<Buffers>& aBuffers);
202 uint32_t mNumberOfPages, mMaxInFlight, mPageSize, mMaxPacketSize,
mIndexNextPage, mPublishedReplyPageCount, mReadReplyPageCount;
Wrapper to generate a new Python exception type.
\rst Holds a reference to a Python object (no reference counting)
A class which provides the version-specific functionality for IPbus.
Transport protocol to transfer an IPbus buffer via PCIe.
std::chrono::steady_clock SteadyClock_t
File mDeviceFileFPGAToHost
FPGA-to-host device file.
uint64_t mIPCSessionCount
std::deque< std::shared_ptr< Buffers > > mReplyQueue
The list of buffers still awaiting a reply.
std::chrono::microseconds mSleepDuration
bool mXdma7seriesWorkaround
bool mIPCExternalSessionActive
IPbus< 2, 0 > InnerProtocol
File mDeviceFileFPGAEvent
FPGA-to-host interrupt (event) file.
detail::SharedObject< detail::RobustSessionMutex > mIPCMutex
File mDeviceFileHostToFPGA
Host-to-FPGA device file.
Wrapper for C++ object that's placed in shared memory.
#define UHAL_DEFINE_DERIVED_EXCEPTION_CLASS(ClassName, BaseClassName, ClassDescription)
Macro for simplifying the declaration and definition of derived exception types.
std::unique_lock< RobustSessionMutex > ScopedSessionLock
Struct to store a URI when parsed by boost spirit.