summaryrefslogtreecommitdiffstats
path: root/src/fig/FIG0.h
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2016-10-02 14:40:19 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2016-10-02 14:40:19 +0200
commitc21a6828183cdcc08533a83530156e5758aca534 (patch)
tree47a5fab506ad522bb78b50ad87c2ee45179d87cd /src/fig/FIG0.h
parentb78139a2fe6ee76bcb85b240733bf803c5430286 (diff)
parent369874e1c38680d27f187aa0297b0ce00b3f9fa0 (diff)
downloaddabmux-c21a6828183cdcc08533a83530156e5758aca534.tar.gz
dabmux-c21a6828183cdcc08533a83530156e5758aca534.tar.bz2
dabmux-c21a6828183cdcc08533a83530156e5758aca534.zip
Merge branch 'next' into servicelinking
And move FIG0/6 to new files
Diffstat (limited to 'src/fig/FIG0.h')
-rw-r--r--src/fig/FIG0.h319
1 files changed, 14 insertions, 305 deletions
diff --git a/src/fig/FIG0.h b/src/fig/FIG0.h
index 0109219..446e1ac 100644
--- a/src/fig/FIG0.h
+++ b/src/fig/FIG0.h
@@ -25,309 +25,18 @@
#pragma once
-#include <cstdint>
-#include <map>
-#include <set>
-#include <vector>
-#include <list>
-
-#include "fig/FIG.h"
-
-namespace FIC {
-
-// FIG type 0/0, Multiplex Configuration Info (MCI),
-// Ensemble information
-class FIG0_0 : public IFIG
-{
- public:
- FIG0_0(FIGRuntimeInformation* rti) :
- m_rti(rti) {}
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::FIG0_0; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 0; }
-
- private:
- FIGRuntimeInformation *m_rti;
-};
-
-// FIG type 0/1, MIC, Sub-Channel Organization,
-// one instance of the part for each subchannel
-class FIG0_1 : public IFIG
-{
- public:
- FIG0_1(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 1; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- std::vector<DabSubchannel*> subchannels;
- std::vector<DabSubchannel*>::iterator subchannelFIG0_1;
-
- uint8_t m_watermarkData[128];
- size_t m_watermarkSize;
- size_t m_watermarkPos;
-};
-
-// FIG type 0/2, MCI, Service Organization, one instance of
-// FIGtype0_2_Service for each subchannel
-class FIG0_2 : public IFIG
-{
- public:
- FIG0_2(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 2; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- bool m_inserting_audio_not_data;
- std::vector<std::shared_ptr<DabService> > m_audio_services;
- std::vector<std::shared_ptr<DabService> > m_data_services;
- std::vector<std::shared_ptr<DabService> >::iterator serviceFIG0_2;
-};
-
-// FIG type 0/3
-// The Extension 3 of FIG type 0 (FIG 0/3) gives additional information about
-// the service component description in packet mode.
-class FIG0_3 : public IFIG
-{
- public:
- FIG0_3(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 3; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- std::vector<DabComponent*>::iterator componentFIG0_3;
-};
-
-// FIG type 0/5
-// The service component language feature is used to signal a language
-// associated with a service component; the spoken language of an audio
-// component or the language of the content of a data component. This
-// information can be used for user selection or display. The feature is
-// encoded in Extension 5 of FIG type 0 (FIG 0/5).
-class FIG0_5 : public IFIG
-{
- public:
- FIG0_5(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 5; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- std::vector<DabComponent*>::iterator componentFIG0_5;
-};
-
-// FIG type 0/6
-// Service Linking
-//
-// This feature shall use the SIV signalling (see clause 5.2.2.1). The database
-// shall be divided by use of a database key. Changes to the database shall be
-// signalled using the CEI. The first service in the list of services in each
-// part of the database, as divided by the database key, shall be a service
-// carried in the ensemble. This service is called the key service.
-//
-// The database key comprises the OE and P/D flags and the S/H, ILS, and LSN
-// fields.
-class FIG0_6 : public IFIG
-{
- public:
- FIG0_6(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::E; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 6; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- std::list<std::shared_ptr<LinkageSet> >::iterator linkageSetFIG0_6;
-};
-
-// FIG0/6 needs a change indicator, which is a short-form FIG (i.e. without the list)
-// and with C/N 1. Since this has another rate, it's implemented in another class.
-//
-// This is signalled once per second for a period of five seconds
-// (TS 103 176 5.2.4.3).
-class FIG0_6_CEI : public IFIG
-{
- public:
- FIG0_6_CEI(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 6; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- std::list<std::shared_ptr<LinkageSet> >::iterator linkageSetFIG0_6;
-};
-
-// FIG type 0/8
-// The Extension 8 of FIG type 0 (FIG 0/8) provides information to link
-// together the service component description that is valid within the ensemble
-// to a service component description that is valid in other ensembles
-class FIG0_8 : public IFIG
-{
- public:
- FIG0_8(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 8; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- bool m_transmit_programme;
- std::vector<DabComponent*>::iterator componentFIG0_8;
-};
-
-// FIG type 0/9
-// The Country, LTO and International table feature defines the local time
-// offset, the International Table and the Extended Country Code (ECC)
-class FIG0_9 : public IFIG
-{
- public:
- FIG0_9(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 9; }
-
- private:
- FIGRuntimeInformation *m_rti;
-};
-
-
-// FIG type 0/10
-// The date and time feature is used to signal a location-independent timing
-// reference in UTC format.
-class FIG0_10 : public IFIG
-{
- public:
- FIG0_10(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 10; }
-
- private:
- FIGRuntimeInformation *m_rti;
-};
-
-// FIG type 0/13
-// User Application Information
-class FIG0_13 : public IFIG
-{
- public:
- FIG0_13(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 13; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- bool m_transmit_programme;
- std::vector<DabComponent*>::iterator componentFIG0_13;
-};
-
-// FIG type 0/17
-// Programme Type (PTy)
-class FIG0_17 : public IFIG
-{
- public:
- FIG0_17(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 17; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- std::vector<std::shared_ptr<DabService> >::iterator serviceFIG0_17;
-};
-
-// FIG type 0/18
-class FIG0_18 : public IFIG
-{
- public:
- FIG0_18(FIGRuntimeInformation* rti);
- virtual FillStatus fill(uint8_t *buf, size_t max_size);
- virtual FIG_rate repetition_rate(void) { return FIG_rate::B; }
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 18; }
-
- private:
- FIGRuntimeInformation *m_rti;
- bool m_initialised;
- 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);
-
- virtual const int figtype(void) const { return 0; }
- virtual const int figextension(void) const { return 19; }
-
- private:
- FIGRuntimeInformation *m_rti;
-
- void update_state(void);
-
- /* When a new announcement gets active, it is moved into the list
- * of new announcements, and gets transmitted at a faster rate for
- * two seconds.
- * Same for recently disabled announcements.
- */
-
- /* Map of cluster to frame count */
- std::map<
- std::shared_ptr<AnnouncementCluster>,int> m_new_announcements;
-
- std::set<
- std::shared_ptr<AnnouncementCluster> > m_repeated_announcements;
-
- /* Map of cluster to frame count */
- std::map<
- std::shared_ptr<AnnouncementCluster>,int> m_disabled_announcements;
-};
-
-} // namespace FIC
+#include "fig/FIG0structs.h"
+#include "fig/FIG0_0.h"
+#include "fig/FIG0_1.h"
+#include "fig/FIG0_2.h"
+#include "fig/FIG0_3.h"
+#include "fig/FIG0_5.h"
+#include "fig/FIG0_6.h"
+#include "fig/FIG0_8.h"
+#include "fig/FIG0_9.h"
+#include "fig/FIG0_10.h"
+#include "fig/FIG0_13.h"
+#include "fig/FIG0_17.h"
+#include "fig/FIG0_18.h"
+#include "fig/FIG0_19.h"