diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2013-11-22 19:12:30 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2014-05-20 21:39:36 +0200 |
commit | 05da854addac962e20ff9f1e7bdad3cbacb66905 (patch) | |
tree | 0e135fb84cdba7f8ee02606e09c97de99bb5ef16 /src/dabOutput/edi/TagItems.h | |
parent | 417cd7e7ce8a75ed79dc01687428d172f590189d (diff) | |
download | dabmux-05da854addac962e20ff9f1e7bdad3cbacb66905.tar.gz dabmux-05da854addac962e20ff9f1e7bdad3cbacb66905.tar.bz2 dabmux-05da854addac962e20ff9f1e7bdad3cbacb66905.zip |
Add AFPacket and a few TagItems
Diffstat (limited to 'src/dabOutput/edi/TagItems.h')
-rw-r--r-- | src/dabOutput/edi/TagItems.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/dabOutput/edi/TagItems.h b/src/dabOutput/edi/TagItems.h new file mode 100644 index 0000000..c0e863a --- /dev/null +++ b/src/dabOutput/edi/TagItems.h @@ -0,0 +1,116 @@ +/* + Copyright (C) 2013 Matthias P. Braendli + http://mpb.li + + EDI output. + This defines a few TAG items as defined ETSI TS 102 821 and + ETSI TS 102 693 + + */ +/* + This file is part of CRC-DabMux. + + CRC-DabMux is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + CRC-DabMux is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with CRC-DabMux. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _TAGITEMS_H_ +#define _TAGITEMS_H_ + +#include "config.h" +#include "Eti.h" +#include <vector> +#include <string> +#include <stdint.h> +#define PACKED __attribute__ ((packed)) + +class TagItem +{ + public: + virtual std::vector<uint8_t> Assemble() = 0; +}; + +// ETSI TS 102 693, 5.1.1 Protocol type and revision +class TagStarPTR : public TagItem +{ + public: + std::vector<uint8_t> Assemble(); +}; + +// ETSI TS 102 693, 5.1.3 DAB ETI(LI) Management (deti) +class TagDETI : public TagItem +{ + public: + TagDETI() + { + // set optional fields to "not present" + atstf = 0; + rfudf = 0; + ficf = 0; + + dflc = 0; // counter + } + std::vector<uint8_t> Assemble(); + + /***** DATA in intermediary format ****/ + // For the ETI Header: must be defined ! + uint8_t stat; + uint8_t mid; + uint8_t fp; + uint8_t rfa; + uint8_t rfu; + uint8_t mnsc; + + // ATST (optional) + bool atstf; // presence of atst data + uint8_t utco; + uint32_t seconds; + uint32_t tsta; + + // the FIC (optional) + bool ficf; + const char* fic_data; + size_t fic_length; + + // rfu + bool rfudf; + uint32_t rfud; + + private: + uint32_t dflc; //modulo 5000 counter for each eti frame + +}; + +// ETSI TS 102 693, 5.1.5 ETI Sub-Channel Stream <n> +class TagESTn : public TagItem +{ + public: + TagESTn(uint8_t id) : id_(id) {} ; + + std::vector<uint8_t> Assemble(); + + // SSTCn + uint8_t scid; + uint8_t sad; + uint8_t tpl; + uint8_t rfa; + + // Pointer to MSTn data + uint8_t* mst_data; + size_t mst_length; // STLn * 8 bytes + + private: + uint8_t id_; +}; +#endif + |