From cde926760d46e21ca0ebd68d4bed1bdb79c5797a Mon Sep 17 00:00:00 2001 From: Piotr Lewandowski Date: Wed, 29 Nov 2023 23:50:09 +0100 Subject: [PATCH] wspr-format --- paker.hpp | 74 +++++------------- .../paker_test.dir/paker_test.cpp.o | Bin 31472 -> 31984 bytes utils/build/paker_test | Bin 34976 -> 34984 bytes 3 files changed, 20 insertions(+), 54 deletions(-) diff --git a/paker.hpp b/paker.hpp index 1c91d53..df7f98d 100644 --- a/paker.hpp +++ b/paker.hpp @@ -236,59 +236,25 @@ namespace Protocol {'l', 18, "ABCDEFGHIJKLMNOPQR"}, {'U', 10, "0123456789"}, {'P', 28, "ABCDEFGHIJKLMNOPQRSTUVWXYZab"}, - {'s', 3, "01Q"}, // seq for wspr + }; + + static constexpr auto WsprElmCnt = 8; + static constexpr TFormatElement WsprFormatElements[WsprElmCnt] = + { + {'0', 1, " "}, // nothing + {'S', 1, "01Q"}, // sequence number + {'x', 26, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"}, + {'X', 36, "ABCDEFGHIJKLMNOPRSTQUWXYVZ0123456789"}, + {'l', 18, "ABCDEFGHIJKLMNOPQR"}, + {'U', 10, "0123456789"}, + {'P', 28, "ABCDEFGHIJKLMNOPQRSTUVWXYZab"}, }; }; template - using CFormatWithDefaultElements = CFormat; - - // class CFT4PacketFactory - // { - // static constexpr char FT4FormatStr[] = "CQ 4NSxxxxxxx"; - - // public: - // static constexpr auto MaxFt4Subframes = 8; - // using TFT4Format = CFormatWithDefaultElements; - // using CFT4Encoder = TEncoder; - // char C8Frames[MaxFt4Subframes][TFT4Format::GetLen() + 1]; - // CFT4Encoder FT4Encoder; - - // unsigned char u8EncodedFrames = 0; - // CFT4PacketFactory() : FT4Encoder(C8Frames){}; - - // const char *GetPacket(unsigned int u32Idx) - // { - // if (u32Idx >= MaxFt4Subframes) - // return "NOT VALID"; - - // return C8Frames[u32Idx]; - // } - - // bool AppendWsFrame(const char *p8WsFrame) - // { - // auto const SeqIdx = TFT4Format::GetSeqNrIdx(); - // if (strlen(p8WsFrame) != TFT4Format::GetLen() || - // p8WsFrame[SeqIdx] < '0' || p8WsFrame[SeqIdx] > '9') - // return false; - - // auto const FrameNr = p8WsFrame[SeqIdx] - '0'; - - // memcpy(C8Frames[FrameNr], p8WsFrame, TFT4Format::GetLen()); - // return true; - // } - - // unsigned int EncodeRaw(unsigned char *p8Data, unsigned int u32BitLen) - // { - // u8EncodedFrames = FT4Encoder.EncodeBigEndian(p8Data, u32BitLen); - // return u8EncodedFrames; - // } - - // unsigned int DecodeFrames(unsigned char u8FramesToDecode, unsigned char *pOutData, unsigned int u32OutBuffLen) - // { - // return FT4Encoder.DecodeBigEndian(u8FramesToDecode, pOutData, u32OutBuffLen); - // } - // }; + using CFormatWithDefaultElementsT = CFormat; + template + using CWsprFormatT = CFormat; template class CPacketFactoryT @@ -333,14 +299,14 @@ namespace Protocol return Encoder.DecodeBigEndian(u8FramesToDecode, pOutData, u32OutBuffLen); } }; - - template - using CPacketFactory = CPacketFactoryT, MaxElements>>; + + template class CFromatT, unsigned int MaxElements> + using CPacketFactory = CPacketFactoryT, MaxElements>>; static constexpr char Ft4FromatString[] = "CQ 4NSxxxxxxx"; - using CFT4PacketFactory = CPacketFactory; + using CFT4PacketFactory = CPacketFactory; static constexpr char WsprFormatString[] = "CQ SUUxxx llUU P"; - using CWsprPacketFactory = CPacketFactory; + using CWsprPacketFactory = CPacketFactory; } } 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 f5d9cbaf7cc027df8cdc8c6a850bc525f35be8d7..c9c2b35928c06e0cfdf1650403cf9115016a0ec9 100644 GIT binary patch delta 6355 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 delta 3425 zcmZ{ndsI}%9mi*`F1m;b_~5d;z=D9HCIU$-F=~Yh$f6<}2q>bWMFpb*J`i$>%))am!$ne`7(de7P4XXg8z znLDpL_wK=MTFW+VYcy}!Hu^WdXZ)CXo$=dtZOP9o2g#h5%wOg?;DcY?44JRXdyM^L z{%U{vCI2>Hf1=DjB5l$Zg#W+F<*ITyS^E_a8}qM*RY^@ltJ<3CulIBu=-rY2!Ddf= zzi%wOj;gG>ZL7NVKzR%H{nIkhNNrY~N_?ZK&pMD=e9HrZ=1Ip}vcVHD=zf37AH4NF z|MM39EnOI%!p~D+;AH+5Wg(W)_P|Me7F`I;)CP^ANPQn%WS&4CM4cYkC-FWS=g1t~8pT-ZrcY8gUFq%qH^t}< zI^-zffn*Qf6|p%|dJUGUsYdE_@1bvmIGy}wqtCZjr#4tN(r3YAdEWMrbUws0D`X4j zuhWgtclcMHUpWt3w59QMZD<}*REf5GJdzFy8#zf!7*AWmbS-{79SjTgygu?NyF*R_ z^UZWm$OtQ0_|oE4VI`}I*A)MvcsZR*_-sSvc_AV-#wsreF$1gz3yl0lA^gB4mxQRq z5|x6@;CiqfybN}OH^H#}j747-A_1%c^TAedBlvr;1+4v4h>yUdU^mzcG7Hq` zER6lSONdnPBd`#>2G)TizYyXKm<{%Vo56wDjhDe_(C0epfzN}5U@ce=-UnMj*9{>q zf^UF*;A=fX3>&~$=S?A=8?b?~n7;{;2Vn|W3D$tk;7za{wEkU)F7QQ=VKW3pRtzU_1CO*ahAIe*pdO3K5JYC<7;fZ-aT@dmzIUKY34xgP5@qR5f*!tq==6 z(%2121I))d63L(7mq91tMt2CIo_3=Q8;0K+{KAMQ>HH4alAQb|O+dU#a}du`1!5=d zM!Z9RM0|!mNBkLmm*muLc2H=F-O`GKqk|?SJNZ$XlN`anrdNyI_U(Gtw{EC(sd-yAsO0550e9_#5Isd zQH3jl&!jyrC*MiOkv>N~E~oaei?p;67*$kSgr;@V`82zw3p+BMiqf3gzHYjgX7>rk zPCL;}PfQQBBp?|{9cfN}i|!&a8azFMFQ&NZPToZB>3_gsRzlVpullaWN@3wyLju`n z&c{(%G1JK#Y4^>!jhZA3hXq z;2JE!9Q44g+YVu?8E&m|Qhl}_qI*S3(%Hv{eybo8c&+xriDt?F2TYnAXB&f36GKC z7Ch$WQX*U*bi;7ZDmPZuJwm0Kx@#fciH7@(Q_547>xXGE^fIMCtMm_)epuj)~Cw#okvZf%sTG)mQVQ5D?31WETh<$8yj zPHk{6V#^r)X*Ul%#=HZ|q#n5UuvZMX=PB8wcNAq5kgeOk$1Brt52!DTY<1tURGO{3 z4hQ4BW<%K4L@BF1$){YRytXEX@0CDPs%8<>(=HY#^iV zC#tTR5Ecu42(@WLZ8=By{ml@}11jZ>tOzmxzmlh_(U|~$8-|$j+uUF#$n{1tMgb2M@*wO#9UJ;GGjGW&DCv< zI2w#Tr>H)A2f5GFHg_f8z9x$N3x-qnyhJ0}w<3@(%uDvF@03=U?sKb_npVbwnO^Jp z)ly2&@0C)hr);4Q+6(u*u_#NmyHr{Z&-(=jl@vlvg4B6=E(KRI|r>tFJ^3~!TSldgAyajHQ ztu_qLsM2FTUTsXpIqvc2XdG=K%^!M~`%*QL0Q(E;nYd(&5