17#ifndef __ROGUE_INTERFACES_STREAM_FRAME_H__
18#define __ROGUE_INTERFACES_STREAM_FRAME_H__
31 #include <boost/python.hpp>
70 std::vector<std::shared_ptr<rogue::interfaces::stream::Buffer> > buffers_;
93 typedef std::vector<std::shared_ptr<rogue::interfaces::stream::Buffer> >::iterator
BufferIterator;
109 static std::shared_ptr<rogue::interfaces::stream::Frame>
create();
138 std::shared_ptr<rogue::interfaces::stream::FrameLock>
lock();
152 std::vector<std::shared_ptr<rogue::interfaces::stream::Buffer> >::iterator
appendFrame(
153 std::shared_ptr<rogue::interfaces::stream::Frame> frame);
165 std::vector<std::shared_ptr<rogue::interfaces::stream::Buffer> >::iterator
appendBuffer(
166 std::shared_ptr<rogue::interfaces::stream::Buffer> buff);
177 std::vector<std::shared_ptr<rogue::interfaces::stream::Buffer> >::iterator
beginBuffer();
188 std::vector<std::shared_ptr<rogue::interfaces::stream::Buffer> >::iterator
endBuffer();
491 void readPy(boost::python::object p, uint32_t offset);
503 boost::python::object
getBytearrayPy(uint32_t offset, uint32_t count);
524 void writePy(boost::python::object p, uint32_t offset);
533 boost::python::object
getNumpy(uint32_t offset, uint32_t count);
541 void putNumpy(boost::python::object np, uint32_t offset);
549typedef std::shared_ptr<rogue::interfaces::stream::Frame>
FramePtr;
Typed shared-from-this helper for Rogue classes.
Stream frame buffer container.
Random-access byte iterator across a Frame payload.
Scoped lock wrapper for stream frames.
Container for one stream frame payload and metadata.
std::shared_ptr< rogue::interfaces::stream::FrameLock > lock()
Locks the frame and returns a scoped lock object.
void setSizeDirty()
Set size values dirty.
void writePy(boost::python::object p, uint32_t offset)
Writes bytes from a Python bytearray/buffer into the frame.
void setError(uint8_t error)
Sets frame error status value.
void setLastUser(uint8_t fuser)
Sets the upper 8-bit user field in flags (SSI/Axi-Stream).
rogue::interfaces::stream::FrameIterator beginRead()
Returns legacy read-begin iterator.
rogue::interfaces::stream::FrameIterator endWrite()
Returns legacy write-end iterator.
boost::python::object getBytearrayPy(uint32_t offset, uint32_t count)
Reads frame bytes into a newly allocated Python bytearray.
Frame()
Constructs an empty frame.
rogue::interfaces::stream::FrameIterator beginWrite()
Returns legacy write-begin iterator.
std::vector< std::shared_ptr< rogue::interfaces::stream::Buffer > >::iterator BufferIterator
Iterator alias for the internal buffer list.
uint8_t getChannel()
Returns frame channel value.
uint32_t getPayload()
Returns current payload size in bytes.
uint32_t bufferCount()
Returns number of underlying buffers in the frame.
void setFlags(uint16_t flags)
Sets 16-bit frame flags field.
uint8_t getError()
Returns frame error status value.
std::vector< std::shared_ptr< rogue::interfaces::stream::Buffer > >::iterator appendBuffer(std::shared_ptr< rogue::interfaces::stream::Buffer > buff)
Appends one buffer to the end of the frame.
static void setup_python()
Registers Python bindings for this class.
uint32_t getAvailable()
Returns remaining available payload space in bytes.
uint8_t getLastUser()
Returns the upper 8-bit user field from flags (SSI/Axi-Stream).
void putNumpy(boost::python::object np, uint32_t offset)
Writes NumPy array data into the frame payload.
static std::shared_ptr< rogue::interfaces::stream::Frame > create()
Creates an empty frame.
rogue::interfaces::stream::FrameIterator endRead()
Returns legacy read-end iterator.
std::vector< std::shared_ptr< rogue::interfaces::stream::Buffer > >::iterator beginBuffer()
Returns iterator to first underlying buffer.
void setPayloadEmpty()
Sets the frame payload size to zero bytes.
rogue::interfaces::stream::FrameIterator begin()
Returns begin iterator over frame payload.
std::vector< std::shared_ptr< rogue::interfaces::stream::Buffer > >::iterator appendFrame(std::shared_ptr< rogue::interfaces::stream::Frame > frame)
Appends another frame's buffers to the end of this frame.
void setPayload(uint32_t size)
Sets payload size in bytes.
void setPayloadFull()
Sets payload size to full available frame capacity.
void clear()
Removes all buffers from the frame.
rogue::interfaces::stream::FrameIterator end()
Returns end iterator over frame payload.
bool isEmpty()
Returns whether the frame contains no buffers.
void adjustPayload(int32_t value)
Adjusts payload size by a signed delta.
void minPayload(uint32_t size)
Expands payload size to at least the passed value.
std::vector< std::shared_ptr< rogue::interfaces::stream::Buffer > >::iterator endBuffer()
Returns end iterator for underlying buffer list.
uint8_t getFirstUser()
Returns the lower 8-bit user field from flags (SSI/Axi-Stream).
~Frame()
Destroys the frame instance.
void setFirstUser(uint8_t fuser)
Sets the lower 8-bit user field in flags (SSI/Axi-Stream).
uint32_t getSize()
Returns total raw frame capacity in bytes.
void setChannel(uint8_t channel)
Sets frame channel value.
boost::python::object getNumpy(uint32_t offset, uint32_t count)
Reads frame data and returns it as a NumPy uint8 array.
void debug()
Prints debug information for this frame.
uint16_t getFlags()
Returns 16-bit frame flags field.
void readPy(boost::python::object p, uint32_t offset)
Reads frame bytes into a passed Python bytearray/buffer.
boost::python::object getMemoryviewPy()
Returns a Python memoryview of frame payload data.
std::shared_ptr< rogue::interfaces::stream::Frame > FramePtr
Shared pointer alias for Frame.