From 6671f683ed9d85b091a67814e3a0d6778f6b2ea7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 12 Jan 2023 20:54:42 +0100 Subject: [PATCH] FT8 support: hide 128 bit integer --- ft8/CMakeLists.txt | 1 + ft8/unpack.cpp | 37 +-------------------------- ft8/unpack.h | 3 --- ft8/unpack0.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++ ft8/unpack0.h | 28 +++++++++++++++++++++ 5 files changed, 93 insertions(+), 39 deletions(-) create mode 100644 ft8/unpack0.cpp create mode 100644 ft8/unpack0.h diff --git a/ft8/CMakeLists.txt b/ft8/CMakeLists.txt index 6f7b42396..41023a3b1 100644 --- a/ft8/CMakeLists.txt +++ b/ft8/CMakeLists.txt @@ -6,6 +6,7 @@ set(ft8_SOURCES libldpc.cpp osd.cpp unpack.cpp + unpack0.cpp util.cpp ) diff --git a/ft8/unpack.cpp b/ft8/unpack.cpp index a271d0399..37586e620 100644 --- a/ft8/unpack.cpp +++ b/ft8/unpack.cpp @@ -22,46 +22,11 @@ #include #include "unpack.h" +#include "unpack0.h" #include "util.h" namespace FT8 { -// -// turn bits into a 128-bit integer. -// most significant bit first. -// -boost::multiprecision::int128_t Packing::un128(int a77[], int start, int len) -{ - boost::multiprecision::int128_t x = 0; - - assert(len < (int)sizeof(x) * 8 && start >= 0 && start + len <= 77); - for (int i = 0; i < len; i++) - { - x <<= 1; - x |= a77[start + i]; - } - - return x; -} - -// -// turn bits into a 64-bit integer. -// most significant bit first. -// -uint64_t Packing::un64(int a77[], int start, int len) -{ - uint64_t x = 0; - - assert(len < (int)sizeof(x) * 8 && start >= 0 && start + len <= 63); - for (int i = 0; i < len; i++) - { - x <<= 1; - x |= a77[start + i]; - } - - return x; -} - int Packing::ihashcall(std::string call, int m) { while (call.size() > 0 && call[0] == ' ') diff --git a/ft8/unpack.h b/ft8/unpack.h index 82d64bf62..32ca611a3 100644 --- a/ft8/unpack.h +++ b/ft8/unpack.h @@ -23,7 +23,6 @@ #include #include -#include #include @@ -35,8 +34,6 @@ public: std::string unpack(int a91[], std::string& call1str, std::string& call2str, std::string& locstr); private: - boost::multiprecision::int128_t un128(int a77[], int start, int len); - uint64_t un64(int a77[], int start, int len); int ihashcall(std::string call, int m); std::string unpackcall(int x); std::string unpackgrid(int ng, int ir, int i3); diff --git a/ft8/unpack0.cpp b/ft8/unpack0.cpp new file mode 100644 index 000000000..f781f3995 --- /dev/null +++ b/ft8/unpack0.cpp @@ -0,0 +1,63 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2023 Edouard Griffiths, F4EXB. // +// // +// This is the code from ft8mon: https://github.com/rtmrtmrtmrtm/ft8mon // +// written by Robert Morris, AB1HL // +// reformatted and adapted to Qt and SDRangel context // +// // +// 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 as 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 V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// +#include "unpack0.h" +#include "unpack0.h" + +namespace FT8 { + +// +// turn bits into a 128-bit integer. +// most significant bit first. +// + +boost::multiprecision::int128_t un128(int a77[], int start, int len) +{ + boost::multiprecision::int128_t x = 0; + + assert(len < (int)sizeof(x) * 8 && start >= 0 && start + len <= 77); + for (int i = 0; i < len; i++) + { + x <<= 1; + x |= a77[start + i]; + } + + return x; +} + +// +// turn bits into a 64-bit integer. +// most significant bit first. +// +uint64_t un64(int a77[], int start, int len) +{ + uint64_t x = 0; + + assert(len < (int)sizeof(x) * 8 && start >= 0 && start + len <= 63); + for (int i = 0; i < len; i++) + { + x <<= 1; + x |= a77[start + i]; + } + + return x; +} + +} // namespace FT8 diff --git a/ft8/unpack0.h b/ft8/unpack0.h new file mode 100644 index 000000000..76965417a --- /dev/null +++ b/ft8/unpack0.h @@ -0,0 +1,28 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2023 Edouard Griffiths, F4EXB. // +// // +// This is the code from ft8mon: https://github.com/rtmrtmrtmrtm/ft8mon // +// written by Robert Morris, AB1HL // +// reformatted and adapted to Qt and SDRangel context // +// // +// 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 as 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 V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// +#include + +namespace FT8 { + +boost::multiprecision::int128_t un128(int a77[], int start, int len); +uint64_t un64(int a77[], int start, int len); + +} // namespace FT*