aboutsummaryrefslogtreecommitdiffstats
path: root/src/MuxElements.cpp
diff options
context:
space:
mode:
authorshunt010 <sam@maxxwave.co.uk>2025-12-31 13:19:28 +0000
committerGitHub <noreply@github.com>2025-12-31 13:19:28 +0000
commitf8eaf51f61cdae65e90675920e427d23b8da7027 (patch)
treee70c92214ac05cf0a2001e0481e289343c094d65 /src/MuxElements.cpp
parentf8b5402727b7e94aecbfb663a601577f97bae5b9 (diff)
parenta5f80a99e0dad51c45e8511347f27d816ae92e20 (diff)
downloaddabmux-f8eaf51f61cdae65e90675920e427d23b8da7027.tar.gz
dabmux-f8eaf51f61cdae65e90675920e427d23b8da7027.tar.bz2
dabmux-f8eaf51f61cdae65e90675920e427d23b8da7027.zip
Merge pull request #1 from Opendigitalradio/master
Bring up to date
Diffstat (limited to 'src/MuxElements.cpp')
-rw-r--r--src/MuxElements.cpp71
1 files changed, 67 insertions, 4 deletions
diff --git a/src/MuxElements.cpp b/src/MuxElements.cpp
index 71ff270..1f02a6d 100644
--- a/src/MuxElements.cpp
+++ b/src/MuxElements.cpp
@@ -3,7 +3,7 @@
2011, 2012 Her Majesty the Queen in Right of Canada (Communications
Research Center Canada)
- Copyright (C) 2020
+ Copyright (C) 2024
Matthias P. Braendli, matthias.braendli@mpb.li
http://www.opendigitalradio.org
@@ -86,7 +86,7 @@ bool AnnouncementCluster::is_active()
if (*m_deferred_start_time <= now) {
m_active = true;
- m_deferred_start_time = boost::none;
+ m_deferred_start_time.reset();
}
}
@@ -96,7 +96,7 @@ bool AnnouncementCluster::is_active()
if (*m_deferred_stop_time <= now) {
m_active = false;
- m_deferred_stop_time = boost::none;
+ m_deferred_stop_time.reset();
}
}
@@ -180,6 +180,34 @@ const string AnnouncementCluster::get_parameter(const string& parameter) const
return ss.str();
}
+const json::map_t AnnouncementCluster::get_all_values() const
+{
+ json::map_t map;
+
+ lock_guard<mutex> lock(m_active_mutex);
+ map["active"].v = m_active;
+
+ using namespace std::chrono;
+
+ if (m_deferred_start_time) {
+ const auto diff = *m_deferred_start_time - steady_clock::now();
+ map["start_in"].v = duration_cast<milliseconds>(diff).count();
+ }
+ else {
+ map["start_in"].v = nullopt;
+ }
+
+ if (m_deferred_stop_time) {
+ const auto diff = *m_deferred_stop_time - steady_clock::now();
+ map["stop_in"].v = duration_cast<milliseconds>(diff).count();
+ }
+ else {
+ map["stop_in"].v = nullopt;
+ }
+
+ return map;
+}
+
int DabLabel::setLabel(const std::string& label)
{
@@ -512,6 +540,16 @@ const string DabComponent::get_parameter(const string& parameter) const
}
+const json::map_t DabComponent::get_all_values() const
+{
+ json::map_t map;
+ // It's cleaner to have it separate in JSON, but we
+ // need the comma separated variant for setting
+ map["label"].v = label.long_label();
+ map["shortlabel"].v = label.short_label();
+ return map;
+}
+
subchannel_type_t DabService::getType(
const std::shared_ptr<dabEnsemble> ensemble) const
{
@@ -638,6 +676,16 @@ const string DabService::get_parameter(const string& parameter) const
return ss.str();
}
+const json::map_t DabService::get_all_values() const
+{
+ json::map_t map;
+ map["label"].v = label.long_label();
+ map["shortlabel"].v = label.short_label();
+ map["pty"].v = (int)pty_settings.pty;
+ map["ptysd"].v = (pty_settings.dynamic_no_static ? "dynamic" : "static");
+ return map;
+}
+
void dabEnsemble::set_parameter(const string& parameter, const string& value)
{
if (parameter == "localtimeoffset") {
@@ -687,7 +735,22 @@ const string dabEnsemble::get_parameter(const string& parameter) const
return ss.str();
}
-bool dabEnsemble::validate_linkage_sets()
+const json::map_t dabEnsemble::get_all_values() const
+{
+ json::map_t map;
+ map["localtimeoffset_auto"].v = lto_auto;
+ map["localtimeoffset"].v = lto;
+ return map;
+}
+
+bool dabEnsemble::validate_linkage_sets() const
+{
+ return validate_linkage_sets(services, linkagesets);
+}
+
+bool dabEnsemble::validate_linkage_sets(
+ const vec_sp_service& services,
+ std::vector<std::shared_ptr<LinkageSet> > linkagesets)
{
for (const auto& ls : linkagesets) {
const std::string keyserviceuid = ls->keyservice;