diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ConfigParser.cpp | 4 | ||||
-rw-r--r-- | src/MuxElements.h | 4 | ||||
-rw-r--r-- | src/fig/FIG0_7.cpp | 13 | ||||
-rw-r--r-- | src/fig/FIG0_7.h | 2 | ||||
-rw-r--r-- | src/fig/FIGCarousel.cpp | 6 |
5 files changed, 16 insertions, 13 deletions
diff --git a/src/ConfigParser.cpp b/src/ConfigParser.cpp index 6e50952..8da05ef 100644 --- a/src/ConfigParser.cpp +++ b/src/ConfigParser.cpp @@ -419,8 +419,8 @@ static void parse_general(ptree& pt, etiLog.level(warn) << "ECC is 0!"; } - ensemble->international_table = pt_ensemble.get("international-table", 1); - ensemble->reconfig_counter = pt_ensemble.get("reconfig-counter", 0); + ensemble->international_table = pt_ensemble.get("international-table", ensemble->international_table); + ensemble->reconfig_counter = pt_ensemble.get("reconfig-counter", ensemble->reconfig_counter); string lto_auto = pt_ensemble.get("local-time-offset", ""); if (lto_auto == "auto") { diff --git a/src/MuxElements.h b/src/MuxElements.h index d1f4441..ea7fee5 100644 --- a/src/MuxElements.h +++ b/src/MuxElements.h @@ -291,7 +291,9 @@ class dabEnsemble : public RemoteControllable { // 1 corresponds to the PTy used in RDS // 2 corresponds to program types used in north america int international_table = 1; - int reconfig_counter = 1; + + // Modulo-1024 counter for FIG0/7. Set to -1 to disable FIG0/7 + int reconfig_counter = -1; vec_sp_service services; vec_sp_component components; diff --git a/src/fig/FIG0_7.cpp b/src/fig/FIG0_7.cpp index e6df66b..50a12cf 100644 --- a/src/fig/FIG0_7.cpp +++ b/src/fig/FIG0_7.cpp @@ -43,12 +43,21 @@ struct FIGtype0_7 { uint8_t ReconfigCounter_low:8; } PACKED; -//=========== FIG 0/0 =========== +//=========== FIG 0/7 =========== FillStatus FIG0_7::fill(uint8_t *buf, size_t max_size) { FillStatus fs; + auto ensemble = m_rti->ensemble; + + if (ensemble->reconfig_counter < 0) { + // FIG 0/7 is disabled + fs.complete_fig_transmitted = true; + fs.num_bytes_written = 0; + return fs; + } + FIGtype0_7 *fig0_7; fig0_7 = (FIGtype0_7 *)buf; @@ -59,8 +68,6 @@ FillStatus FIG0_7::fill(uint8_t *buf, size_t max_size) fig0_7->PD = 0; fig0_7->Extension = 7; - auto ensemble = m_rti->ensemble; - fig0_7->ServiceCount = ensemble->services.size(); fig0_7->ReconfigCounter_high = (ensemble->reconfig_counter % 1024) / 256; fig0_7->ReconfigCounter_low = (ensemble->reconfig_counter % 1024) % 256; diff --git a/src/fig/FIG0_7.h b/src/fig/FIG0_7.h index 30de3dc..6e99d08 100644 --- a/src/fig/FIG0_7.h +++ b/src/fig/FIG0_7.h @@ -5,7 +5,7 @@ Copyright (C) 2020 Matthias P. Braendli, matthias.braendli@mpb.li - Mathisd Kuntze, mathias@kuntze.email + Mathias Kuntze, mathias@kuntze.email */ /* This file is part of ODR-DabMux. diff --git a/src/fig/FIGCarousel.cpp b/src/fig/FIGCarousel.cpp index d823bc6..c791364 100644 --- a/src/fig/FIGCarousel.cpp +++ b/src/fig/FIGCarousel.cpp @@ -319,16 +319,10 @@ size_t FIGCarousel::carousel( << std::endl; #endif } - else { - throw std::logic_error("Failed to write FIG0/7"); - } if (status0_7.complete_fig_transmitted) { (*fig0_7)->increase_deadline(); } - else { - throw std::logic_error("FIG0/7 did not complete!"); - } } } |