summaryrefslogtreecommitdiffstats
path: root/watermarkdecoder.hpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2016-09-02 17:43:32 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2016-09-07 21:20:24 +0200
commit4809f3c042a99a639542b1e6cd22657871113260 (patch)
treedc0ec0f256eaceb79d63daa09591d4a6ef08cb73 /watermarkdecoder.hpp
parent5542c8ecff635f9abc05b6b2ff255db02c2c9c46 (diff)
downloadetisnoop-4809f3c042a99a639542b1e6cd22657871113260.tar.gz
etisnoop-4809f3c042a99a639542b1e6cd22657871113260.tar.bz2
etisnoop-4809f3c042a99a639542b1e6cd22657871113260.zip
Move all sources to src/
Diffstat (limited to 'watermarkdecoder.hpp')
-rw-r--r--watermarkdecoder.hpp98
1 files changed, 0 insertions, 98 deletions
diff --git a/watermarkdecoder.hpp b/watermarkdecoder.hpp
deleted file mode 100644
index 57196e1..0000000
--- a/watermarkdecoder.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- Copyright (C) 2014 CSP Innovazione nelle ICT s.c.a r.l. (http://www.csp.it/)
- Copyright (C) 2016 Matthias P. Braendli (http://www.opendigitalradio.org)
- Copyright (C) 2015 Data Path
-
- This program 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.
-
- This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
-
- Authors:
- Sergio Sagliocco <sergio.sagliocco@csp.it>
- Matthias P. Braendli <matthias@mpb.li>
- / | |- ')|) |-|_ _ (|,_ .| _ ,_ \
- Data Path \(|(||_(|/_| (||_||(a)_||||(|||.(_()|||/
-
-*/
-
-#pragma once
-#include <vector>
-#include <sstream>
-#include "utils.hpp"
-
-class WatermarkDecoder
-{
- public:
- WatermarkDecoder() {}
-
- void push_confind_bit(bool confind)
- {
- // The ConfInd of FIG 0/10 contains the CRC-DABMUX and ODR-DabMux watermark
- m_confind_bits.push_back(confind);
- }
-
- std::string calculate_watermark()
- {
- // First try to find the 0x55 0x55 sync in the waternark data
- size_t bit_ix;
- int alternance_count = 0;
- bool last_bit = 1;
- for (bit_ix = 0; bit_ix < m_confind_bits.size(); bit_ix++) {
- if (alternance_count == 16) {
- break;
- }
- else {
- if (last_bit != m_confind_bits[bit_ix]) {
- last_bit = m_confind_bits[bit_ix];
- alternance_count++;
- }
- else {
- alternance_count = 0;
- last_bit = 1;
- }
- }
-
- }
-
- printf("Found SYNC at offset %zu out of %zu\n", bit_ix - alternance_count, m_confind_bits.size());
-
- std::stringstream watermark_ss;
-
- uint8_t b = 0;
- size_t i = 0;
- while (bit_ix < m_confind_bits.size()) {
-
- b |= m_confind_bits[bit_ix] << (7 - i);
-
- if (i == 7) {
- watermark_ss << (char)b;
-
- b = 0;
- i = 0;
- }
- else {
- i++;
- }
-
- bit_ix += 2;
- }
-
- return watermark_ss.str();
- }
-
- private:
- const WatermarkDecoder& operator=(const WatermarkDecoder&) = delete;
- WatermarkDecoder(const WatermarkDecoder&) = delete;
-
- std::vector<bool> m_confind_bits;
-};
-