CoreV2
CoreV2 parses Batcher v2 super-frames and exposes parsed record metadata
through Data objects plus header/tail iterators.
For conceptual guidance, see Batcher Protocol.
Protocol reference: https://confluence.slac.stanford.edu/x/L2VlK
CoreV2 objects in C++ are referenced by the following shared pointer typedef:
-
typedef std::shared_ptr<rogue::protocols::batcher::CoreV2> rogue::protocols::batcher::CoreV2Ptr
[header]
The class description is shown below:
-
class CoreV2
[header] Parser for SLAC AXI Batcher v2 super-frames.
Protocol reference: https://confluence.slac.stanford.edu/x/L2VlK
CoreV2parses one incoming batched stream frame into:A fixed-size super-header region.
A list of per-record
Datadescriptors.A list of tail iterators for each record.
This class is the shared parser used by
SplitterV2andInverterV2.SplitterV2uses parsedDatarecords to emit one frame per batch entry.InverterV2uses parsed tail/header locations to rewrite framing in place.
Record accessors (
record(),beginTail(),endTail()) expose records in stream order, even though parsing walks tails from the end of the frame.Threading model:
No internal threads are created.
The object is intended for single-threaded use per instance.
Public Functions
-
CoreV2()
[header] [impl] Constructs a
CoreV2parser.Creator with version constant.
This constructor is a low-level C++ allocation path. Prefer
create()when shared ownership or Python exposure is required.
-
void initSize(uint32_t size)
[header] [impl] Pre-reserves internal record/tail container capacity.
Init size for internal containers.
- Parameters:
size – Expected maximum record count per frame.
-
uint32_t count()
[header] [impl] Returns number of parsed records.
Record count.
- Returns:
Parsed record count.
-
uint32_t headerSize()
[header] [impl] Returns parsed super-header size.
Get header size.
- Returns:
Header size in bytes.
-
rogue::interfaces::stream::FrameIterator beginHeader()
[header] [impl] Returns iterator to beginning of parsed header.
Get beginning of header iterator.
- Returns:
Header-begin iterator.
-
rogue::interfaces::stream::FrameIterator endHeader()
[header] [impl] Returns iterator to end of parsed header.
Get end of header iterator.
- Returns:
Header-end iterator.
-
uint32_t tailSize()
[header] [impl] Returns parsed tail size per record.
Get tail size.
- Returns:
Tail size in bytes.
-
rogue::interfaces::stream::FrameIterator beginTail(uint32_t index)
[header] [impl] Returns iterator to beginning of a parsed record tail.
Get beginning of tail iterator.
- Parameters:
index – Zero-based record index in stream order.
- Returns:
Tail-begin iterator for requested record.
-
rogue::interfaces::stream::FrameIterator endTail(uint32_t index)
[header] [impl] Returns iterator to end of a parsed record tail.
Get end of tail iterator.
- Parameters:
index – Zero-based record index in stream order.
- Returns:
Tail-end iterator for requested record.
-
std::shared_ptr<rogue::protocols::batcher::Data> &record(uint32_t index)
[header] [impl] Returns parsed data record descriptor by index.
Get data.
- Parameters:
index – Zero-based record index in stream order.
- Returns:
Reference to parsed
Datarecord pointer.
-
uint32_t sequence()
[header] [impl] Returns parsed batch sequence number.
Return sequence.
- Returns:
Sequence number from super-header.
Parses a batched frame and populates parser state.
Process a frame.
On success, header/tail metadata and record descriptors are available through the accessor methods. On failure, parser state is reset and
falseis returned.- Parameters:
frame – Input batched frame.
- Returns:
trueif frame is valid and parsed; otherwisefalse.
Public Static Functions
-
static void setup_python()
[header] [impl] Registers Python bindings for this class.
Setup class in python.
-
static std::shared_ptr<rogue::protocols::batcher::CoreV2> create()
[header] [impl] Creates a
CoreV2parser instance.Class creation.
This static factory is the preferred construction path when the object is shared across Rogue graph connections or exposed to Python. It returns
std::shared_ptrownership compatible with Rogue pointer typedefs.Company : SLAC National Accelerator Laboratory
Description : AXI Batcher V2 (https://confluence.slac.stanford.edu/x/L2VlK)
The batcher protocol starts with a super header followed by a number of frames each with a tail to define the boundaries of each frame.
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 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 contained in the LICENSE.txt file.
- Returns:
Shared pointer to the created parser.