diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-03-18 16:02:25 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-03-18 16:02:25 +0100 |
commit | 78a5d1945922e9d4b9932c9d39d61a9f192bcd56 (patch) | |
tree | ce99822cb4b1f143b32ddf3d9b6de83f6b6f4160 /rdsparse/decoder_impl.h | |
parent | 626c6d11cba32fac3bef312c8791df15f5bbf65a (diff) | |
download | mmbtools-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.h | 58 |
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 */ + |