|
rogue
|
Combines individual frames into a batcher v2 super-frame. More...
#include <CombinerV2.h>
Public Member Functions | |
| CombinerV2 () | |
Constructs a CombinerV2 instance. | |
| ~CombinerV2 () | |
| Destroys the combiner. | |
| void | acceptFrame (std::shared_ptr< rogue::interfaces::stream::Frame > frame) |
| Accepts a frame and immediately queues it for batching. | |
| void | sendBatch () |
| Builds and sends a batcher v2 super-frame from all queued frames. | |
| uint32_t | getCount () |
| Returns the number of frames currently queued. | |
Public Member Functions inherited from rogue::interfaces::stream::Master | |
| Master () | |
| Constructs a stream master. | |
| virtual | ~Master () |
| Destroys the stream master. | |
| uint32_t | slaveCount () |
| Returns the number of attached slaves. | |
| void | addSlave (std::shared_ptr< rogue::interfaces::stream::Slave > slave) |
| Attaches a downstream slave. | |
| std::shared_ptr< rogue::interfaces::stream::Frame > | reqFrame (uint32_t size, bool zeroCopyEn) |
| Requests allocation of a new frame from the primary slave. | |
| void | sendFrame (std::shared_ptr< rogue::interfaces::stream::Frame > frame) |
| Sends a frame to all attached slaves. | |
| bool | ensureSingleBuffer (std::shared_ptr< rogue::interfaces::stream::Frame > &frame, bool reqEn) |
| Ensures a frame is represented by a single buffer. | |
| virtual void | stop () |
| Stops frame generation and shuts down associated threads. | |
| void | equalsPy (boost::python::object p) |
Supports == operator usage from Python. | |
| boost::python::object | rshiftPy (boost::python::object p) |
Supports >> operator usage from Python. | |
| void | operator== (std::shared_ptr< rogue::interfaces::stream::Slave > &other) |
Supports == operator usage in C++. | |
| std::shared_ptr< rogue::interfaces::stream::Slave > & | operator>> (std::shared_ptr< rogue::interfaces::stream::Slave > &other) |
| Connects this master to a slave via stream chaining operator. | |
Public Member Functions inherited from rogue::EnableSharedFromThis< rogue::interfaces::stream::Master > | |
| std::shared_ptr< rogue::interfaces::stream::Master > | shared_from_this () |
Returns a shared_ptr<T> for this instance. | |
Public Member Functions inherited from rogue::EnableSharedFromThisBase | |
| virtual | ~EnableSharedFromThisBase () |
| Virtual destructor for polymorphic base usage. | |
Public Member Functions inherited from rogue::interfaces::stream::Slave | |
| Slave () | |
| Constructs a stream slave. | |
| virtual | ~Slave () |
| Destroys the stream slave. | |
| virtual void | stop () |
| Shuts down threads associated with this object. | |
| void | setDebug (uint32_t debug, std::string name) |
| Sets debug message verbosity and logger name. | |
| uint64_t | getFrameCount () |
| Returns frame counter. | |
| uint64_t | getByteCount () |
| Returns byte counter. | |
| bool | ensureSingleBuffer (std::shared_ptr< rogue::interfaces::stream::Frame > &frame, bool reqEn) |
| Ensures frame is backed by a single buffer. | |
| std::shared_ptr< rogue::interfaces::stream::Frame > | reqLocalFrame (uint32_t size, bool zeroCopyEn) |
| Services a local frame allocation request through this object's pool interface. | |
| boost::python::object | lshiftPy (boost::python::object p) |
Supports << operator usage from Python. | |
| std::shared_ptr< rogue::interfaces::stream::Master > & | operator<< (std::shared_ptr< rogue::interfaces::stream::Master > &other) |
| Connects this slave to a master via stream chaining operator. | |
Public Member Functions inherited from rogue::interfaces::stream::Pool | |
| Pool () | |
| Constructs a pool with default allocation behavior enabled. | |
| virtual | ~Pool () |
| Destroys the pool and releases any cached buffer storage. | |
| uint32_t | getAllocBytes () |
| Returns total currently allocated bytes. | |
| uint32_t | getAllocCount () |
| Returns total currently allocated buffer count. | |
| virtual std::shared_ptr< rogue::interfaces::stream::Frame > | acceptReq (uint32_t size, bool zeroCopyEn) |
| Services a frame allocation request from a master. | |
| virtual void | retBuffer (uint8_t *data, uint32_t meta, uint32_t size) |
| Returns buffer data to the allocator. | |
| void | setFixedSize (uint32_t size) |
| Sets fixed-size mode. | |
| uint32_t | getFixedSize () |
| Returns fixed-size allocation setting. | |
| void | setPoolSize (uint32_t size) |
| Sets buffer pool size. | |
| uint32_t | getPoolSize () |
| Returns configured maximum number of cached pool entries. | |
Public Member Functions inherited from rogue::EnableSharedFromThis< rogue::interfaces::stream::Pool > | |
| std::shared_ptr< rogue::interfaces::stream::Pool > | shared_from_this () |
Returns a shared_ptr<T> for this instance. | |
Public Member Functions inherited from rogue::EnableSharedFromThis< rogue::interfaces::stream::Slave > | |
| std::shared_ptr< rogue::interfaces::stream::Slave > | shared_from_this () |
Returns a shared_ptr<T> for this instance. | |
Static Public Member Functions | |
| static void | setup_python () |
| Registers Python bindings for this class. | |
| static std::shared_ptr< rogue::protocols::batcher::CombinerV2 > | create () |
Creates a CombinerV2 instance. | |
Static Public Member Functions inherited from rogue::interfaces::stream::Master | |
| static std::shared_ptr< rogue::interfaces::stream::Master > | create () |
| Creates a stream master. | |
| static void | setup_python () |
| Registers this type with Python bindings. | |
Static Public Member Functions inherited from rogue::interfaces::stream::Slave | |
| static std::shared_ptr< rogue::interfaces::stream::Slave > | create () |
| Creates a new stream slave. | |
| static void | setup_python () |
| Registers this type with Python bindings. | |
Static Public Member Functions inherited from rogue::interfaces::stream::Pool | |
| static void | setup_python () |
| Registers this type with Python bindings. | |
Additional Inherited Members | |
Protected Member Functions inherited from rogue::interfaces::stream::Pool | |
| std::shared_ptr< rogue::interfaces::stream::Buffer > | allocBuffer (uint32_t size, uint32_t *total) |
| Allocate a buffer passed size. | |
| std::shared_ptr< rogue::interfaces::stream::Buffer > | createBuffer (void *data, uint32_t meta, uint32_t size, uint32_t alloc) |
| Creates a Buffer with a pre-allocated data block. | |
| void | decCounter (uint32_t alloc) |
| Decrements allocation counter. | |
Combines individual frames into a batcher v2 super-frame.
Protocol reference: https://confluence.slac.stanford.edu/x/L2VlK
CombinerV2 is the software inverse of SplitterV2. It collects individual Rogue stream frames and packs them into a single batcher v2 super-frame with a 2-byte super-header and 7-byte per-record tails.
Threading model:
acceptFrame() queues frames; sendBatch() builds and emits the super-frame. Definition at line 50 of file CombinerV2.h.
| rogue::protocols::batcher::CombinerV2::CombinerV2 | ( | ) |
| rogue::protocols::batcher::CombinerV2::~CombinerV2 | ( | ) |
|
virtual |
Accepts a frame and immediately queues it for batching.
Accept a frame from master.
| frame | Input frame to be included in the next batch. |
Reimplemented from rogue::interfaces::stream::Slave.
Definition at line 93 of file CombinerV2.cpp.
|
static |
Creates a CombinerV2 instance.
Class creation.
Description : AXI Batcher V2 Combiner (SW Batcher) (https://confluence.slac.stanford.edu/x/L2VlK)
Builds a batcher v2 super-frame from individual frames. This is the software inverse of the SplitterV2 unbatcher.
Super-frame layout (same as FW batcher):
[Super Header (2 bytes)][Record0 Data][Record0 Tail (7 bytes)]...
Super Header: 2 bytes Byte 0: Bits 3:0 = Version = 2 Bits 7:4 = Reserved Byte 1: Bits 15:8 = Sequence # for debug
Frame Tail: 7 bytes Word 0: 4 bytes bits 31:0 = size (payload bytes) Word 1: 3 bytes bits 7:0 = Destination bits 15:8 = First user bits 23:16 = Last user
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
Definition at line 67 of file CombinerV2.cpp.
| uint32_t rogue::protocols::batcher::CombinerV2::getCount | ( | ) |
Returns the number of frames currently queued.
Return queue count.
Definition at line 102 of file CombinerV2.cpp.
| void rogue::protocols::batcher::CombinerV2::sendBatch | ( | ) |
Builds and sends a batcher v2 super-frame from all queued frames.
Build and send the batched super-frame.
If no frames are queued, this is a no-op. After sending, the queue is cleared and the sequence counter is incremented.
Definition at line 108 of file CombinerV2.cpp.
|
static |
Registers Python bindings for this class.
Setup class in python.
Definition at line 73 of file CombinerV2.cpp.