XvcServer

For conceptual guidance, see Xilinx Protocols.

The class description is shown below:

class XvcServer
[header]

TCP listener for XVC client connections.

XvcServer owns the listening socket and accepts one sub-connection at a time. Each accepted client is serviced via XvcConnection, which performs XVC protocol parsing and delegates JTAG operations to JtagDriver.

Public Functions

XvcServer(uint16_t port, int wakeFd, JtagDriver *drv, unsigned maxMsgSize = 32768)
[header] [impl]

Constructs an XVC TCP server listener.

Company : SLAC National Accelerator Laboratory

Description:

This file is part of the rogue software platform. It is subject to the license terms in the LICENSE.txt file found in the top-level directory of this distribution and at: https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. No part of the rogue software platform, including this file, may be copied, modified, propagated, or distributed except according to the terms contained in the LICENSE.txt file.

Parameters:
  • port – Local TCP port to bind (2542 is the Vivado default; 0 = kernel-assigned).

  • wakeFd – Read end of the Xvc self-pipe used to break out of select() on shutdown.

  • drv – Driver used by accepted connections.

  • maxMsgSize – Maximum protocol message/vector size in bytes.

virtual void run(std::atomic<bool> &threadEn, rogue::LoggingPtr log)
[header] [impl]

Runs accept loop; blocks in select() until accept-ready or wakeFd readable. Loop continues while threadEn is true.

Parameters:
  • threadEn – Atomic run-control flag; loop exits when false.

  • log – Logger used for connection-level diagnostics.

uint32_t getPort() const
[header] [impl]

Returns the TCP port the server is bound to (resolved if port==0 was requested).

virtual ~XvcServer()
[header] [impl]

Closes the listening socket and destroys server instance.