commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 01/02: docs: Added section on message comma


From: git
Subject: [Commit-gnuradio] [gnuradio] 01/02: docs: Added section on message commands
Date: Wed, 29 Apr 2015 22:55:10 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch maint
in repository gnuradio.

commit 72e0c237e06e5214eb2706bd4ac732cef068161c
Author: Martin Braun <address@hidden>
Date:   Wed Apr 29 14:50:38 2015 -0700

    docs: Added section on message commands
---
 docs/doxygen/other/msg_passing.dox | 40 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/docs/doxygen/other/msg_passing.dox 
b/docs/doxygen/other/msg_passing.dox
index df116c2..494ca03 100644
--- a/docs/doxygen/other/msg_passing.dox
+++ b/docs/doxygen/other/msg_passing.dox
@@ -311,4 +311,44 @@ file qa_pdu.py.
 There are some examples of using the message passing infrastructure
 through GRC in gr-blocks/examples/msg_passing.
 
+\section msg_passing_commands Using messages as commands
+
+Messages can be used to send commands to blocks. Examples for this include:
+
+- gr::qtgui::freq_sink_c: The scaling of the frequency axis can be changed by 
messages
+- gr::uhd::usrp_source and gr::uhd::usrp_sink: Many transceiver-related 
settings can
+  be manipulated through command messages, such as frequency, gain and LO 
offset
+- gr::digital::header_payload_demux, which receives an acknowledgement from a 
header parser
+  block on how many payload items there are to process
+
+There is no special PMT type to encode commands, however, it is strongly 
recommended
+to use one of the following formats:
+
+- pmt::cons(KEY, VALUE): This format is useful for commands that take a single 
value.
+  Think of KEY and VALUE as the argument name and value, respectively. For the 
case of
+  the QT GUI Frequency Sink, KEY would be "freq" and VALUE would be the new 
center frequency
+  in Hz.
+- pmt::dict((KEY1: VALUE1), (KEY2: VALUE2), ...): This is basically the same 
as the
+  previous format, but you can provide multiple key/value pairs. This is 
particularly
+  useful when a single command takes multiple arguments which can't be broken 
into
+  multiple command messages (e.g., the USRP blocks might have both a timestamp 
and a
+  center frequency in a command message, which are closely associated).
+
+In both cases, all KEYs should be pmt::symbols (i.e. strings). VALUEs can be
+whatever the block requires.
+
+It might be tempting to deviate from this format, e.g. the QT Frequency sink 
could
+simply take a float value as a command message, and it would still work fine.
+However, there are some very good reasons to stick to this format:
+
+- Interoperability: The more people use the standard format, the more likely it
+  is that blocks from different sources can work together
+- Inspectability: A message debug block will display more useful information 
about
+  a message if its containing both a value and a key
+- Intuition: This format is pretty versatile and unlikely to create situations
+  where it is not sufficient (especially considering that values are PMTs 
themselves).
+  As a counterexample, using positional arguments (something like "the first 
argument
+  is the frequency, the second the gain") is easily forgotten, or changed in 
one place
+  and not another, etc.
+
 */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]