17#ifndef __ROGUE_PROTOCOLS_XILINX_XVC_H__
18#define __ROGUE_PROTOCOLS_XILINX_XVC_H__
87 std::unique_ptr<rogue::protocols::xilinx::XvcServer>
server_;
106 static std::shared_ptr<rogue::protocols::xilinx::Xvc>
create(uint16_t port);
120 explicit Xvc(uint16_t port);
143 void acceptFrame(std::shared_ptr<rogue::interfaces::stream::Frame> frame);
170 int xfer(uint8_t* txBuffer,
175 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.
std::unique_ptr< rogue::protocols::xilinx::XvcServer > server_
rogue::Queue< std::shared_ptr< rogue::interfaces::stream::Frame > > queue_
uint64_t getMaxVectorSize() final
Returns maximum vector size supported by this XVC bridge.
std::atomic< bool > threadEn_
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.
std::shared_ptr< rogue::Logging > xvcLog_
void start()
Starts XVC server thread and enables bridge operation.
std::unique_ptr< std::thread > thread_
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.
std::atomic< bool > started_
std::atomic< uint32_t > boundPort_
uint32_t getPort() const
Returns the TCP port the XVC server is bound to.
static void setup_python()
Registers Python bindings for this class.
std::shared_ptr< rogue::protocols::xilinx::Xvc > XvcPtr