8 #include "FpgaManager_Types.h" 9 #include "FpgaManager_Config.h" 26 namespace fpgamanager {
121 virtual void WriteRegister(uint32_t address, uint32_t value) = 0;
129 virtual void ReadContiguous(uint32_t address, uint8_t* buffer_p, std::size_t bufSize) = 0;
137 template<std::
size_t N>
149 template<std::
size_t N>
161 virtual void WriteContiguous(uint32_t address,
const uint8_t* buffer_p, std::size_t bufSize) = 0;
169 template<std::
size_t N>
181 template<std::
size_t N>
193 virtual void ReadMailbox(uint32_t address, uint8_t* buffer_p, std::size_t bufSize) = 0;
201 template<std::
size_t N>
213 template<std::
size_t N>
225 virtual void WriteMailbox(uint32_t address,
const uint8_t* buffer_p, std::size_t bufSize) = 0;
233 template<std::
size_t N>
245 template<std::
size_t N>
246 void WriteMailbox(uint32_t address,
const std::array<uint8_t, N>& array)
257 virtual void ReadMailbox(uint32_t address, uint32_t* buffer_p, std::size_t count) = 0;
265 template<std::
size_t N>
277 template<std::
size_t N>
278 void ReadMailbox(uint32_t address, std::array<uint32_t, N>& array)
289 virtual void WriteMailbox(uint32_t address,
const uint32_t* buffer_p, std::size_t count) = 0;
297 template<std::
size_t N>
309 template<std::
size_t N>
310 void WriteMailbox(uint32_t address,
const std::array<uint32_t, N>& array)
366 virtual std::size_t
Read(uint8_t* buffer_p, std::size_t bufSize) = 0;
374 template<std::
size_t N>
375 std::size_t
Read(uint8_t(&buffer)[N])
377 return Read(buffer, N);
386 template<std::
size_t N>
387 std::size_t
Read(std::array<uint8_t, N>& array)
389 return Read(array.data(), N);
398 virtual std::size_t
Write(
const uint8_t* buffer_p, std::size_t bufSize) = 0;
406 template<std::
size_t N>
407 std::size_t
Write(
const uint8_t(&buffer)[N])
409 return Write(buffer, N);
418 template<std::
size_t N>
419 std::size_t
Write(
const std::array<uint8_t, N>& array)
421 return Write(array.data(), N);
443 virtual void Flush() = 0;
513 virtual IStream&
CreateStream(
unsigned stream_idx, StreamType type, StreamDirection direction) = 0;
518 virtual void Open() = 0;
void WriteMailbox(uint32_t address, const uint32_t(&buffer)[N])
Writes multiple words to a single address location
Definition: FpgaManager_Interfaces.h:298
virtual std::size_t Read(uint8_t *buffer_p, std::size_t bufSize)=0
Read data from stream into buffer
TransferResult result
Transfer result
Definition: FpgaManager_Interfaces.h:350
virtual IMmAccess & CreateMemoryMap(unsigned stream_idx)=0
Creates an interface for memory mapped access
virtual uint32_t ReadRegister(uint32_t address)=0
Reads from a single register
Interface definition of the FPGA Manager streaming interface
Definition: FpgaManager_Interfaces.h:320
void ReadContiguous(uint32_t address, uint8_t(&buffer)[N])
Reads consecutive bytes from mapped memory/registers
Definition: FpgaManager_Interfaces.h:138
virtual void ReadMailbox(uint32_t address, uint8_t *buffer_p, std::size_t bufSize)=0
Reads multiple words from a single address location
virtual void Flush()=0
Flushes the inbound buffer
virtual ~IMmAccess()=default
Destructor
StreamDirection
Defines the direction of a stream
Definition: Types.cs:79
void WriteMailbox(uint32_t address, const std::array< uint8_t, N > &array)
Writes multiple words to a single address location
Definition: FpgaManager_Interfaces.h:246
virtual FpgaManagerVersion_t GetSwVersion()=0
Get the FPGA Manager SW Version number
std::size_t requested
Requested transfer size in bytes
Definition: FpgaManager_Interfaces.h:346
FPGA Manager device URL
Definition: FpgaManager_Types.h:34
void WriteMailbox(uint32_t address, const std::array< uint32_t, N > &array)
Writes multiple words to a single address location
Definition: FpgaManager_Interfaces.h:310
virtual std::size_t Write(const uint8_t *buffer_p, std::size_t bufSize)=0
Write data from buffer to stream
Configuration Parameter
Definition: FpgaManager_Config.h:157
Interface definition of the FPGA Manager MmAccess interface
Definition: FpgaManager_Interfaces.h:102
std::size_t Read(uint8_t(&buffer)[N])
Read data from stream into buffer
Definition: FpgaManager_Interfaces.h:375
void ReadContiguous(uint32_t address, std::array< uint8_t, N > &array)
Reads consecutive bytes from mapped memory/registers
Definition: FpgaManager_Interfaces.h:150
uint8_t * buffer_p
Buffer that took part in the transaction
Definition: FpgaManager_Interfaces.h:344
types::Version< uint8_t, 2 > FpgaManagerVersion_t
FPGA Manager Version number type
Definition: FpgaManager_Interfaces.h:68
void WriteContiguous(uint32_t address, const uint8_t(&buffer)[N])
Writes consecutive bytes to mapped memory/registers
Definition: FpgaManager_Interfaces.h:170
virtual void Open()=0
Opens the FPGA Manager connection and creates all primed memory-maps and streams
virtual ~ISystem()=default
Destructor
std::size_t Write(const std::array< uint8_t, N > &array)
Write data from buffer to stream
Definition: FpgaManager_Interfaces.h:419
virtual void ReadAsync(uint8_t *buffer_p, std::size_t bufSize, CompletionCallback_t cb)=0
Read data from stream into buffer asynchronously (non-blocking)
void ReadMailbox(uint32_t address, uint32_t(&buffer)[N])
Reads multiple words from a single address location
Definition: FpgaManager_Interfaces.h:266
virtual const types::ApiUrl & Url() const =0
Getter for API URL
void WriteContiguous(uint32_t address, const std::array< uint8_t, N > &array)
Writes consecutive bytes to mapped memory/registers
Definition: FpgaManager_Interfaces.h:182
virtual ~IFpgaManager()=default
Destructor
void ReadMailbox(uint32_t address, std::array< uint8_t, N > &array)
Reads multiple words from a single address location
Definition: FpgaManager_Interfaces.h:214
void ReadMailbox(uint32_t address, uint8_t(&buffer)[N])
Reads multiple words from a single address location
Definition: FpgaManager_Interfaces.h:202
virtual void WriteMailbox(uint32_t address, const uint8_t *buffer_p, std::size_t bufSize)=0
Writes multiple words to a single address location
Interface definition for the FPGA Manager System API
Definition: FpgaManager_Interfaces.h:63
virtual void WriteRegister(uint32_t address, uint32_t value)=0
Writes to a single register
Stream without framing (i.e. transferring a given number of bytes)
virtual config::ConfigSettings Config() const =0
Getter for Configuration
virtual ISystem & SystemApi()=0
Getter for SystemApi interface
Definition: FpgaManager.h:28
virtual void ReadContiguous(uint32_t address, uint8_t *buffer_p, std::size_t bufSize)=0
Reads consecutive bytes from mapped memory/registers
TransferResult
Asynchronous Transfer result
Definition: FpgaManager_Interfaces.h:330
Details of the current API
Definition: FpgaManager_Types.h:257
Asynchronous Transfer details
Definition: FpgaManager_Interfaces.h:341
virtual IStream & CreateStream(unsigned stream_idx, StreamType type, StreamDirection direction)=0
Creates an interface for stream access
void WriteMailbox(uint32_t address, const uint8_t(&buffer)[N])
Writes multiple words to a single address location
Definition: FpgaManager_Interfaces.h:234
virtual void WriteContiguous(uint32_t address, const uint8_t *buffer_p, std::size_t bufSize)=0
Writes consecutive bytes to mapped memory/registers
virtual std::string GetErrorTrace()=0
Get the FPGA Manager error trace
std::size_t transferred
Actual transferred size in bytes
Definition: FpgaManager_Interfaces.h:348
uint16_t frame_number
UniScp frame number
Definition: FpgaManager_Interfaces.h:352
virtual void WriteAsync(const uint8_t *buffer_p, std::size_t bufSize, CompletionCallback_t cb)=0
Write data from buffer to stream asynchronously (non-blocking)
std::size_t Read(std::array< uint8_t, N > &array)
Read data from stream into buffer
Definition: FpgaManager_Interfaces.h:387
virtual std::string GetErrorMessage(int error_code)=0
Get the error message for a given FPGA Manager error code
virtual ~IStream()=default
Destructor
Stream with framing (i.e. transfer one frame independently of its size)
void ReadMailbox(uint32_t address, std::array< uint32_t, N > &array)
Reads multiple words from a single address location
Definition: FpgaManager_Interfaces.h:278
virtual types::ApiDetails Details() const =0
Details of the FPGA Manager libraries
std::size_t Write(const uint8_t(&buffer)[N])
Write data from buffer to stream
Definition: FpgaManager_Interfaces.h:407
virtual void Configure(const config::ConfigSettings &settings)=0
Updates the configuration with which all transport instances are configured from
StreamType
Defines the type of a stream
Definition: Types.cs:64
Interface definition of the FPGA Manager API
Definition: FpgaManager_Interfaces.h:449
std::function< void(const TransferDetails &)> CompletionCallback_t
Callback to be called if a transfer was completed
Definition: FpgaManager_Interfaces.h:358