summaryrefslogtreecommitdiffstats
path: root/src/fig/FIG0.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fig/FIG0.h')
-rw-r--r--src/fig/FIG0.h279
1 files changed, 13 insertions, 266 deletions
diff --git a/src/fig/FIG0.h b/src/fig/FIG0.h
index fe90d31..927efc1 100644
--- a/src/fig/FIG0.h
+++ b/src/fig/FIG0.h
@@ -25,270 +25,17 @@
#pragma once
-#include <cstdint>
-#include <map>
-#include <set>
-
-#include "fig/FIG.h"
-
-namespace FIC {
-
-// Some FIGs need to adapt their rate or their contents depending
-// on if some data entries are stable or currently undergoing a
-// change. The TransitionHandler keeps track of which entries
-// are in what state.
-template<class T>
-class TransitionHandler {
- public:
- // update_state must be called once per ETI frame, and will
- // move entries from new to repeated to disabled depending
- // on their is_active() return value.
- void update_state(int timeout, std::vector<std::shared_ptr<T> > all_entries);
-
- // The FIG that needs the information about what state an entry is in
- // can read from the following data structures. It shall not modify them.
-
- /* Map to frame count */
- std::map<
- std::shared_ptr<T>,int> new_entries;
-
- std::set<
- std::shared_ptr<T> > repeated_entries;
-
- /* Map to frame count */
- std::map<
- std::shared_ptr<T>,int> disabled_entries;
-};
-
-
-// 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/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;
-
- TransitionHandler<AnnouncementCluster> m_transition;
-};
-
-} // 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_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"