From 4d6877ab159a6d12f653a8a9f726e21fbe77dc62 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Mon, 16 Nov 2015 10:31:36 -0800 Subject: [PATCH] Extract FieldReader to separate header so it can be reused. --- firmware/common/ais_baseband.cpp | 27 ++--------------- firmware/common/field_reader.hpp | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 firmware/common/field_reader.hpp diff --git a/firmware/common/ais_baseband.cpp b/firmware/common/ais_baseband.cpp index 841bec0b..dcd41491 100644 --- a/firmware/common/ais_baseband.cpp +++ b/firmware/common/ais_baseband.cpp @@ -26,6 +26,7 @@ #include #include +#include "field_reader.hpp" #include "crc.hpp" // TODO: Move string formatting elsewhere!!! @@ -33,28 +34,6 @@ namespace baseband { -template -class FieldReader { -public: - constexpr FieldReader( - const T& data - ) : data { data } - { - } - - uint32_t read(const size_t start_bit, const size_t length) const { - uint32_t value = 0; - for(size_t i=start_bit; i<(start_bit + length); i++) { - value = (value << 1) | data[bit_remap(i)]; - } - return value; - } - -private: - const T& data; - const BitRemap bit_remap { }; -}; - namespace ais { struct BitRemap { @@ -69,8 +48,8 @@ struct CRCBitRemap { } }; -using FieldReader = baseband::FieldReader, BitRemap>; -using CRCFieldReader = baseband::FieldReader, CRCBitRemap>; +using FieldReader = ::FieldReader, BitRemap>; +using CRCFieldReader = ::FieldReader, CRCBitRemap>; struct PacketLengthRange { constexpr PacketLengthRange( diff --git a/firmware/common/field_reader.hpp b/firmware/common/field_reader.hpp new file mode 100644 index 00000000..4a1e05d6 --- /dev/null +++ b/firmware/common/field_reader.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * + * This file is part of PortaPack. + * + * 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 2, 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __FIELD_READER_H__ +#define __FIELD_READER_H__ + +#include +#include + +template +class FieldReader { +public: + constexpr FieldReader( + const T& data + ) : data { data } + { + } + + uint32_t read(const size_t start_bit, const size_t length) const { + uint32_t value = 0; + for(size_t i=start_bit; i<(start_bit + length); i++) { + value = (value << 1) | data[bit_remap(i)]; + } + return value; + } + +private: + const T& data; + const BitRemap bit_remap { }; +}; + +#endif/*__FIELD_READER_H__*/