17#ifndef __ROGUE_PROTOCOLS_XILINX_XVC_H__
18#define __ROGUE_PROTOCOLS_XILINX_XVC_H__
22#include <netinet/in.h>
23#include <netinet/ip.h>
25#include <sys/socket.h>
68 std::shared_ptr<rogue::Logging>
log_;
94 static std::shared_ptr<rogue::protocols::xilinx::Xvc>
create(uint16_t port);
108 explicit Xvc(uint16_t port);
131 void acceptFrame(std::shared_ptr<rogue::interfaces::stream::Frame> frame);
158 int xfer(uint8_t* txBuffer,
163 unsigned rxBytes) final;
Thread-safe bounded queue with optional busy threshold.
static std::shared_ptr< rogue::interfaces::stream::Master > create()
Creates a stream master.
Stream slave endpoint and default frame pool.
Base transport driver for the AxisToJtag firmware protocol.
Rogue XVC bridge between TCP XVC clients and Rogue stream transport.
rogue::Queue< std::shared_ptr< rogue::interfaces::stream::Frame > > queue_
uint64_t getMaxVectorSize() final
Returns maximum vector size supported by this XVC bridge.
int xfer(uint8_t *txBuffer, unsigned txBytes, uint8_t *hdBuffer, unsigned hdBytes, uint8_t *rxBuffer, unsigned rxBytes) final
Executes one protocol transfer over Rogue frame transport.
void runThread()
Run driver initialization and XVC thread.
~Xvc()
Destroys the XVC bridge instance.
void start()
Starts XVC server thread and enables bridge operation.
std::shared_ptr< rogue::Logging > log_
void acceptFrame(std::shared_ptr< rogue::interfaces::stream::Frame > frame)
Receives reply frame from downstream Rogue transport.
void stop()
Stops XVC server thread and drains frame queue.
static void setup_python()
Registers Python bindings for this class.
std::shared_ptr< rogue::protocols::xilinx::Xvc > XvcPtr
const unsigned int kMaxArgs
Maximum supported argument count for XVC command parsing helpers.