aboutsummaryrefslogtreecommitdiffstats
path: root/src/fig/FIG0_24.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2025-10-06 17:35:24 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2025-10-06 17:35:24 +0200
commit56fa3ca3db83627dbde9bd3a79da897c5a1cccb1 (patch)
tree04e6c361b99962683500c9db12a568309c3d3b6f /src/fig/FIG0_24.cpp
parentb6b840f6072e950f2ded719ae51badfba7566fa8 (diff)
downloaddabmux-56fa3ca3db83627dbde9bd3a79da897c5a1cccb1.tar.gz
dabmux-56fa3ca3db83627dbde9bd3a79da897c5a1cccb1.tar.bz2
dabmux-56fa3ca3db83627dbde9bd3a79da897c5a1cccb1.zip
Add services other ensembles to linking hot-reloadnext
Diffstat (limited to 'src/fig/FIG0_24.cpp')
-rw-r--r--src/fig/FIG0_24.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/fig/FIG0_24.cpp b/src/fig/FIG0_24.cpp
index c48d8de..c254e63 100644
--- a/src/fig/FIG0_24.cpp
+++ b/src/fig/FIG0_24.cpp
@@ -73,21 +73,22 @@ FillStatus FIG0_24::fill(uint8_t *buf, size_t max_size)
" ********************************";
if (not m_initialised) {
- serviceFIG0_24 = ensemble->service_other_ensemble.begin();
+ m_services = ensemble->get_service_other_ensemble();
+ m_services_it = m_services.begin();
m_initialised = true;
}
- const auto last_service = ensemble->service_other_ensemble.end();
+ const auto last_service = m_services.end();
bool last_oe = false;
// Rotate through the subchannels until there is no more
// space
- for (; serviceFIG0_24 != last_service; ++serviceFIG0_24) {
+ for (; m_services_it != last_service; ++m_services_it) {
shared_ptr<DabService> service;
for (const auto& local_service : ensemble->services) {
- if (local_service->id == serviceFIG0_24->service_id) {
+ if (local_service->id == m_services_it->service_id) {
service = local_service;
break;
}
@@ -105,7 +106,7 @@ FillStatus FIG0_24::fill(uint8_t *buf, size_t max_size)
etiLog.log(FIG0_24_TRACE, "FIG0_24::fill loop OE=%d SId=%04x %s/%s",
oe,
- serviceFIG0_24->service_id,
+ m_services_it->service_id,
m_inserting_audio_not_data ? "AUDIO" : "DATA",
type == subchannel_type_t::DABAudio ? "Audio" :
type == subchannel_type_t::Packet ? "Packet" :
@@ -117,7 +118,7 @@ FillStatus FIG0_24::fill(uint8_t *buf, size_t max_size)
const ssize_t required_size =
(isProgramme ? 2 : 4) + 1 +
- serviceFIG0_24->other_ensembles.size() * 2;
+ m_services_it->other_ensembles.size() * 2;
if (fig0 == nullptr) {
@@ -132,7 +133,7 @@ FillStatus FIG0_24::fill(uint8_t *buf, size_t max_size)
fig0->FIGtypeNumber = 0;
fig0->Length = 1;
// CN according to ETSI TS 103 176, Clause 5.3.4.1
- bool isFirst = serviceFIG0_24 == ensemble->service_other_ensemble.begin();
+ bool isFirst = m_services_it == m_services.begin();
fig0->CN = (isFirst ? 0 : 1);
fig0->OE = oe;
fig0->PD = isProgramme ? 0 : 1;
@@ -149,33 +150,33 @@ FillStatus FIG0_24::fill(uint8_t *buf, size_t max_size)
if (isProgramme) {
auto fig0_24_audioservice = (FIGtype0_24_audioservice*)buf;
- fig0_24_audioservice->SId = htons(serviceFIG0_24->service_id);
+ fig0_24_audioservice->SId = htons(m_services_it->service_id);
fig0_24_audioservice->rfa = 0;
fig0_24_audioservice->CAId = 0;
- fig0_24_audioservice->Length = serviceFIG0_24->other_ensembles.size();
+ fig0_24_audioservice->Length = m_services_it->other_ensembles.size();
buf += 3;
fig0->Length += 3;
remaining -= 3;
etiLog.log(FIG0_24_TRACE, "FIG0_24::fill audio SId=%04x",
- serviceFIG0_24->service_id);
+ m_services_it->service_id);
}
else {
auto fig0_24_dataservice = (FIGtype0_24_dataservice*)buf;
- fig0_24_dataservice->SId = htonl(serviceFIG0_24->service_id);
+ fig0_24_dataservice->SId = htonl(m_services_it->service_id);
fig0_24_dataservice->rfa = 0;
fig0_24_dataservice->CAId = 0;
- fig0_24_dataservice->Length = serviceFIG0_24->other_ensembles.size();
+ fig0_24_dataservice->Length = m_services_it->other_ensembles.size();
buf += 4;
fig0->Length += 4;
remaining -= 4;
etiLog.log(FIG0_24_TRACE, "FIG0_24::fill data SId=%04x",
- serviceFIG0_24->service_id);
+ m_services_it->service_id);
}
- for (const uint16_t oe : serviceFIG0_24->other_ensembles) {
+ for (const uint16_t oe : m_services_it->other_ensembles) {
buf[0] = oe >> 8;
buf[1] = oe & 0xFF;
@@ -185,7 +186,7 @@ FillStatus FIG0_24::fill(uint8_t *buf, size_t max_size)
}
}
- if (serviceFIG0_24 == last_service) {
+ if (m_services_it == last_service) {
etiLog.log(FIG0_24_TRACE, "FIG0_24::loop reached last");
fs.complete_fig_transmitted = true;
m_initialised = false;