You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clarification and Proposals for the required MESSAGE port functionality
This is to summarise the required core features and expectations MESSAGE ports within GR 4.0.
Streaming Ports (Syntax: In<T> in;, Out<T> out;): these are already implemented
handle the synchronous transmission of primitive data types (e.g., int, float, std::complex<float>) between Blocks.
developers must implement processOne(...) and processBulk(...) within the Block. The system triggers these functions once the specific input/output port constraints -- typically the available number of input/output sames sample -- are met
streams can assign unique Tags—comprising a pmtv::map_tand sample index — to distinct samples. Notably, a tag with an index of -1 signifies precedence or mandatory processing/forwarding, a feature already in place.
operate asynchronously, facilitating consistent 'message' exchanges between Blocks.
every Block<T> inherently possesses a default MsgIn msgIn; and MsgOut msgOut; Port.
the Graph connect API shall be the same as for the streaming ports.
developers may create a void processMessages(std::span in0, ...) for intercepting, manipulating, and transmitting messages. The work(..) function invokes this function if there are unprocessed messages at any input message ports.
execution of void processMessages(std::span in0, ...) is independent of the streaming ports’ activities or constraints.
all Blocks’ 'msgIn' and 'msgOut' Ports link with the superordinate (Sub)Graph and Scheduler message ports, to allow communication for user settings and error feedback through from the UI->scheduler->Graph->...->Block system layers.
messages on 'msgIn' that have compatible block identifiers (uniquID of the block & Block field specifications) automatically initiate changes and potentially invoke the user-defined settingsChanged(...) function, akin to Tag-induced settings procedures.
exception -- which should be the exception -- in user code should be intercepted on the Block<T>::work(...) level, converted into messages, and emitted on the msgOut port.
Clarification and Proposals for the required MESSAGE port functionality
This is to summarise the required core features and expectations MESSAGE ports within GR 4.0.
Streaming Ports (Syntax:
In<T> in;
,Out<T> out;
): these are already implementedint
,float
,std::complex<float>
) between Blocks.processOne(...)
andprocessBulk(...)
within the Block. The system triggers these functions once the specific input/output port constraints -- typically the available number of input/output sames sample -- are metTag
s—comprising apmtv::map_t
and sample index — to distinct samples. Notably, a tag with an index of-1
signifies precedence or mandatory processing/forwarding, a feature already in place.Message Ports (Syntax:
MsgIn msgIn;
,MsgOut msgOut;
):Block<T>
inherently possesses a defaultMsgIn msgIn;
andMsgOut msgOut;
Port.void processMessages(std::span in0, ...)
for intercepting, manipulating, and transmitting messages. Thework(..)
function invokes this function if there are unprocessed messages at any input message ports.void processMessages(std::span in0, ...)
is independent of the streaming ports’ activities or constraints.settingsChanged(...)
function, akin toTag
-induced settings procedures.Block<T>::work(...)
level, converted into messages, and emitted on themsgOut
port.Proposed Standard Message Format (DRAFT):
The text was updated successfully, but these errors were encountered: