hololink::emulation::DataPlane
hololink::emulation::DataPlane
DataPlane is the partially implemented Abstract Base Class with which HSB Emulator applications control data transmission and HSB Host applications establish “connections” and data flow via Bootp enumeration.
The parent instance of any DataPlane implementation will manage Bootp broadcasting. Each implementation must interface with the HSB Emulator’s internal memory model (AddressMemory) to update and manage metadata and any state needed for the metadata or transport layer for the corresponding Transmitter.
The DataPlane lifecycle operations are managed by the HSBEmulator instance it is attached to and therefore DataPlane lifetime must be at least as long as the HSBEmulator instance or at least until the final HSBEmulator::stop() is called.
Constructors
DataPlane
Overload 1
Overload 2
Constructs a DataPlane object with a platform-default per-DataPlane context.
Application code uses this overload; the platform .cpp allocates the LinuxDataPlaneCtxt on the heap (Linux) or claims a slot from the file-scope DATA_PLANE_CTXT[] pool (STM32).
Parameters
A reference to an HSBEmulator instance that the DataPlane will configure itself from.
The IP address of the DataPlane.
The data plane index of the DataPlane.
The sensor index of the DataPlane to associate with the DataPlane. The data_plane_id and sensor_id are used to identify registers needed to compile metadata.
Destructor
~DataPlane
Methods
start
Start the DataPlane by initiating the BootP broadcast.
stop
Stop the DataPlane by stopping the BootP broadcast.
stop_bootp
This is a clear alias for stop().
is_running
Check if the DataPlane is running.
(Bootp is broadcasting)
Returns: True if the DataPlane is running, false otherwise.
send
Send a tensor over the DataPlane
Send a buffer over the DataPlane
Send a tensor over the DataPlane.
This method is synchronous. It will block and metadata will be protected by a mutex until the send is complete.
Returns: The number of bytes sent or < 0 if error occurred.
Parameters
The tensor object reference to send. Supported device types are kDLCPU, kDLCUDA, kDLCUDAHost (host pinned), and kDLCUDAManaged (Unified Memory)
The frame metadata to send. Acts as a buffer flush. If nullptr, the data is by default buffered until the next send command that fills an MTU or a non-nullptr frame_metadata is provided.
get_sensor_id
Get the sensor ID associated with the DataPlane.
Returns: The sensor ID.
packetizer_enabled
Check if the packetizer is enabled.
Returns: True if the packetizer is enabled, false otherwise.
get_start_time
broadcast_bootp
update_metadata
method to update metadata model for the appropriate transmitter subclass can assume that appropriate locks are held while accessing memory registers and the transmitter metadata
init
Initialize the DataPlane by validating the configuration and registers.
This is platform specific and should assume the internal configuration has been set and resources allocated, but no other state