From f7c44ecbd94931540be33ce6b0d129c02bdddeef Mon Sep 17 00:00:00 2001 From: Piotr Lewandowski Date: Sat, 2 Dec 2023 00:38:21 +0100 Subject: [PATCH] jt9-test --- paker.hpp | 13 +++ utils/build/CMakeFiles/Makefile.cmake | 80 ------------------ .../paker_test.dir/paker_test.cpp.o | Bin 31984 -> 44744 bytes utils/build/paker_test | Bin 34984 -> 43696 bytes utils/paker_test.cpp | 16 ++-- 5 files changed, 22 insertions(+), 87 deletions(-) diff --git a/paker.hpp b/paker.hpp index df7f98d..dd36f8a 100644 --- a/paker.hpp +++ b/paker.hpp @@ -249,12 +249,22 @@ namespace Protocol {'U', 10, "0123456789"}, {'P', 28, "ABCDEFGHIJKLMNOPQRSTUVWXYZab"}, }; + + static constexpr auto Jt9ElmCnt = 3; + static constexpr TFormatElement Jt9FormatElements[Jt9ElmCnt] = + { + {'0', 1, " "}, // nothing + {'S', 1, "01Q"}, // sequence number + {'J', 42, "ABCDEFGHIJKLMNOPRSTQUWXYVZ0123456789 +=./?"}, + }; }; template using CFormatWithDefaultElementsT = CFormat; template using CWsprFormatT = CFormat; + template + using CJt9Format = CFormat; template class CPacketFactoryT @@ -308,5 +318,8 @@ namespace Protocol static constexpr char WsprFormatString[] = "CQ SUUxxx llUU P"; using CWsprPacketFactory = CPacketFactory; + + static constexpr char Jt9FormatString[] = "JJJJJJJJJJJJJ"; + using CJt9PacketFactory = CPacketFactory; } } diff --git a/utils/build/CMakeFiles/Makefile.cmake b/utils/build/CMakeFiles/Makefile.cmake index cf9f6f7..84f0b1b 100644 --- a/utils/build/CMakeFiles/Makefile.cmake +++ b/utils/build/CMakeFiles/Makefile.cmake @@ -12,93 +12,18 @@ set(CMAKE_MAKEFILE_DEPENDS "CMakeFiles/3.25.1/CMakeCCompiler.cmake" "CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" "CMakeFiles/3.25.1/CMakeSystem.cmake" - "/usr/share/cmake-3.25/Modules/CMakeCCompiler.cmake.in" - "/usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c" "/usr/share/cmake-3.25/Modules/CMakeCInformation.cmake" - "/usr/share/cmake-3.25/Modules/CMakeCXXCompiler.cmake.in" - "/usr/share/cmake-3.25/Modules/CMakeCXXCompilerABI.cpp" "/usr/share/cmake-3.25/Modules/CMakeCXXInformation.cmake" "/usr/share/cmake-3.25/Modules/CMakeCommonLanguageInclude.cmake" - "/usr/share/cmake-3.25/Modules/CMakeCompilerIdDetection.cmake" - "/usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake" - "/usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake" - "/usr/share/cmake-3.25/Modules/CMakeDetermineCompileFeatures.cmake" - "/usr/share/cmake-3.25/Modules/CMakeDetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerABI.cmake" - "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake" - "/usr/share/cmake-3.25/Modules/CMakeDetermineSystem.cmake" - "/usr/share/cmake-3.25/Modules/CMakeFindBinUtils.cmake" "/usr/share/cmake-3.25/Modules/CMakeGenericSystem.cmake" "/usr/share/cmake-3.25/Modules/CMakeInitializeConfigs.cmake" "/usr/share/cmake-3.25/Modules/CMakeLanguageInformation.cmake" - "/usr/share/cmake-3.25/Modules/CMakeParseImplicitIncludeInfo.cmake" - "/usr/share/cmake-3.25/Modules/CMakeParseImplicitLinkInfo.cmake" - "/usr/share/cmake-3.25/Modules/CMakeParseLibraryArchitecture.cmake" - "/usr/share/cmake-3.25/Modules/CMakeSystem.cmake.in" "/usr/share/cmake-3.25/Modules/CMakeSystemSpecificInformation.cmake" "/usr/share/cmake-3.25/Modules/CMakeSystemSpecificInitialize.cmake" - "/usr/share/cmake-3.25/Modules/CMakeTestCCompiler.cmake" - "/usr/share/cmake-3.25/Modules/CMakeTestCXXCompiler.cmake" - "/usr/share/cmake-3.25/Modules/CMakeTestCompilerCommon.cmake" - "/usr/share/cmake-3.25/Modules/CMakeUnixFindMake.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/ADSP-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/ARMCC-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/ARMClang-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/AppleClang-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Borland-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" "/usr/share/cmake-3.25/Modules/Compiler/CMakeCommonCompilerMacros.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Cray-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/GHS-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/GNU-C-DetermineCompiler.cmake" "/usr/share/cmake-3.25/Modules/Compiler/GNU-C.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" "/usr/share/cmake-3.25/Modules/Compiler/GNU-CXX.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/GNU-FindBinUtils.cmake" "/usr/share/cmake-3.25/Modules/Compiler/GNU.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/HP-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/IAR-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Intel-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/LCC-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/MSVC-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/NVHPC-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/PGI-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/PathScale-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/SCO-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/TI-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Tasking-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/Watcom-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/XL-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/zOS-C-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" - "/usr/share/cmake-3.25/Modules/Internal/FeatureTesting.cmake" - "/usr/share/cmake-3.25/Modules/Platform/Linux-Determine-CXX.cmake" "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU-C.cmake" "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU-CXX.cmake" "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU.cmake" @@ -114,11 +39,6 @@ set(CMAKE_MAKEFILE_OUTPUTS # Byproducts of CMake generate step: set(CMAKE_MAKEFILE_PRODUCTS - "CMakeFiles/3.25.1/CMakeSystem.cmake" - "CMakeFiles/3.25.1/CMakeCCompiler.cmake" - "CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" - "CMakeFiles/3.25.1/CMakeCCompiler.cmake" - "CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" "CMakeFiles/CMakeDirectoryInformation.cmake" "wspaker/CMakeFiles/CMakeDirectoryInformation.cmake" ) diff --git a/utils/build/CMakeFiles/paker_test.dir/paker_test.cpp.o b/utils/build/CMakeFiles/paker_test.dir/paker_test.cpp.o index c9c2b35928c06e0cfdf1650403cf9115016a0ec9..7fa00c9e4b14d0e2994a4663bd284241b686a60a 100644 GIT binary patch literal 44744 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 literal 31984 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 diff --git a/utils/paker_test.cpp b/utils/paker_test.cpp index b68783f..b55f28c 100644 --- a/utils/paker_test.cpp +++ b/utils/paker_test.cpp @@ -16,16 +16,16 @@ void Test(Factory& PacketFactory, CTestData& RawFrame) { auto const FtFramesCnt = PacketFactory.EncodeRaw((unsigned char *)&RawFrame, sizeof(RawFrame) * 8); cout << "\nSQ9P paker TEST NR: " << i32TestNr++ << endl; - cout << "paker format: " << CWsprPacketFactory::Format::GetPattern() << endl; - cout << "frame permutations: " << CWsprPacketFactory::Format::GetMaxPermutations() << endl; - cout << "frame bitsize floor: " << CWsprPacketFactory::Format::GetBitSizeFloor() << endl; + cout << "paker format: " << Factory::Format::GetPattern() << endl; + cout << "frame permutations: " << Factory::Format::GetMaxPermutations() << endl; + cout << "frame bitsize floor: " << Factory::Format::GetBitSizeFloor() << endl; cout << "specific base: "; ; - const char *pattern = CWsprPacketFactory::Format::GetPattern(); + const char *pattern = Factory::Format::GetPattern(); for (int i = 0; i < strlen(pattern); i++) { - cout << pattern[i] << "=" << CWsprPacketFactory::Format::GetBase(pattern[i]) << " "; + cout << pattern[i] << "=" << Factory::Format::GetBase(pattern[i]) << " "; } cout << endl << endl; @@ -51,7 +51,7 @@ void Test(Factory& PacketFactory, CTestData& RawFrame) std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast(((unsigned char *)C8Dupa)[i]); } - cout << endl; + cout << std::dec << endl; } int main() @@ -62,7 +62,9 @@ int main() CWsprPacketFactory WsprPacketFactory; CFT4PacketFactory Ft4PacketFactory; + CJt9PacketFactory Jt9PacketFactory; Test(WsprPacketFactory, RawFrame); - Test(Ft4PacketFactory, RawFrame); + Test(Ft4PacketFactory, RawFrame); + Test(Jt9PacketFactory, RawFrame); } \ No newline at end of file