aboutsummaryrefslogtreecommitdiffstats
path: root/rdsparse/decoder_impl.h
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2016-03-18 16:02:25 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2016-03-18 16:02:25 +0100
commit78a5d1945922e9d4b9932c9d39d61a9f192bcd56 (patch)
treece99822cb4b1f143b32ddf3d9b6de83f6b6f4160 /rdsparse/decoder_impl.h
parent626c6d11cba32fac3bef312c8791df15f5bbf65a (diff)
downloadmmbtools-aux-78a5d1945922e9d4b9932c9d39d61a9f192bcd56.tar.gz
mmbtools-aux-78a5d1945922e9d4b9932c9d39d61a9f192bcd56.tar.bz2
mmbtools-aux-78a5d1945922e9d4b9932c9d39d61a9f192bcd56.zip
Add rdparse tool in development
Diffstat (limited to 'rdsparse/decoder_impl.h')
-rw-r--r--rdsparse/decoder_impl.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/rdsparse/decoder_impl.h b/rdsparse/decoder_impl.h
new file mode 100644
index 0000000..53c707c
--- /dev/null
+++ b/rdsparse/decoder_impl.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2014 Bastian Bloessl <bloessl@ccs-labs.org>
+ *
+ * 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/>.
+ */
+#ifndef INCLUDED_RDS_DECODER_IMPL_H
+#define INCLUDED_RDS_DECODER_IMPL_H
+
+namespace rds {
+
+class decoder_impl
+{
+public:
+ decoder_impl(bool log, bool debug);
+
+ // in are bits (either 0 or 1)
+ int work(int noutput_items, const int* in);
+
+private:
+
+ void enter_no_sync();
+ void enter_sync(unsigned int);
+ unsigned int calc_syndrome(unsigned long, unsigned char);
+ void decode_group(unsigned int*);
+
+ unsigned long bit_counter;
+ unsigned long lastseen_offset_counter, reg;
+ unsigned int block_bit_counter;
+ unsigned int wrong_blocks_counter;
+ unsigned int blocks_counter;
+ unsigned int group_good_blocks_counter;
+ unsigned int group[4];
+ bool log;
+ bool debug;
+ bool presync;
+ bool good_block;
+ bool group_assembly_started;
+ unsigned char lastseen_offset;
+ unsigned char block_number;
+ enum { NO_SYNC, SYNC } d_state;
+
+};
+
+}; // namespace rds
+
+#endif /* INCLUDED_RDS_DECODER_IMPL_H */
+