summaryrefslogtreecommitdiff
path: root/docs/doxygen
diff options
context:
space:
mode:
authorMarc L <marcll@vt.edu>2017-07-31 19:16:59 -0400
committerMarc L <marcll@vt.edu>2017-07-31 19:16:59 -0400
commite4f0ac65fd785955c15ef222da4c730a658ef41b (patch)
tree1359793766dc5a2ea960d7765da279b7cc2b52a7 /docs/doxygen
parentdd1ea1ff8dca65c512cfdb8ca0dbd4711da3f526 (diff)
doc: proofed sections: metadata, PMT, handling flowgraphs, exploring gnuradio
Diffstat (limited to 'docs/doxygen')
-rw-r--r--docs/doxygen/other/metadata.dox25
-rw-r--r--docs/doxygen/other/operating_fg.dox8
-rw-r--r--docs/doxygen/other/pmt.dox6
3 files changed, 19 insertions, 20 deletions
diff --git a/docs/doxygen/other/metadata.dox b/docs/doxygen/other/metadata.dox
index d64f404e96..b58d2a6aee 100644
--- a/docs/doxygen/other/metadata.dox
+++ b/docs/doxygen/other/metadata.dox
@@ -14,9 +14,8 @@
Metadata files have extra information in the form of headers that
carry metadata about the samples in the file. Raw, binary files carry
no extra information and must be handled delicately. Any changes in
-the system state such as sample rate or if a receiver's frequency are
-not conveyed with the data in the file itself. Header of metadata
-solve this problem.
+the system state such as a receiver's sample rate or frequency are
+not conveyed with the data in the file itself. Headers solve this problem.
We write metadata files using gr::blocks::file_meta_sink and read metadata
files using gr::blocks::file_meta_source.
@@ -35,14 +34,14 @@ information.
- version: (char) version number (usually set to METADATA_VERSION)
- rx_rate: (double) Stream's sample rate
- rx_time: (pmt::pmt_t pair - (uint64_t, double)) Time stamp (format from UHD)
-- size: (int) item size in bytes - reflects vector length if any.
+- size: (int) item size in bytes - reflects vector length if any
- type: (int) data type (enum below)
- cplx: (bool) true if data is complex
- strt: (uint64_t) start of data relative to current header
- bytes: (uint64_t) size of following data segment in bytes
An optional extra section of the header stores information in any
-received tags. The two main tags associated with tags are:
+received tags. The two main tags associated with headers are:
- rx_rate: the sample rate of the stream.
- rx_time: the time stamp of the first item in the segment.
@@ -51,15 +50,15 @@ These tags were inspired by the UHD tag format.
The header gives enough information to process and handle the
data. One cautionary note, though, is that the data type should never
-change within a file. There should be very little need for this, but
-more importantly. GNU Radio blocks can only set the data type of their
+change within a file. There should be very little need for this, because
+GNU Radio blocks can only set the data type of their
IO signatures in the constructor, so changes in the data type
afterward will not be recognized.
-We also have an extra header segment that is option. This can be
+We also have an extra header segment that is optional. This can be
loaded up at the beginning by the user specifying some extra metadata
that should be transmitted along with the data. It also grows whenever
-it sees a stream tag, so the dictionary will contain and key:value
+it sees a stream tag, so the dictionary will contain any key:value
pairs out of tags from the flowgraph.
@@ -114,7 +113,7 @@ Metadata files are created using gr::blocks::file_meta_sink. The
default behavior is to create a single file with inline headers as
metadata. An option can be set to switch to detached header mode.
-Metadata file are read into a flowgraph using
+Metadata files are read into a flowgraph using
gr::blocks::file_meta_source. This source reads a metadata file,
inline by default with a settable option to use detached headers. The
data from the segments is converted into a standard streaming
@@ -132,7 +131,7 @@ dictionary. Headers are created by building a PMT dictionary
serialized into a string to be written to file. The header is always
the same length that is predetermined by the version of the header
(this must be known already). The header will then indicate if there
-is an extra data to be extracted as a separate serialized dictionary.
+is extra data to be extracted as a separate serialized dictionary.
To work with the PMTs for creating and extracting header information,
we use PMT operators. For example, we create a simplified version of
@@ -261,7 +260,7 @@ data type of the PMT value. The key is always a PMT symbol, but the
value can be any other PMT type. There are PMT functions that allow us
to query the PMT to test if it is a particular type. We also have the
ability to do pmt::print on any PMT object to print it to
-screen. Before converting from a PMT to it's natural data type, it is
+screen. Before converting from a PMT to its natural data type, it is
necessary to know the data type.
@@ -327,7 +326,7 @@ vectors of data.
The following shows a simple way of creating extra metadata for a
metadata file. This example is just showing how we can insert a date
-into the metadata to keep track of later. The date in this case is
+into the metadata to keep track of it later. The date in this case is
encoded as a vector of uint16 with [day, month, year].
\code
diff --git a/docs/doxygen/other/operating_fg.dox b/docs/doxygen/other/operating_fg.dox
index c2c66cccd9..62cc56fd4e 100644
--- a/docs/doxygen/other/operating_fg.dox
+++ b/docs/doxygen/other/operating_fg.dox
@@ -22,7 +22,7 @@ between.
A program must at least create a GNU Radio 'top_block', which
represents the top-most structure of the flowgraph. The top blocks
provide the overall control and hold methods such as 'start,' 'stop,'
-and 'wait.'
+and 'wait'.
The general construction of a GNU Radio application is to create a
gr_top_block, instantiate the blocks, connect the blocks together, and
@@ -67,7 +67,7 @@ By default, GNU Radio runs a scheduler that attempts to optimize
throughput. Using a dynamic scheduler, blocks in a flowgraph pass
chunks of items from sources to sinks. The sizes of these chunks will
vary depending on the speed of processing. For each block, the number
-of items is can process is dependent on how much space it has in its
+of items it can process is dependent on how much space it has in its
output buffer(s) and how many items are available on the input
buffer(s).
@@ -153,8 +153,8 @@ latency. Limiting the size of the buffer may decrease performance.
4. The real buffer size is actually based on a minimum granularity of
the system. Typically, this is a page size, which is typically 4096
bytes. This means that any buffer size that is specified with this
-command will get rounded up to the nearest granularity (e.g., page)
-size. When calling max_output_buffer(port) after the flowgraph is
+command will get rounded up to the nearest granularity (e.g., page size).
+When calling max_output_buffer(port) after the flowgraph is
started, you will get how many items were actually allocated in the
buffer, which may be different than what was initially specified.
diff --git a/docs/doxygen/other/pmt.dox b/docs/doxygen/other/pmt.dox
index 932f6c0a83..1bc6cbecd4 100644
--- a/docs/doxygen/other/pmt.dox
+++ b/docs/doxygen/other/pmt.dox
@@ -55,7 +55,7 @@ std::cout << P2 << std::endl;
std::cout << pmt::is_complex(P2) << std::endl;
\endcode
-Two things stand out in both Python and C++: First we can simply print
+Two things stand out in both Python and C++. First, we can simply print
the contents of a PMT. How is this possible? Well, the PMTs have
in-built capability to cast their value to a string (this is not
possible with all types, though). Second, PMTs must obviously know
@@ -85,7 +85,7 @@ The pmt::intern is another way of saying pmt::string_to_symbol.
In Python, we can make use of the dynamic typing, and there's actually a
helper function to do these conversions (C++ also has a helper
-function for converting to PMTs called pmt::mp(), but its less
+function for converting to PMTs called pmt::mp(), but it's less
powerful, and not quite as useful, because types are always strictly
known in C++):
@@ -283,7 +283,7 @@ if(pmt::is_double(pmt_a))
\section pmt_dict Dictionaries
-PMT dictionaries and lists of key:value pairs. They have a
+PMT dictionaries are lists of key:value pairs. They have a
well-defined interface for creating, adding, removing, and accessing
items in the dictionary. Note that every operation that changes the
dictionary both takes a PMT dictionary as an argument and returns a