diff options
author | stevie <stevie@65a5c917-d112-43f1-993d-58c26a4786be> | 2011-05-29 10:24:15 +0000 |
---|---|---|
committer | stevie <stevie@65a5c917-d112-43f1-993d-58c26a4786be> | 2011-05-29 10:24:15 +0000 |
commit | da6ffc8343221ca66789c2e9c62506e5653301ea (patch) | |
tree | 56bff05ac3c506ff7906583660326c5c076017d9 /blocks/src/lib/tdu.cc | |
parent | f76f2bc712353a587782fe11a79b6447c9bbb88a (diff) |
Rename 'decoder' to 'blocks'.
git-svn-id: http://op25.osmocom.org/svn/trunk@283 65a5c917-d112-43f1-993d-58c26a4786be
Diffstat (limited to 'blocks/src/lib/tdu.cc')
-rw-r--r-- | blocks/src/lib/tdu.cc | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/blocks/src/lib/tdu.cc b/blocks/src/lib/tdu.cc new file mode 100644 index 0000000..e5cfdde --- /dev/null +++ b/blocks/src/lib/tdu.cc @@ -0,0 +1,84 @@ +/* -*- C++ -*- */ + +/* + * Copyright 2008 Steve Glass + * + * This file is part of OP25. + * + * OP25 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, or (at your option) + * any later version. + * + * OP25 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 OP25; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Boston, MA + * 02110-1301, USA. + */ + +#include <itpp/base/vec.h> +#include <itpp/comm/reedsolomon.h> +#include <tdu.h> +#include <op25_yank.h> + +using std::string; + +tdu::tdu(const_bit_queue& frame_body, bool has_link_control) : + abstract_data_unit(frame_body), + d_has_link_control(has_link_control) +{ +} + +tdu::~tdu() +{ +} + +string +tdu::duid_str() const +{ + return string("TDU"); +} + +void +tdu::do_correct_errors(bit_vector& frame) +{ + if(d_has_link_control) { + apply_golay_correction(frame); + apply_rs_correction(frame); + } +} + +void +tdu::apply_golay_correction(bit_vector& frame) +{ +} + +void +tdu::apply_rs_correction(bit_vector& frame) +{ +#if 0 + static itpp::Reed_Solomon rs(63, 17, true); + itpp::bvec b(70); + swab(frame, 114, 122, b, 0); + swab(frame, 122, 126, b, 8); + swab(frame, 138, 142, b, 12); + swab(frame, 144, 152, b, 16); + swab(frame, 164, 176, b, 24); + swab(frame, 188, 200, b, 36); + swab(frame, 212, 213, b, 48); + swab(frame, 216, 226, b, 50); + swab(frame, 238, 250, b, 60); + itpp::bvec bd(rs.decode(b)); +#endif +} + +uint16_t +tdu::frame_size_max() const +{ + return d_has_link_control ? 432 : 144; +} |