summaryrefslogtreecommitdiffstats
path: root/src/fig
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2015-08-15 11:53:55 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2015-08-15 11:53:55 +0200
commit55a66f6408042abfd102f92fd0072a000d8e0235 (patch)
tree12269221fd70e6a2a33a9e68aeecbbfb9fed1014 /src/fig
parent3dab3da3f669e1f2c70fd81c13f67c9c5c77278a (diff)
downloaddabmux-55a66f6408042abfd102f92fd0072a000d8e0235.tar.gz
dabmux-55a66f6408042abfd102f92fd0072a000d8e0235.tar.bz2
dabmux-55a66f6408042abfd102f92fd0072a000d8e0235.zip
Add cluster handling for announcements
Diffstat (limited to 'src/fig')
-rw-r--r--src/fig/FIG0.cpp9
-rw-r--r--src/fig/FIG0.h17
2 files changed, 22 insertions, 4 deletions
diff --git a/src/fig/FIG0.cpp b/src/fig/FIG0.cpp
index 7cb3dde..9f89109 100644
--- a/src/fig/FIG0.cpp
+++ b/src/fig/FIG0.cpp
@@ -953,8 +953,7 @@ FillStatus FIG0_18::fill(uint8_t *buf, size_t max_size)
continue;
}
- // TODO support more than one cluster
- const int numclusters = 1;
+ const ssize_t numclusters = (*service)->clusters.size();
if (remaining < (int)sizeof(FIGtype0_18) + numclusters) {
break;
@@ -982,8 +981,10 @@ FillStatus FIG0_18::fill(uint8_t *buf, size_t max_size)
programme->Rfa = 0;
programme->NumClusters = numclusters;
buf += sizeof(FIGtype0_18);
- buf[0] = 0x1; // TODO support not only cluster 1
- buf += numclusters;
+
+ for (uint8_t cluster : (*service)->clusters) {
+ *(buf++) = cluster;
+ }
fig0->Length += sizeof(FIGtype0_18) + numclusters;
remaining -= sizeof(FIGtype0_18) + numclusters;
diff --git a/src/fig/FIG0.h b/src/fig/FIG0.h
index 0c11ced..9015b00 100644
--- a/src/fig/FIG0.h
+++ b/src/fig/FIG0.h
@@ -214,6 +214,23 @@ class FIG0_18 : public IFIG
std::vector<std::shared_ptr<DabService> >::iterator service;
};
+// FIG type 0/19
+class FIG0_19 : public IFIG
+{
+ public:
+ FIG0_19(FIGRuntimeInformation* rti);
+ virtual FillStatus fill(uint8_t *buf, size_t max_size);
+ virtual FIG_rate repetition_rate(void) { return FIG_rate::A; }
+
+ virtual const int figtype(void) const { return 0; }
+ virtual const int figextension(void) const { return 19; }
+
+ private:
+ FIGRuntimeInformation *m_rti;
+ bool m_initialised;
+ std::vector<std::shared_ptr<DabService> >::iterator service;
+};
+
} // namespace FIC
#endif // __FIG0_H_