summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--configure.ac2
-rw-r--r--doc/TIMESTAMPS.rst30
-rw-r--r--src/DabMux.cpp2
4 files changed, 44 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 452e353..9909265 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,18 @@
This file contains information about the changes done to
ODR-DabMux in this repository
+2019-06-07: Matthias P. Braendli <matthias@mpb.li>
+ (v2.4.0):
+ Add timestamp offset setting, and fix bug due to UTCO offset
+ not being properly applied. See doc/TIMESTAMPS.rst for more
+ details.
+ Implement FIG2 labels.
+ Fix bug for DAB MP2 in EEP_A.
+ Fix FIG0/24 for DAB+ services.
+ ODR-ZMQ2EDI: fix MNSC endianness swap bug.
+ Pull some RC changes from ODR-DabMod.
+ Implement EDI-over-TCP output.
+
2019-01-07: Matthias P. Braendli <matthias@mpb.li>
(v2.3.1):
Happy new year!
diff --git a/configure.ac b/configure.ac
index 21d7622..8c7c3b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,7 +19,7 @@
# along with ODR-DabMux. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ(2.69)
-AC_INIT([ODR-DabMux], [2.3.1], [matthias.braendli@mpb.li])
+AC_INIT([ODR-DabMux], [2.4.0], [matthias.braendli@mpb.li])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_SYSTEM
diff --git a/doc/TIMESTAMPS.rst b/doc/TIMESTAMPS.rst
new file mode 100644
index 0000000..458f462
--- /dev/null
+++ b/doc/TIMESTAMPS.rst
@@ -0,0 +1,30 @@
+Some knowledge accumulated about timestamping
+=============================================
+
+The meaning of the timestamps changed between v2.3.1 and v3.0.0, this document gives some guidance about the interaction between different settings.
+
+The following table tries to summarise the differences.
+
++-----------------------------+----------------------------------------------+-------------------------------------+-----------------------------------------------+
+| ODR-DabMux version | Meaning of timestamp inside EDI | ODR-ZMQ2EDI wait time w | Offset that should be set in the mod |
++=============================+==============================================+=====================================+===============================================+
+| Up to and including v2.3.1 | t_frame = t_mux (No offset in mux available) | positive, meaning delay after t_mux | Something larger than w + mod processing time |
+| Later than v2.3.1 | t_frame = t_tx = t_mux + tist_offset | negative, meaning delay before t_tx | Something larger than mod processing time |
++-----------------------------+----------------------------------------------+-------------------------------------+-----------------------------------------------+
+
+For historical reasons, ODR-DabMod decodes absolute timestamp from MNSC, not from “EDI seconds”.
+The edilib tool decodes both EDI timestamp and MNSC, and can be used to verify both are identical.
+
+Issues in ODR-DabMux v2.3.1
+---------------------------
+
+Running ODR-DabMux against the absolute timestamp firmware has uncovered a few issues:
+
+ * At startup, the UTCO was not properly applied to the EDI seconds. This offset was 5 seconds (TAI-UTC offset - 32s, see EDI spec);
+ * odr-zmq2edi did not compensate for UTCO, hiding the above issue;
+ * ODR-DabMux needs a configurable offset;
+ * (minor) MNSC and EDI timestamps did not use the same internal representation, making it difficult to prove that they encode the same value;
+ * (minor) odr-zmq2edi swapped endianness when regenerating EDI from ETI (minor because only ODR-DabMod considers MNSC, and usually isn't used with EDI);
+
+**Important** Do not combine odr-zmq2edi with odr-dabmux of a different version!
+
diff --git a/src/DabMux.cpp b/src/DabMux.cpp
index e726fd3..578fc63 100644
--- a/src/DabMux.cpp
+++ b/src/DabMux.cpp
@@ -292,7 +292,7 @@ int main(int argc, char *argv[])
if (outputuid == "edi") {
ptree pt_edi = pt_outputs.get_child("edi");
for (auto pt_edi_dest : pt_edi.get_child("destinations")) {
- const auto proto = pt_edi_dest.second.get<string>("protocol");
+ const auto proto = pt_edi_dest.second.get<string>("protocol", "udp");
if (proto == "udp") {
auto dest = make_shared<edi::udp_destination_t>();
dest->dest_addr = pt_edi_dest.second.get<string>("destination");