From e98d8e9b339847287fb84f933456c05b46695444 Mon Sep 17 00:00:00 2001 From: Xavier Date: Sat, 10 Dec 2022 14:57:48 +0100 Subject: [PATCH] first commit --- Display.pdf | Bin 0 -> 905778 bytes README.md | 296 ++ RX_FSK/RX_FSK.ino | 3874 ++++++++++++++++++++++++++ RX_FSK/data.tar | Bin 0 -> 276480 bytes RX_FSK/data/GPSRESET | 1 + RX_FSK/data/cfg.js | 177 ++ RX_FSK/data/config.txt | 150 + RX_FSK/data/fontawesome-webfont.eot | Bin 0 -> 60767 bytes RX_FSK/data/fontawesome-webfont.woff | Bin 0 -> 71508 bytes RX_FSK/data/index.html | 193 ++ RX_FSK/data/livemap.html | 18 + RX_FSK/data/livemap.js | 530 ++++ RX_FSK/data/map.html | 25 + RX_FSK/data/networks.txt | 6 + RX_FSK/data/qrg.txt | 26 + RX_FSK/data/rdz.js | 54 + RX_FSK/data/screens.txt | 460 +++ RX_FSK/data/screens1.txt | 267 ++ RX_FSK/data/screens2.txt | 276 ++ RX_FSK/data/screens3.txt | 276 ++ RX_FSK/data/screens4.txt | 276 ++ RX_FSK/data/screens5.txt | 276 ++ RX_FSK/data/style.css | 659 +++++ RX_FSK/data/style_map.css | 392 +++ RX_FSK/features.h | 24 + RX_FSK/src/Chasemapper.cpp | 43 + RX_FSK/src/Chasemapper.h | 13 + RX_FSK/src/DFM.cpp | 693 +++++ RX_FSK/src/DFM.h | 74 + RX_FSK/src/DecoderBase.cpp | 51 + RX_FSK/src/DecoderBase.h | 38 + RX_FSK/src/DefaultFonts.c | 367 +++ RX_FSK/src/Display.cpp | 1616 +++++++++++ RX_FSK/src/Display.h | 185 ++ RX_FSK/src/M10M20.cpp | 652 +++++ RX_FSK/src/M10M20.h | 66 + RX_FSK/src/MP3H.cpp | 559 ++++ RX_FSK/src/MP3H.h | 36 + RX_FSK/src/RS41.cpp | 934 +++++++ RX_FSK/src/RS41.h | 73 + RX_FSK/src/RS92.cpp | 589 ++++ RX_FSK/src/RS92.h | 92 + RX_FSK/src/SX1278FSK.cpp | 886 ++++++ RX_FSK/src/SX1278FSK.h | 280 ++ RX_FSK/src/Scanner.cpp | 207 ++ RX_FSK/src/Scanner.h | 23 + RX_FSK/src/ShFreqImport.cpp | 247 ++ RX_FSK/src/ShFreqImport.h | 30 + RX_FSK/src/Sonde.cpp | 736 +++++ RX_FSK/src/Sonde.h | 377 +++ RX_FSK/src/aprs.cpp | 391 +++ RX_FSK/src/aprs.h | 16 + RX_FSK/src/autodetect-infos | 87 + RX_FSK/src/fonts/FreeMono12pt7b.h | 227 ++ RX_FSK/src/fonts/FreeMono12pt8b.h | 495 ++++ RX_FSK/src/fonts/FreeMono9pt7b.h | 176 ++ RX_FSK/src/fonts/FreeMono9pt8b.h | 374 +++ RX_FSK/src/fonts/FreeSans12pt7b.h | 270 ++ RX_FSK/src/fonts/FreeSans12pt8b.h | 596 ++++ RX_FSK/src/fonts/FreeSans18pt7b.h | 451 +++ RX_FSK/src/fonts/FreeSans18pt8b.h | 1030 +++++++ RX_FSK/src/fonts/FreeSans9pt7b.h | 201 ++ RX_FSK/src/fonts/FreeSans9pt8b.h | 421 +++ RX_FSK/src/fonts/Picopixel.h | 123 + RX_FSK/src/fonts/Terminal11x16.h | 221 ++ RX_FSK/src/fonts/fonts.cpp | 25 + RX_FSK/src/fonts/gfxfont.h | 31 + RX_FSK/src/geteph.cpp | 238 ++ RX_FSK/src/geteph.h | 11 + RX_FSK/src/gfxfont.h | 26 + RX_FSK/src/json.cpp | 106 + RX_FSK/src/json.h | 8 + RX_FSK/src/library.json | 11 + RX_FSK/src/mqtt.cpp | 165 ++ RX_FSK/src/mqtt.h | 29 + RX_FSK/src/nav_gps_vel.cpp | 1715 ++++++++++++ RX_FSK/src/nav_gps_vel.h | 148 + RX_FSK/src/rs92gps.cpp | 1204 ++++++++ RX_FSK/src/rs92gps.h | 22 + RX_FSK/src/rsc.cpp | 32 + RX_FSK/src/rsc.h | 17 + RX_FSK/src/rsc_decode.cpp | 436 +++ RX_FSK/update.ino.bin | Bin 0 -> 1094496 bytes RX_FSK/version.h | 4 + Setup.md | 99 + 85 files changed, 26529 insertions(+) create mode 100644 Display.pdf create mode 100755 README.md create mode 100644 RX_FSK/RX_FSK.ino create mode 100644 RX_FSK/data.tar create mode 100644 RX_FSK/data/GPSRESET create mode 100644 RX_FSK/data/cfg.js create mode 100644 RX_FSK/data/config.txt create mode 100755 RX_FSK/data/fontawesome-webfont.eot create mode 100755 RX_FSK/data/fontawesome-webfont.woff create mode 100755 RX_FSK/data/index.html create mode 100644 RX_FSK/data/livemap.html create mode 100644 RX_FSK/data/livemap.js create mode 100644 RX_FSK/data/map.html create mode 100755 RX_FSK/data/networks.txt create mode 100644 RX_FSK/data/qrg.txt create mode 100644 RX_FSK/data/rdz.js create mode 100644 RX_FSK/data/screens.txt create mode 100644 RX_FSK/data/screens1.txt create mode 100644 RX_FSK/data/screens2.txt create mode 100644 RX_FSK/data/screens3.txt create mode 100644 RX_FSK/data/screens4.txt create mode 100644 RX_FSK/data/screens5.txt create mode 100755 RX_FSK/data/style.css create mode 100755 RX_FSK/data/style_map.css create mode 100644 RX_FSK/features.h create mode 100644 RX_FSK/src/Chasemapper.cpp create mode 100644 RX_FSK/src/Chasemapper.h create mode 100644 RX_FSK/src/DFM.cpp create mode 100644 RX_FSK/src/DFM.h create mode 100644 RX_FSK/src/DecoderBase.cpp create mode 100644 RX_FSK/src/DecoderBase.h create mode 100644 RX_FSK/src/DefaultFonts.c create mode 100644 RX_FSK/src/Display.cpp create mode 100644 RX_FSK/src/Display.h create mode 100644 RX_FSK/src/M10M20.cpp create mode 100644 RX_FSK/src/M10M20.h create mode 100644 RX_FSK/src/MP3H.cpp create mode 100644 RX_FSK/src/MP3H.h create mode 100644 RX_FSK/src/RS41.cpp create mode 100644 RX_FSK/src/RS41.h create mode 100644 RX_FSK/src/RS92.cpp create mode 100644 RX_FSK/src/RS92.h create mode 100644 RX_FSK/src/SX1278FSK.cpp create mode 100644 RX_FSK/src/SX1278FSK.h create mode 100644 RX_FSK/src/Scanner.cpp create mode 100644 RX_FSK/src/Scanner.h create mode 100644 RX_FSK/src/ShFreqImport.cpp create mode 100644 RX_FSK/src/ShFreqImport.h create mode 100644 RX_FSK/src/Sonde.cpp create mode 100644 RX_FSK/src/Sonde.h create mode 100644 RX_FSK/src/aprs.cpp create mode 100644 RX_FSK/src/aprs.h create mode 100644 RX_FSK/src/autodetect-infos create mode 100644 RX_FSK/src/fonts/FreeMono12pt7b.h create mode 100644 RX_FSK/src/fonts/FreeMono12pt8b.h create mode 100644 RX_FSK/src/fonts/FreeMono9pt7b.h create mode 100644 RX_FSK/src/fonts/FreeMono9pt8b.h create mode 100644 RX_FSK/src/fonts/FreeSans12pt7b.h create mode 100644 RX_FSK/src/fonts/FreeSans12pt8b.h create mode 100644 RX_FSK/src/fonts/FreeSans18pt7b.h create mode 100644 RX_FSK/src/fonts/FreeSans18pt8b.h create mode 100644 RX_FSK/src/fonts/FreeSans9pt7b.h create mode 100644 RX_FSK/src/fonts/FreeSans9pt8b.h create mode 100644 RX_FSK/src/fonts/Picopixel.h create mode 100644 RX_FSK/src/fonts/Terminal11x16.h create mode 100644 RX_FSK/src/fonts/fonts.cpp create mode 100644 RX_FSK/src/fonts/gfxfont.h create mode 100644 RX_FSK/src/geteph.cpp create mode 100644 RX_FSK/src/geteph.h create mode 100644 RX_FSK/src/gfxfont.h create mode 100644 RX_FSK/src/json.cpp create mode 100644 RX_FSK/src/json.h create mode 100644 RX_FSK/src/library.json create mode 100644 RX_FSK/src/mqtt.cpp create mode 100644 RX_FSK/src/mqtt.h create mode 100644 RX_FSK/src/nav_gps_vel.cpp create mode 100644 RX_FSK/src/nav_gps_vel.h create mode 100644 RX_FSK/src/rs92gps.cpp create mode 100644 RX_FSK/src/rs92gps.h create mode 100644 RX_FSK/src/rsc.cpp create mode 100644 RX_FSK/src/rsc.h create mode 100644 RX_FSK/src/rsc_decode.cpp create mode 100644 RX_FSK/update.ino.bin create mode 100644 RX_FSK/version.h create mode 100755 Setup.md diff --git a/Display.pdf b/Display.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6da7c7be2f3053c4e431f51c99f2a79f845a201c GIT binary patch literal 905778 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�(+Rlc69q%#q?_s>kmdvW#r6ZrYj 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

|QANa;0ai(_!LF*Q>6SVww&*E>ndT(<74cPq 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≀tpi<1I0iimo{Y% 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

rsW+dA=}%?_D@X1r;Q7wT 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

Y zAC?tu>EZ`;vFDfq5uh$5(^uNVynWQAx9eb@51pK>L;}t@fV^{($d0Z2)E8sqb}CoT zEHq#1#2$QjBS??Iai9%1W?o9=tN4_IuC@U(>N&x_YF*}~-xUifiRXz(7Uzal1J8F+ zMcYp|F3T#O=4>famWLMtoWDK>Q+9H7<_KS(X~n#Mx`FIh$306+Q1``TrEOnu?apO# zg8E`xow;5k#rJ&m9TY8c`kemDDmWEWLLdiDYx|YwK^&B~mb>ayc)gs)mGkU+l|!`b zrK+O(JVu4R;=7nyk5h;kU0hlZDP>EqmoUF7e{gY!Gq@&(#k!Q;lI`sZ<0Sz!t_B&S zJ6(zcU>tlwpzJ?T8gy*8zU>y_W6n&F8TKp(e7H^vz+ERqH_ztF~w}F zE`{D2Vfc!t{A z{vl8$d-nk4Ax9ASmv?Tqj0zojsL0(@)xa)_e?L>YAM=S^uU%Da8`F7i8iM%Z`-8X2 zeSJhM;62J~nmtDH?Tf2zR>Y+gy(ovF=w+&$boqgFWxK}^(!!r3G0mPPf*wQ^>AWn^ zt>OXG7z(Uc3@I!`e(9S@3292lnAc;x9#f`U%Zm|JR!j5X_HYbqx;72b0Nxcxx( zFC(SJ=&wH#;5g}kpeR$E`>BpPUqK4WgH1srv)>ml9rppFRxd1C90!*rTU;u z4{x#}tj?T>uYEy_s`V9XntF(=&4VcBBHP>KV(Z@#d==cd&c6_4U(VC@1*=zFHw6IW z)Oxj|yugJi=b4pPktwTg*P7yRE}EPg&D$l9TkcRO(DM~V2`T02tm0T&HQ=8G*SVx^ zP#XS7%Q)gItRDD?v5wzfSwIVEg$NpT0L|}GqC4j01y$9sm9t|d?y`|}V` zxCM*h`xvF)USLrgy><+?MtkrnZ)EQv-~6s7gEV5FlZHwhC`PqF*8B>R38HCxWjqX!-Ft*PB*QSoh2Z)ZDo8 z9eE{PH^td1xaSy6CVFBf%xkFX(#GslRy5J>1A~W|TE~0@3;05>54@QnA3R(_^C0lE zGUbjis+Z8+!M+9a5y2K!jzI-HJ|Ji_&CV%z+y(ERtEpLNr-^0m`j&Tq{KK&2OuHN9;tNF-ZE;_8ZBZ>Hx#2IHjM&_O0a;BO5M+RBV zz_CTU$1n<`I6@WUhX*ssd^}~#Z!GZ$IY$oQpaPxvjhR}<4u2H~AkL|mS=Y-F_^sfG zwudfTzDJl=mL2>;>b&u@lCHdZCk4ZO5KZEaqjl4LBmKbG#=43K?YEv~WoU7C1%s!W z*zszD2t7Y>UKD6KDgdM00m-{{S1b(|ecY;6TXyUfuZO==16)^_h^2Xhoo{svu;+#p zz4^XwUBqkU0yOAmzzcHC=5%e{eEdg(?01Xi4JM`4F;b=X?kd_F)oj(b#mlHS^Yzi-c5U%(%~Guzu5N5G2dE%VRmYgoTsnNrg71g}-GN|Ca-rJ=EFXkz}3`%X{3^$hHRs7r~ zYM^hJfvxdVLEY5uF6%{QFzBeBDr5ksmIH<+#pQQU?`8X`+$q&;-H~#t{|nQ9Kbkj-8+>_N9VZF zBfeqe6?}PzEilVA9Vd4f@Bw(4Z@OD2oBse~xaInmHD_G$ETOH{L{_Qdq7Xlbi)TJy zQwv_OovMm^=2FK`bsb}l^I^c&6c+WYprLFXJ$3a9+3`@-TKd^{j(8(EunwSQXHSR% z`td7zrKwB)$#`)nye%OCT88_4l8~?bg@@pfPX|8|s`rmBO*Xg8;6D!L*~`4hnN`AbN>y92KuKXj(3F5k+)zz*H*U zRe))X4}ZiJom4psy+!S0?pRx6OX0_I;vQqgRsF+;gP8W?+zVFUeN-A$_0Giximku= zj|lG+N(H*@7(46rQD|{(GV1+3&xrRFFVuHcE^{kmut9BCUS*eUeAjZ$RHamNM~Y=@ zTJrgT_&dmk+$`$hN-FQa5`v#TAYlCYjY`>mwkFeu+)Ci{klA^+v%#kFyi4|JURyJQqj5rTZa*^i7y5{>anl8= z{Xw8nuLR}RyLX6M;QRiiH$r=X^?UayC=bt=ltr_OheGwe<|PX0PxC7d0sdmD>8|e~ za`u)2oNJPo!-}WO70P$4U4wF%*3k1;DSBUb0XhK2`InS#`FYt(LAoK*^`PG7i@o&{ z^Z;=@m|j=?fB@&R0*2}8x%U-s!u}zrMV_Y&N_{}WmL3e9uDtz94fUbaP<(wvw?sT0 z!3obG=jvEb=Agy`xTvMz9aor=-SM%iyr$8_qu#mNm`Fs<+$aoZmI)n1WTcOX3Dy z2YUf*-^bL)c2(z4FyFt_MI};jrynxPrxlF6Euop*0<~zl>L901nMSZsCRY;FsnoG* z%(<={z8~T?U&5h5cer>D1rrS*N!LD2F` zQnVc8a@p_y0F#ML+sIn2OP5-{oI;8U-#ki)FRdVvSEk$vxD?(BmCBE(uxA(-3mV8a z?XS9krCIyAi9*ia;+i^NL~(WVToEmgJ%3SXSBy&8aq#D#xqx?k#x;KL^(vU<=lFv~ zS{%wDk83)EeCPEnY)`{F7ufik7mnjalSgJP`BtyP-mZW z;ygS|h#c@Tte4opjTRo@LLk25%Y*?H@7z=s!^Fa!^z{(5;eICxtRFEAv~iIUqWnhO zDIYvAXxp-m!NPir=%V|HS`|bUY0no7*B+u9%J&-xR+WPVlRWp7`$Gyt)N9Xx9>U9XREE{VO=qO-fGjuqc9 z*?IeqNhXy;Tx@h)u3(p5UWsiMpC9k_LsO3U*v)yadO-@lel8>S(^OsEAsb15Q$j&}xz zo)zY5>BAzRrt$sE1`680xIxkLQwb}|;JLPXt11E7BX4s7K$^*xYsZ;GsPg`0y}nep znBEYsQWgToL{PT~oV2zy^_|?Vi23Rv9*Vo>Xu`Hv>Xo^Bqw+?eH3u!#~ zhYDX&29~L;ijG_0H|7{s2*6Wrv6Pm&WrsfP{^jtrUY~QhX~f(MUGINT1BE`Bz%9H~ zwq=`_R^@fXsEuO=&pzvzEvUo=r>Er z<}EZFwi*}la)j5JtP+m;i(q#-Ke$z{sn>GNxrZCaRBTZdPcQ|d+ws(6LKn5aaG_kN%|F{HSECU)f{lxLPwoT?wyUmS731T$ z2&CR_rIk&;Kg^)ed;!T8t`yfWXy=OY^DG{1=AmJx?eoN?b9>%FZ=R~Tl*5mh$SUi0 z8mw!oIEX8i<(QaHH~d8P%bVgNrn#BREH+c`xU}2tZAY+szI@LEjH-Yhak8(vFBbM) z6sX1N&*}vZ&Z+_leOPe?()_~ZSyicov|;G5p}JfF<8!;{2qM;TVC-ZlpVefWUo_7h6e z%|R|&_v$OneN^57UggJUa_1`Y`JX5R9b%`C5LZj#ASQZwfQt%Lpk3PXM_p&)aveM{ zYR(>IU|8g-Rc<QhNBy~CqUoQ%;i zRGxkyG;DK@VP)vCb>=yjDhwg#F06Abp<{j`AhgClAah(?!QTR)1Y5oSprt4dx|X)OIpRExdzACr z>ZLTFdrUVA@2J~=^1;0U?h9n~%+k8qb(H)5rp=Zd>{Q}YpZftpYPs<_Eg8V|6_EAE z5{y#x_Z{Yo=Jpj~R`~G+x=~l^7KaV~V^sc0uPbYbp$cr?2p}{LkcR@gc#R4ncoA;e ztKk0tdV{D(p1*R!Tf@ON+sAVN!*Tq=;1+GW1tL&*A|tVJDQU_0BD5c_V4K}7rd4TA z1Hs#295`a^+nuzp1YQ!8sST zpkzACtzdbaQ$ zShjO=Vsg4;t1Pb@0mAuHwG%^6HxlZo2Scy8ikFq!;y9% zsaJ=n-H8B3{$Q>_zYJ~^&pop81+Nm{P2y0+K2Pd2b7vGzt?yk+7}OHq4w)%SvzqCR zDxWsJ&EA#a{^iuf8YL}7J%8DtG!C5;nhGBbsEzs?qVAty5u32 z-STVtgGYnnAW%T*c_`5;`{V9VU~|dbC|5@;;`kw+%ec>R$|%{!|Ay7G*}{twYpJt2)eP@@|WWlzF(cD=Uj-H*Wp&64OeD(DhLsMlx30P06 z<$?f;EP^D~5-0}xfLok-Acr31xfiAN1UL5Rhe#`n@dSgW8LekAW$N8`C_WMv^D3+- zQpCYKQqTj~zGY(GbqFBK(U6wkLpqZ=9A3ItW0l+WiIYH3tQI&m3;9dk)W-dV&l++DQElq}~+WiJ$& z=8iLfJK#TaOOv)4Jc%_38>dGSiKfkD4mPdF!*}Ku{XB&AZ>Tb@UlUF~Y=Bc$M~TkH zzPN@2?$0O-O`bc1;6dHyK5cu*VNw8f9}RPmsiH*WDqAbj@_%sTOHa}i$hW$WDx>5= zK0!_M0j}@}tFpTb{li_d1^MD!gbO{(;IqJZmSQ+_sM$KDdRD`I*2sm?EHDVQNYq}+ z>HWd6etVUrl*s83Yovf1IyRv(Ah8nZdW4T~!BX!cxuZ@hr8|czL@Fbr_Zot?g_X4x z?Q6J-N=GRkfUhh{3Pn~#JbhfXMK*AM*;g%+_E$fkfzSmaXp_{X{@^{J?DzhZhFb!nq1k*>`^u-}-ON#47bA>y_1P zx_x!C3J7XIUQF?D3{?YE%UBzA8w;c4Ab25uYySX}z@wVM%!^bsboT>T`DI$Q_IQrk zFdfbeD7$l*rZjwbmUzwK>NRSUn~Ezs*z;kP#29ysP(5hDRro<1R#n_Utxq#r)8cfY z@$Oa#R61(B%R#$)slw3bn~LjixrGo;oBsfLjoZ1^6Qwtwn2P)Rhz?(=M|S#+@LFA6 z^)*A}K4EsZH7}XRR$6WYg|~z}MZQ611{2gPt-8a^y9K{%C`->UfC^E~`TpV1wew!( zBCfpgkN_;U#wyA&fl}>!@XWPF8+r3m;cGitMw@*?sxqNw~ar`hJC zuqeD2xy(>HL0W7eb6?yQw^eLdvZ&hgHVW6z6HQB9veB*im@vQV|L%dW3rVYAP9HO-iI4nzeFVtnl z3&`vND(>JshnO7Zb6%h|Ja92r6c3q++mcFDst+>cvhDE(wks>u%9KujbLc)zmITyI zkhkT4??TJ!1f|;IHtZLUA%~mPQ&zW}cP~wczUJ2RptvZ22i#Z2)uieM;1;W5a~!g( zC4*mXRH&lu&!{>EjHI|m?g3oDOkV4xYCECdc@CgZUhK3Rv(F{M?E=0CV%H(mN11%z ziOfEpqYRx_CelX%7p>RFam*-dFV{iAB_Y+?Y)Yx$5qBOH#9JYL42VSmdcPzRs)p;6 zyoWPwymrchbLw;g^4Ta*a;2VEJKRuh&n)l1NsmXwc2oFAtCi-aK5kgm1-as8F2{<< zvp0_0#Hg08TjCmWIJk}h;J9nGH5HLk?Rm2>Ab;V4ki3L0JLC0N1bGiV$|P(aCduW_ zaXFlfvR!g1HzC=4KK}rzO2#E-B0GbbZ`?gIp*evM06@6<=tV030CM637dnn{e$_b5OE=U~ zl+45T5XCPzsZ1ye5S!W-Ln~sslr!--<}Mcvd=T+_e`^pLEmb*6l(t|8h|+*5ES7Hx zr8C^2YfW2;#qq$>z_mllCqO0Mbucu%zs%s$?GI1}8gM=(pP^O~)Fln`b6{0`5LALz zub=rBcds9a80ER#$i5tR2$UakiaeZ`0wq#2l8Qzq#UZ06e zZK(-M&~g&_OR=~%6{7j#a&U+4Y%gCj@TK+f7ZxmdWi@TpwL41`a&E*9sr|;aqnDSNKnttx z%%~I)wcq@L!~s^l%k4B*Q-G_#8AMdK=QG4^ue!UG-7gtZ*xh`}qWwcO+5F0FGWw__ zJsVMW-~%oheZ0ag>uy?=x8dSheI5S*$QL+YUB;J+a*9F_2nJmEC&b zg09luaxGo)!Cqz*H(dV!P&VJSvw;eZ23_#f4i7mswl-h5ITpCwoFT5RAi+9-XtT{# zM$ZHeCsL!ic@eWYh-C~!ekEWua_z$_h}{sNSLh%Dk?+(1iN!hp0CN|3DKM#L1+CT7 zQh}B{CmSO3;#KKuY8M@0=U0hxDgj%!CuoyZZK_|cO18BCNZ7BX2F`QLI)PnFXK$`y zqC{?usk{RDhQO^*#Y+gP^BWeI#}cSln{fe38tB;I8_Sdzgci651$8Jw4sP>w?jEBS zD>-6CCna)63Ig(1B*57CzNXy^d`mRqx||F*vMBkgh@o5a453HjCX$bdVLF^HL~TdR zO?3AV0*^hzEwBw&F(nhVcO8fa0Ii6d27zNJUZBobDtYfC5yg*CWkCi(@6=#zu0e#T z9hEdn=Z(ap%c3IV7Wu(jfH5wg6+fw-}pI(#X_^S{wiKd(;gyWs8+V2-TO%M zMvf6AYb<(z&Qzq?x(`CiD)J^o zrtEmwnw?%lTvERHno0}VS0KFHqXxH&6|f#PVA%X7F4UulR3S}X%v(>NY%LYE=AldM zugtNf6m!%-aH{Gye*`FP_eCuXCDJ=kB4*Pm9Zi;{$^GiwnJ<6O}o9Mcw{;lt^(_R29R=Fl@sL zh;3l^a+cj6=Md3&d4RyKg1Pqi$hv~%1v1ry)(0NP=L zkxoUf;qq(M!%A`=9LGQye2d+d*{cqswO*RJlZ<8d$AL_-ZSBTfvV}xE#+qGU9wmZN z|zp+y4N`X+}I>hznhhQ$%m8l((a_#tVVmRt{YwB{yzjB%ARytQXWETbElH zcWfWhB7_aU_Ysbcw&6gRZ&0C2_K4ave&MR==w>_4)hQ!N=!f!Rh;1D8Klz~PtT|wi zC7c%x3N3t0jlj?fb=~~KNgjjTyn{z8zxgN?6!#A*tD5l*8l8k$e+(&{;Gq=*N*k3i z!Mu=D0_+wb1<&w^oaF+cbeb<4Iq%b-tZ~C4^S&Vl3JzYLTPAU6Pp+if-q*z z*Ch7tB$7A^;aD+HK%MJm%al<}Fnnbt4EZVD|^; z8_K1Qbwd%Zi#^5w5ow!5Fe+9K1m6)867|3Rfflqa5i1_-VlnALtG*?n`;mJxlbh;O z9ZD<2*I78LhTvn7(St}5C{DafIP4mXV^1cHuM(3MQ5@tUg=%n*h#Tp1kB=7(-U7Ll zZS+0BQCRSRBFI6^c7;82GXY&*WkKgrIH`l)Te>Z5C98(L?0V-$W`$W z6rz_=Cux0<9#DsHD`>vF5ZgpmGxrQGG}oVS-)dUh>K71Rxs9r{<0B5Kzo~ibCA&kZ zG1Vn;2!KoAfdjFzVj~=~7MX`SI6p+H>!|Y#iAYbMP=BY8d_imkJIK#zKn@#N+iI)g zVmE#S#FG)Oyh?I3ruDh3>|XpL(Ez+rK>hJ4&&^kzK58OpL>Q{74Mw+7mN}UZh)NQ# z75vObi&tAvJp-Ej#Z;8wt%;sGqp0yT_&7h`%q%C%nvUWgzSwOO3u$&56j-g`#)a`^ z60VwFER^i#yk0^PmU#aFky`0ug!pW}AeBBxnO9}j=K7S{-Bn+yZB$I!B?y;Rp~vbX z4tVSLG*BMRY-v=^Ys^XwVyx;0f%|!kbkl^nn5?)1O84-vLsaQlN!UaN>XXm(3!Va0_qjlY(v3gWyyO9AO~6dGU4vz`Ov z+y|a3ukHo4httHMy!J}f8CwfGLTtB&JCWM5{SHHdv9VIC-9*rC%TE3IEuaKjg>d1Gsu zQV$|;DPM_V1|7;Q0lxnL>{8Y9=Klb4s}OygEZcs(MCIhGEvNu2&V1BCrpGdcjJ|ic zZ7EOUr4*W1Or^ob{LC~5-*c7GeAjVo+;17kDg46m?d0+BL&u0hV!^q z%GRz0X?|D%Hd1h)$9R+lK9MOmPO4%GJzo)Fk3&#zl5d!BSf@?%>Y$x8^88B#s|k>( zQu;7qLBS3gQjwg{%OZE&5(Qu|`NVo4P}{JC30!!9x7ZQTfa#DBdxEYF2w9d@mgRYm zs?(nkd$23#hz_?(q333d%BZp*2My&PH1ZJ5iph%>a}ERimnatv>_BOjx;!co`~g)p z3K4k*;?CyF?kZI-ogU$&4O_z=(gzZYLxg7x$4N|>oLpMtx~u9f4@krcI}6R4l0cl1 zUf);>`?XeGY1Qk)6eZT*ziJ3m3H?M%W>c` zbBR>5jg>dEuHz1{Q#l|0LJ)!PxpCJL>~=I_4jny5AflWiT6uL9jlq4?YhWo4Q9i{) z7FJ5;3rtM(3q8UG9%u6pF>qsXjznSMF)k^BLPb=rA`I1a%|t_qn;#@SvD+v&PbYpAS1bjtcV!sb)Dz6gp8TYw$FO9`XSMi+d!)OzXB?xK~37}P%m zWi+BL1yFg1y4V#npcuQB&v!6IVscgKa|)`jM`k@OuUBu(Od_;pRH#9tcv)5Ir7_8O z6V7-tD3@6^xI^-$E7YNe?bxULfVqtL6nQ{UeXw4kyr^c2ydA>9+?Ehq!UT)%O1h)l z7O+TsOYu}hfW1)^6t%*klhJm~MN^QBVJRx0X-f)mv&>=_5}bR6Gkup4M@50#5-Hvq zWH=j2pBNoH%K$eiIf+f>y^`7QZs8kkzppT20QcMjO*sl24;#cpE{n%dCf_|@Qs6jl zzr@1JUY;Ralp6->jB@#!t@i<2G&`LR`tc54Z-_2=d1YcdZS$-=W!{Nn^#Z_+@2JpU zH&4EzDOQe$P=K($dY51h@sTdMeqt1Le!on^48Po>S0my3j!mDv*R#`O4& zKv~(^C4f8Wn6lP4k*!^{h~77DB=jpPS*5#k5u*FMsH0^m%l`mivN@Yjbw-|MCyrq9 z%~s9^U~wJ|o>1fWl8oti$aG!eA;delva&BZPt3L1w6oj;R2AR2=fj^L5lfGtbqagu zN|ju-y7dq@dp8XA8FyFea?<_9Id7NDqMI+aYHg7LOISsmfIt;l`<5Js+y$!nBe0|a zMAGGG>L*t$5y9xVg4xeo4G)37XAmmfc!7>z6p%s67nhi}Q$XwafV^H&;$;@C^I0ph zm%q4$3ahGO$ri8iD~(X|5jMR0jZ;OT@PL$6JA_u&%g31b3Yjbq2?v!E7kpLo8U&PI zULko7spc9rSntnsr;Psqe8d4Bb6Lg5; zqN~|PD$&}Llj;aWLhSGS&LVW-Q;4oy7)dNfA-d3|;%(4c?j45 z>Qqm&IhH`OD;@C-!Ag#%yajIY7jg%knC@2p01!$T{vx!pLcOuh zfJKvan^78K^!F~lxv~T}BkongtHk7^dZ;CK`mSJTy74J#Fq8x>r#;5Kr00x)4>i%B zagn+wQ8H~7c}s+l!y17G=U-yj)G-K)u`&&;eeiXM+*s#1DBs zYm0_dD^5|Pri*Bt_o%+5*jcTz#gaI<3`r%rn3#E3x60_oL??-Z(27Iham5#$p*PGO ztActV9VxHeT$MTn_bUi7il~-zr*ztJ9|*{U`HyWCtASvq+kl`Mm;J;PX!xH5%VC|L zhCYh}eai6m?cY-K+}>ePE26$*v{7A7(ef9=G-9uCg0h_4CF4n13K*?9fq2m6I)cTg z4n^!6U6D*gaOx5V1+J)-Gx{NdRcEgd%O!x_mk?|rx++l?Tp;;nut~e(A=W+G3^8*| z1S^)Yg|q`K^B(|Z!^Rm_r_J&DfcRZGvLDJ5N<`^5#5+ps{`r+)3bham+-B9$Jt_FSLnD*py{F`+Bu)(I+&1xw6{S|j?^XTltrPtnLljYUbS|e7-G}Z-Md55K~8)h2F~L>LPm^K@#~6Ji&Ps$SF6z zpW-hDQ?mo1&RjsxoHhi&RPyrGkRDxA%yqE4cH_wv4d2|t*U1-dx*=%k{6HK6`q-2f z%I0>i$5`SsJgPMhhk;r<=nxz)JQ8LlPm#LzI>Ly!~;ba;+UB{D7J7UqTc}Q4k zTkcn`75gO$!Cqx70*-rF85=ixme8Ab1`NA8=Z%ex(!0$>2cQ;PEQO`9W)p!mzcA@# z4yq!;7dgZOMjqc2I+fWnW2ua=th!T7D0O?^5N6|EI=N&WLbAoHEGQ`QekHT+X!!8} zdMt77Zc6)NDNBG@9T0ir#}L@A@Kga5Lr;i^zx+UD4Y?Yzx550wkzGYmdfk^PY~Yq! zUogn9H=*zNjt~dZ^Awg`3i^kjDWix91+79bKEo|Td{R6qrq%^_$oh<^wusz$-E5NriCjX^5lnI$4@%0e77n!K;p0o-1i<|y#N#Y+Xu z>NmQwpEH|Ssvu}8!tP3tD@vF8hs<}uii>l>iq&JyGoO{JAm_1OSO=P#d5rLYxC+c} z{K_(b$<0CId_rJYbr_P&+?La6bVmvc=5Mg$&BU;HW!ZsTYz2kqb}*qHyNRlA;&Gd& zPxTq=*J$cmNF!Ad2B5cLkhJKOcLWmFwD&B1KT!(B-do8II{;{75Z@g44w&CkoW-u= zN^vzFL)=m_*#lRd$*k~-`<;YbG1_V+ic-*wwM}_*Aiyc!^#dpe3FW6H%to<L5gSs(Fa8_maptsre1sd>#f6(v(0TiXXfw14lRjX2ZSzu!TX)w{KsfrA@aXd? zYnF27)ZwH~$Cw6$~^fSxJzbcUe~C?3kkJ`++U0iRKiSe2)<{QoC`mDZ0z|a>%Jx=%0wH=&Y%H z!q%;6eL-s1D;F(1R4rg#mpxbqxo1>c*X|y)?HYW%#Ej*mEr*x{3B^D;#pUabj^HSE zyHirG^GlW+;+_8h?9lu!8lQidfo-by7S0#y;HtuXLcoX|tS%h6XAuKCM;$>Or1b2% z3g=|7@n;w66Q}I{=0yrT*Xj-?llb|RJkT64NyVX)7!>XLh^l#cjm{n}t zxttYV@@38rnt&;#3w9{L_&Swuqr|%=t5Bqf9tQz(hn2l}m9|Ux*?e?6XAv(&AH)D# zxSD1777L)E5U7S%5zKAz46@F1`+()i*O}9Cx~YN<9xueD0IlHh6M1upEu~*%wme(R ztTd%f->$1=3-Rg!NFRMfs5&;fh?r+-R~mk!c)Go~uIbMKIB||#BwAM;$z(6RsY1uT z&Y`!_TQA?3px6P$Fd#V`b^x)&xn9Ah17}P)*Pjim}R`4JD0|HIpzw3_w4*s89!6Fh^Up+(MQ6?UpOI=9~DPAT5__uzV7*z$(T$a0d@S)NYPBjTxe- zyk?+=U%}EKNj^p#McD~U46$vYrtSj4EVRf3YVA|-tn@1210F}3fPXx(zz|y)PYzmcJ8&w~ z0?KCwT&xOnkm3U?jTtKij`4wN)ME@%AE%c^!8d{<7(_S@Ai+V$sI*&4uH^C*E6q&k z`aI5~yCFt>kxrL>WdjX+f`HJwj2o=JJC8{|Yhnm5tEiF%j3;m%d>pUhR!sZ}UDds9 zwgr{6aXD%6d?2um!d$lwB4`w91)YP!)didZM^LA+o@UgB2QMU`3n;cREQP*cUPTX6 z5aKKbwvP+}S9Q%aLnTdzTcYETvQWo10dK^~N=AILv^93X-J!Rh;@GSk)ox?i#s<}L zS?>#sF;?LlZo5QTij##vj|SiK6r~WY%gC8|4=~DMK!eZRHdYB)!q@ab0S}iq8=9w% zW5MGa5w)Ur>*4-oD~|IOk3N}WPF`Gy#PVOcUYa(?#3GBruH&dEU4=mze8_qL3*`#f z1<7hQrPj|-?^GYmB8{RdYTKz{=^*__cEcI?lrp1XHsj9~ab$ocO(nuh2T{n7?O=@< z0oK{W^%I0CW<^TNrEIemC514!3KUOPQd}K$-5P-gdf_R)Sc-01Dg+9tgfztga;4T0 z#rTd}MG!yS+5VE{XmsyVnN`9#&?j)xx*JL#P&4rbj&NbvB`R!ok21zW)K;0;|Oyc&KWsODFmW#?x4>Iw&!f$k-uCEmn1 zZG6S$Gr7xp4+K+#hwthMu=tm;3Tv_=|Jq~~vlYI(wB|6xD{C^SVK)TzC9O4abX)%Cg4khz$>hikB^* z@h{P}<~c`QIE<#RvUba?go;xvrPj>N250#>TIK&;Cpt z%J0KH7W~ARwEKiMV_%q77Wt?cZqf5Qm;V4IjJxc~UR8BhDwTK}h#JXl*#(OlqgipV zwN`z_E{wUzx$)+DYPC>A*+(o+W%j7kRNuK)`oowX3M6euxB%_1@6}7rIs24K9pzcL zZzXX9j$=XiXZLNxHh ziF#|KZP`%`fwr&l5}H+UL#gVAi0uOJ4q#e>IEZGo=2|U^)rhL)+*bhp339f)TXhb! z1P*aI;tslsd9}>hexX$42-`*GwpJ3lK&2Z{{^uLOAX8g8c04FAV|EIl?G6{1Gj_Mc z0Yr`ZjUd-S7!sPi;uW!ab4LPMSVLSAk9Sg>TN3iqC?^9S_L}SZ<6;g#f;6e8W68-%yuI=OR|}>IFryOE_gSS}3}DVNC0hASG0& zv(XK|F;F0DQTer579pVr>{x{CdP5O_7_W6#QpsguR0c~mO1qc`54)BZV_H65s(0C@ z)6``_7V=9@w7F2Cq%5j;Qg%_>t(PXY`cDi~NlBu(KZxQBiLI|P!4M77GRr8SQbN5o z&SXfCIRp5b4UP`_hLWV0=2@g)mLeUqW=sRAu{wjyq%KvQw`0mMQmho-%yJ8_(i#l~ z-h`zMoB2W|Tgtt}wE@`FTG|)W2Y}?dB0|Q~oT`a-19zXqroByG{SmdsRq=C@xNQ?a z(ee>NOdWZE(&HWf0CzC(TV05z3a6Mm*?F)pyT3C6x~sThT^#=azc8>IAd~{C z@;r`P>Kx}v6im-&XfzA_ooA0TB)*d8+J5Kxft5o)NPGL!Eo!|!kB(J z1X*@|WyDacL+&_OxfR^5*By}qZSJN3`MdqaWvuYCOT2wU>ipaSAB~txeuz1e?b*e9 z675~nDG~+R9hU$F!Kf;-BpyxWpkSE-02E4R;5+1=V)6iZxv-kpdSC{T;+%P$UX|9q zpt@Ra{mK=_f|j$GBFOF)D0$m4ro~f%;xht8Ab>D8aT&ZUD!3}@U9_c7`7aPWK4FrU z?ZXfk7ndmB1pwI@0}B8LElOWWkFx;M`sosxD;HsCgR5zKEihfH8?nQgcW&=X}-O&-3!&ggtrfiC3I4O)l8sERUPJ~l)bhv3oW9w zcSPHbBn?*x&uFF3ak8H_qZEMFv2bhV04nwgVtcjf6b}^3u|J67-UoM(`UNuaY(67l z@RqDBbswl2Sk9sMZntiuP{3fBGF6uf;qBmrx4NmvJ(cbgKprksjS4OG#B(((9)I8R zQ)^m|)1k|Td=ptIcUNCjEqEuyIpuG-#Z+y@@WtpmWvwq9xNtXJd`6K+(V5y7oJwD${6(x- z<1##`Dg8%Ct?rnL^3#9ciO{np*e@MM0-m{!CvTU`RnpJIyJWu}<{f_14JL790#Lg= zKs;N?{{U^&w0K@8iB*>W08v`iUmmA3y*_FjoQuyD?p#9rf9$&PP4x#9RruyPDhEl_ z$yHNm521TDRRB}7N_z8m_cY#rP;GNvTyMn>$NPw-C+g+gunvs-ulp52OS?z-jheK& zncO9MUG;FH9&e|Z(YmADQQti4T zc=0G`>eFvYX|49Syz!=T@j&7$6F%?P)K zx2y#?HHftf6I>EhCg!^mv*Zx~+k8ZdmR0Nk_n=r9iRJ`>V4o6;3nl>EU{OmU$8U7_ zjTr*pcMXE=slm7Hslo9YyH5nJC4zH`g;-ZVH!6U$kqCKfVBm)v&#A~3_SASd7%{!0 zOWYyDvW7C?!k);GOF|9EdUz^{wQFHk9krW>ZS1JATW%WS{lJP9ivnBjFkJrt5Yo$l zRqJRVT6NTRt;Z$vEMg(e{-#By{TQvAWNDmmC?gDt0T$b;@WO>c)2Kv{Mc%+N$uhS6)GxMcLNxyejz-t zJrj`9lHoXS7}&Z>@65imuvgEB(4g}Q?>S-arD!Bxn^p!gsK)th-!YF62FNJJ8BZjXLqZ8EqCXqBIQ%b-!rxOR5Lz)+mO#A9ur5lj5Th>E5Z zSZQ@d4^pZ{mog-Y@MZdmNl-CBy5s6zfLvfLxb%Lb7;42S6U7A{Pz;bHUg{~Jwrp#r zI%&{x1Df(=3~g^vM-N_jMmeOmySNOe-y}EGc!banj}yBNsfU#zESARA`C_U*t+aJ0 zxj^{pSr<0s4`fk|6<^m5x=ZQ$ISUguOH@4g^unw5pq8YyBiq`sqC=WfbcX;KwT#kHHbPv~X*O%7K zxbhXwM^Ne9cvsh{SEC%0EVUiOz{I; zr-D!dq|1t10Cjo`;#a*s<}AyXX{Srq#MOa#b(ALru%#i}Dw4Ua7*y46hZCCE^IXJv z4Yy3!A6&r7Pb!`w791vbE6U$5QIZ_+88=rAZxLHX)fLydN!6`bq2!($g$9c)cw8D} zTK@o^r!C{eG)v1Hu4Ou%ogG5Ja$I!d9%3gRpAn7{z4Xingm$9XGW@c{x*Y!i_9L$@ zXEi-uIJ%ETee(cj>Z!V7m?=?I2pCOL`bauyYgaZc&vSqgS1s1E!V6!GQ$!(`N=MR# zqw_xh08T|_=v=5LS!LkvYomNX+9K^z-!j17k$k|G1OEVWT2m2n5g~^SxpEdbdW5&Y zMby2V0Ks*TrGxD8uj(-qTe5QKUmj;2FvaHMsAco_7lOLa5cZCV-#2EJhaolMzf!=p z*1N>+T&vNSI60TmD)!N}Uf{Mbxq4FRvG(2Z+({RgzT!}K%_N~0$Let4*91W&jeejF z(gLAeZ$#8;ioY@N(Kq5yn*}-IJxo!k!(4tP@10$DKe*h`sp=}O_ORElSrN|SR{)LB zlshVG+#qPLj~*w3FtRXEG>%cpgiKX;#l~JKazgeBVST%sRW!1IgW>K{tFw_%g6|T& zUVDqZhX`RVEDP5!{Dwls*bo#)-1E{td0(hgPVG`N_ZezUqihB!+oV0Msk`?W5#5&i zqElg{-h5w7CXmd1I||(234}Ns1ND~uqQ5GKWMq|D5KJ7D70SPHO{TRYvRJAzB6C$* zuHh&&ejr3>UQ~3ij%r$EpFP3SkB*3HrmL11s~gyYtSb1FJYOBf9&qdC7`8dM`BaAq z$En!r3VgEH4KF(8HHzn=pkZkam8xI*2Pc@cDz0iNeQ>?X{@`vI8M@1fU>i+kZXV`j zqS($#?j_lFR;gBVRWrCtnvX$>)08TK4_6$9sm1FFx@m7J4GOANd_h>YTk~;3)|Ewh zf~}>Vpd#zh*s>BUlOdX4Lo6mz>QJhiuQ9iY*>D2&)S!r6JxX{7*%uNL+)^%=7y$bT zs@)sZ0Hs&Q9-th~7uBc!Kzigu`h`b>-(H{>Z+3cu*MWY9Ahb2v9sxIuAy_T>m^8XC z<}1MtCBb8IFtqP}8EM6-v8b97xD z{KB+MTPilqg?Kn)a$?ban|uG0JZszn+!Wib>Qy^inK3>VG`>IM#R7Q5-cuL zPJ6VTR3Xe&bxRfr*SOw;eB8IrUPLI@t%}KF93Cc)DdJGQW{palEk>mf-}@k?ZLQ-G zmuwXCW8sEsi^Xuu0ndP}Cr*O2W-Z-X3!jG-1(~jM7*z$P84L#A+Y-gM6^yC`1pAnUK(Z_KGZHSRn#HX?T$SUYcm6-D{WD?B^?7&Jwjz+mF`gybzgDnaO_%ZWn3gmM>A!{uu6^%ORD6N=$VMhJzQ)1 zWhw=(M|+Hw`dMj#qY)Kq&!`S6LFIPOEHWE3TyT=XMQhv@P~aW>L!&I9AV`0?`Kgfxp5oj1W9cl>TyBxwmE97qU~~+!EH&c@=2-jcAcxcqNM(IPTbRt`_-$ zpmO{Z3qtw1?z?y+FI?fAz!JIJu3{8{aTDQ}39(dhg0+Nd=Eh)|G zvRWzh130az_Z`5jx|9Zo^ne9A9C(0(ZzA9O{j+9@di4Ur-!wn~rFjnLHVX3|1C*M9 z{7Pq%RLUGdyOj_Sv_d%i1%f4U=YmIk1B0DdSxEs^COlxNRJi!(8(5pUU zDxpnT7M20YxJK|8O^gsaQ4@-xfW-o(<=cQUqiY$$pfN{s)m@bwS&CU46`0BU5nMn} z`Z5U5?2n4>6=U3R61xHXj9eLN-4@sC8%4jgriWF)K7`WQ`mi)^>NTG>xr&^`q z8H*59R4OV1;1GWj*Dd$k)VEW0gLjm(JM}w`4CK|ib>b0ReW&pZ(M9Jl!kpcCix`6J zOs9K*b`F_p9NrkM4LPBPwyca~83?90h(4L``Uhj-Z8Q`P+!92lkjO zT5wk}y&C1p2xa6#bq|S;F5Ps0vJZj)IHE-DF&cGOso-|Ik5w|M>UOzkf4G^7=1~%0 znqNQf`56hq_Qe{2x?)BFX{5m*BiwcormhjJJjdXQ-*A<@-)JPNwet_6`7Dov4?bR_ zlUA3+dItx_{lity67Q8g*9Yb;EaLJ#Mz7kjLHd7Ej@sM4CkI9WR2M8cSNN2siRC1& zAxYzwAX454J`M;&jQ|V6?S@Ixuej38EcSd#YR6Sky>jo&NxUnbqDwtbpl_HIzz$dXij>t} zpYIW@B|Iw)4|zPGwr}b#E#Eem03~VgovJU?OCUE_!~;bu%gl9EchfA?-Z?1wmqDuz zk3Vwv=S(FQ#4hj5(15@W3j391Be7Vwm#b%SPo5%E8?LSh1Q0)Rs=%r^W|iZZYL<_c zg48SW!%Zk#s_Iy43>QXMi_wL=G%*2GAkKw29380~pC<`qMSx-vAz z=V)F2&MT=5iUwZoZiE^y}vQQKYcj?M{0G!SA=z;Xwg|Xn$+bI%@MMHZYkH<7LB4bU03hvNyPJ5% z>8N(sriLbaV4<0o)uR%CJFJcupD~SZpA%yCs)>FjJ8MD3rTt4LYOQRy54(lU1>47% zRh4^AyfAB__rN3m(Q@h-+ZABxeZuS{0vBqz*yAS-+zkjtE|2!YzF|Y+C2Xs)fmwNh z%sLu6Oo75RP`P#lYzD?(xG5BZ-!C%0(d+dPwyE<9@OxizsjIEhIf2C&%qR*+`iP;f zUx=o-;-@HHo~5g*;|f{=i0gl94kEh;k<3lz=vDfd8o$>GZU>WyWmh#rZWXYzdr03F z^vYepHZ&tivzXiH4qAhy}v~bt%Wj$2}#^h)y;uBaIUCittysQk*7jMiC zlf8C!l2ABGi&F*hakbnWN+=IOM84`e^8+mf5ln$X?sw#7r94}6OUKM^5nNlgUN5L7 zQ(OVUtDTK5WQQ?Yl;)wqO}VHWOB$B>s*4q2L`h4-2oK+)@kt5VAb;>QoE+=5!AH$CGycC2Y3)HVE?#4?M%{ zN_rNB!tQh63L`{CDUL7I{{Ru}07T+CBK+%H_zNN2QM7J@Mj79^$2Ci2>Ffj`=e0eBkB(z*0Jnj z)NK7rvP3p>P*^P}p(|ieM$~h|BrcxbDqBA)D00f;R845&>MSRr_KpgnvkC^tr=&mLk|TJ9qEYj#gCqk`f*iYg7bfc4B5 zZQ0fNm1C*xIbwt<>-Ex398|ENt~5#71XLY zul~e0TgLSglY_@32ZgtGit@?}Em&QgZ|0Eit85W2$m&ohOh{y6^t zb1K_*MI3VcTo4g)0?F$V35WsRp~N_l&~_uM(Iv*+p|A?GUL|tS{YsAuW#vOw*LZ}q7h)C_*Kk~= zH5EFSl?>bUFT1UVwwZqu0><88w=Zacz4nbivKlXXLHaiV_2g&g-K;2 z#YQF+EO=K?iM(xssj+s1=D6QqaDaO7eaDnm*OF54tt!F9SAtX}9Ex~rH3lvFlmue8 zmSIpV<7!tJ#K=|jWkpy=BBK&wRot<_qeMYXypb04+(iRN<^c?%>BOk12aD_dQ7?Kt z*3LCj z8dq6pZ;{O7+ZBhah#rlUW-r>pm5Q((BNAj_Qi6rf+X&FUqYTPfOAwS*R3G~Sij!7A zsFe_8WO!X&!bP;9>Kv!yHJ#*LbYMCI&5QxIH|ixi*HGomh~&Zr)VxsTmG>Fx1M6a% zvySUwsYr&YT&IYS1!>tp&rE}eK@+-aj^)KRld%Mq-BDK?Iucp{$Z-d#18SkiP$K=! zU(8yf!3+3Q6$uO4F7*bv(ln`A;ls(TdLT0+jbFI*D(KxYYqdLM4azNp{KX`#>$!6U zMK`bJT9A6b5K}|pJ_)L}v;UDEmbiNr0eHfNAA z&$zVO!qx?^)H9bzWFKvOS8mITUj(|jUTrj=5XmU6bqLNEUSaqPOo5;j;-QgXMI}{3 zggr)DuNxSPuR4u+Wf!=)q6IDH>J0%-LcemvnBxR@Ry#0W!%lgqnha0eFbp=vUET-5#0u>H0JxYi zNcU$o*He5^_22x3T~@iTbCnfcpVSMk@1^D!ZBjs4d+`+tFgWfig;8~58g?A)QO|tD zw^vw^6s^MRxq7DQ;E%hYdf8<_ybqsoFKe%GI)}vC?h872uLMmk9Hk*BJ%rF56JKz3 z&AGYYOMThu38bMP1X~1a+Ixb&m+EXW4}Fr$N~gPEy4reRoN{=L_UpQU670X+6>G&{ z>@wEgk5bz1s;+iCBgut2^BYz#FT?{*0-J$rig<@^W|bB^K;M;~r>>ke)M!@&sS3B- z_cX&&>a94edzcr0QR^`ClY;VjVgt_{v06GWh)`E&e&eN;{{SV9IdYE}G`;AHMZIp! zXeXDLG!2|b_R?cM_r9ZXyC@<$1ftQuiLGE4WXhu+qXHCVwDk}<-tGbF*DPQlv&X0; zFAuNGr(AJoQES#yI0Ddqpaad%D#3G7we0R|Lj_kVs089q? z2L4e1xibYSQXh364n41O=qk?ARg_S8;w8zxOt>Hl3g^^C6jTu3m{@6| zXZeC!P_q93QtLouao_P0`WR~!Y+I}1F0A_y5gpc$+d~f#c8Y7TltLN~=R8VzdL`xR z-N(tVY&elGQ%yXT{DelJxUl;-_bH-^D8-il07O(|TId{)^#Kc_>h4k-J1OO=IJUpI zV!oqi=OawmN|9nRvDXZd!2UxWg5V?WS`7^U0I?B6d5v^K;VkD$tfYVznPj}G`HE_f zQT4~NCHAeSiC#oy*Akagw|Eg1;oWls%i$4Qy?}|1@;rbaP^XfC;Uj@u#<_*x_c)41 zQKRBo2sG4o(*n%5BxnXWt|1Z%>E;;g(xu`d4pT~qz!3N$gWqv~>39gua7#i@pt#ks z`xCRY=ZSG@SqIX^bZMwF^T@$JEt#cplP0``ar(Dy^(X)+-#kU$vCcJ8*JI7LARubS z1mdvGb1HeR01-j}m zYvI%48^IRo+@>0nr!F8M(|km;>IJ1T#+4Go`ofT1KP?b-zhJE^;#3fOInRO|fXQZ7Sl)opbbrpy#-QWA_!j999ro&DB%u6<=8>4rHF;2fVhxV zt$F>x9ES@w4V-*O5_8^xlUg<$taS1ZTwHEL^yY{f=B#%sd3BLqmv$171j> z>ngTdgFtlbu}Zw}kEu&dYY5O+4^oyPo!1a+LZ7H@9KDj%j1DK92*P@?nVrj1=6xCCBA0N18c>e8hatiDZy@cHWH6&nsK znAmvoftmz`-esI%r@KJ{Y6tx2W*8> zj``(=fm%3bm)Au=@E2-X(YCw(B@;_@xP!s{z@^Z?K4l6mz0^mrdXy~ROCQm@1&)BW zh<7g?G9@4YaBt!cx8Z@WbqgEe{^8}dg^{euTyqYAueil=TlFnX&S6;U?|e>(s-(0+)go$wHoms|mJb8nLZqcUvXvjraRXo|Z+yU^I4$)R zA#3Uzt0~v}s~UFRG+o(G}l&01_PIkXeDst)3V}IoKp& z?10bed`xg{wC%)%GlviyF2~X#2Rm@tDJaMjsh}q8C)WvVu`L(qhX6TyDt|B)hoV>$ z1qF{wX^X;jMg(l7;NmxDhp54{_lYo#9vC*-?|vSj&}3eV%~rzw86p1wjUiZK`MyA^ zFV4&Lj@?HEpXNYmLH0tVrEaCA0_}PJr-Fw5V?vc(E+t<0xy>gZn6-m1#3)Z4!xYt? z=LoC#h*}SWiD;+pP%%e|sv7Xa*rJ2SGJ+HoOu@rK{{T=mV`YKVH_@ZG z$T#79z)%dQu4R_{?pZD8TytKd;aBfbQ3?G_t^?UP)C;VQcebnHA7Ba_)JHdZ124gE zfq9&|a$R9lBQ1GPnMO1;TDbh_QSKMhyV`3zWj7+WgLWmswFg*r37H-#a4`p)fd{M4 zGQi&~b7CIiR@d{~wPERrs%S8Ii=d@ls+XLL!}^2;8x{Q`LZtHDdxjF?o>d2j!BX(P zw)>3M+VRY8gMi7)3FjvSpdOg!%?^orVzP+vRsR4t1t(2iT=sb6^Eax@BDg8HnOGcn zy@1%eS$us)rByD23&qcuB*OJxddQ_AecH}y!RIBbtM}$oSiI<)(BAw*6AG-h01L`% z;D}JPyx(%2y9gifu#6$zF_kuHj;NI6HuX@JkN`w>HUUf`gG|(x?h) z;$?+fUG);t?bF07TC>UA4#rn6Q3lawK4Fd@Z&0?DxTlZ(mUVA627>AI;sBPf6$=LQ z#|bK$L>Bhf(b<{Me5wUrl@(ZoP5)bjrTPz|gCs-W(1fNwFP8dnz) ziVO$@X_(mwbwScwbId6D^9lsM={x@baSm+#0D{fM%P#V*G5NgLS_XY!#rY$`lxg%k7{{SFskyY&-*AC>; zDFtyN0k@mDB;NG;VY;sN7gI7?RffZ6nZ;^n}&l^*5m#M2h|@i5s(F|Eq=76O-P zas8(XBeaWd3gWE;$~i*u>w#Lu(5D0H;b#C00S0{m`xPFJ!4aZb*`;HavLOt4E+92b z3z#*cxkL*WxvT*o;Z|`F2baoBV?BtW&Ug{!B&)J51}lpfnuYe$`XB)Y-I;_@$(%!Gr8&0?TFT;Fj-iY^E{Z}#q_`+6 zT1^|N$Am~FKnm8SBfX%94vT}hf~byJzcPqXOU2FDApZb|qH~AxQYYiUpvt?N%*f+< zmsQbO)aql@C|lDit!re=%&8b}$I7=2#~+m>Tr(Hv-%l z-9Iprx!SmL0@y&UWp>3>{Gd+*HUqU!#VdMvShy=-KyX_VY=I`NPx zM!U!~SIG|uQRWiqcI!GrZzafvR$^~ zVVpwhQv2~Nlx;qpPlYx#*odEy9bZOD-)4`jtQty7ULQP^$zv>$pHO)j~U~;n@N;{Ng*-@dp=8b~S zJ|oFhZe$+{{{T~$4=gQwS5-e&c#YF{eYKG+-99*tNwu{s-JiK-ioSZ4MaRzl#c;QV zSxx)uVZ3g@QM#Q%&3=eB;~+qCYRY9ik8y^Lt{cQiHBR7poy2h3diMmB)67%@z@1A) z^Il+uZNRFvt60^=KbfYt=B4g-{$Rl3{^jQQ8W=Uo_}(D4*_e5NvZH)%z*?|NNzyV` z0o1{OxToHd=-E`j3;W;sD^T9bmi%4AKuYv}A+HPZ2SB_Lpuv=b4sZ_IvLckA2Gn5w0SGMUN3J z04tn+VWxO0=OteAsbSZiyP5)7cYmm0D+4Krl>v6`vawrLptzzc3vz&T*j}Y#G`n0b zIdpBO#NArpSY0FKGK_#MvIDFZu(`lZMjE3l%18={Z{(ZI6nw^^J>Ynjnc$2o&L^2? znsWUwXyRLbcDI_+1Mp8ARJYB*uSEnu+P8CLH9|xEuKnDgUz#?6_E@JE!XeIRA zJku0@(omQ3*=dhBOxxpV-~o9>38ec{kVSiP@Z~7e3SV=A13Bv4vqV+bF-Fx#nb{mK zBUGbhlIrNHcbI417}ZOmWt(N;1Gm(uyFE?-HLJwjpmP<1*L}bn02#4fkqy}1SiRpD z6<`QiQIHilPdAaZVk-T@q?+}dgH8@1qYCV5)LX?4_>J!+h1J8V{E`A5m4xL*yiHYm zKH(L=2wtw-M~eqsvuRKWeBm(JVTNx`G~mu#r5cbn%d&LO4zmS<_#fN z;!rqvw|*kcu1q1ufZ8*-kyAMY$$tvCQ&4Gdkz7GaNl!b>VIc7X1FuM30G(bjmQ`Ym zxK27%l9Ahoc$Wg<_#w<1T9@o>ZNFBf9n0E)w(m?v21UULI2O>%jN zfyHW~1xF8wc5M}4>*ic3GWE%6m{OS$z|y>A(SMMdmh$$-?u$=MyKA@Z;wav~a`Y&+ z*wE=O#JHn5e9N#9H(>!>&-YQW7sa*18$1=^BHPjfL<;pRmCB_QF1((8BLVX7m<5>e z3UB^FM{f0}nYPbrn-Eynk2f1lR>ho_knU-B31FijR*N%w{{UP>;PbPehd&a4Ql8H- zdU1JDh}9d;pe;>}-X}&LqSIrJ_?&_s3VDvae&B!qJz{5hd_^F~W*q>|MNgj%}gU zL}7kEQ%f3Kt2==7UE(xiy%MAGapV5Y7bi_|2bJ?Uc^tp_1f{C}WyAuW;G(=y5a+`( zqd_e;cMdC}6)fkqB34ShW1{lztZ;bFN0v}q5u%8Z`&_Z6nmghGiOaWTTV{hVHZ=va zNHjgwVR2Ma6Pb@3^xnjyuAXcDO%^QqsI9KuzF-guZbB<7M}yP~{{X+@SR%?XNDs@d zXTmFw*z6N4jfpdBV}z`Og{M%zH2Wo6JZTL}z5L8T)q096p(?5YvJSo?4+8SM#8>vR zsse}DKmyr&a5y}8OM{^L<{s?}VcgA)Rn^x~Cv}~*vdOM%ySPJ42VKA+(a!`(d=zE* zfG`0QxZEYhuGCX`y-WH(4VQ|l$)Tn5)F^?~adF|?bIfq;Z*R<{ev52xg6fC3nCme- zOJ&z6aw?AxA`r1fh-vZ8bP*2bLjKmGj(46|OF#A*JdfXSG$p2Ef5lj`OKWGzHukL${c);65T! zf`O0Iq!fu)SFAQGjEsl@x1%UL9x@;tYnzsu4H-iYUQp@g88|ChDEK~P6f?3q0X+mg#7pP$ca`_-M^_$c~@I*O{ zWO-G^E?UGPj+|?l-L2y0u;bLaQk%YcCkUdry2+6->f!*E*06vb`RZfi<|eNLjv`QM z?%;BT(Gu$;$(1Oc%f>2&P~$DMd{jlFPQp-mRP#K|R@o4i?K!yhMRt0KzIP`I;Cf=c zvy*7?6FTFlizSchVBn}GsPVIL$n8DLsla-dzo&5%MYX{IS$Jb;N4Cd@EVXdk*Y_?4 zgTX8^!@m;C0aGlwhg`1w!s)kdoT77g<`p6FC}=L)@fMZK+sio>viYc7#iOt0Q6=yT z;EKv`!`y5yjN9`966ni2g3vEE`inyvFu6{K#o8iUTch(Th2A;1FPiDDBUIHn*;Uak z?^Bd0+Ijen=}7bC47m?2%7sn(C7@9E2sFFJ^%4->aIhZ^)$EvbbCNe|8- z7l2O-`-7sk<<;E@+uSb{x2~qD&axX@W$H8)((?5wqSgNZGiLc^Gk_~h2s-o5L@GQ* zIA_cSoi8pKfM2SJtEQe}QdaW<>;_i(f=#V?i4jZb--%$;@pFM1qwYPB>wu}qq4NbU zS!V>Ws#mFGZ-DXF5NTZ7Y6xP^xF@Dr%+j&&Tr6q9wcJWw*8>xlnVQ6wGwR}YmsiX! za5%`cDQ?<-F?_xnn6>NNV&R9FfTo00@_AUSTQTL>Rg33^h_Ir(Fcn7}jH@)Za34f3 zXC9+vXrHJS)4q=rf^~WBCHcGClp5ULc$#kkflI60i>yD?u%IjTI2K@BGiIr$#1NrF z-O8)udGQ9QOa5b%Ujl95vy0dZB2fI#DIMY>ptSOCvVhVqSz23l%qxQ0@0oX;9K)MU zUUM!9ym`5X`s&Ydet3xdduZYxfYiPqUQ6!wUy={!+zUfrQL4V@XyMcn>%+jxCvJrx zLhAnjxoVPcuAri}4`d`sTSEn^^oc#uRq7DTYmRDAUMMA~w$kj1?N*pXt-JHoEzR7> zEUpel>I+HBsM7a}s>TAq39Ux5rz)%e0I~8BR`JBVP?xBFr6RPK!#Utl*AaTY{{WcL zjZNZoP7ZGp?TPUXtApIydwL+*U2_Y=Jg-6GdlYvkBCO_^QOz8b{vvQeUx+(58nUAm zzh|F_4h7C|uA*$=uHz-4=>B}dAXyv4Z5BI85~T-Jy@=@x<#xqF6~y2pd~4j&TijtN zpiAFAAXeHOTq!I#xOA}Nd6a3-lv0T=6hl-Yt!^`5Ybgp-k#=MPj$bh1FTyk`7qVvr z3dC?w3sDPbT;DxFl^2YH(Hi4rvXjWV;uxoQGJ?M!{gsXdZev*yiVx6uoJELe?6(s7 zrf4p4OBJ|U@o`Kgb9}%`baCcYu&k)2RdBc+2^YL08n>P2nZQ!_D&$Xza?!nzK9}Uk z7(SK6Q{DX%-QY@L0vB&@xb4vg^%&L1z9!6*goWO#^8o`is95O-n#1#70l#9__JUqoF>FC9Y=ZG8Bh(%(Ht407nWkVPvjgVT(gklT)MP8l~2ZL{_x$G&BAiGC3{6x(L z`JC;l;3`s5t@&k(GA%61yJd=&L!G?#K?dn~MJ?L*bpZ*=9-LoNm$=KI9{k-;CB_Jp zS;kbLMBr}KN^t)G;;-#u+@_b4rl>J5vPlQQ)boq)E;BNdw)OGoV!k^4bc5D$1 z+IW{#EVtq&+JVfVP{ZVkz{V+RznO4|Agq8^;n$e0=*Gb4w%XGwuj;re2+?n=i%VTG z(PN(6h%{`zZX=xe>gBI>%MoP*%iIGho8jgqVlSUbvzk1{p~G&jVGHn`LRUF83(qb< zxEj2JO1{iE0kuDU@_|5LFikNO70kPM%-FQ)2uNa*I_KO8{?{vQrzjxsBqz+8{wyT~`nc4?DvWDi%vC6?;+O z*8F&wQY&6yn-|J&USNV%b>)q;x(*oKr76{%!%ji{)Gj}O^(h5sPOesjx2~eu(cvFK z&Augqo!w_iO;^QCZvGPj-aKrwsRwvwyTWWK$4*&69=$}D56#pMA*pH(1A&*P6o3tx zUx*B@PQ6Nk74bc_e4b@B%KoBkj~T>7?fl9B{N&hs`60s_I%cuHY9a_5kz)aOm&8C2 z*ELa5TCs32_doUv+m7!eX+$F1l*QL-XH&4Je=)1dr#>eOdOrUEQ3ZIW6j8OsvtJ?N zrf{?+m|0mVV}3w$8mgr!KlU)RHTg00+lOHv5m}U@2usKTNejEjdtb z-SZJS8?#S|o;T!=cpAfK#Po93_2DOF~+tk@k4m&_-Uhtp$F_zKU z{yzQ{gyv$4Sf@J*wHpspc|LSiWC!rn%PsB}R+z&OqOVmcXdy1*(ebXMh|x zv4<(YWZbMu-!jG8r5D5nS6piypCXs@EP4Xv;#o?!uMpRURLRKjb`%QmwBis;3%t2! zMaWXV`XvI*=Q)F+@-dCrU0*Caj&+1LlZ}*=7d$Zul*@M>V7zZJhiv%af~z6(6wq*f zrZVL5&xk7&wR5uIEj}TLLCF?5Q0eRDDobVT%&+~HOSJt;iOT$Jrnv(LYXFwOZ+yk( z-Q#0*T3@L~&Uorl0H>RVxYqd&qK&Kl#E&1eysWgn^BbK$NwwJZ4c{+|*ucH=4B88F z_HqOhq2eNgi0b$8QsJ9iy~2}wd>3@9`F`0z90Dwt%siy^T6b| zjW1ioRb70tmFBV;4mb~9p_D4e_ZnEV+J&HF+*MSo>Eb&-n5}huQ7Tn8z(c@SRRVN* zyd~@|x?s3@Jd4-f&!n~nvoBc-s z0{n%*u;#X+i-$E-<`f(q^hRUD&1~V-y*dzCqV3C?QFnGya$f}4Z!a;wHu_^@f_RC@ z$HK*}G|plgYOBoB{CnypZk}VLGP{=9Nrhz4-XNys)-WsH^2!DUxu48oZ3*~d+4Zb8 z?fV$PA!)DTBdbne*YxaG79p)nU_eun_ZYgoJl`{j7W1*PVSkBb3aZeSQ9<;^u!&G_ zjNaKwk?Qwv+!YU&3AJ0PS9ikSfsLAqQ_4OV^75vL8s5ldW%C{mL6%Srv+p0bzN7so%f#v6zx1*k6 z!{e#o+lfnm@tuKJje?i9@bg~f1yUwt=GFHAT_IYGTw>onO$c&sY)%b_$NSpDy>vMh_p~UdynPZQek(|3K@s8 zPzCVsnStFoh#K$AvbxK=l{Ho1Vk+|ZAcJ@17TVXjka+V7%F+0_P~}A|C57gahOIle z*?B|`IJY)Z-Te}^PGeCPDbYBE%?%nky!=FD;+gUM%7d?O5n$rJCN)3~Mgpl;o4iUI zI_d5TC6=w8Q1Z?V{Jy1WhGUZ`s`xggIAui3K{vRRO1v{rgVX z)kN!^l`SoOSHui9_wFzX$HX~>Uu-P|3j~Y6TgSxjMaUobnV^eMxwqn6qElSLua<}~ z0@~+}CqqC>0}*(-mIXBdvYUU1nOJ!uQS0{_X(=8`mK|Rt77*@MmB4^d;p4b~x;!0C z=97y{Vy*sSj!l-%nAE-HWrrHulE6TV>hQumOvP zVGRaV)W_4ytb*c*tRSsd&T|W1A;9wkilUYkIWqg(DkTw}m$+A4D?zyTR`nbS!w6hb zEmV|^;?8N&mIZ>Ut%_~4o{01im$1SGua~INTF-4qfnsc+RB{bOuJL@a8Y|-CK^l0d zn>AI><|LF-R;%(PzbiP0@8FQmBcs$^DpR%8*y(j)%%F-;)t$rg6}2oCw~ug2yt+Wa z$rT{W?p--al@!(B;v^_PJV5gsWT*gd%+3tHbab1DiH?==~qs`asIM&F6% z5a#=hD_^0Fqoc+^Rik-2AhuZH>I#K@o?!RanQ`^KMOab3Dj>^OQs7@T-*Vx%l)_L& z)bX>NW!^ZJR9U*Y5a3%c#9KuMx9%vSH?UjqqlP1dYlbKWm!dbZ3t2|ii!?7$ZM4l-dBo!DJhu)WU(+t|vb;A97{pN8 z?xIVpB0N0*0QNSk2VUS%YChx9Ul$6k8xQ`(?9XHr7tae6rDIWfbntgOO;OCDzjwFC zsX?G$PR4R}O2zdG6ubL{3s=oYXBR2Duc=WDp3*O$X~62Xrn;p3&S6h-)uNH=FM6T8 z@#C0UEay66#}{uhoUQ08VBqmkdDNFej(6Nq&YA*XB`4f*vHp?F+VN2Uq4Q@y6Vr#b za+y!+4W)`YoD{8Zamw(uM4&FGsN+dp{LKw5^HmEMSHlNUPreASyr$)-x?WQiUgD;~ z!5%43)GSm})Xh@~O|1rV9WbYn8BY1|5`?2)5w?P^C0$|{{{WE;H1h?g9Q6(qx!H>} zf;EPm$OxFQ?GSwsrCwLmPY--UPX_2?P7~l)cXuv}PJH(Q%d96ZXGaKBGLU`rPMWH^ z^2>WXhvF11ZN8>^0OT1@dr!GRc>Bq8HDn$fT`9zA{X)sZ?mFvvE108VHHT8ErM_q& z=^yz77#9BkQo$>lj8HH7fTc8D^Pdr`5|vf?xSr*!<_Zlmna*V=2}~?+3ap9}4@^Q( z9ikDhw3iw+mb$_5#71@77lb|$j3S2&N>Q-+*|Mmy8WvP2TJ3c!Mjj<7DeC2!k=InM zWvJG3T`@wnx$!X2#z9LKoGb&z=p4V811c1wPyXClW2D1vCo;Kh-j6WBD;Ft6)A*d4 zU8jh2)f-Xt|L zKo{a{+E?=mz$&-qA$2)dq811x@bbVSU!`Qy;4<%ss&aWrN5H;gjy(23Wp!Ld;_y~6 zYqE#Oa<3@9JP>FW(~jks7TSHsu%iUpxp68zlA2lZDQPpzRHvS$E^_kArj=dPpq1>o zc@_P(U!hE;trgTgDd`7L;x)6;NSw+Oo8pPE4xO@KPt5oSnWxA14UV63_FuJ#HM;A> z7UjI;1%X#KrJ&K4%9ae`C0L6t-8?WzH@Ti>s=lD7qoQ-8-T0OqzeG1gA<9SOL~@oS7Nl5wH5n{ETaDIXj`F*uRK?XfqbF`H6Uq&v^EC$ z2p}4rxeY52T1D7XrYJho%Ok$6t~|zrb~_Ir=4e7K!3Ep~joafG-35a`-?>o(RSsg; zQs@Hl1=NbMrk2@%kp|zb#J|oq|xM*xd5b~?UX+b&olm(3Mq8X!ZP`p#zY%-=i z@fS}$1OTS4_?3e(^3MaC&BXxpop%bw*USz$^Am*+9ZI&ps5?u~H7HdopatLUh%~LU zfOhmUfLo&KpgV7QFCtxelxmZFvk`cdU&cjCc=M2}n=6(eEjD>r9y;Rv$^%>xPD`)E z6fJ@^T*93wzIy5+=Y9BN$}8?wNuG#ovpV7@R2|^R*l+v)0Fh6QOQE=L3i1zAlX=qt zh4S%m(-rW%OBGsgQK0g#6&%s?rxL=7M?Q!ecKE4FxLk-D4R<-X3K@?%#9(>i>I-K# z;D>Z8D&T^+?f965wZ`Wc_%2<2J76PGdX=mz`XUK*d1b3mIZXFedX+HOG{?}3*O&sH z`sQ>gRNFU2-GiiumZu!2Yi&FD*iK}S%Lsm39^Wq#iIX%Z( z;EkOr#ZCbn+bb{{e~0lK+y>S!<}`;DUlCM|x@rXhR_}>HwZ5P?z?}TS0Qt{?Bq&|x z{{YChcsPO)wy&7FyW{@AvgzgAiBWg?pAE%Bpv?2bF?en{M-FeI9Hu|aKmz$LbR2SZ z1Qvkt5VYiXbpqHaaV!>9JQ1Zd9M&uH_Y1DRWpzb*fYW6F3+Sj9XLrP*9lH2} zhquH=?}!$vzwR_^xvnahk-krHA%RIKS>?!jFx1%ihPpJHEdV3>fDFOG=24*9?0*n! zA&O&`P!3MBxKkier_5A=VbH#1=!9??=3k3i*&0n?AKFzw zEgYU8T16Mfm}qKc97l~)$d{koJx_p*d`pU`-9eT@F;y;YQ|W0D4o!~*O9@`l$|Mv; z<>&gKX3iWCjo*tB>XV|QuH$K_fdCtRBX$LPLm}gsD~dAi3sX)uBVwRH>Rw1Xyrdx) zK!)BR8GfMvYt$Y`ce>9F2Imup1Qb=QJRZ2C)0Y&Mmt|NX0dB}M`sKs52#%lx1 z>gH3sQ-euvyJfX%i2!wN^~nX|%B*Mq06ErFahKOb#aA9{nA^#&jfK%|1D>Fo-@*8S zfUExib3BXBsG2@G4r6zR!g>0I7k-%(x)om)Q)}t>6kM;wu=l6{_J0u#>4w<6c=IZ* zpPs5Qw&ELG4j8t_U7^h8t{GK#1*(8%l>*meYk7WRt+Yyx5c0@q z>A`R*=Db8ABfdX~B}SYgQTidk;qTPw94Z)WzYe8Xt^VN!s(PPsjqTy@n3_|=PD`_! z#WI+}x@I@G!v^(R^#oGXC0z~t!l|Xd4-(6vMukt@Z)b;IVw&{vI-1TSM`ev*#IlwS z&Y~q2+_**junL+Vl&4x!xl5vw0(W^X7z<@T5U57FIhO6xvOWyvIURg^xP=rkCf3ew zpbxQlaVoC@iU7ZyUO*~4=AI(z1$kwV-Te0{dBVw|7Q8zV6&LB0g`va#z$jbq(;Eil zQE zF8hhcSME5KpVI+2&z*s3LZ==kI5)`^8hiSTuoib*$^sR>XR$|#jvH<>I2^Aeu}GuA za?Ln0#sX5R`rvR!zRlgUkhF7VtGlt$lE4>%F z!30uNV54YSJAf!0i9QIflS(eRjqyXwA`(jDej_0*v-Chdyd1-YuX3h@Znubv7G><9 z@(~tPw9>8^}7koQ9s`qs8F#ViDiZ>#I+VDiCJ3a zk?!^4Bg3CD8Ol7yRJGl|h!4_X3g+Mb&1r8Syt(lyl)pFJ0p$n87sJ~q^JC%S0dbo+ z1T zR*J2K;m5eC31Q>ZYP64i#`$vmpVTo26R4yp2y=A;tEYWexMSL|w5_$iYq*S6y;+ky z4^U#ai~?KM!L{T4J8`$eF~Y(f~F z>t#4yxZJR%uXBzuJZudbzqo^}r>Wf4_<$*T_bjT?@hW>%HSWCMF>aP$1;wnQ z{{S<9?`TEFDxeSp*)?gab#t}zz(Q@t+z!UQFpik_ESZmq&{~aD;R6@j%i?f!8}14s zmF(-(EUd(Scz}v?#&Z{q1>nYl4=s3#`VYnG7FQdt{K4ugEN|jat&bPa)LPd+xDa2F zBZw!=@cO850QvI^8UgCEHA|}6xORM9LE!X>Yp2O~6kNw*UQLSJ=?AVEDJBArwgqSy zk8m1Y9E_r)g^!q)Ra}eaT)+j`KIVq62(-(w=dR@p%JAgcoK|O1P9wFGVRu4+b%)2# z;#Z+aR2 z-hG@x;?ev>IJS^c^6ZVYV)gL@c9#~-mV7}*m9F7Xt|iz&Oy5pG0cE#rMFCG)6&1@U zu3eB(EzYV|1obWoddLT)3f3j_0kiW43uE;xSE`nFWp+YEhT$k02s@g{!)EESZ+8An9ued~NuaCG*rCs)=R7?`mmnR|_jNl-IbT z?D<$HmvpZ%cPCa~`}m82VaX3ewmzhzwP{bpJjHh9msJbRmNU?UTH8KhK%#)C-ocgP zxqpZipld*cWFy#O{Y_jZtR2g>W!=LHS6u%91^9+TFkuS-P!-g}N(z?vltYIog!>u_ z=FDov5$HjVsb!fDaWQ4KZ{i1Mq5l8`Nr)B;SAfn}LV@>CC|IC?9}!y8(N_W6#;doc z76XI8I)W!HhKg(VIrS^2602zHR}5hg;8?}H(E^AWOBP%mRHI5K?v%I8-x|EAaTZM# zUUP}9iqN#RQr_cKkc}hF@lb^9^IxezJZ5n$L-V}Evirnc85$22;XgAaP(0LW*cntm zWx0U-%ZgXB!F?X$j$82%6)VQ`GyWc@OMJj?*$(VGjV=D6M#H$MDX(WUR9K#&Wj38> zaBc~Hb%rR){{XQvfJ2xmWGmF@>n^Z4yG%QXT&t2y6O}HWzdaAsT=`<${E9M|Qa5XKb1?`*2F3tf+=3^XDOP2m(O8p72HwSBYjjluc_X;ZWb#HNO9vt|b z0*4}$Zp)X|A@y;qXWxho=(^aKq`L9kOO0e+c`HadwZAYvIPtSZt6_Ba5P+M{q82;O zyh8cfynReqUeya#DsrBpg15Fk(7WnbrtY6I%d-xyCYPriaV>0h@h?TNjWOcSFp&igH4-+z)>X?^ za?Z|Lv(!ag_d11@!?5WiiE4EA#MH3;%JE}w zh;bHnsL)>5bq51aJ;5}!<%@@6vw=wb_X#Qm_Qax~e&&tdex;=YdZ}xo>Zl+9{{Y$d z1uW9~s2VNxS#w(KTeV}wM0S$h9WxxCOzOo@#$k>H*n@y5zvfq1-brkqRUjUMF#e*Q zU@ohV_Qp1LdOD1?%VO36ojrFsL`A?&e^*idU_-{Sj{Z$r?Mh^=>K*?8a2-Jh!oJF2 zC3nm?tm8I$0V~8Pr_RU06x_a6U6(4+u0Kc($B>*^2fm^6JMkSqDqt&d@XP~L*=W}a z{6X8mdCP;Qr*{pj5)z8Ob_xuBUodGbPOJt!Ik2wn{{RsoykF*3y(tZJ9LTaN_$b-Q z+T#eY)qF8QGP@zM=g*j&am?fmyCNl6LGP&2{{V@P6;DuTLaXX5%JVt{ocV<;Yso6` zJBm9M--s*=!_Glc_~T(TEpL)5g7a&M!_eHYQ@cH6#7|ht9O&)hAc#5>76|23$cESL zk@Xj=Hi(1*x3M2Xw`bxO3WBd6h@DKmhi91f@kqA-JJu`$4yg+xrl>KkfYDNu_z#FS zxMJ4wCA}3N66O^z2s*0xvY`+YlnEDCb}F_wyw(ob`XUttvc9S1sx0(vu8soxIfGi`#dD!Pwq4py?x#c#Y^K(E&Izk=^8u`G_@V`0TTpI`{J<=0qOLk}u7*36e=b3Fyzv(Co*)wo z@W6VZGY^TvkHK8RjsF1lShkD4r34(|^8_fc!9Br+;BOOwd^|(Z)IFK4Ai$*`5h3gJ zir*mf#=&ozO4#C9J>+8gdYm-l-*FqYm3+z`~!p#GxHC=k88 zkg0?5kqW0CE0{CL@LX6aMv5WEw)pBjWqXx2kgD->RI%8rxcGDG*<>s%eEwyQSowus zR^9g#OGmredlGw>s><=)$)Qf84fGrmwF(Y(=4n?_C0>wQ){~xK2Jg|aq{oA}istM2 zm&nfx0T`0O+ckNeEW{ua(qEWdkhvA#AqwR zP}0MxUxrop6rfcbZV0|#9Lw%EdyzuhE9ixT-{69^jc}YnK=s)h+2tJ+S`Ylb^IE&;$$f#FLiqm*KT(L$*mE?0CKrCEulW7-C zUq93syb!bjecYfPIEXv?eDyE1&pslR=zYeIvRFz1{TyLbCy*9~7xpdoYI(Jz(vM5NY@rOcPYyo_{rm4D3T;5qQi(5S(jaULa` zK{EN~6Y0U~C7VNrW_JPsXqKM#EilQVc&K$m1@QA20Y?t!nNvjwv)`Cecaeq?Dp*`B zf!9&uXUXrDH<@2Wp`!Hoh6Ff=m^7=*HKAR6p!1USWvorR9H@0MXN$j>m>d9e3@L;( z3ux{2C}jXV!F(R30?daB;PDd^y)m7o<-o}z#N)fLoBvE}g+IVsqdBhu4jFs^S~6zY!8Fq%2V&6d9*DuKQgR;0)z78R3LSbsWcW4 zj+8ruBsHUEsaa0zf2gGqUlBBpv9tPvDK)6|fc0>a{M^S-ucd+3A7~|AEtUTO1Zp@n zwPnX)MYj*H=0oy(b$Y`=3%j3*QR>6FE9Z!QWv;9JR8oR)FAz z7Gk~`ZY-$XmhYKGTW9eb`Bt|mT8d~IzFdqKjKuhX7TWf_MGAh^0E%zKJ1GUmM@w}0 zU?~U4kg2y>y+A578sDD~R?r@Jg$j-JT*U;itf0Dz-)Vc?DSusMOm-Ku7J?Vgh%IW5 z4kanYdzr;S+Ep-p?Qh5Xm{q+lam+)jUsW*XjdPBm8mi!<$;wn($6Dtk8_SKj8+QHm z1y>F#0+xvNghf?vubDtAUCsel$|n;8^sR^>mi+bV1EGGa%qoWs_td&`V%t)LYr3XT zF8w<^mZP@;F{cy}D$DDZWpuBEjW+r5(-N?9^~9j2{5(ehweE(EGLBmyST1U6*#BKvY z#}QaQsg$bngWbN5FtI>ttFMS}k$lib)5;D)6`qhsvbckMJGND@fzS6mfY0B_D*cX_LB!1?uhxD@g`?le#f^u6r9<+{?>xR#SIvJ+Qs-l7v)I&*{?_BoX;x_o`hbh4XE$cI## zE?&HOJwl40Cw!4xUdK_a0_{;_Z0U&sE0@>LxB`w`$b!r3<^YkR-*A^z733o;OnXBi zRlP!Lt9b}$lf_2lDf`q!>4b(g^U5O4++S#c7eF=5GoHyh~kGxpa!4x9KrG}~5Z7N@GswS`t3zRWFSAUr3PV8|cOOoR$I=Da-3I)VrIxW>@z;_Z3 zUl7C!>xMEF*{~j!(>LIMg7D3*$*ZwgS<_gOQ8yZ->mN65I7x_JqPjyM?5wDZO6dtUw2 z6AFDW7sZO=pw)g%HK-fwxPTR|${}bkN?cpTgGlaGw>++%c+p{6?i|@$PD)cZoRi z$w_SomRs#I#PQsqt{D1`#+?3VG3IYO zQ5xMoK4mCd`^$tUrz6=Ep}yqbNm_qIvK<{CggkEXUiXQ#3q3)~>fMnzWe~Q7*Q3N0 zoA(`WU%%DPVQT#M2Vh>3Q7n2(@f+TCDA4d>EBxz4Q50)>&t4eu*=PClvEqBatWh)G*zqv=z z$`iJY)&gv*-f26Ca$IIDonBy&P$H2;9k!^l5+;~r=IXpuc0*YFOQHveT0tHq!lhMs ziLh(c*Hg(km{g*+={k-w5fsQCpbup1%@2||D>#_^farB_R#|h)0-gHaqFIBHaqNvn5fg3PB)&Nq=w>DGa#=o-Sdc_Mr}2f_rRP31Jv_lMI_a zhM-EMj@!MRdqo$htg&{U;L@7CSsVrwobwy7Y%?IT_ive2GP+?1`%%sak2cB4shu%g zrgP*}zEx1|z5{q=eO6gZqoX9;CLsaALAW`dph@h*bsJBlcXB93dx0BV%JAR6FT z%neqPAhnt@h=Jt3rPxL~va{Cl^Zd@B=cgf5Xm^|7jn?}2kpah^ZaxE?MI}7d+*XK= zFeAl!MTXSt)VSF4?k!Zh;emH2^khu)dfpPq{rJjTnO(a zc%-pp6^f^*l&^l`1ksnT5rbto^AcUNfg3edTyGIjvHaYkd~jd;+zffYFYaCrD(dU* z9%@FmP{}A+6?VFu+)u^;EP@cV!5gcU{iI%8yNznX#_8%k%hpiQ>*`*6M~4YxlWMp` zSOYD)YlwxXITcxdQMYA;ACC{1JJlIoOU1Rz7@)bp_Z3=B`Gb1{d26`xNV=MQ#A(UEg^JwH!YkJN3mk{+hhk|&xG`d@g_Z5NLT|f%o23JHREDzY}Iw8bL zi2Z|CHZSciDQWjhmKSOR(7N{vVah>tXlfb^yNE>=Y=wY2G=a}N z$kxD$Hi3=BL~YfQ#IU)fQVmL184q2@>I)XW7(N<1uKYukK5p!W9Pb$~HH{2M6@1}WxBdy3u3j49*O8)v1L1~4>5aj zOf*4?zL=O_T!c6Qs>2Ez11FM@Qt61}N){KQwc z+lX7ln$#MBu*I6ol(vA(oZqq&iDazpVb?Oth_uaoBTqgf;1PxP@h_wAg~t6C6;J?) zN8&mQUXCMx*NgKMyr8P{%%DWHrYd z6$g$X(gN~bLV!>XVo-}l0aAMoM2-0iQA1bNeQMxve zUxoJ*4*ftS3VcP^e8Y<8#4WGbxm2R*%m+yPaSKh+$*9quqOF3|F!m>i)rxtpDp*or z-RfK$WCa-H{{Zq=7#FI52p0T6G_M)+ETO$1q2fKgKZu1PuhbNj(`f1;YQIMi6|ft= zI)(6MpZfsQzcuPD=pS%k96a+H1~##b=+)CP?-%j1qp<4bDAuUv0kGGOCh0AH4VD{o zyliHU_pcGNpng+DFMQ;nAUI`pGI>9?Q;nprL&*i%v{#9X4MI?>+u5BN=35-wSsI9Y zL!hEq6l>8a#Pd)&VP?pHu{~E4KnIegxf|xL2dQeG1Wod*n<5jANAWNVYv-8RPRrsv zgO3oXZBb&Nh6Th5-a+OfdU@t8V5IdoTpUZg`+1J1rpwxwdPf6=b;ZT76zJj#+J{>? zEm5|vp=o;c+Y_uMK0n_wi*UYmfzc~#cX4}A^t&wA2F?m;;J8vdJ;8w*t^zyY7G?1) zDXZ7>33im3lD72zARy%)CDDMmfA%Y1NH2?1xVJ}sNNV4x>r3B%xVAc1Fmet$C1;y4 z@%1=O^<;XU{{Vz^#e8%6hG|d4bfBPL5u4c}Qqi}As0OIFG|puPo?fM7wd%$W#IDxo zjd9B_Ns7ZEeq#9__wyE_XsLGj{X^JjU(BIU0p=mmXMtY-0PNuf95)0Z9=C|{^7VdV zO`3AjTZp|}WN4N;yA^zVUogtMP9a4(9Kivnz7MF62;D>UCb7 zb|_G~jFNPm%ksx4a}u`(zM>PM(-T2P^RQIldZ_0c?LghcMO9TOR#Fjh75qjeW01Es*boc*CH%{X18FN}~l(VG);awB!Cw64hLF zAHqvU9*e2%)WaRT^(i}kB>-lLkUUm#51eqbNmO?OV#tXOz?LGl`9)O6>O4czqG<3q z?iQN08y18mu4uW#IgCT9*PN&o{$o(6!D?(>>Gu~ZL66i*9KVTK1$@3Cf{OM(s2#Io zg;jX|1(t1A4;Wau#?5#LmA;uNQVR7*9O@qaE@pX?Jdy$%$o&a^p_s| zu#W_A5LZi>4-Hv?Tr|ES+*74^jn!yjQ_%v(ROK~W+#{`bd^rlx9B_>+2GsK!Ws@5J z0I*WuN+Wkr@yN@dIHpi7sBka>*|)I;>+=N@OA5ERj)&VH-F{;29y{?E2VXqRB`SCd zjRl-NoJtYK5Z!3k8xvh-+Z|~&+(68)+<357ptmJUHnRB$QFdFwu>}pUG=IHAlMUK4 zyT$n9;xtYh^(=rlzY?OF$-0P_c3DMF)D?s=gSHqPh-u)YaVX@ z0C5L=of4|JO@e@;+_M%FVsDNqHc0?cw%x{@wvwkI~CEI-d zAlj>{=ZMaVK6swWd#sznj+3@13`dJ)fyFNbMN{lAs1`H>@%oxjZ5gv7!M($&Lf#A$ zBehpKOg=@uh2ZD&ExZhKQ6YGE*roKmii{R7-%{ercX4WJoP^D#U=anNx7@pJ87#GH z&14q9d`lLL^DS!N?xQ8If)rRdd6jf8j=F^n=K$hagT?m%^L|nA>*TH=fvR_&Wi`{m z+@-7sw&t{PncTPudEQ*1TI{YM*cV5iQq8H411l^p8+@04@?S=lG1`LpBQb3}`|~kn z4IHcSumjR*g^% zkyfaqP~5=Xyv)dH1K9X1Cf5l|tMgHxlulHqSs#VPc5ZNs=fW0kU>Jfvp;&ejfyLPx zI9x@N7uyJhFPn@^?DrRuC_~-3Iffj%R4N^96_CiNRq%_HN zsKj8=L$%>px9evN70BLB;54At$78@U?`|#vc2=$);YGlF3yu&xnCb*rO4`E$c2+r% zRK?8jSYRD2;HV}q4Hgmo$E;PUgM!Sa;s&RXf$~u8u+mvDUgc)8l|-`zyH!ORmugb) z>IB+{skDdG8&ONB8ffM#hlw}2P350zfnh47dVRyPf&o$?1dH`mC_Fs}anQB$eaBR% z!?6p1aMm)O=v757STtqusylJOy@!cFMGa#KFD%TsOIi>xA;8GlDDX@dT4`{)qTU-U zDwvy4Gy&%Q#{m|-kOwV!8HMv~J7t2))T%kF@eDV(y=lDrf>^ZqoU5nQ7dYB9qo{8m zbqfx0%N}jgJj!CB{YBs<^L0{%T@HB2BVor`4muR0c-dmW z>A;p;0`q4x3=iA6Qp)@0D+|va;jRWo?+?|p+u*LCg!3M&P)#g2oLcPC*`D}@s&K{@-{jmZ4+qRiMx5se4c;w;JCNFfNYD(kYJ)Mben9 zT5}ZzrxkT9eB0cpRy!`M!3zZd@Z~@nE^IydF7WT(vOuN{$2E%EErFiB#Qod2I zX!5~_JJ(XymXAHf9H9|!i>?TD;`!JBqhZ8;XUh>5#JVfgrw*3r>i%OnSmLZKSBqse?iT^7#s?h}&Beq*6Iz4Z~Qk1iNk z7pOhd5Dr%RgZ1EwbI3V=!~zHgB-o%TIe^a4^fEAR0>YyM{PSQNkRMd z5lmw zcJ#&JG2c*y_qvtos|iIRY9@x919U=P?a5` z8p6p22XH4~iX}%P%QpWAOrMb;QJ-mnh36 z#3gQ!L1ZzNKn4okt{2P+9(gKV(%H<Sjk0Fjcx*3*Y0w0Ot_x=l9|htNWi`wL`hbP#aywLYec{oUxd(v4*vkS1C$6X z56Fvkw+bs38-eXus>r{fI{;#NUdMq_vW_5$%c4cD;V>Fq-KmIT3fXXMc}32*Zn2gC{^)$R^Z+mMNCawggfv3Q;Km42l? ztKQ&HejX=KURmZ4C|+ze@JCElOG?!t+N!J&VMrYT%5*A9k6FUnlr4y7@e5)rS8+9C z@E0g(IZN{`WCi}?id|wvw9j(uk|KrmQ#QU#xD=-<5Ho9-7Ke{86?gqkxVtAIw%i3C zzMxmfhnT#MYam6>m=Pt_MO4x|kul5oo9S-h(d1Ta3!lr}Y@xr7VXb{!S}fztuYmfv zg($l2UwiNIJ9)n1^0S-&0I(a(7ZA7>rr4q>t{?jl9lJP}MfJ^8)5ccROC5AQkl1rh z=LO)=E~ClJu$t>CQgr_SvLzH8w0M;{N-F$HARqhd+_3}_<6^BR)Bp$AcmTWnUCy z@c=^M*^R>~Z0#e!R^O>iS@_9geBMrx4#iiR@e;?3oWZd8x`+X2h7k64=V4EG-*A2Z z0Kdd2F>BmH&$l1}$bS%FrF=qFB^-N+E0P?`l!;?s5kTJ$<~)Pz<}3_zP+F42woxgj zr5TG~9KZl!sf%mAXNO+=5K`+P7Pr=S2pN7(8i47m#b3+{PzLLWktnoR%yKjf>`fc5{t-PaS461 zF`w*+X?;d9x6hehC&~_2+yK>4g|xLtQAz~sCZRxQ0O5&l;%duCevWQ(ezqz&@cjv?-&2(12<2B2p z4W)Dw#QIB!>A9E!y~em@>3_Jzdj<14Pr|=(gh-uuoxMqK5WZSy^$(#ITw&pMK}QPg zriOOHqKkZS5P@-QUkjGHgppkF`;S4dHoBaZwUkC5s{PAI=9a3AHR4&W@{B$(&RI_~ z)T*CJs6YEmc)Sst3e>OHLgTXD=tOa$-JHXqw$<%Va9_e~baCQRDm<&09R+se<6g@P zixHsPc!3k6mRnu|L0qBY5n*tBMx*8;&5F}mYS@b7kC@7>Te~vquk{CN@5;e#XwPu; z^txlnQ4Nx8I4TGOGUo5!0p2iq)2MHB1O9Ct(U$pdKawZID8^R-WLgLuUfjzH+|e zws?A}afc3Z04EvQ+!MI7nQ9NoSpu7{thr*}HNP^?lKuYxG4cU+FiO=q=l%X8ftl_O zJ6+>Bk5G=+nRX?kD0mGnYF*?gjIZX6*(*4s18kCx8Z)n1fa)aA={m{7b-v^H)&O65XlL!0>S!Yqti44}6no z7Lu&DF<+PQflx=-Bg=vL{~^6IP^liW@u&rQ~{T z9%tiD61*p{yvpjrGNbSfP*J#R4N+3!F#zyXT?9o1YQmxd5hN(*%%>w2V+2&Zr$~(g zx(l%JQ1o<1tI00qp{<_bv{lOU00$DknQ4r9u6;`=QvoLE4eKIq$iJxTZtmA4*t|lS zV>?T(AdsC~TOL7Q;(Uv0!RF>isrwhNRBdpU>#f!%c@0CjXSrkE0 zZxlwEHwZl0>Q+ekAkcf_3MJ_UAP;a6a9@dwYaAsOtDKOVWA!USfK37_b&x7VDsfhK ze31tr#{uP?*-$%z*fC_^1zHh?p?h3GfEdg2=tu2&xYk!!RV?&s?!32L`I2Fban58v#!? z^^a`rUSo_|bxtL?WjNn4>uQ(zi=%}JY}SV`T2P4`#x)rno~KX+ZOX_I`80{O1n}h8 zos@ZlPe-WoX!TojR0O!zmEUnLoaT9!+GxFjFrzPZ2jX^kSD8ck2(@7C@!~6xx8skg zSIMiXVOdu34Tt%bQibz;%WkNAoJNda^9vs*ULx(?9_0;CVQ0N*64&RNmup*GANee; zG^7`0P{A#F>ZXL>xGTW;|KC^{}CM`K}{d5Gph}N5eTZWqIOojc0x) z@0;$A;uiGi{KZ-Tr?2-i#@$zkxGD=OUZkzoXR)PIj}?kD8TXJB2cue zN$uBH4n~UUc#S(#_=DjYZTP{BsX93BB@5Zf;sC7;uMY>zwrj6Ez=6oRt|fq)c^@-9 zEz4K9)TjB>YeFwTMHcONg|M%8cPuz-I)zmY@qWF+LTz}KZ6*1Zp?P1qM!~;R+5j#K z7?X@(bmk$EoVxwnPr`^EV3mTLLb@>?KuOUi`qN_b$A?B>~YOwOjb^ z0gx2za=(bQ0ZZr9(Z)lK562LY4s3~_E3d7D1vHy}zxG>Fmgh_tDNoA*2n$)PFQT?k zt7^1k+g9h9bBfj9nNZVjrc^TfUvNZAG`*>VYWCWM)~mH#a?YwZ8A}IGQG_nI|vWYGp&z@!C1bu8(An|#ekOnz9 zA8-M~sAXy$*kI_tP#5XLa-!{n^3&`ro3 zeaqz*zi1WV%^?RS69}*=;smKWS{91xR-aKOuDnGWmZn@A4!Tkb_FdW3whq>eSEx1M zsF(|@P{7GieDfth8}yHHQxnw0F6}d9Ij@vNQpbmu1l)IXo+vagxF}GSFGdpN&2f;) z05bS~Acc=5lw>z8g(jD@KtrtokcA63=5y;=cODRUWiOWnhmC4!%ku_9AE`nFv6ud! zT(y?o*jzQK%w@IAbOl;94@B!!9hHG=798n7teeQF&umh#9_yGwSU1WBL>$Y#N4|no z;|Cuw3&{3hp+y$k5)=Dg<{Sy3fud0R`_4!BzRDURTU7cKMUoA#br%>YU zeSAYKM^o2v^^&mv0PMg#cqIs5R}58KrGOYw)GG%2zG69LDR}cXYvc)KuA$}?v&j&V z!<@zPD)^rzon8}~_u9l0a{OGa8#T9ZT?`-g3_oQ=!*8M{?Ez}IiL*}#i&CZWl91;7 zLJ9j|fTEgp@dW~Bf(#xjm^u+_n1;c#oj8q^DzYU<0pIf!!>78qbrXTV?jnU)XYxj} zQN$d%C}o`_p>e3jZ_Iwx){=v&dP1D~3We3v4>u4iPN+653N0vKFoyw%#90yna8d;} zDwZ_o�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

x4D902CnR{$SEDS8g{;c%%+vXTfQg#E`0{B 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�Kt=LgpICe57TykoPsP!!8AW&CZlWb4}IzNd< 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

l;2z`kE@&6fv`XKuO8~bYP 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 Re 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

V@uZYD|*t$3Qz`JA{JN>R9k!jpjwi&V5r3LAyo z;trz4mSzb?4>0Ee)!Pe|1xgpwae55*aThPSiDP5|&HO_>n}S9m*J~Fsq^%V=Tx- z5IGp=h9%QRZ929CT&<0N3Un{598 z;9+>0EQ@NF(H7%J!xb3$fYoB6j%6qU!B907VuCt2A~G~UEgkVR#3-?=@e62i4+h?0 zq;ck7TVxSRSZX4HDeB-2aTNtz1OuLP6Kr3YTYHqPm|;+5COqm8JfX6kWr7H`rdxIf zrYgvN^8%IPHAKpg6`Z?{fx{Uyf>5k6 zVv0w%7r9`A5OPGHTf#ZsB#2!?`C z#gdBi8p8t&oryma{vXHZnwz=rJ7TW6uasL2eK+@=J9kDxRBkgzDrQ6F8gt(aCC5fF zBBNxAl~t=&lAQJX`5Qj($LH}rUa#kiopWPu*c7QaiYIG~EGTw^fjw+ z70E9W2ya=VcCR5kJ;BC)1{z11<6j6tX+_Co7hOIXPsK&!%hvgt?jP`5pBhCp0+pJ! zBZn+A87XIpm!%b1&y6Bm`EcTIW~0w_wx75IMOoX8vQ-q zidqmfo}cN?S1^b@v5GJM*Ceh>tsTPV2f<7`$Qv6^>`Z>;)zcyR*9_QZ5$f$G;=dG9 zPE&{Vygp=ylsju6U;)YMhiJ`HI7$OS7@eL8zj04=i0_gMaSic&Zs2C7CoX;lqIp~+ zZxbdW5Bm*Y7Ev60}XG*AX$=Z$RScexSHV$Yz08k z>6YVdnMS3;tAVcSyzO%yvkR*JK;Jw#)z+3N4!n$G)JHU}6C+pYol<3OkEsyZUycqj z$hslL7ls@IE$(l*l;yUA?w>$MxRyfUzAuu!sxgLLdMx3uG12PY(P!5&+-Mz`RMT1g zB|!tg1*8#llx{SwY`<}0m)5fQOwadO;lqGvpb_$$Wd2HAXpbc>-{p$l&!O^eUE%R1 zCYx6Y#l3lwi>)R3`;wdb_?+lTUEa5#%r5hbSq=xmK~DRH*SUDrh2pf2vKkey-vxC> zK-)pkI!sgrYf?I^s0fcIcT-|IKfy^|BJcyTHvt1pPLxLn1ob(rNng(394@jza^ zrOwd$l6?T{dRivHgab0R4PK^ZTm@x0qe4^!aII-{fYuPvwflQ3!xu|{g^i;5ZNArA zg#1h9Wpbzr4ZB2^+{nOsoBM^pcr&lDE0dMqmWl-AG7?{ ziK`B^vVw`sE=$t$S9an<909Ykrn_d9dR}W<@*yrBUhuvx3NP=!Qx8VXtm}YjCmX?$ zBJ3wdvPj)Im%}oZ0kxs~Ay07`}jv zJ}!!L?|$Y68#uk(U_yeXx1XyWmb}Fb4PS)cvS(1nyW5={TF@5thH<|q%%AMbqH*d- z`49ezx$y&DtTm8Mds4(YEPn1caZFJJHb|XY+2K31$g2p$a#1wllQc11CG6^(x=!(joH;cU{9^rRC*%8+oNHw= zkU8;@61Rly-J!wWjg+)Tn|MklZ86n==YuN5U-8DXg8*0bZfa)By3v)=lJ(4UFi^uj zep{(460B?2V4jhpVABYtDyIMCP0^ToHp^YTFizq^f1%=uleBatdc?oZy;*;#Qxyf2 zWE*fsz6su#G`s7+%cJ;rmTe4I(uXV}dOWavXdPZ0?RH#S^bwHD7*E->3W4zKep{LI(H#8KHrcrRWysJWwCfDro-eq?)@w5U z=}gcrrN_ua{Q25sKo}W>o@%+Ihxw4h37Mq+5Aaj)BJWv>vl`Xr(MzoFByLWVA!-`A zoxRTQByerZ+M*kRv0#PXlm`)iX$S5of^JjTElF7n`xOALI6SFPUN7SoWy zQ$n)0If(72&8pSb|JyA;r?QFbmcl4^_uLTYl&r;_!uev^IA5BYfpTSwL3Pl!VjFUn+gkDf=J|NM-x9qKb$zJ}> zljS$;W^t7BhaIz?;{)ebl~u@MwpaCR^x4lVai?DD!)2~SyS9@f15@(`6&uoug1Ti^ z_*g5hVK6=F5ln!j@{DVi5swiP^%Ws%mMJz*(xw6LKXn7j9|w63z{*Ke;__Rbp$4GS zdRKkGyIC?Xp|xH_yV0I#dvQ{RbpE22?9s(TbMa;Hs5wSj${k#ZWbK4zzt2GgJd;qE zO7xH)PZs|yH;lcG1rc@ai~p0o_rx&vcf|?mlkmm`aufct5+J@dNjtnqh**1!gzyhU z=!>7We%KDVwVp1fqC<;V_8KG9r{0?*LRh3!6%LyMwlKgk@*!;1El$AWOm&9bL>J^G z%Lys$eDir#ZzISUCpO6Qgf!KCP#B<`uqSppuIa3RuL_Owd)U)V$+b)iB_Il7BR*4r z{C!@@$B9sWodJ*@WqOXZAPR51yNncziASo|1u6>xg9ES8Vj;t*-j0oh;Nk1%tl$|c zEijU%_Ch^u(SG)ft*xf{TF#wUZlUs<(t2~CW_Itl^dOdHf+D$nwsDLWD1CiC5PZE-E&Giq6-hRz~J8!cogf+*R@@`n`tuLzUi0=Ag6P5kN z_H4in@b+aU>vn35Z-pelo)9|J;uS48oH6+7Z=NpECddy<+R|piL>MKI zn@_EyMIAv)wpS>6N)?VkCHBJK)e8|0AtF8O4?!kb851;&N}v*ctrw{#jvj)sVMIT` z=B#fJ5f5FuGf27?sJF6Y0L5k-yhUiOiZ39u+wrCWR;I(WPf=s_-Tsri z&bFi^x>T?&X|Cv?d=RrHjrEMfa*An?p4&;w%DTS_&rh-=-K8?OU2$c6iccB5hGSe4 zpZ3`8hcQXjG*g!Rh#w00jUw*~jxMrx)Rb?zsE%mKC{ZKx(D`#;>;$TRQk5KJIpxbl z5fP=IQC#CyDVnFCb;SiEhZ5VIzu8(YrWrGBzP;?2ik^RySHJ_3U}K;M?_;uP$Y#LC zan`2oqa*6rP~SBs5WRO5v7o;uet)~+oNW(Lc3BPrOs^@t@KFL@N#?ovRbiIjk^&cgb*UJNLL)s?ZY*PG?iYDCu{B=h> zz{CGG7~qC+>1}<795M?Pvk!ML;8Gt`GIHklN3)`CDgOQ@dh@T7klR=GjSxT=ccxC* zK2Mpw7u7@Gm-qF)NREF){+Jqv>pQ878Xk(zF5o9J)gFVO+)Fgv#i;C~LZG1v!`Fk% zW&UP+>Zq8fVkB|;c67kQdL&)9xu_iNF-jhfUW;liSA|$tw_Yf8CnLYes<8=PuLR6X z{4>;GiUYhj1QOCX1$QwLvo;2vG59SuHwaL z)%E;VkNb}yGK2TL%o*yTHp&Y)wrgbTG`#HUO$-s2&Hu_OR=1JE_%0?>guc0Kt#y#3 z&2cdKd8!Q)#!1n3Vt;p5?&`3;YM}QE4|lsN9gbN^fJ#hJVKO^!RK9Y1)4qCKO{clC zM_*79o+Gh_e+#}bzY7@Lmc8h9;hh+Joc z>ny}#cXBIfIvC@?pU?pk=?CW?aNM|QSL7rpuvhpfD|?&ZhUZiW8EWq<17{hz7Hq>o zfC1XQ*vZp*ts@{}HQee|Ph2oN;3vzh$+u z(Y-uI6H$ChHWi99QRk-MyouJAH#cSs)WcLtD0M?Syd4OlmZxGxs{d%8G?OKkZt5Gt z;SwT>i#Fn=dC$eGuA(jH6@y0!JW*}gFlxvU@oC}{GEY$nq^M>Vq>-DbpDZ+*$^be% zgp%HdC3Z4HY4!slDrLnQYwQ#88rmx}y>EcH*YL7D-1!eU^W4__St$pOFh0ovS~WrptGkad}}MkS4O#`5v|cY1rDgUDC+2$^#R85_Lu*Lm)SC zr}zySuL;&nSY{sQqozM4zJK*1**Tf!FxCo2xHm%Yg&4;K1$@8lpgj5XO#ME=Bk6MB zCfIm_DbD_424DGZRr2W%EwOf$!#l`8Ti+v;{mNhcJ8pXJT573x{yV*`e_@^};l;Z8 zzCGoAhmwXVebjfWnHf!o-One5q8o_jSc@AFPJM1 z4ZGdI()w~ZsJ-*=6d1_cQOU+&c9|)6JNup3O+08VPjDB|G3E2?P|apb8$tI^wFHBl zo}Wx=T5~TPsN9qLX-~=|>b1)j^Rx7~-28>_be~|Y7-typw}`QJlge%+XPjF_zTvb75?PcCH9nv51#wPh_7eS7I`^X&o6)SoRW1qe5iG@W3{mcfRHJc z!9X>e^&Ng-og*c7m-U_2DgVzSL|f@8t#%uKjZ>ERJI%gwU#7K>7UFbk9HHl`DgCB8G5$<;6F%GY_nr)7noZrtvB z3}ePZq~uhtoZXe{vu``40EAFB-ZcoUBX&Uc@R;oj_q9GZtFdz{ksT>*NG@6Eg| zPn~ntMv0b(nVzRD+L>PCz@rI~pL6Y+Tfr}o0_WU2-^xD5sB?5E2#G8uDRcDdby?}^ zWqqd<`~O(`OI%ew#%52~DG!S!wD~agbS9O)6jF`WXl7Afd3Iy*zJ~?U2e)i9>92oV zf85G1DN*YtvH~KW3RmyIx(bsxAajLgs>Z?nL9I!Gq{uY#xytZg1=f8BcLDjjq&vcW zGE*kxBxQqsVNG}XlO0E8T5+(0A2I%o>Lr@EwcXI{dGB;4G}yui;ZnY$S-2;;cKF% zwv}qo236yWOh$-n0fyI4W;mqj1s+?j;Y9_BY-Mlt*Ry_2c(ZzS62VmmriE*gM+0icH zOUIf1rOGC6E>L}~L2-{M9U>UgYgSfe8p+nRFJcQAFAHB8cUJTwyNq79R5p0PC#LPm z2&0!Bo{~akD3``5C)PFCXBe$+&cKV9gk;zoBf%vY)x`1aY6Hjk-PH1M@z1-gmeYUr z0upGN=_DwAG3m!qrcuFz6~{Nwv);&l*t2>-1os6H=L5P(@!g+uh6Bfbz%o(mQ`{u9 zIdA=YR^7#ANS^m;>C!$?7E%G{C4sMj$3y~F>#r3&Xq{#X3&9_tckO!u*$&W;lXW|) zsH$RuH2sHd#Ar<}-hHE{#NalYLTl|yMf>`w%zz;i;ez;!7nfT_F52i|TR-N!a*9bZ zXkEh_VSyINBZ-^Yi#HevH<^*fSL|>>R}ypm>z?oNuw0)3C(%93sGB<8f=sQ-u#X`A zBReJWqy*zDM2#G`;6@a@-D*G}gd(#m|8rksyn-x0@dXQ1kcb;M58%F-YKoRoXR`j> znEtqYI@~wx0aRP8`qw2qdSM89AR*=9R2^`LXu}Wj6z!xnR54jD+v=MX&MOUHR3b0% zS`uji6Jh-0X%WeP$E8YoP&xmdv+E?}*0vFH1k!8rC6!A?LtU&B+gjpd<)*d!B#%qR zl$C^Zl!c!(aeHQ=vRr8i9%WUj zCCZogATZUDn4|1X?O8{c+e$@))rbFTm%sx%|0aS*qUqPQ!veyQ?y!%4?j&sDW~m&q zDw5R3{|Gf^{3bLuZpZci0YVX)R~v)R*`Kdful5cjr0%o7=Et1-r-uzVm>P z{S?_ojj_=BRg1iYJWH#En6ty__Opk3+HoG$PUhE}vo+MWLYO)-W-a%E-+v~eNm;J{- z=r0tUSN4dsbU|Gau}Ke!i@!n{-}+uPC-0^I@f+Uax+Qt`-;0A@cR#IdJ#Ch02|1Lg z9$n}ruWGjn7{iNR&)rnJ^AQ2D_Mr}GT&$3tb6qkoFLbaR$3iCJE}KVqd^jw06HMwd z(XYkG0fk@dVI$>LoG3T09|l_qId#nOv_F)OKEpfsuuR5dkHyO#!M*!p)ZPf@!}>MYZ0)Am(v`Wuz@O$J;c3l(vQ-LnGo5G*~q&+BKN%2s>55f?Vkj)elYU= zHLInuiJMn`X#(QHGCdq%R<5iF?W-bkExX`}D}_~0Z=a@E-kOzelq2<7gkFpB*W{VaFI%x&)3im79hg0FODMoP z?=KC0wS3j*o+&dt zQZnauaDQD7_d^~Js#DPDvs3=p4kt=}`(|De0@Y(MNDuiw$5~c(Ge~ToE>$5D8WeB^ zqN#aXEis}r=z3c~YAzDro4L8q9*!B7K;eTa9BTRlbZ_uc4#�Z55sUBF+qY_Ggx9 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

0>CT_AYh0RLl#A1NC5~4 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
yOw4 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 XC`4kmk60FVKr>)xoVvP!r6KM=ZQ}$@ literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100755 index 0000000..bb159d3 --- /dev/null +++ b/README.md @@ -0,0 +1,296 @@ + RadioSonde Version 1.0.0 +============================ + + + + + + + + + +Projet basé sur le travail de DL9RDZ +==================================== + +Pour TTGO LORA 32 esp32 pico D4
+Décodage de RadioSonde RS41/92 and DFM06/09/17 et M10+/20 et MP3H + +Attention à la version de votre TTGO!
+vous devez modifier dans config.txt, le port de l'écran OLED
+- TTGO v1: SDA=4 SCL=15, RST=16
+- TTGO v2: SDA=21 SCL=22, RST=16
+- puis pour le GPS:
+ Lilygo esp32 GPS pin 34 Rx, 12 Tx
+- puis Buzzer
+ par defaut 4 si gps mettre 2
+- puis led
+ par defaut 25
+ +## Version en production 1.0.0 devel 1.0.1 + +## 1.0.0 +refonte du system OS, et des pages Web
+toujours avec la gestion:
+- du buzzer
+- du db ou smetre
+- de la vbat nouvelle gestion(plus necessaire calibrage)
+- suppression du mode telemetry export csv
+- suppression de la bousole
+- importation des RadioSonde Thank's DL9RDZ
+- gestion update OTA
+ +## 0.9.2 +Correctif Dash SiteWeb config +ADD API SondeHub Thank's DL9RDZ + +## 0.9.1 +Corection RS41
+Correction DFM 06/09
+Add DFM17
+Correction for all trame recived for M10 and M20 1000ms to 1512ms,
+Correction formulaire QRG, and end RS no save + +## 0.9.0 +Add M20 + +## 0.8.8 + +Add M10+
+Add Temps restant avant impacte au sol si 99: 0. 0 soit le balon de la sonde n a pas encore éclaté,
+ou les informations ne sont pas disponible actuellement
+Add Test Buzzer au démarrage "Arche Perdu" Lol pour des chasseurs de sonde!
+Compatible Lilygo esp32 GPS inboard pin 34 Rx, 12 Tx + +## 0.8.7 + +correction bug Buzzer Off->On->Off
+Add GainLNA RX SX1278FSK on Web config paramètre
+Add update OTA Os + DataWeb
+correction bugs sondmap.html
+correction text upgrade Os et DataWeb
+correction texte boussole S et N
+correction bugs distance 4928Km si lat et lon =0 erroné
+correction bugs fonction Vbat
+Add Telemetry width export data.csv
+Suppression µSD incompatible avec pin SX1278FSK et SPI
+Add transfert Telemetry To µSD on put SD automatic + +## 0.8.5 + +Evolution majeur du système
+affichage du pourcentage de la batterie en mode scanning
+création d'une fenetre Batterie, Boussole
+suppresion lib et code TFT
+création Azimute, elevation correction de Bugs majeur , mineur
+Ajout fonction Smetre, Buzzer, QTH, Gps on off ...
+mise à jour OTA
+trop de modification pour toutes les expliciter! + +## 0.8.1 + +modification de la partie Web + +## 0.8.0 + +travail de refonte et réécriture du code + +------------------------------------------------------------------------------- + +## Les Boutons optionnel à ajouter(souder) +sur les GPIO 1002 et 1004
+attention: + ++3.3V--[ SW ]---GPIO----[ R1 ]---/ R1=10 ou 12KOhms + +- appuie court <1.5 seconds
+- appuie double court 0.5 seconds
+- appuie moyen 2-4 seconds
+- appuie long >5 seconds + +## Buzzer optionnel à ajouter(souder) +sur les GPIO 25 ou 12 suivant le modèl + +GPIO --[ BUZZER ]---/ + +## Wifi configuration + +Au démarrage, si aucune connexion possible au wifi paramètré, il monte un Wifi AP
+le SSID et mot de passe par défaut est: Radiosonde
+en mode AP, il doit être en 192.168.4.1,
+mais vous avez aussi la possibilité de mettre http://radiosonde.local dans n'importe quel Wifi +connecté. + + + +## Mode Scanne + +Le fichier qrg.txt contient la liste par défaut des cannaux. +pour y configurer les noms, fréquences et mode [M=M10, 6=DFM06, 9=DFM09 et 4=RS41] + + +## Mode Réception + +En réception, une seul fréquence est décodé, les infos de la sonde (ID, GPS, RSSI, ...) +seront affichées dans plusieur fenetre à choisir ( 0 à 6) à configurer dans la page Web +rubrique config. +In receiving mode, a single frequency will be decoded, and sonde info (ID, GPS +coordinates, RSSI) will be displayed. The bar above the IP address indicates, +for the last 18 frames, if reception was successfull (|) or failed (.) +A DOUBLE press will switch to scanning mode. +A SHORT press will switch to the next channel in channels.txt + +## Mode Analyseur + +Le mode analyseur de spectre (400..406 MHz) est affiché (chaque ligne == 50 kHz) +Pour les cartes TTGO sans bouton configurable, il y a un nouveau paramètre dans config.txt: +- spectrum=10 // 0=off / 1-99 nombre de seconds pour afficher l'analyseur +- timer=1 // 0=off / 1= afficher le compte à rebours du spectre dans l'affichage du spectre +- marker=1 // 0=off / 1= afficher la fréquence dans l'affichage du spectre + +## Setup + +voir Setup.md pour l'installation! + +73 +Xavier + + + + RadioSonde Version 0.9.1 +============================ + + + + + + + + + +Projet basé sur le travail de DL9RDZ +==================================== + +Pour TTGO LORA 32 esp32 pico D4
+Décodage de RadioSonde RS41/92 and DFM06/09/17 et M10+/20 + +Attention à la version de votre TTGO!
+vous devez modifier dans config.txt, le port de l'écran OLED
+- TTGO v1: SDA=4 SCL=15, RST=16
+- TTGO v2: SDA=21 SCL=22, RST=16 + +## Version en production 0.9.1 devel 0.9.2 + +## 0.9.1 +Corection RS41
+Correction DFM 06/09
+Add DFM17
+Correction for all trame recived for M10 and M20 1000ms to 1512ms,
+Correction formulaire QRG, and end RS no save + +## 0.9.0 +Add M20 + +## 0.8.8 + +Add M10+
+Add Temps restant avant impacte au sol si 99: 0. 0 soit le balon de la sonde n a pas encore éclaté,
+ou les informations ne sont pas disponible actuellement
+Add Test Buzzer au démarrage "Arche Perdu" Lol pour des chasseurs de sonde!
+Compatible Lilygo esp32 GPS inboard pin 34 Rx, 12 Tx + +## 0.8.7 + +correction bug Buzzer Off->On->Off
+Add GainLNA RX SX1278FSK on Web config paramètre
+Add update OTA Os + DataWeb
+correction bugs sondmap.html
+correction text upgrade Os et DataWeb
+correction texte boussole S et N
+correction bugs distance 4928Km si lat et lon =0 erroné
+correction bugs fonction Vbat
+Add Telemetry width export data.csv
+Suppression µSD incompatible avec pin SX1278FSK et SPI
+Add transfert Telemetry To µSD on put SD automatic + +## 0.8.5 + +Evolution majeur du système
+affichage du pourcentage de la batterie en mode scanning
+création d'une fenetre Batterie, Boussole
+suppresion lib et code TFT
+création Azimute, elevation correction de Bugs majeur , mineur
+Ajout fonction Smetre, Buzzer, QTH, Gps on off ...
+mise à jour OTA
+trop de modification pour toutes les expliciter! + +## 0.8.1 + +modification de la partie Web + +## 0.8.0 + +travail de refonte et réécriture du code + +------------------------------------------------------------------------------- + +## Les Boutons optionnel à ajouter(souder) +sur les GPIO 1002 et 1004
+attention: + ++3.3V--[ SW ]---GPIO----[ R1 ]---/ R1=10 ou 12KOhms + +- appuie court <1.5 seconds
+- appuie double court 0.5 seconds
+- appuie moyen 2-4 seconds
+- appuie long >5 seconds + +## Buzzer optionnel à ajouter(souder) +sur les GPIO 25 ou 12 suivant le modèl + +GPIO --[ BUZZER ]---/ + +## Wifi configuration + +Au démarrage, si aucune connexion possible au wifi paramètré, il monte un Wifi AP
+le SSID et mot de passe par défaut est: Radiosonde
+en mode AP, il doit être en 192.168.4.1,
+mais vous avez aussi la possibilité de mettre http://radiosonde.local dans n'importe quel Wifi +connecté. + + + +## Mode Scanne + +Le fichier qrg.txt contient la liste par défaut des cannaux. +pour y configurer les noms, fréquences et mode [M=M10, 6=DFM06, 9=DFM09 et 4=RS41] + + +## Mode Réception + +En réception, une seul fréquence est décodé, les infos de la sonde (ID, GPS, RSSI, ...) +seront affichées dans plusieur fenetre à choisir ( 0 à 6) à configurer dans la page Web +rubrique config. +In receiving mode, a single frequency will be decoded, and sonde info (ID, GPS +coordinates, RSSI) will be displayed. The bar above the IP address indicates, +for the last 18 frames, if reception was successfull (|) or failed (.) +A DOUBLE press will switch to scanning mode. +A SHORT press will switch to the next channel in channels.txt + +## Mode Analyseur + +Le mode analyseur de spectre (400..406 MHz) est affiché (chaque ligne == 50 kHz) +Pour les cartes TTGO sans bouton configurable, il y a un nouveau paramètre dans config.txt: +- spectrum=10 // 0=off / 1-99 nombre de seconds pour afficher l'analyseur +- timer=1 // 0=off / 1= afficher le compte à rebours du spectre dans l'affichage du spectre +- marker=1 // 0=off / 1= afficher la fréquence dans l'affichage du spectre + +## Setup + +voir Setup.md pour l'installation! + +73 +Xavier + + + + diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino new file mode 100644 index 0000000..ffbf127 --- /dev/null +++ b/RX_FSK/RX_FSK.ino @@ -0,0 +1,3874 @@ +#include "features.h" +#include "version.h" + +#include "axp20x.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "esp_heap_caps.h" +#include "soc/rtc_wdt.h" + +#include "src/SX1278FSK.h" +#include "src/Sonde.h" +#include "src/Display.h" +#include "src/Scanner.h" +#include "src/geteph.h" +#include "src/rs92gps.h" +#include "src/aprs.h" +#include "src/ShFreqImport.h" +#include "src/RS41.h" +#include "src/json.h" +#if FEATURE_CHASEMAPPER +#include "src/Chasemapper.h" +#endif + +#if FEATURE_MQTT +#include "src/mqtt.h" +#endif + +//#define ESP_MEM_DEBUG 1 +//int e; + +enum MainState { ST_DECODER, ST_SPECTRUM, ST_WIFISCAN, ST_UPDATE, ST_TOUCHCALIB }; +static MainState mainState = ST_WIFISCAN; // ST_WIFISCAN; +const char *mainStateStr[5] = {"DECODER", "SPECTRUM", "WIFISCAN", "UPDATE", "TOUCHCALIB" }; + +AsyncWebServer server(80); +AsyncWebSocket ws("/ws"); + +AXP20X_Class axp; +#define PMU_IRQ 35 +SemaphoreHandle_t axpSemaphore; +// 0: cleared; 1: set; 2: do not check, also query state of axp via i2c on each loop +uint8_t pmu_irq = 0; + +String updateHost = "xavier.debert.free.fr"; +int updatePort = 80; +String updateBinM = "/RS/radiosonde/update.ino.bin"; +String updateBinD = "/RS/radiosondedevel/update.ino.bin"; +String *updateBin = &updateBinM; +String updateDataWeb = "/RS/dataweb/data.tar"; + +#define LOCALUDPPORT 14580 +//Get real UTC time from NTP server +const char* ntpServer = "pool.ntp.org"; +const long gmtOffset_sec = 0; //UTC +const int daylightOffset_sec = 0; //UTC + +boolean connected = false; +WiFiUDP udp; +WiFiClient client; + +/* Sonde.h: enum SondeType { STYPE_DFM,, STYPE_RS41, STYPE_RS92, STYPE_M10M20, STYPE_M10, STYPE_M20, STYPE_MP3H }; */ +const char *sondeTypeStrSH[NSondeTypes] = { "DFM", "RS41", "RS92", "Mxx"/*never sent*/, "M10", "M20", "MRZ" }; +const char *dfmSubtypeStrSH[16] = { NULL, NULL, NULL, NULL, NULL, NULL, + "DFM06", // 0x06 + "PS15", // 0x07 + NULL, NULL, + "DFM09", // 0x0A + "DFM17", // 0x0B + "DFM09P", // 0x0C + "DFM17", // 0x0D + NULL, NULL + }; + +// Times in ms, i.e. station: 10 minutes, mobile: 20 seconds +#define APRS_STATION_UPDATE_TIME (10*60*1000) +#define APRS_MOBILE_STATION_UPDATE_TIME (20*1000) +unsigned long time_last_aprs_update = -APRS_STATION_UPDATE_TIME; + +#if FEATURE_SONDEHUB +#define SONDEHUB_STATION_UPDATE_TIME (60*60*1000) // 60 min +#define SONDEHUB_MOBILE_STATION_UPDATE_TIME (30*1000) // 30 sec +WiFiClient shclient; // Sondehub v2 +int shImportInterval = 0; +char shImport = 0; +unsigned long time_last_update = 0; +#endif +/* SH_LOC_OFF: never send position information to SondeHub + SH_LOC_FIXED: send fixed position (if specified in config) to sondehub + SH_LOC_CHASE: always activate chase mode and send GPS position (if available) + SH_LOC_AUTO: if there is no valid GPS position, or GPS position < MIN_LOC_AUTO_DIST away from known fixed position: use FIXED mode + otherwise, i.e. if there is a valid GPS position and (either no fixed position in config, or GPS position is far away from fixed position), use CHASE mode. +*/ +// same constants used for SondeHub and APRS +enum { SH_LOC_OFF, SH_LOC_FIXED, SH_LOC_CHASE, SH_LOC_AUTO }; +/* auto mode is chase if valid GPS position and (no fixed location entered OR valid GPS position and distance in lat/lon deg to fixed location > threshold) */ +#define MIN_LOC_AUTO_DIST 200 /* meter */ +#define SH_LOC_AUTO_IS_CHASE ( gpsPos.valid && ( (isnan(sonde.config.rxlat) || isnan(sonde.config.rxlon) ) || \ + calcLatLonDist( gpsPos.lat, gpsPos.lon, sonde.config.rxlat, sonde.config.rxlon ) > MIN_LOC_AUTO_DIST ) ) +extern float calcLatLonDist(float lat1, float lon1, float lat2, float lon2); + +// KISS over TCP for communicating with APRSdroid +WiFiServer tncserver(14580); +WiFiClient tncclient; +// JSON over TCP for communicating with the rdzSonde (rdzwx-go) Android app +WiFiServer rdzserver(14570); +WiFiClient rdzclient; +// APRS over TCP for radiosondy.info etc +AsyncClient tcpclient; + +#if FEATURE_MQTT +unsigned long lastMqttUptime = 0; +boolean mqttEnabled; +MQTT mqttclient; +#endif +boolean forceReloadScreenConfig = false; + +enum KeyPress { KP_NONE = 0, KP_SHORT, KP_DOUBLE, KP_MID, KP_LONG }; + +// "doublepress" is now also used to eliminate key glitch on TTGO T-Beam startup (SENSOR_VN/GPIO39) +struct Button { + uint8_t pin; + uint32_t numberKeyPresses; + KeyPress pressed; + unsigned long keydownTime; + int8_t doublepress; + bool isTouched; +}; +Button button1 = {0, 0, KP_NONE, 0, -1, false}; +Button button2 = {0, 0, KP_NONE, 0, -1, false}; + + +static int lastDisplay = 1; +static int currentDisplay = 1; + +// timestamp when spectrum display was activated +static unsigned long specTimer; + +void enterMode(int mode); +void WiFiEvent(WiFiEvent_t event); + +char buffer[85]; +MicroNMEA nmea(buffer, sizeof(buffer)); + +// Read line from file, independent of line termination (LF or CR LF) +String readLine(Stream &stream) { + String s = stream.readStringUntil('\n'); + int len = s.length(); + if (len == 0) return s; + if (s.charAt(len - 1) == '\r') s.remove(len - 1); + return s; +} + +// Read line from file, without using dynamic memory allocation (String class) +// returns length line. +int readLine(Stream &stream, char *buffer, int maxlen) { + int n = stream.readBytesUntil('\n', buffer, maxlen); + buffer[n] = 0; + if (n <= 0) return 0; + if (buffer[n - 1] == '\r') { + buffer[n - 1] = 0; + n--; + } + return n; +} + + +// Replaces placeholder with LED state value +String processor(const String& var) { + Serial.println(var); + if (var == "MAPCENTER") { + double lat, lon; + if (gpsPos.valid) { + lat = gpsPos.lat; + lon = gpsPos.lon; + } + else { + lat = sonde.config.rxlat; + lon = sonde.config.rxlon; + } + if ( !isnan(lat) && !isnan(lon) ) { + char p[40]; + snprintf(p, 40, "%g,%g", lat, lon); + return String(p); + } else { + return String("48,13"); + } + } + if (var == "VERSION_NAME") { + return String(version_name); + } + if (var == "VERSION_ID") { + return String(version_id); + } + if (var == "FULLNAMEID") { + char tmp[128]; + snprintf(tmp, 128, "%s-%c%d", version_id, SPIFFS_MAJOR + 'A' - 1, SPIFFS_MINOR); + return String(tmp); + } + if (var == "AUTODETECT_INFO") { + char tmpstr[128]; + const char *fpstr; + int i = 0; + while (fingerprintValue[i] != sonde.fingerprint && fingerprintValue[i] != -1) i++; + if (fingerprintValue[i] == -1) { + fpstr = "Unknown board"; + } else { + fpstr = fingerprintText[i]; + } + snprintf(tmpstr, 128, "Fingerprint %d (%s)", sonde.fingerprint, fpstr); + return String(tmpstr); + } + if (var == "EPHSTATE") { + return String(ephtxt[ephstate]); + } + return String(); +} + +const String sondeTypeSelect(int activeType) { + String sts = ""; + for (int i = 0; i < NSondeTypes; i++) { + sts += "
" + "
RadioSonde "); + strcat(ptr, version_id); + strcat(ptr, ""); +} + +const char *createQRGForm() { + char *ptr = message; + strcpy(ptr, HTMLHEAD); + strcat(ptr, ""); + HTMLBODY(ptr, "qrg.html"); + //strcat(ptr, "
"); + strcat(ptr, "\n"); + strcat(ptr, "
"); + strcat(ptr, "\n"); + //
"); + HTMLSAVEBUTTON(ptr); + HTMLBODYEND(ptr); + Serial.printf("QRG form: size=%d bytes\n", strlen(message)); + return message; +} + +const char *handleQRGPost(AsyncWebServerRequest *request) { + char label[10]; + // parameters: a_i, f_1, t_i (active/frequency/type) + File file = SPIFFS.open("/qrg.txt", "w"); + if (!file) { + Serial.println("Error while opening '/qrg.txt' for writing"); + return "Error while opening '/qrg.txt' for writing"; + } + Serial.println("Handling post request"); +#if 0 + int params = request->params(); + for (int i = 0; i < params; i++) { + String pname = request->getParam(i)->name(); + Serial.println(pname.c_str()); + } +#endif + for (int i = 1; i <= sonde.config.maxsonde; i++) { + snprintf(label, 10, "A%d", i); + AsyncWebParameter *active = request->getParam(label, true); + snprintf(label, 10, "F%d", i); + AsyncWebParameter *freq = request->getParam(label, true); + snprintf(label, 10, "S%d", i); + AsyncWebParameter *launchsite = request->getParam(label, true); + if (!freq) continue; + snprintf(label, 10, "T%d", i); + AsyncWebParameter *type = request->getParam(label, true); + if (!type) continue; + String fstring = freq->value(); + String tstring = type->value(); + String sstring = launchsite->value(); + const char *fstr = fstring.c_str(); + const char *tstr = tstring.c_str(); + const char *sstr = sstring.c_str(); + if (*tstr == '6' || *tstr == '9') tstr = "D"; + Serial.printf("Processing a=%s, f=%s, t=%s, site=%s\n", active ? "YES" : "NO", fstr, tstr, sstr); + char typech = tstr[0]; + file.printf("%3.3f %c %c %s\n", atof(fstr), typech, active ? '+' : '-', sstr); + } + file.close(); + + Serial.println("Channel setup finished\n"); + setupChannelList(); + return ""; +} + + +/////////////////// Functions for reading/writing Wifi networks from networks.txt + +#define MAX_WIFI 10 +int nNetworks; +struct { + String id; + String pw; +} networks[MAX_WIFI]; + +// FIXME: For now, we don't uspport wifi networks that contain newline or null characters +// ... would require a more sophisicated file format (currently one line SSID; one line Password +void setupWifiList() { + File file = SPIFFS.open("/networks.txt", "r"); + if (!file) { + Serial.println("There was an error opening the file '/networks.txt' for reading"); + networks[0].id = "RDZsonde"; + networks[0].pw = "RDZsonde"; + return; + } + int i = 0; + + while (file.available()) { + String line = readLine(file); //file.readStringUntil('\n'); + if (!file.available()) break; + networks[i].id = line; + networks[i].pw = readLine(file); // file.readStringUntil('\n'); + i++; + } + nNetworks = i; + Serial.print(i); Serial.println(" networks in networks.txt\n"); + for (int j = 0; j < i; j++) { + Serial.print(networks[j].id); + Serial.print(": "); + Serial.println(networks[j].pw); + } +} + + +const char *createWIFIForm() { + char *ptr = message; + char tmp[4]; + strcpy(ptr, HTMLHEAD); + strcat(ptr, ""); + HTMLBODY(ptr, "wifi.html"); + strcat(ptr, "
IDActiveFreqLaunchsiteMode
"); + for (int i = 0; i < MAX_WIFI; i++) { + sprintf(tmp, "%d", i); + sprintf(ptr + strlen(ptr), "" + "", + i == 0 ? "AP" : tmp, + i + 1, i < nNetworks ? networks[i].id.c_str() : "", + i + 1, i < nNetworks ? networks[i].pw.c_str() : ""); + } + strcat(ptr, "
NrSSIDPassword
%s
"); + //
"); + HTMLSAVEBUTTON(ptr); + HTMLBODYEND(ptr); + Serial.printf("WIFI form: size=%d bytes\n", strlen(message)); + return message; +} + +#if 0 + // moved to map.html (active warning is still TODO +const char *createSondeHubMap() { + SondeInfo *s = &sonde.sondeList[0]; + char *ptr = message; + strcpy(ptr, HTMLHEAD); strcat(ptr, ""); + HTMLBODY(ptr, "map.html"); + if (!sonde.config.sondehub.active) { + strcat(ptr, "
NOTE: SondeHub uploading is not enabled, detected sonde will not be visable on map
"); + if ((*s->d.ser == 0) && ( !isnan(sonde.config.rxlat))) { + sprintf(ptr + strlen(ptr), "", sonde.config.rxlat, sonde.config.rxlon); + } else { + sprintf(ptr + strlen(ptr), "", s->d.ser); + } + } else { + if ((*s->d.ser == 0) && (!isnan(sonde.config.rxlat))) { + sprintf(ptr, "", sonde.config.rxlat, sonde.config.rxlon); + } else { + sprintf(ptr, "", s->d.ser); + } + } + HTMLBODYEND(ptr); + return message; +} +#endif + +const char *handleWIFIPost(AsyncWebServerRequest *request) { + char label[10]; + // parameters: a_i, f_1, t_i (active/frequency/type) +#if 1 + File f = SPIFFS.open("/networks.txt", "w"); + if (!f) { + Serial.println("Error while opening '/networks.txt' for writing"); + return "Error while opening '/networks.txt' for writing"; + } +#endif + Serial.println("Handling post request"); +#if 0 + int params = request->params(); + for (int i = 0; i < params; i++) { + String param = request->getParam(i)->name(); + Serial.println(param.c_str()); + } +#endif + for (int i = 1; i <= MAX_WIFI; i++) { + snprintf(label, 10, "S%d", i); + AsyncWebParameter *ssid = request->getParam(label, true); + if (!ssid) continue; + snprintf(label, 10, "P%d", i); + AsyncWebParameter *pw = request->getParam(label, true); + if (!pw) continue; + String sstring = ssid->value(); + String pstring = pw->value(); + const char *sstr = sstring.c_str(); + const char *pstr = pstring.c_str(); + if (strlen(sstr) == 0) continue; + Serial.printf("Processing S=%s, P=%s\n", sstr, pstr); + f.printf("%s\n%s\n", sstr, pstr); + } + f.close(); + setupWifiList(); + return ""; +} + +// Show current status +void addSondeStatus(char *ptr, int i) +{ + struct tm ts; + SondeInfo *s = &sonde.sondeList[i]; + strcat(ptr, ""); + sprintf(ptr + strlen(ptr), "\n", s->d.lat, s->d.lon, s->d.alt); + const time_t t = s->d.time; + ts = *gmtime(&t); + sprintf(ptr + strlen(ptr), "", + s->d.frame, s->d.sats, ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec); + if (s->type == STYPE_RS41) { + sprintf(ptr + strlen(ptr), "\n", + s->d.burstKT, s->d.launchKT, s->d.countKT, ((uint16_t)s->d.frame - s->d.crefKT)); + } + sprintf(ptr + strlen(ptr), "", s->d.lat, s->d.lon); + + strcat(ptr, "
%3.3f MHz, Type: %s
ID: %s", s->freq, sondeTypeLongStr[sonde.realType(s)], + s->d.validID ? s->d.id : ""); + if (s->d.validID && (TYPE_IS_DFM(s->type) || TYPE_IS_METEO(s->type) || s->type == STYPE_MP3H) ) { + sprintf(ptr + strlen(ptr), " (ser: %s)", s->d.ser); + } + sprintf(ptr + strlen(ptr), "
QTH: %.6f,%.6f h=%.0fm
Frame# %u, Sats=%d, %04d-%02d-%02d %02d:%02d:%02d
Burst-KT=%d Launch-KT=%d Countdown=%d (vor %ds)
GEO-App - ", s->d.lat, s->d.lon); + sprintf(ptr + strlen(ptr), "radiosondy.info - ", s->d.id); + sprintf(ptr + strlen(ptr), "SondeHub Tracker - ", s->d.ser); + sprintf(ptr + strlen(ptr), "OSM - ", s->d.lat, s->d.lon); + sprintf(ptr + strlen(ptr), "Google
\n"); +} + +const char *createStatusForm() { + char *ptr = message; + strcpy(ptr, HTMLHEAD); + strcat(ptr, ""); + HTMLBODY(ptr, "status.html"); + strcat(ptr, "
"); + + for (int i = 0; i < sonde.config.maxsonde; i++) { + int snum = (i + sonde.currentSonde) % sonde.config.maxsonde; + if (sonde.sondeList[snum].active) { + addSondeStatus(ptr, snum); + } + } + strcat(ptr, "
" + "RadioSonde "); + strcat(ptr, version_id); + strcat(ptr, ""); + + HTMLBODYEND(ptr); + Serial.printf("Status form: size=%d bytes\n", strlen(message)); + return message; +} + +const char *createLiveJson() { + char *ptr = message; + SondeInfo *s = &sonde.sondeList[sonde.currentSonde]; + + strcpy(ptr, "{\"sonde\": {"); + // use the same JSON format here as for MQTT and for the Android App + sonde2json( ptr+strlen(ptr), 1024, s ); +#if 0 + sprintf(ptr + strlen(ptr), "\"sonde\": {\"rssi\": %d, \"vframe\": %d, \"time\": %d,\"id\": \"%s\", \"freq\": %3.3f, \"type\": \"%s\"", + s->rssi, s->d.vframe, s->d.time, s->d.id, s->freq, sondeTypeStr[sonde.realType(s)]); + + if ( !isnan(s->d.lat) && !isnan(s->d.lon) ) + sprintf(ptr + strlen(ptr), ", \"lat\": %.6f, \"lon\": %.6f", s->d.lat, s->d.lon); + if ( !isnan(s->d.alt) ) + sprintf(ptr + strlen(ptr), ", \"alt\": %.0f", s->d.alt); + if ( !isnan(s->d.dir) ) + sprintf(ptr + strlen(ptr), ", \"dir\": %.0f", s->d.dir); + if ( !isnan(s->d.vs) ) + sprintf(ptr + strlen(ptr), ", \"climb\": %.1f", s->d.vs); + if ( !isnan(s->d.hs) ) + sprintf(ptr + strlen(ptr), ", \"speed\": %.1f", s->d.hs); + + sprintf(ptr + strlen(ptr), ", \"launchsite\": \"%s\", \"res\": %d }", s->launchsite, s->rxStat[0]); +#endif + strcat(ptr, " }"); + if (gpsPos.valid) { + sprintf(ptr + strlen(ptr), ", \"gps\": {\"lat\": %g, \"lon\": %g, \"alt\": %d, \"sat\": %d, \"speed\": %g, \"dir\": %d, \"hdop\": %d }", gpsPos.lat, gpsPos.lon, gpsPos.alt, gpsPos.sat, gpsPos.speed, gpsPos.course, gpsPos.hdop); + //} + } else { + // no GPS position, but maybe a fixed position + if ((!isnan(sonde.config.rxlat)) && (!isnan(sonde.config.rxlon))) { + int alt = isnan(sonde.config.rxalt) ? 0 : (int)sonde.config.rxalt; + sprintf(ptr + strlen(ptr), ", \"gps\": {\"lat\": %g, \"lon\": %g, \"alt\": %d, \"sat\": 0, \"speed\": 0, \"dir\": 0, \"hdop\": 0 }", sonde.config.rxlat, sonde.config.rxlon, alt); + } + } + + strcat(ptr, "}"); + return message; +} +///////////////////// Config form + + +void setupConfigData() { + File file = SPIFFS.open("/config.txt", "r"); + if (!file) { + Serial.println("There was an error opening the file '/config.txt' for reading"); + return; + } + while (file.available()) { + String line = readLine(file); //file.readStringUntil('\n'); + sonde.setConfig(line.c_str()); + } + sonde.checkConfig(); // eliminate invalid entries +#if FEATURE_SONDEHUB + shImportInterval = 5; // refresh now in 5 seconds +#endif +} + + +struct st_configitems config_list[] = { + /* General config settings */ + {"wifi", 0, &sonde.config.wifi}, + {"debug", 0, &sonde.config.debug}, + {"maxsonde", 0, &sonde.config.maxsonde}, + {"rxlat", -7, &sonde.config.rxlat}, + {"rxlon", -7, &sonde.config.rxlon}, + {"rxalt", -7, &sonde.config.rxalt}, + {"screenfile", 0, &sonde.config.screenfile}, + {"display", -6, sonde.config.display}, + {"dispsaver", 0, &sonde.config.dispsaver}, + {"dispcontrast", 0, &sonde.config.dispcontrast}, + /* Spectrum display settings */ + {"spectrum", 0, &sonde.config.spectrum}, + {"startfreq", 0, &sonde.config.startfreq}, + {"channelbw", 0, &sonde.config.channelbw}, + {"marker", 0, &sonde.config.marker}, + {"noisefloor", 0, &sonde.config.noisefloor}, + /* decoder settings */ + {"freqofs", 0, &sonde.config.freqofs}, + {"rs41.agcbw", 0, &sonde.config.rs41.agcbw}, + {"rs41.rxbw", 0, &sonde.config.rs41.rxbw}, + {"rs92.rxbw", 0, &sonde.config.rs92.rxbw}, + {"rs92.alt2d", 0, &sonde.config.rs92.alt2d}, + {"dfm.agcbw", 0, &sonde.config.dfm.agcbw}, + {"dfm.rxbw", 0, &sonde.config.dfm.rxbw}, + {"m10m20.agcbw", 0, &sonde.config.m10m20.agcbw}, + {"m10m20.rxbw", 0, &sonde.config.m10m20.rxbw}, + {"mp3h.agcbw", 0, &sonde.config.mp3h.agcbw}, + {"mp3h.rxbw", 0, &sonde.config.mp3h.rxbw}, + {"ephftp", 39, &sonde.config.ephftp}, + /* APRS settings */ + {"call", 9, sonde.config.call}, + {"passcode", 0, &sonde.config.passcode}, + /* KISS tnc settings */ + {"kisstnc.active", 0, &sonde.config.kisstnc.active}, + /* AXUDP settings */ + {"axudp.active", -3, &sonde.config.udpfeed.active}, + {"axudp.host", 63, sonde.config.udpfeed.host}, + {"axudp.port", 0, &sonde.config.udpfeed.port}, + {"axudp.highrate", 0, &sonde.config.udpfeed.highrate}, + /* APRS TCP settings, current not used */ + {"tcp.active", -3, &sonde.config.tcpfeed.active}, + {"tcp.host", 63, sonde.config.tcpfeed.host}, + {"tcp.port", 0, &sonde.config.tcpfeed.port}, + {"tcp.chase", 0, &sonde.config.chase}, + {"tcp.comment", 30, sonde.config.comment}, + {"tcp.objcall", 9, sonde.config.objcall}, + {"tcp.beaconsym", 4, sonde.config.beaconsym}, + {"tcp.highrate", 0, &sonde.config.tcpfeed.highrate}, +#if FEATURE_CHASEMAPPER + /* Chasemapper settings */ + {"cm.active", -3, &sonde.config.cm.active}, + {"cm.host", 63, &sonde.config.cm.host}, + {"cm.port", 0, &sonde.config.cm.port}, +#endif +#if FEATURE_MQTT + /* MQTT */ + {"mqtt.active", 0, &sonde.config.mqtt.active}, + {"mqtt.id", 63, &sonde.config.mqtt.id}, + {"mqtt.host", 63, &sonde.config.mqtt.host}, + {"mqtt.port", 0, &sonde.config.mqtt.port}, + {"mqtt.username", 63, &sonde.config.mqtt.username}, + {"mqtt.password", 63, &sonde.config.mqtt.password}, + {"mqtt.prefix", 63, &sonde.config.mqtt.prefix}, +#endif + + /* Hardware dependeing settings */ + {"disptype", 0, &sonde.config.disptype}, + {"norx_timeout", 0, &sonde.config.norx_timeout}, + {"oled_sda", 0, &sonde.config.oled_sda}, + {"oled_scl", 0, &sonde.config.oled_scl}, + {"oled_rst", 0, &sonde.config.oled_rst}, + {"button_pin", -4, &sonde.config.button_pin}, + {"button2_pin", -4, &sonde.config.button2_pin}, + {"button2_axp", 0, &sonde.config.button2_axp}, + {"touch_thresh", 0, &sonde.config.touch_thresh}, + {"power_pout", 0, &sonde.config.power_pout}, + {"led_pout", 0, &sonde.config.led_pout}, + {"gps_rxd", 0, &sonde.config.gps_rxd}, + {"gps_txd", 0, &sonde.config.gps_txd}, + {"batt_adc", 0, &sonde.config.batt_adc}, +#if 1 + {"sx1278_ss", 0, &sonde.config.sx1278_ss}, + {"sx1278_miso", 0, &sonde.config.sx1278_miso}, + {"sx1278_mosi", 0, &sonde.config.sx1278_mosi}, + {"sx1278_sck", 0, &sonde.config.sx1278_sck}, +#endif + {"mdnsname", 14, &sonde.config.mdnsname}, + {"buzzerOn", 0, &sonde.config.buzzerOn}, + {"buzzerPort", 0, &sonde.config.buzzerPort}, + {"buzzerFreq", 0, &sonde.config.buzzerFreq}, + {"dbsmetre", 0, &sonde.config.dbsmetre}, + {"degdec", 0, &sonde.config.degdec}, + +#if FEATURE_SONDEHUB + /* SondeHub settings */ + {"sondehub.active", 0, &sonde.config.sondehub.active}, + {"sondehub.chase", 0, &sonde.config.sondehub.chase}, + {"sondehub.host", 63, &sonde.config.sondehub.host}, + {"sondehub.callsign", 63, &sonde.config.sondehub.callsign}, + {"sondehub.antenna", 63, &sonde.config.sondehub.antenna}, + {"sondehub.email", 63, &sonde.config.sondehub.email}, + {"sondehub.fiactive", 0, &sonde.config.sondehub.fiactive}, + {"sondehub.fiinterval", 0, &sonde.config.sondehub.fiinterval}, + {"sondehub.fimaxdist", 0, &sonde.config.sondehub.fimaxdist}, + {"sondehub.fimaxage", -7, &sonde.config.sondehub.fimaxage}, +#endif +}; + +const int N_CONFIG = (sizeof(config_list) / sizeof(struct st_configitems)); + +const char *createConfigForm() { + char *ptr = message; + strcpy(ptr, HTMLHEAD); + strcat(ptr, ""); + HTMLBODY(ptr, "config.html"); + strcat(ptr, "
"); + strcat(ptr, ""); + strcat(ptr, ""); + strcat(ptr, ""); + HTMLSAVEBUTTON(ptr); + HTMLBODYEND(ptr); + Serial.printf("Config form: size=%d bytes\n", strlen(message)); + return message; +} + + +const char *handleConfigPost(AsyncWebServerRequest * request) { + // parameters: a_i, f_1, t_i (active/frequency/type) + Serial.println("Handling post request"); +#if 1 + File f = SPIFFS.open("/config.txt", "w"); + if (!f) { + Serial.println("Error while opening '/config.txt' for writing"); + return "Error while opening '/config.txt' for writing"; + } +#endif + Serial.println("File open for writing."); + int params = request->params(); +#if 0 + for (int i = 0; i < params; i++) { + String param = request->getParam(i)->name(); + Serial.println(param.c_str()); + } +#endif + for (int i = 0; i < params; i++) { + String strlabel = request->getParam(i)->name(); + const char *label = strlabel.c_str(); + if (label[strlen(label) - 1] == '#') continue; + AsyncWebParameter *value = request->getParam(label, true); + if (!value) continue; + String strvalue = value->value(); + if ( strcmp(label, "button_pin") == 0 || + strcmp(label, "button2_pin") == 0) { + AsyncWebParameter *touch = request->getParam(strlabel + "#", true); + if (touch) { + int i = atoi(strvalue.c_str()); + if (i != -1 && i != 255) i += 128; + strvalue = String(i); + } + } + Serial.printf("Processing %s=%s\n", label, strvalue.c_str()); + //int wlen = f.printf("%s=%s\n", config_list[idx].name, strvalue.c_str()); + int wlen = f.printf("%s=%s\n", label, strvalue.c_str()); + Serial.printf("Written bytes: %d\n", wlen); + } + Serial.printf("Flushing file\n"); + f.flush(); + Serial.printf("Closing file\n"); + f.close(); + Serial.printf("Re-reading file file\n"); + setupConfigData(); + // TODO: Check if this is better done elsewhere? + // Use new config (whereever this is feasible without a reboot) + disp.setContrast(); + return ""; +} + +const char *ctrlid[] = {"rx", "scan", "spec", "wifi", "rx2", "scan2", "spec2", "wifi2", "reboot"}; + +const char *ctrllabel[] = {"Receiver/next freq. (short keypress)", "Scanner (double keypress)", "Spectrum (medium keypress)", "WiFi (long keypress)", + "Button 2/next screen (short keypress)", "Button 2 (double keypress)", "Button 2 (medium keypress)", "Button 2 (long keypress)", + "Reboot" + }; + +const char *createControlForm() { + char *ptr = message; + strcpy(ptr, HTMLHEAD); + strcat(ptr, ""); + HTMLBODY(ptr, "control.html"); + for (int i = 0; i < 9; i++) { + strcat(ptr, ""); + if (i == 3 || i == 7 ) { + strcat(ptr, "

"); + } + } + strcat(ptr, "
" + "RadioSonde "); + strcat(ptr, version_id); + strcat(ptr, ""); + HTMLBODYEND(ptr); + Serial.printf("Control form: size=%d bytes\n", strlen(message)); + return message; +} + + +const char *handleControlPost(AsyncWebServerRequest * request) { + Serial.println("Handling post request"); + int params = request->params(); + for (int i = 0; i < params; i++) { + String param = request->getParam(i)->name(); + Serial.println(param.c_str()); + if (param.equals("rx")) { + Serial.println("equals rx"); + button1.pressed = KP_SHORT; + } + else if (param.equals("scan")) { + Serial.println("equals scan"); + button1.pressed = KP_DOUBLE; + } + else if (param.equals("spec")) { + Serial.println("equals spec"); + button1.pressed = KP_MID; + } + else if (param.equals("wifi")) { + Serial.println("equals wifi"); + button1.pressed = KP_LONG; + } + else if (param.equals("rx2")) { + Serial.println("equals rx2"); + button2.pressed = KP_SHORT; + } + else if (param.equals("scan2")) { + Serial.println("equals scan2"); + button2.pressed = KP_DOUBLE; + } + else if (param.equals("spec2")) { + Serial.println("equals spec2"); + button2.pressed = KP_MID; + } + else if (param.equals("wifi2")) { + Serial.println("equals wifi2"); + button2.pressed = KP_LONG; + } + else if (param.equals("reboot")) { + Serial.println("equals reboot"); + ESP.restart(); + } + } + return ""; +} + +void handleUpload(AsyncWebServerRequest * request, String filename, size_t index, uint8_t *data, size_t len, bool final) { + static File file; + if (!index) { + Serial.printf("UploadStart: %s\n", filename.c_str()); + file = SPIFFS.open("/" + filename, "w"); + if (!file) { + Serial.println("There was an error opening the file '/config.txt' for reading"); + } + } + if (!file) return; + for (size_t i = 0; i < len; i++) { + file.write(data[i]); + } + if (final) { + Serial.printf("UploadEnd: %s, %u B\n", filename.c_str(), index + len); + file.close(); + } +} + + +int streamEditForm(int &state, File & file, String filename, char *buffer, size_t maxlen, size_t index) { + Serial.printf("streamEdit: state=%d max:%d idx:%d\n", state, maxlen, index); + int i = 0; + switch (state) { + case 0: // header + { + // we optimistically assume that on first invocation, maxlen is large enough to handle the header..... + strncpy(buffer, "Editor

Edit: ", maxlen); + i = strlen(buffer); + strncpy(buffer + i, filename.c_str(), maxlen - i); + i += strlen(buffer + i); + strncpy(buffer + i, "

", maxlen); + state++; + return strlen(buffer); + case 3: // end + return 0; + } + return 0; +} + +// bad idea. prone to buffer overflow. use at your own risk... +const char *createEditForm(String filename) { + Serial.println("Creating edit form"); + char *ptr = message; + File file = SPIFFS.open("/" + filename, "r"); + if (!file) { + Serial.println("There was an error opening the file '/config.txt' for reading"); + return "File not foundFile not found"; + } + + strcpy(ptr, "Editor "); + strcat(ptr, filename.c_str()); + strcat(ptr, "
"); + strcat(ptr, "
"); + Serial.printf("Edit form: size=%d bytes\n", strlen(message)); + return message; +} + + +const char *handleEditPost(AsyncWebServerRequest * request) { + Serial.println("Handling post request"); + int params = request->params(); + Serial.printf("Post:, %d params\n", params); + for (int i = 0; i < params; i++) { + AsyncWebParameter* p = request->getParam(i); + String name = p->name(); + String value = p->value(); + if (name.c_str() == NULL) { + name = String("NULL"); + } + if (value.c_str() == NULL) { + value = String("NULL"); + } + if (p->isFile()) { + Serial.printf("_FILE[%s]: %s, size: %u\n", name.c_str(), value.c_str(), p->size()); + } else if (p->isPost()) { + Serial.printf("_POST[%s]: %s\n", name.c_str(), value.c_str()); + } else { + Serial.printf("_GET[%s]: %s\n", name.c_str(), value.c_str()); + } + } + + AsyncWebParameter *filep = request->getParam("file"); + if (!filep) return NULL; + String filename = filep->value(); + Serial.printf("Writing file <%s>\n", filename.c_str()); + AsyncWebParameter *textp = request->getParam("text", true); + if (!textp) return NULL; + Serial.printf("Parameter size is %d\n", textp->size()); + Serial.printf("Multipart: %d contentlen=%d \n", + request->multipart(), request->contentLength()); + String content = textp->value(); + if (content.length() == 0) { + Serial.println("File is empty. Not written."); + return NULL; + } + File file = SPIFFS.open("/" + filename, "w"); + if (!file) { + Serial.println("There was an error opening the file '/" + filename + "'for writing"); + return ""; + } + Serial.printf("File is open for writing, content is %d bytes\n", content.length()); + int len = file.print(content); + file.close(); + Serial.printf("Written: %d bytes\n", len); + if (strncmp(filename.c_str(), "screens", 7) == 0) { + // screens update => reload + forceReloadScreenConfig = true; + } + return ""; +} + +const char *createUpdateForm(boolean run) { + char *ptr = message; + strcpy(ptr, "
"); + if (run) { + strcat(ptr, "

Doing update, wait until reboot

"); + } else { + sprintf(ptr + strlen(ptr), "

Version courante: %s-%c%d

\n", version_id, SPIFFS_MAJOR + 'A' - 1, SPIFFS_MINOR); + strcat(ptr, "

Version stable::
" + "Version devel:

"); + strcat(ptr, "
"); + strcat(ptr, "

Remarque : Si le suffixe est le même, la mise à jour devrait fonctionner correctement. Si le nombre est différent, la mise à jour contient des modifications dans le système de fichiers. Un re-flash complet est nécessaire pour obtenir toutes les nouvelles fonctionnalités, mais la mise à jour ne devrait rien casser. Si la lettre est différente, un re-flash complet est obligatoire, la mise à jour ne fonctionnera pas

"); + } + strcat(ptr, "
"); + Serial.printf("Update form: size=%d bytes\n", strlen(message)); + return message; +} + +const char *handleUpdatePost(AsyncWebServerRequest * request) { + Serial.println("Handling post request"); + int params = request->params(); + for (int i = 0; i < params; i++) { + String param = request->getParam(i)->name(); + Serial.println(param.c_str()); + if (param.equals("devel")) { + Serial.println("equals devel"); + updateBin = &updateBinD; + } + else if (param.equals("master")) { + Serial.println("equals master"); + updateBin = &updateBinM; + } + } + Serial.println("Updating: " + *updateBin); + enterMode(ST_UPDATE); + return ""; +} + +const char *createKMLLive(const char *myIP) { + char *ptr = message; + + strcpy(ptr, "loads dynamic.kmlhttp://"); + strcat(ptr, myIP); + strcat(ptr, "/dynamic.kmlonInterval10"); + + return message; +} + +void addSondeStatusKML(char *ptr, int i) +{ + SondeInfo *s = &sonde.sondeList[i]; + + if (!s->d.validID) + { + return; + } + + sprintf(ptr + strlen(ptr), "%sabsolute%.6f,%.6f,%.0f%3.3f MHz, Type: %s, h=%.0fm", + s->d.id, s->d.id, + s->d.lon, s->d.lat, s->d.alt, + s->freq, sondeTypeStr[sonde.realType(s)], s->d.alt); +} + +const char *createKMLDynamic() { + char *ptr = message; + + strcpy(ptr, ""); + + for (int i = 0; i < sonde.config.maxsonde; i++) { + int snum = (i + sonde.currentSonde) % sonde.config.maxsonde; + if (sonde.sondeList[snum].active) { + addSondeStatusKML(ptr, snum); + } + } + + strcat(ptr, ""); + + return message; +} + + +const char *sendGPX(AsyncWebServerRequest * request) { + Serial.println("\n\n\n********GPX request\n\n"); + String url = request->url(); + int index = atoi(url.c_str() + 1); + char *ptr = message; + if (index < 0 || index >= MAXSONDE) { + return "ERROR"; + } + SondeInfo *si = &sonde.sondeList[index]; + strcpy(si->d.id, "test"); + si->d.lat = 48; si->d.lon = 11; si->d.alt = 500; + snprintf(ptr, 10240, "\n" + "\n" + "" + "Sonde #%d (%s)\n" + "rdzTTGOsonde\n" + "\n" + "\n %f\n %s\n Radio BeaconSonde\n" + "\n", index, si->d.id, si->d.lat, si->d.lon, si->d.alt, si->d.id); + Serial.println(message); + return message; +} + + +const char* PARAM_MESSAGE = "message"; +void SetupAsyncServer() { + Serial.println("SetupAsyncServer()\n"); + server.reset(); + // Route for root / web page + server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(SPIFFS, "/index.html", String(), false, processor); + }); + + server.on("/index.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(SPIFFS, "/index.html", String(), false, processor); + }); + + server.on("/download", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/data.csv", "text/plain", true); + }); + + server.on("/test.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(SPIFFS, "/test.html", String(), false, processor); + }); + + server.on("/qrg.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/html", createQRGForm()); + }); + server.on("/qrg.html", HTTP_POST, [](AsyncWebServerRequest * request) { + handleQRGPost(request); + request->send(200, "text/html", createQRGForm()); + }); + + server.on("/wifi.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/html", createWIFIForm()); + }); + server.on("/wifi.html", HTTP_POST, [](AsyncWebServerRequest * request) { + handleWIFIPost(request); + request->send(200, "text/html", createWIFIForm()); + }); +/* + server.on("/map.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/html", createSondeHubMap()); + }); + server.on("/map.html", HTTP_POST, [](AsyncWebServerRequest * request) { + handleWIFIPost(request); + request->send(200, "text/html", createSondeHubMap()); + }); +*/ + server.on("/config.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/html", createConfigForm()); + }); + server.on("/config.html", HTTP_POST, [](AsyncWebServerRequest * request) { + handleConfigPost(request); + request->send(200, "text/html", createConfigForm()); + }); + + server.on("/status.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/html", createStatusForm()); + }); + server.on("/live.json", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/json", createLiveJson()); + }); + server.on("/livemap.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(SPIFFS, "/livemap.html", String(), false, processor); + }); + server.on("/livemap.js", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(SPIFFS, "/livemap.js", String(), false, processor); + }); + server.on("/update.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/html", createUpdateForm(0)); + }); + server.on("/update.html", HTTP_POST, [](AsyncWebServerRequest * request) { + handleUpdatePost(request); + request->send(200, "text/html", createUpdateForm(1)); + }); + + server.on("/control.html", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "text/html", createControlForm()); + }); + server.on("/control.html", HTTP_POST, [](AsyncWebServerRequest * request) { + handleControlPost(request); + request->send(200, "text/html", createControlForm()); + }); + + server.on("/file", HTTP_GET, [](AsyncWebServerRequest * request) { + String url = request->url(); + const char *filename = url.c_str() + 5; + if (*filename == 0) { + request->send(400, "error"); + return; + } + request->send(SPIFFS, filename, "text/plain"); + }); + server.on("/file", HTTP_POST, [](AsyncWebServerRequest * request) { + request->send(200); + }, handleUpload); + + server.on("/edit.html", HTTP_GET, [](AsyncWebServerRequest * request) { + // new version: + // Open file + // store file object in request->_tempObject + //request->send(200, "text/html", createEditForm(request->getParam(0)->value())); + const String filename = request->getParam(0)->value(); + File file = SPIFFS.open("/" + filename, "r"); + int state = 0; + request->send("text/html", 0, [state, file, filename](uint8_t *buffer, size_t maxLen, size_t index) mutable -> size_t { + Serial.printf("******* send callback: %d %d %d\n", state, maxLen, index); + return streamEditForm(state, file, filename, (char *)buffer, maxLen, index); + }); + }); + server.on("/edit.html", HTTP_POST, [](AsyncWebServerRequest * request) { + const char *ret = handleEditPost(request); + if (ret == NULL) + request->send(200, "text/html", "ERROR

Something went wrong (probably ESP32 out of memory). Uploaded file is empty.

"); + else { + String f = request->getParam(0)->value(); + request->redirect("/edit.html?file=" + f); + //request->send(200, "text/html", createEditForm(request->getParam(0)->value())); + } + }, + NULL, + [](AsyncWebServerRequest * request, uint8_t *data, size_t len, size_t index, size_t total) { + Serial.printf("post data: index=%d len=%d total=%d\n", index, len, total); + }); + + // Route to load style.css file + server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest * request) { + AsyncWebServerResponse *response = request->beginResponse(SPIFFS, "/style.css", "text/css"); + response->addHeader("Cache-Control", "max-age=86400"); + request->send(response); + }); + + server.on("/live.kml", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "application/vnd.google-earth.kml+xml", createKMLLive(sonde.ipaddr.c_str())); + }); + + server.on("/dynamic.kml", HTTP_GET, [](AsyncWebServerRequest * request) { + request->send(200, "application/vnd.google-earth.kml+xml", createKMLDynamic()); + }); + + server.onNotFound([](AsyncWebServerRequest * request) { + if (request->method() == HTTP_OPTIONS) { + request->send(200); + } else { + String url = request->url(); + if (url.endsWith(".gpx")) + request->send(200, "application/gpx+xml", sendGPX(request)); + else { + // TODO: set correct type for .js + request->send(SPIFFS, url, "text/html"); + Serial.printf("URL is %s\n", url.c_str()); + //request->send(404); + } + } + }); + + // Start server + server.begin(); +} + +int fetchWifiIndex(const char *id) { + for (int i = 0; i < nNetworks; i++) { + if (strcmp(id, networks[i].id.c_str()) == 0) { + Serial.printf("Match for %s at %d\n", id, i); + return i; + } + //Serial.printf("No match: '%s' vs '%s'\n", id, networks[i].id.c_str()); + const char *cfgid = networks[i].id.c_str(); + int len = strlen(cfgid); + if (strlen(id) > len) len = strlen(id); + } + return -1; +} + +const char *fetchWifiSSID(int i) { + return networks[i].id.c_str(); +} +const char *fetchWifiPw(int i) { + return networks[i].pw.c_str(); +} + +const char *fetchWifiPw(const char *id) { + for (int i = 0; i < nNetworks; i++) { + //Serial.print("Comparing '"); + //Serial.print(id); + //Serial.print("' and '"); + //Serial.print(networks[i].id.c_str()); + //Serial.println("'"); + if (strcmp(id, networks[i].id.c_str()) == 0) return networks[i].pw.c_str(); + } + return NULL; +} + +// It is not safe to call millis() in ISR!!! +// millis() does a division int64_t by 1000 for which gcc creates a library call +// on a 32bit system, and the called function has no IRAM_ATTR +// so doing it manually... +// Code adapted for 64 bits from https://www.hackersdelight.org/divcMore.pdf +int64_t IRAM_ATTR divs10(int64_t n) { + int64_t q, r; + n = n + (n >> 63 & 9); + q = (n >> 1) + (n >> 2); + q = q + (q >> 4); + q = q + (q >> 8); + q = q + (q >> 16); + q = q + (q >> 32); + q = q >> 3; + r = n - q * 10; + return q + ((r + 6) >> 4); + // return q + (r > 9); +} + +int64_t IRAM_ATTR divs1000(int64_t n) { + return divs10(divs10(divs10(n))); +} + +unsigned long IRAM_ATTR my_millis() +{ + return divs1000(esp_timer_get_time()); +} + +void checkTouchStatus(); +void touchISR(); +void touchISR2(); + +// ISR won't work for SPI transfer, so forget about the following approach +///// Also initialized timers for sx1278 handling with interruts +///// fastest mode currentily is 4800 bit/s, i.e. 600 bytes/sec +///// 64 byte FIFO will last for at most about 106 ms. +///// lets use a timer every 20ms to handle sx1278 FIFO input, that should be fine. +// Instead create a tast... + +Ticker ticker; +Ticker ledFlasher; + +#define IS_TOUCH(x) (((x)!=255)&&((x)!=-1)&&((x)&128)) +void initTouch() { + // also used for LED + ticker.attach_ms(300, checkTouchStatus); + + if ( !(IS_TOUCH(sonde.config.button_pin) || IS_TOUCH(sonde.config.button2_pin)) ) return; // no touch buttons configured + /* + * ** no. readTouch is not safe to use in ISR! + so now using Ticker + hw_timer_t *timer = timerBegin(0, 80, true); + timerAttachInterrupt(timer, checkTouchStatus, true); + timerAlarmWrite(timer, 300000, true); + timerAlarmEnable(timer); + */ + if ( IS_TOUCH(sonde.config.button_pin) ) { + touchAttachInterrupt(sonde.config.button_pin & 0x7f, touchISR, sonde.config.touch_thresh); + Serial.printf("Initializing touch 1 on pin %d\n", sonde.config.button_pin & 0x7f); + } + if ( IS_TOUCH(sonde.config.button2_pin) ) { + touchAttachInterrupt(sonde.config.button2_pin & 0x7f, touchISR2, sonde.config.touch_thresh); + Serial.printf("Initializing touch 2 on pin %d\n", sonde.config.button2_pin & 0x7f); + } +} + + + + +/// Arrg. MicroNMEA changes type definition... so lets auto-infer type +template +//void unkHandler(const MicroNMEA& nmea) { +void unkHandler(T nmea) { + if (strcmp(nmea.getMessageID(), "VTG") == 0) { + const char *s = nmea.getSentence(); + while (*s && *s != ',') s++; + if (*s == ',') s++; else return; + if (*s == ',') return; /// no new course data + int lastCourse = nmea.parseFloat(s, 0, NULL); + Serial.printf("Course update: %d\n", lastCourse); + } else if (strcmp(nmea.getMessageID(), "GST") == 0) { + // get horizontal accuracy for android app on devices without gps + // GPGST,time,rms,-,-,-,stdlat,stdlon,stdalt,cs + const char *s = nmea.getSentence(); + while (*s && *s != ',') s++; // #0: GST + if (*s == ',') s++; else return; + while (*s && *s != ',') s++; // #1: time: skip + if (*s == ',') s++; else return; + while (*s && *s != ',') s++; // #1: rms: skip + if (*s == ',') s++; else return; + while (*s && *s != ',') s++; // #1: (-): skip + if (*s == ',') s++; else return; + while (*s && *s != ',') s++; // #1: (-): skip + if (*s == ',') s++; else return; + while (*s && *s != ',') s++; // #1: (-): skip + if (*s == ',') s++; else return; + // stdlat + int stdlat = nmea.parseFloat(s, 1, NULL); + while (*s && *s != ',') s++; + if (*s == ',') s++; else return; + // stdlong + int stdlon = nmea.parseFloat(s, 1, NULL); + // calculate position error as 1-signma horizontal RMS + // I guess that is equivalent to Androids getAccurac()? + int poserr = 0; + if (stdlat < 10000 && stdlon < 10000) { // larger errors: no GPS fix, avoid overflow in * + poserr = (int)(sqrt(0.5 * (stdlat * stdlat + stdlon * stdlon))); + } + //Serial.printf("\nHorizontal accuracy: %d, %d => %.1fm\n", stdlat, stdlon, 0.1*poserr); + gpsPos.accuracy = poserr; + } +} + +//#define DEBUG_GPS +static bool gpsCourseOld; +static int lastCourse; +void gpsTask(void *parameter) { + nmea.setUnknownSentenceHandler(unkHandler); + + while (1) { + while (Serial2.available()) { + char c = Serial2.read(); + //Serial.print(c); + if (nmea.process(c)) { + gpsPos.valid = nmea.isValid(); + if (gpsPos.valid) { + gpsPos.lon = nmea.getLongitude() * 0.000001; + gpsPos.lat = nmea.getLatitude() * 0.000001; + long alt = 0; + nmea.getAltitude(alt); + gpsPos.alt = (int)(alt / 1000); + gpsPos.course = (int)(nmea.getCourse() / 1000); + gpsCourseOld = false; + if (gpsPos.course == 0) { + // either north or not new + if (lastCourse != 0) // use old value... + { + gpsCourseOld = true; + gpsPos.course = lastCourse; + } + } + if(gpsPos.lon == 0 && gpsPos.lat == 0) gpsPos.valid = false; + } + gpsPos.hdop = nmea.getHDOP(); + gpsPos.sat = nmea.getNumSatellites(); + gpsPos.speed = nmea.getSpeed() / 1000.0 * 0.514444; // speed is in m/s nmea.getSpeed is in 0.001 knots +#ifdef DEBUG_GPS + uint8_t hdop = nmea.getHDOP(); + Serial.printf(" =>: valid: %d N %f E %f alt %d course:%d dop:%d\n", gpsPos.valid ? 1 : 0, gpsPos.lat, gpsPos.lon, gpsPos.alt, gpsPos.course, hdop); +#endif + } + } + delay(50); + } +} + +#define UBX_SYNCH_1 0xB5 +#define UBX_SYNCH_2 0x62 +uint8_t ubx_set9k6[] = {UBX_SYNCH_1, UBX_SYNCH_2, 0x06, 0x00, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC0, 0x08, 0x00, 0x00, 0x80, 0x25, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x8F}; +uint8_t ubx_factorydef[] = {UBX_SYNCH_1, UBX_SYNCH_2, 0x06, 0x09, 13, 0, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, 0x7c }; +uint8_t ubx_hardreset[] = {UBX_SYNCH_1, UBX_SYNCH_2, 0x06, 0x04, 4, 0, 0xff, 0xff, 0, 0, 0x0C, 0x5D }; +// GPGST: Class 0xF0 Id 0x07 +uint8_t ubx_enable_gpgst[] = {UBX_SYNCH_1, UBX_SYNCH_2, 0x06, 0x01, 3, 0, 0xF0, 0x07, 2, 0x03, 0x1F}; + +void dumpGPS() { + while (Serial2.available()) { + char c = Serial2.read(); + Serial.printf("%02x ", (uint8_t)c); + } +} +void initGPS() { + if (sonde.config.gps_rxd < 0) return; // GPS disabled + if (sonde.config.gps_txd >= 0) { // TX enable, thus try setting baud to 9600 and do a factory reset + File testfile = SPIFFS.open("/GPSRESET", FILE_READ); + if (testfile && !testfile.isDirectory()) { + testfile.close(); + Serial.println("GPS resetting baud to 9k6..."); + /* TODO: debug: + Sometimes I have seen the Serial2.begin to cause a reset + Guru Meditation Error: Core 1 panic'ed (Interrupt wdt timeout on CPU1) + Backtrace: 0x40081d2f:0x3ffc11b0 0x40087969:0x3ffc11e0 0x4000bfed:0x3ffb1db0 0x4008b7dd:0x3ffb1dc0 0x4017afee:0x3ffb1de0 0x4017b04b:0x3ffb1e20 0x4010722b:0x3ffb1e50 0x40107303:0x3ffb1e70 0x4010782d:0x3ffb1e90 0x40103814:0x3ffb1ed0 0x400d8772:0x3ffb1f10 0x400d9057:0x3ffb1f60 0x40107aca:0x3ffb1fb0 0x4008a63e:0x3ffb1fd0 + #0 0x40081d2f:0x3ffc11b0 in _uart_isr at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + #1 0x40087969:0x3ffc11e0 in _xt_lowint1 at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/xtensa_vectors.S:1154 + #2 0x4000bfed:0x3ffb1db0 in ?? ??:0 + #3 0x4008b7dd:0x3ffb1dc0 in vTaskExitCritical at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c:3507 + #4 0x4017afee:0x3ffb1de0 in esp_intr_alloc_intrstatus at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/intr_alloc.c:784 + #5 0x4017b04b:0x3ffb1e20 in esp_intr_alloc at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/intr_alloc.c:784 + #6 0x4010722b:0x3ffb1e50 in uartEnableInterrupt at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + #7 0x40107303:0x3ffb1e70 in uartAttachRx at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + #8 0x4010782d:0x3ffb1e90 in uartBegin at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-uart.c:464 + #9 0x40103814:0x3ffb1ed0 in HardwareSerial::begin(unsigned long, unsigned int, signed char, signed char, bool, unsigned long) at /Users/hansi/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.cpp:190 + */ + Serial2.begin(115200, SERIAL_8N1, sonde.config.gps_rxd, sonde.config.gps_txd); + Serial2.write(ubx_set9k6, sizeof(ubx_set9k6)); + delay(200); + Serial2.begin(38400, SERIAL_8N1, sonde.config.gps_rxd, sonde.config.gps_txd); + Serial2.write(ubx_set9k6, sizeof(ubx_set9k6)); + delay(200); + Serial2.begin(19200, SERIAL_8N1, sonde.config.gps_rxd, sonde.config.gps_txd); + Serial2.write(ubx_set9k6, sizeof(ubx_set9k6)); + Serial2.begin(9600, SERIAL_8N1, sonde.config.gps_rxd, sonde.config.gps_txd); + delay(1000); + dumpGPS(); + Serial.println("GPS factory reset..."); + Serial2.write(ubx_factorydef, sizeof(ubx_factorydef)); + delay(1000); + dumpGPS(); + delay(1000); + dumpGPS(); + delay(1000); + dumpGPS(); + SPIFFS.remove("/GPSRESET"); + } else if (testfile) { + Serial.println("GPS reset file: not found/isdir"); + testfile.close(); + Serial2.begin(9600, SERIAL_8N1, sonde.config.gps_rxd, sonde.config.gps_txd); + } + // Enable GPGST messages + Serial2.write(ubx_enable_gpgst, sizeof(ubx_enable_gpgst)); + } else { + Serial2.begin(9600, SERIAL_8N1, sonde.config.gps_rxd, sonde.config.gps_txd); + } + xTaskCreate( gpsTask, "gpsTask", + 5000, /* stack size */ + NULL, /* paramter */ + 1, /* priority */ + NULL); /* task handle*/ +} + +const char *getStateStr(int what) { + if (what < 0 || what >= (sizeof(mainStateStr) / sizeof(const char *))) + return "--"; + else + return mainStateStr[what]; +} + +void sx1278Task(void *parameter) { + /* new strategy: + background tasks handles all interactions with sx1278. + implementation is decoder specific. + This task is a simple infinit loop that + (a) initially and after frequency or mode change calls .setup() + (b) then repeatedly calls .receive() which should + (1) update data in the Sonde structure (additional updates may be done later in main loop/waitRXcomplete) + (2) set output flag receiveResult (success/error/timeout and keybord events) + + */ + while (1) { + if (rxtask.activate >= 128) { + // activating sx1278 background task... + Serial.printf("RXtask: start DECODER for sonde %d (was %s)\n", rxtask.activate & 0x7f, getStateStr(rxtask.mainState)); + rxtask.mainState = ST_DECODER; + rxtask.currentSonde = rxtask.activate & 0x7F; + sonde.setup(); + } else if (rxtask.activate != -1) { + Serial.printf("RXtask: start %s (was %s)\n", getStateStr(rxtask.activate), getStateStr(rxtask.mainState)); + rxtask.mainState = rxtask.activate; + } + rxtask.activate = -1; + /* only if mainState is ST_DECODER */ + if (rxtask.mainState != ST_DECODER) { + delay(100); + continue; + } + sonde.receive(); + delay(20); + } +} + + +void IRAM_ATTR touchISR() { + if (!button1.isTouched) { + unsigned long now = my_millis(); + if (now - button1.keydownTime < 500) button1.doublepress = 1; + else button1.doublepress = 0; + button1.keydownTime = now; + button1.isTouched = true; + } +} + +void IRAM_ATTR touchISR2() { + if (!button2.isTouched) { + unsigned long now = my_millis(); + if (now - button2.keydownTime < 500) button2.doublepress = 1; + else button2.doublepress = 0; + button2.keydownTime = now; + button2.isTouched = true; + } +} + +// touchRead in ISR is also a bad idea. Now moved to Ticker task +void checkTouchButton(Button & button) { + if (button.isTouched) { + int tmp = touchRead(button.pin & 0x7f); + Serial.printf("touch read %d: value is %d\n", button.pin & 0x7f, tmp); + if (tmp > sonde.config.touch_thresh + 5) { + button.isTouched = false; + unsigned long elapsed = my_millis() - button.keydownTime; + if (elapsed > 1500) { + if (elapsed < 4000) { + button.pressed = KP_MID; + } + else { + button.pressed = KP_LONG; + } + } else if (button.doublepress) { + button.pressed = KP_DOUBLE; + } else { + button.pressed = KP_SHORT; + } + } + } +} + +void ledOffCallback() { + digitalWrite(sonde.config.led_pout, LOW); +} +void flashLed(int ms) { + if (sonde.config.led_pout >= 0) { + digitalWrite(sonde.config.led_pout, HIGH); + ledFlasher.once_ms(ms, ledOffCallback); + } +} + +void buzzerLed(int temps) { + Serial.printf("\nBuzzer On\n"); + ledcWriteTone(0, sonde.config.buzzerFreq); + delay(temps); + ledcWrite(0, 180); + delay(temps); +} + +int doTouch = 0; +void checkTouchStatus() { + checkTouchButton(button1); + checkTouchButton(button2); +} + +unsigned long bdd1, bdd2; +static bool b1wasdown = false; +void IRAM_ATTR buttonISR() { + if (digitalRead(button1.pin) == 0) { // Button down + b1wasdown = true; + unsigned long now = my_millis(); + if (now - button1.keydownTime < 500) { + // Double press + if (now - button1.keydownTime > 100) + button1.doublepress = 1; + bdd1 = now; bdd2 = button1.keydownTime; + } else { + button1.doublepress = 0; + } + button1.numberKeyPresses += 1; + button1.keydownTime = now; + } else { //Button up + if (!b1wasdown) return; + b1wasdown = false; + unsigned long now = my_millis(); + if (button1.doublepress == -1) return; // key was never pressed before, ignore button up + unsigned int elapsed = now - button1.keydownTime; + if (elapsed > 1500) { + if (elapsed < 4000) { + button1.pressed = KP_MID; + } + else { + button1.pressed = KP_LONG; + } + } else { + if (button1.doublepress) button1.pressed = KP_DOUBLE; + else button1.pressed = KP_SHORT; + } + button1.numberKeyPresses += 1; + button1.keydownTime = now; + } +} + +void IRAM_ATTR button2ISR() { + if (digitalRead(button2.pin) == 0) { // Button down + unsigned long now = my_millis(); + if (now - button2.keydownTime < 500) { + // Double press + if (now - button2.keydownTime > 100) + button2.doublepress = 1; + //bdd1 = now; bdd2 = button1.keydownTime; + } else { + button2.doublepress = 0; + } + button2.numberKeyPresses += 1; + button2.keydownTime = now; + } else { //Button up + unsigned long now = my_millis(); + if (button2.doublepress == -1) return; // key was never pressed before, ignore button up + unsigned int elapsed = now - button2.keydownTime; + if (elapsed > 1500) { + if (elapsed < 4000) { + button2.pressed = KP_MID; + } + else { + button2.pressed = KP_LONG; + } + } else { + if (button2.doublepress) button2.pressed = KP_DOUBLE; + else button2.pressed = KP_SHORT; + } + button2.numberKeyPresses += 1; + button2.keydownTime = now; + } +} + +int getKeyPress() { + KeyPress p = button1.pressed; + button1.pressed = KP_NONE; +#if 0 + int x = digitalRead(button1.pin); + Serial.printf("Debug: bdd1=%ld, bdd2=%ld\n", bdd1, bdd2); + Serial.printf("button1 press (dbl:%d) (now:%d): %d at %ld (%d)\n", button1.doublepress, x, p, button1.keydownTime, button1.numberKeyPresses); +#endif + return p; +} + +// called by arduino main loop (from Sonde::waitRXcomplete) as soon as pmu_irq is set +void handlePMUirq() { + if (sonde.config.button2_axp) { + // Use AXP power button as second button + if (pmu_irq) { + Serial.println("PMU_IRQ is set\n"); + xSemaphoreTake( axpSemaphore, portMAX_DELAY ); + axp.readIRQ(); + if (axp.isPEKShortPressIRQ()) { + button2.pressed = KP_SHORT; + button2.keydownTime = my_millis(); + } + if (axp.isPEKLongtPressIRQ()) { + button2.pressed = KP_MID; + button2.keydownTime = my_millis(); + } + if (pmu_irq != 2) { + pmu_irq = 0; + } + axp.clearIRQ(); + xSemaphoreGive( axpSemaphore ); + } + } else { + Serial.println("handlePMIirq() called. THIS SHOULD NOT HAPPEN w/o button2_axp set"); + pmu_irq = 0; // prevent main loop blocking + } +} + +int getKey2Press() { + // TODO: Should be atomic + KeyPress p = button2.pressed; + button2.pressed = KP_NONE; + //Serial.printf("button2 press: %d at %ld (%d)\n", p, button2.keydownTime, button2.numberKeyPresses); + return p; +} + +int getKeyPressEvent() { + int p = getKeyPress(); + if (p == KP_NONE) { + p = getKey2Press(); + if (p == KP_NONE) + return EVT_NONE; + Serial.printf("Key 2 was pressed [%d]\n", p + 4); + return p + 4; + } + Serial.printf("Key 1 was pressed [%d]\n", p); + return p; /* map KP_x to EVT_KEY1_x / EVT_KEY2_x*/ +} + +#define SSD1306_ADDRESS 0x3c +bool ssd1306_found = false; +bool axp192_found = false; + +int scanI2Cdevice(void) +{ + byte err, addr; + int nDevices = 0; + for (addr = 1; addr < 127; addr++) { + Wire.beginTransmission(addr); + err = Wire.endTransmission(); + if (err == 0) { + Serial.print("I2C device found at address 0x"); + if (addr < 16) + Serial.print("0"); + Serial.print(addr, HEX); + Serial.println(" !"); + nDevices++; + + if (addr == SSD1306_ADDRESS) { + ssd1306_found = true; + Serial.println("ssd1306 display found"); + } + if (addr == AXP192_SLAVE_ADDRESS) { + axp192_found = true; + Serial.println("axp192 PMU found"); + } + } else if (err == 4) { + Serial.print("Unknow error at address 0x"); + if (addr < 16) + Serial.print("0"); + Serial.println(addr, HEX); + } + } + if (nDevices == 0) + Serial.println("No I2C devices found\n"); + else + Serial.println("done\n"); + return nDevices; +} + +extern int initlevels[40]; + +extern xSemaphoreHandle globalLock; + +#ifdef ESP_MEM_DEBUG +typedef void (*esp_alloc_failed_hook_t) (size_t size, uint32_t caps, const char * function_name); +extern esp_err_t heap_caps_register_failed_alloc_callback(esp_alloc_failed_hook_t callback); + +void heap_caps_alloc_failed_hook(size_t requested_size, uint32_t caps, const char *function_name) +{ + printf("%s was called but failed to allocate %d bytes with 0x%X capabilities. \n", function_name, requested_size, caps); +} +#endif + + +void setup() +{ + char buf[12]; + // Open serial communications and wait for port to open: + Serial.begin(/*921600 */115200); + for (int i = 0; i < 39; i++) { + int v = gpio_get_level((gpio_num_t)i); + Serial.printf("%d:%d ", i, v); + } + Serial.println(""); +#ifdef ESP_MEM_DEBUG + esp_err_t error = heap_caps_register_failed_alloc_callback(heap_caps_alloc_failed_hook); +#endif + axpSemaphore = xSemaphoreCreateBinary(); + xSemaphoreGive(axpSemaphore); + + for (int i = 0; i < 39; i++) { + Serial.printf("%d:%d ", i, initlevels[i]); + } + Serial.println(" (before setup)"); + sonde.defaultConfig(); // including autoconfiguration + aprs_gencrctab(); + + Serial.println("Initializing SPIFFS"); + // Initialize SPIFFS + if (!SPIFFS.begin(true)) { + Serial.println("An Error has occurred while mounting SPIFFS"); + return; + } + + Serial.println("Reading initial configuration"); + setupConfigData(); // configuration must be read first due to OLED ports!!! + WiFi.setHostname(sonde.config.mdnsname); + + // NOT TTGO v1 (fingerprint 64) or Heltec v1/v2 board (fingerprint 4) + // and NOT TTGO Lora32 v2.1_1.6 (fingerprint 31/63) + if ( ( (sonde.fingerprint & (64 + 31)) != 31) && ((sonde.fingerprint & 16) == 16) ) { + // FOr T-Beam 1.0 + for (int i = 0; i < 10; i++) { // try multiple times + Wire.begin(21, 22); + // Make sure the whole thing powers up!?!?!?!?!? + U8X8 *u8x8 = new U8X8_SSD1306_128X64_NONAME_HW_I2C(0, 22, 21); + u8x8->initDisplay(); + delay(500); + + scanI2Cdevice(); + if (!axp.begin(Wire, AXP192_SLAVE_ADDRESS)) { + Serial.println("AXP192 Begin PASS"); + } else { + Serial.println("AXP192 Begin FAIL"); + } + axp.setPowerOutPut(AXP192_LDO2, AXP202_ON); + if (sonde.config.type == TYPE_M5_CORE2) { + // Display backlight on M5 Core2 + axp.setPowerOutPut(AXP192_DCDC3, AXP202_ON); + axp.setDCDC3Voltage(3300); + // SetBusPowerMode(0): + // #define AXP192_GPIO0_CTL (0x90) + // #define AXP192_GPIO0_VOL (0x91) + // #define AXP202_LDO234_DC23_CTL (0x12) + + // The axp class lacks a functino to set GPIO0 VDO to 3.3V (as is done by original M5Stack software) + // so do this manually (default value 2.8V did not have the expected effect :)) + // data = Read8bit(0x91); + // write1Byte(0x91, (data & 0X0F) | 0XF0); + uint8_t reg; + Wire.beginTransmission((uint8_t)AXP192_SLAVE_ADDRESS); + Wire.write(AXP192_GPIO0_VOL); + Wire.endTransmission(); + Wire.requestFrom(AXP192_SLAVE_ADDRESS, 1); + reg = Wire.read(); + reg = (reg&0x0F) | 0xF0; + Wire.beginTransmission((uint8_t)AXP192_SLAVE_ADDRESS); + Wire.write(AXP192_GPIO0_VOL); + Wire.write(reg); + Wire.endTransmission(); + // data = Read8bit(0x90); + // Write1Byte(0x90, (data & 0XF8) | 0X02) + axp.setGPIOMode(AXP_GPIO_0, AXP_IO_LDO_MODE); // disable AXP supply from VBUS + pmu_irq = 2; // IRQ pin is not connected on Core2 + // data = Read8bit(0x12); //read reg 0x12 + // Write1Byte(0x12, data | 0x40); // enable 3,3V => 5V booster + // this is done below anyway: axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON); + + axp.adc1Enable(AXP202_ACIN_VOL_ADC1, 1); + axp.adc1Enable(AXP202_ACIN_CUR_ADC1, 1); + } else { + // GPS on T-Beam, buzzer on M5 Core2 + axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); + axp.adc1Enable(AXP202_VBUS_VOL_ADC1, 1); + axp.adc1Enable(AXP202_VBUS_CUR_ADC1, 1); + } + axp.setPowerOutPut(AXP192_DCDC2, AXP202_ON); + axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON); + axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); + axp.setDCDC1Voltage(3300); + axp.adc1Enable(AXP202_BATT_CUR_ADC1, 1); + if (sonde.config.button2_axp ) { + if (pmu_irq != 2) { + pinMode(PMU_IRQ, INPUT_PULLUP); + attachInterrupt(PMU_IRQ, [] { + pmu_irq = 1; + }, FALLING); + } + //axp.enableIRQ(AXP202_VBUS_REMOVED_IRQ | AXP202_VBUS_CONNECT_IRQ | AXP202_BATT_REMOVED_IRQ | AXP202_BATT_CONNECT_IRQ, 1); + axp.enableIRQ( AXP202_PEK_LONGPRESS_IRQ | AXP202_PEK_SHORTPRESS_IRQ, 1 ); + axp.clearIRQ(); + } + int ndevices = scanI2Cdevice(); + if (sonde.fingerprint != 17 || ndevices > 0) break; // only retry for fingerprint 17 (startup problems of new t-beam with oled) + delay(500); + } + } + if (sonde.config.batt_adc >= 0) { + pinMode(sonde.config.batt_adc, INPUT); + } + if (sonde.config.power_pout >= 0) { // for a heltec v2, pull GPIO21 low for display power + pinMode(sonde.config.power_pout & 127, OUTPUT); + digitalWrite(sonde.config.power_pout & 127, sonde.config.power_pout & 128 ? 1 : 0); + } + + if (sonde.config.led_pout >= 0) { + pinMode(sonde.config.led_pout, OUTPUT); + flashLed(1000); // testing + } + + button1.pin = sonde.config.button_pin; + button2.pin = sonde.config.button2_pin; + if (button1.pin != 0xff) { + if ( (button1.pin & 0x80) == 0 && button1.pin < 34 ) { + Serial.println("Button 1 configured as input with pullup"); + pinMode(button1.pin, INPUT_PULLUP); + } else + pinMode(button1.pin, INPUT); // configure as input if not disabled + } + if (button2.pin != 0xff) { + if ( (button2.pin & 0x80) == 0 && button2.pin < 34 ) { + Serial.println("Button 2 configured as input with pullup"); + pinMode(button2.pin, INPUT_PULLUP); + } else + pinMode(button2.pin, INPUT); // configure as input if not disabled + } + // Handle button press + if ( (button1.pin & 0x80) == 0) { + attachInterrupt( button1.pin, buttonISR, CHANGE); + Serial.printf("button1.pin is %d, attaching interrupt\n", button1.pin); + } + // Handle button press + if ( (button2.pin & 0x80) == 0) { + attachInterrupt( button2.pin, button2ISR, CHANGE); + Serial.printf("button2.pin is %d, attaching interrupt\n", button2.pin); + } + initTouch(); + + disp.init(); + delay(100); + Serial.println("Showing welcome display"); + disp.rdis->welcome(); + + //Music + if (sonde.config.buzzerOn==1){ + ledcSetup(0, sonde.config.buzzerFreq, 8); + ledcAttachPin(sonde.config.buzzerPort, 0); + // fréquence associée à chaque note + // do, do#, ré, ré#, mi, fa, fa#, sol, sol#, la, la#, si + const float note[12] = {65.41, 69.30, 73.42, 77.78, 82.41, 87.31, 92.50, 98.00, 103.83, 110.00, 116.54, 123.47}; + const int nombreDeNotes = 32; + const int tempo = 150; // plus c'est petit, plus c'est rapide + const int melodie[][3] = { {4, 2, 2}, {5, 2, 1}, {7, 2, 3}, {0, 3, 6}, {2, 2, 2}, {4, 2, 1},{5, 2, 8}, {7, 2, 2}, {9, 2, 1}, {11, 2, 3}, {5, 3, 6}, {9, 2, 2}, {11, 2, 1}, {0, 3, 3}, {2, 3, 3}, {4, 3, 3}, +{4, 2, 2}, {5, 2, 1}, {7, 2, 3}, {0, 3, 6}, {2, 3, 2}, {4, 3, 1},{5, 3, 8}, {7, 2, 2}, {7, 2, 1}, {4, 3, 3}, {2, 3, 2}, {7, 2, 1}, {5, 3, 3}, {4, 3, 2}, {2, 3, 1},{0, 3, 8} }; + int frequence; + + for ( int i = 0; i < nombreDeNotes ; i++ ) { + frequence = round(note[melodie[i][0]] * 2.0 * (melodie[i][1] - 1)); + ledcSetup(0, frequence, 12); + ledcWrite(0, 2048); // rapport cyclique 50% + delay(tempo * melodie[i][2] - 50); + ledcWrite(0, 0); // rapport cyclique 0% (silence, pour séparer les notes adjacentes) + delay(50); + } + } + + delay(3000); + Serial.println("Clearing display"); + sonde.clearDisplay(); + + setupWifiList(); + Serial.printf("before disp.initFromFile... layouts is %p\n", disp.layouts); + + disp.initFromFile(sonde.config.screenfile); + Serial.printf("disp.initFromFile... layouts is %p", disp.layouts); + + + // == show initial values from config.txt ========================= // + if (sonde.config.debug == 1) { + disp.rdis->setFont(FONT_SMALL); + disp.rdis->drawString(0, 0, "Config:"); + + delay(500); + itoa(sonde.config.oled_sda, buf, 10); + disp.rdis->drawString(0, 1, " SDA:"); + disp.rdis->drawString(6, 1, buf); + + delay(500); + itoa(sonde.config.oled_scl, buf, 10); + disp.rdis->drawString(0, 2, " SCL:"); + disp.rdis->drawString(6, 2, buf); + + delay(500); + itoa(sonde.config.oled_rst, buf, 10); + disp.rdis->drawString(0, 3, " RST:"); + disp.rdis->drawString(6, 3, buf); + + delay(1000); + itoa(sonde.config.led_pout, buf, 10); + disp.rdis->drawString(0, 4, " LED:"); + disp.rdis->drawString(6, 4, buf); + + delay(500); + itoa(sonde.config.spectrum, buf, 10); + disp.rdis->drawString(0, 5, " SPEC:"); + disp.rdis->drawString(6, 5, buf); + + delay(500); + itoa(sonde.config.maxsonde, buf, 10); + disp.rdis->drawString(0, 6, " MAX:"); + disp.rdis->drawString(6, 6, buf); + + delay(5000); + sonde.clearDisplay(); + } + // == show initial values from config.txt ========================= // + +#if 1 + + if (sonde.config.type == TYPE_M5_CORE2) { + // Core2 uses Pin 38 for MISO + SPI.begin(18, 38, 23, -1); + } else { + SPI.begin(); + } + //Set most significant bit first + SPI.setBitOrder(MSBFIRST); + //Divide the clock frequency + SPI.setClockDivider(SPI_CLOCK_DIV2); + //Set data mode + SPI.setDataMode(SPI_MODE0); + + sx1278.setup(globalLock); + + int i = 0; + while (++i < 3) { + delay(500); + // == check the radio chip by setting default frequency =========== // + sx1278.ON(); + if (sx1278.setFrequency(402700000) == 0) { + Serial.println(F("Setting freq: SUCCESS ")); + } else { + Serial.println(F("Setting freq: ERROR ")); + } + float f = sx1278.getFrequency(); + Serial.print("Frequency set to "); + Serial.println(f); + // == check the radio chip by setting default frequency =========== // + } +#endif + + //sx1278.setLNAGain(-48); + sx1278.setLNAGain(0); + + int gain = sx1278.getLNAGain(); + Serial.print("RX LNA Gain is "); + Serial.println(gain); + + // Print a success message + Serial.println(F("SX1278 configuration finished")); + + Serial.println("Setup finished"); + Serial.println(); + // int returnValue = pthread_create(&wifithread, NULL, wifiloop, (void *)0); + + // if (returnValue) { + // Serial.println("An error has occurred"); + // } + // xTaskCreate(mainloop, "MainServer", 10240, NULL, 10, NULL); + + + // == setup default channel list if qrg.txt read fails =========== // + sonde.clearSonde(); + setupChannelList(); + /// not here, done by sonde.setup(): rs41.setup(); + // == setup default channel list if qrg.txt read fails =========== // +#ifndef DISABLE_SX1278 + xTaskCreate( sx1278Task, "sx1278Task", + 10000, /* stack size */ + NULL, /* paramter */ + 1, /* priority */ + NULL); /* task handle*/ +#endif + sonde.setup(); + initGPS(); + + WiFi.onEvent(WiFiEvent); + getKeyPress(); // clear key buffer +} + +void enterMode(int mode) { + Serial.printf("enterMode(%d)\n", mode); + // Backround RX task should only be active in mode ST_DECODER for now + // (future changes might use RX background task for spectrum display as well) + if (mode != ST_DECODER) { + rxtask.activate = mode; + while (rxtask.activate == mode) { + delay(10); // until cleared by RXtask -- rx task is deactivated + } + } + mainState = (MainState)mode; + if (mainState == ST_SPECTRUM) { + Serial.println("Entering ST_SPECTRUM mode"); + sonde.clearDisplay(); + disp.rdis->setFont(FONT_SMALL); + specTimer = millis(); + //scanner.init(); + } else if (mainState == ST_WIFISCAN) { + sonde.clearDisplay(); + } + if (mode == ST_DECODER) { + // trigger activation of background task + // currentSonde should be set before enterMode() + rxtask.activate = ACT_SONDE(sonde.currentSonde); + // + Serial.println("clearing and updating display"); + sonde.clearDisplay(); + sonde.updateDisplay(); + } + printf("enterMode ok\n"); +} + +static char text[40]; +static const char *action2text(uint8_t action) { + if (action == ACT_DISPLAY_DEFAULT) return "Default Display"; + if (action == ACT_DISPLAY_SPECTRUM) return "Spectrum Display"; + if (action == ACT_DISPLAY_WIFI) return "Wifi Scan Display"; + if (action == ACT_NEXTSONDE) return "Go to next sonde"; + if (action == ACT_PREVSONDE) return "presonde (not implemented)"; + if (action == ACT_NONE) return "none"; + if (action >= 128) { + snprintf(text, 40, "Sonde=%d", action & 127); + } else { + snprintf(text, 40, "Display=%d", action); + } + return text; +} + +#define RDZ_DATA_LEN 128 + +void parseGpsJson(char *data) { + char *key = NULL; + char *value = NULL; + // very simple json parser: look for ", then key, then ", then :, then number, then , or } or \0 + for (int i = 0; i < RDZ_DATA_LEN; i++) { + if (key == NULL) { + if (data[i] != '"') continue; + key = data + i + 1; + i += 2; + continue; + } + if (value == NULL) { + if (data[i] != ':') continue; + value = data + i + 1; + i += 2; + continue; + } + if (data[i] == ',' || data[i] == '}' || data[i] == 0) { + // get value + double val = strtod(value, NULL); + // get data + if (strncmp(key, "lat", 3) == 0) { + gpsPos.lat = val; + } + else if (strncmp(key, "lon", 3) == 0) { + gpsPos.lon = val; + } + else if (strncmp(key, "alt", 3) == 0) { + gpsPos.alt = (int)val; + } + else if (strncmp(key, "course", 6) == 0) { + gpsPos.course = (int)val; + } + gpsPos.valid = true; + + // next item: + if (data[i] != ',') break; + key = NULL; + value = NULL; + } + } + if(gpsPos.lat == 0 && gpsPos.lon == 0) gpsPos.valid = false; + Serial.printf("Parse result: lat=%f, lon=%f, alt=%d, valid=%d\n", gpsPos.lat, gpsPos.lon, gpsPos.alt, gpsPos.valid); +} + +static char rdzData[RDZ_DATA_LEN]; +static int rdzDataPos = 0; + +void loopDecoder() { + // sonde knows the current type and frequency, and delegates to the right decoder + uint16_t res = sonde.waitRXcomplete(); + int action; + //Serial.printf("waitRX result is %x\n", (int)res); + action = (int)(res >> 8); + // TODO: update displayed sonde? + +#if 0 + static int i = 0; + if (i++ > 20) { + i = 0; + rtc_wdt_protect_off(); + rtc_wdt_disable(); + // Requires serial speed 921600, otherweise interrupt wdt will occur + heap_caps_dump(MALLOC_CAP_8BIT); + } +#endif + + if (action != ACT_NONE) { + int newact = sonde.updateState(action); + Serial.printf("MAIN: loopDecoder: action %02x (%s) => %d [current: main=%d, rxtask=%d]\n", action, action2text(action), newact, sonde.currentSonde, rxtask.currentSonde); + action = newact; + if (action != 255) { + if (action == ACT_DISPLAY_SPECTRUM) { + enterMode(ST_SPECTRUM); + return; + } + else if (action == ACT_DISPLAY_WIFI) { + enterMode(ST_WIFISCAN); + return; + } + } + } + + if (!tncclient.connected()) { + //Serial.println("TNC client not connected"); + tncclient = tncserver.available(); + if (tncclient.connected()) { + Serial.println("new TCP KISS connection"); + } + } + if (tncclient.available()) { + Serial.print("TCP KISS socket: recevied "); + while (tncclient.available()) { + Serial.print(tncclient.read()); // Check if we receive anything from from APRSdroid + } + Serial.println(""); + } + if (rdzserver.hasClient()) { + Serial.println("TCP JSON socket: new connection"); + rdzclient.stop(); + rdzclient = rdzserver.available(); + } + if (rdzclient.available()) { + Serial.print("RDZ JSON socket: received "); + while (rdzclient.available()) { + char c = (char)rdzclient.read(); + Serial.print(c); + if (c == '\n' || c == '}' || rdzDataPos >= RDZ_DATA_LEN) { + // parse GPS position from phone + rdzData[rdzDataPos] = c; + if (rdzDataPos > 2) parseGpsJson(rdzData); + rdzDataPos = 0; + } + else { + rdzData[rdzDataPos++] = c; + } + } + Serial.println(""); + } + +#if FEATURE_SONDEHUB + sondehub_reply_handler(&shclient); +#endif + + // wifi active and good packet received => send packet + SondeInfo *s = &sonde.sondeList[rxtask.receiveSonde]; + if ((res & 0xff) == 0 && connected) { + //Send a packet with position information + // first check if ID and position lat+lonis ok + + if (s->d.validID && ((s->d.validPos & 0x03) == 0x03)) { + char *str = aprs_senddata(s, sonde.config.call, sonde.config.objcall, sonde.config.udpfeed.symbol); + char raw[201]; + int rawlen = aprsstr_mon2raw(str, raw, APRS_MAXLEN); + Serial.println("Sending AXUDP"); + //Serial.println(raw); + udp.beginPacket(sonde.config.udpfeed.host, sonde.config.udpfeed.port); + udp.write((const uint8_t *)raw, rawlen); + udp.endPacket(); + if (tncclient.connected()) { + Serial.println("Sending position via TCP"); + char raw[201]; + int rawlen = aprsstr_mon2kiss(str, raw, APRS_MAXLEN); + Serial.print("sending: "); Serial.println(raw); + tncclient.write(raw, rawlen); + } + if (sonde.config.tcpfeed.active) { + static unsigned long lasttcp = 0; + if ( tcpclient.disconnected()) { + tcpclient.connect(sonde.config.tcpfeed.host, sonde.config.tcpfeed.port); + } + else if ( tcpclient.connected() ) { + unsigned long now = millis(); + Serial.printf("aprs: now-last = %ld\n", (now-lasttcp)); + if ( (now - lasttcp) > sonde.config.tcpfeed.highrate * 1000L ) { + strcat(str, "\r\n"); + Serial.print(str); + tcpclient.write(str, strlen(str)); + lasttcp = now; + } + } + } +#if FEATURE_CHASEMAPPER + if (sonde.config.cm.active) { + Chasemapper::send(udp, s); + } +#endif + } +#if FEATURE_SONDEHUB + if (sonde.config.sondehub.active) { + sondehub_send_data(&shclient, s, &sonde.config.sondehub); + } +#endif + +#if FEATURE_MQTT + // send to MQTT if enabledson + if (connected && mqttEnabled) { + Serial.println("Sending sonde info via MQTT"); + mqttclient.publishPacket(s); + } +#endif + } else { +#if FEATURE_SONDEHUB + sondehub_finish_data(&shclient, s, &sonde.config.sondehub); +#endif + } + // Send own position periodically + if (sonde.config.tcpfeed.active) { + aprs_station_update(); + } + // always send data, even if not valid.... + if (rdzclient.connected()) { + Serial.println("Sending position via TCP as rdzJSON"); + char raw[1024]; + char gps[128]; + const char *typestr = s->d.typestr; + if (*typestr == 0) typestr = sondeTypeStr[sonde.realType(s)]; + // TODO: only if GPS is valid... + if (gpsPos.valid) { + snprintf(gps, 128, ", \"gpslat\": %f," + "\"gpslon\": %f," + "\"gpsalt\": %d," + "\"gpsacc\": %d," + "\"gpsdir\": %d", + gpsPos.lat, gpsPos.lon, gpsPos.alt, gpsPos.accuracy, gpsPos.course); + } else { + *gps = 0; + } + // + raw[0] = '{'; + // Use same JSON format as for MQTT and HTML map........ + sonde2json(raw+1, 1023, s); + sprintf(raw+strlen(raw), + ",\"active\":%d" + ",\"validId\":%d" + ",\"validPos\":%d" + " %s}\n", + (int)s->active, + s->d.validID, + s->d.validPos, + gps); + int len = strlen(raw); +#if 0 + //maintain backwords compatibility + float lat = isnan(s->d.lat) ? 0 : s->d.lat; + float lon = isnan(s->d.lon) ? 0 : s->d.lon; + float alt = isnan(s->d.alt) ? -1 : s->d.alt; + float vs = isnan(s->d.vs) ? 0 : s->d.vs; + float hs = isnan(s->d.hs) ? 0 : s->d.hs; + float dir = isnan(s->d.dir) ? 0 : s->d.dir; + + int len = snprintf(raw, 1024, "{" + "\"res\": %d," + "\"type\": \"%s\"," + "\"active\": %d," + "\"freq\": %.2f," + "\"id\": \"%s\"," + "\"ser\": \"%s\"," + "\"validId\": %d," + "\"launchsite\": \"%s\"," + "\"lat\": %.5f," + "\"lon\": %.5f," + "\"alt\": %.1f," + "\"vs\": %.1f," + "\"hs\": %.1f," + "\"dir\": %.1f," + "\"sats\": %d," + "\"validPos\": %d," + "\"time\": %d," + "\"frame\": %d," + "\"validTime\": %d," + "\"rssi\": %d," + "\"afc\": %d," + "\"launchKT\": %d," + "\"burstKT\": %d," + "\"countKT\": %d," + "\"crefKT\": %d" + "%s" + "}\n", + res & 0xff, + typestr, + (int)s->active, + s->freq, + s->d.id, + s->d.ser, + (int)s->d.validID, + s->launchsite, + lat, + lon, + alt, + vs, + hs, + dir, + s->d.sats, + s->d.validPos, + s->d.time, + s->d.frame, + (int)s->d.validTime, + s->rssi, + s->afc, + s->d.launchKT, + s->d.burstKT, + s->d.countKT, + s->d.crefKT, + gps + ); +#endif + + //Serial.println("Writing rdzclient..."); + if (len > 1024) len = 1024; + int wlen = rdzclient.write(raw, len); + if (wlen != len) { + Serial.println("Writing rdzClient not OK, closing connection"); + rdzclient.stop(); + } + //Serial.println("Writing rdzclient OK"); + } + Serial.print("MAIN: updateDisplay started\n"); + sonde.dispsavectlOFF( (res & 0xff) == 0 ); // handle screen saver (disp auto off) + if (forceReloadScreenConfig) { + disp.initFromFile(sonde.config.screenfile); + sonde.clearDisplay(); + forceReloadScreenConfig = false; + } + int t = millis(); + sonde.updateDisplay(); + Serial.printf("MAIN: updateDisplay done (after %d ms)\n", (int)(millis() - t)); +} + +void setCurrentDisplay(int value) { + Serial.printf("setCurrentDisplay: setting index %d, entry %d\b", value, sonde.config.display[value]); + currentDisplay = sonde.config.display[value]; +} + +void loopSpectrum() { + int marker = 0; + char buf[10]; + uint8_t dispw, disph, dispxs, dispys; + disp.rdis->getDispSize(&disph, &dispw, &dispxs, &dispys); + + switch (getKeyPress()) { + case KP_SHORT: /* move selection of peak, TODO */ + sonde.nextConfig(); // TODO: Should be set specific frequency + enterMode(ST_DECODER); + return; + case KP_MID: /* restart, TODO */ break; + case KP_LONG: + Serial.println("loopSpectrum: KP_LONG"); + enterMode(ST_WIFISCAN); + return; + case KP_DOUBLE: + setCurrentDisplay(0); + enterMode(ST_DECODER); + return; + default: break; + } + + scanner.scan(); + scanner.plotResult(); + + /* + if(globalClient != NULL && globalClient->status() == WS_CONNECTED){ + String randomNumber = String(random(0,20)); + globalClient->text(randomNumber); + } + */ + + if (sonde.config.spectrum > 0) { + int remaining = sonde.config.spectrum - (millis() - specTimer) / 1000; + Serial.printf("config.spectrum:%d specTimer:%ld millis:%ld remaining:%d\n", sonde.config.spectrum, specTimer, millis(), remaining); + if (sonde.config.marker != 0) { + marker = 1; + } + snprintf(buf, 10, "%d Sec.", remaining); + disp.rdis->drawString(0, dispys <= 1 ? (1 + marker) : (dispys + 1)*marker, buf); + if (remaining <= 0) { + setCurrentDisplay(0); + enterMode(ST_DECODER); + } + } +} + +void startSpectrumDisplay() { + sonde.clearDisplay(); + disp.rdis->setFont(FONT_SMALL); + disp.rdis->drawString(0, 0, "Spectrum Scan..."); + delay(500); + enterMode(ST_SPECTRUM); +} + +String translateEncryptionType(wifi_auth_mode_t encryptionType) { + switch (encryptionType) { + case (WIFI_AUTH_OPEN): + return "Open"; + case (WIFI_AUTH_WEP): + return "WEP"; + case (WIFI_AUTH_WPA_PSK): + return "WPA_PSK"; + case (WIFI_AUTH_WPA2_PSK): + return "WPA2_PSK"; + case (WIFI_AUTH_WPA_WPA2_PSK): + return "WPA_WPA2_PSK"; + case (WIFI_AUTH_WPA2_ENTERPRISE): + return "WPA2_ENTERPRISE"; + default: + return ""; + } +} + +enum t_wifi_state { WIFI_DISABLED, WIFI_SCAN, WIFI_CONNECT, WIFI_CONNECTED, WIFI_APMODE }; + +static t_wifi_state wifi_state = WIFI_DISABLED; + +void enableNetwork(bool enable) { + if (enable) { + MDNS.begin(sonde.config.mdnsname); + SetupAsyncServer(); + udp.begin(WiFi.localIP(), LOCALUDPPORT); + MDNS.addService("http", "tcp", 80); + MDNS.addService("kiss-tnc", "tcp", 14580); + MDNS.addService("jsonrdz", "tcp", 14570); + if (sonde.config.kisstnc.active) { + tncserver.begin(); + rdzserver.begin(); + } +#if FEATURE_MQTT + if (sonde.config.mqtt.active && strlen(sonde.config.mqtt.host) > 0) { + mqttEnabled = true; + mqttclient.init(sonde.config.mqtt.host, sonde.config.mqtt.port, sonde.config.mqtt.id, sonde.config.mqtt.username, sonde.config.mqtt.password, sonde.config.mqtt.prefix); + } +#endif +#if FEATURE_SONDEHUB + if (sonde.config.sondehub.active && wifi_state != WIFI_APMODE) { + time_last_update = millis() + 1000; /* force sending update */ + sondehub_station_update(&shclient, &sonde.config.sondehub); + } +#endif + configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); + connected = true; + } else { + MDNS.end(); + connected = false; + } + tcpclient.onConnect([](void *arg, AsyncClient * s) { + Serial.write("APRS: TCP connected\n"); + char buf[128]; + snprintf(buf, 128, "user %s pass %d vers %s %s\r\n", sonde.config.call, sonde.config.passcode, version_name, version_id); + s->write(buf, strlen(buf)); + }); + tcpclient.onData([](void *arg, AsyncClient * c, void *data, size_t len) { + Serial.write((const uint8_t *)data, len); + }); + Serial.println("enableNetwork done"); +} + +// Events used only for debug output right now +void WiFiEvent(WiFiEvent_t event) +{ + Serial.printf("[WiFi-event] event: %d\n", event); + + switch (event) { + case SYSTEM_EVENT_WIFI_READY: + Serial.println("WiFi interface ready"); + break; + case SYSTEM_EVENT_SCAN_DONE: + Serial.println("Completed scan for access points"); + break; + case SYSTEM_EVENT_STA_START: + Serial.println("WiFi client started"); + break; + case SYSTEM_EVENT_STA_STOP: + Serial.println("WiFi clients stopped"); + break; + case SYSTEM_EVENT_STA_CONNECTED: + Serial.println("Connected to access point"); + break; + case SYSTEM_EVENT_STA_DISCONNECTED: + Serial.println("Disconnected from WiFi access point"); + if (wifi_state == WIFI_CONNECT) { + // If we get a disconnect event while waiting for connection (as I do sometimes with my FritzBox), + // just start from scratch with WiFi scan + wifi_state = WIFI_DISABLED; + WiFi.disconnect(true); + } + break; + case SYSTEM_EVENT_STA_AUTHMODE_CHANGE: + Serial.println("Authentication mode of access point has changed"); + break; + case SYSTEM_EVENT_STA_GOT_IP: + Serial.print("Obtained IP address: "); + Serial.println(WiFi.localIP()); + break; + case SYSTEM_EVENT_STA_LOST_IP: + Serial.println("Lost IP address and IP address is reset to 0"); + break; + case SYSTEM_EVENT_STA_WPS_ER_SUCCESS: + Serial.println("WiFi Protected Setup (WPS): succeeded in enrollee mode"); + break; + case SYSTEM_EVENT_STA_WPS_ER_FAILED: + Serial.println("WiFi Protected Setup (WPS): failed in enrollee mode"); + break; + case SYSTEM_EVENT_STA_WPS_ER_TIMEOUT: + Serial.println("WiFi Protected Setup (WPS): timeout in enrollee mode"); + break; + case SYSTEM_EVENT_STA_WPS_ER_PIN: + Serial.println("WiFi Protected Setup (WPS): pin code in enrollee mode"); + break; + case SYSTEM_EVENT_AP_START: + Serial.println("WiFi access point started"); + break; + case SYSTEM_EVENT_AP_STOP: + Serial.println("WiFi access point stopped"); + break; + case SYSTEM_EVENT_AP_STACONNECTED: + Serial.println("Client connected"); + break; + case SYSTEM_EVENT_AP_STADISCONNECTED: + Serial.println("Client disconnected"); + break; + case SYSTEM_EVENT_AP_STAIPASSIGNED: + Serial.println("Assigned IP address to client"); + break; + case SYSTEM_EVENT_AP_PROBEREQRECVED: + Serial.println("Received probe request"); + break; + case SYSTEM_EVENT_GOT_IP6: + Serial.println("IPv6 is preferred"); + break; + case SYSTEM_EVENT_ETH_START: + Serial.println("Ethernet started"); + break; + case SYSTEM_EVENT_ETH_STOP: + Serial.println("Ethernet stopped"); + break; + case SYSTEM_EVENT_ETH_CONNECTED: + Serial.println("Ethernet connected"); + break; + case SYSTEM_EVENT_ETH_DISCONNECTED: + Serial.println("Ethernet disconnected"); + break; + case SYSTEM_EVENT_ETH_GOT_IP: + Serial.println("Obtained IP address"); + break; + default: + break; + } +} + + +void wifiConnect(int16_t res) { + Serial.printf("WiFi scan result: found %d networks\n", res); + + // pick best network + int bestEntry = -1; + int bestRSSI = INT_MIN; + uint8_t bestBSSID[6]; + int32_t bestChannel = 0; + + for (int8_t i = 0; i < res; i++) { + String ssid_scan; + int32_t rssi_scan; + uint8_t sec_scan; + uint8_t* BSSID_scan; + int32_t chan_scan; + WiFi.getNetworkInfo(i, ssid_scan, sec_scan, rssi_scan, BSSID_scan, chan_scan); + int networkEntry = fetchWifiIndex(ssid_scan.c_str()); + if (networkEntry < 0) continue; + if (rssi_scan <= bestRSSI) continue; + bestEntry = networkEntry; + bestRSSI = rssi_scan; + bestChannel = chan_scan; + memcpy((void*) &bestBSSID, (void*) BSSID_scan, sizeof(bestBSSID)); + } + WiFi.scanDelete(); + if (bestEntry >= 0) { + Serial.printf("WiFi Connecting BSSID: %02X:%02X:%02X:%02X:%02X:%02X SSID: %s PW %s Channel: %d (RSSI %d)\n", bestBSSID[0], bestBSSID[1], bestBSSID[2], bestBSSID[3], bestBSSID[4], bestBSSID[5], fetchWifiSSID(bestEntry), fetchWifiPw(bestEntry), bestChannel, bestRSSI); + WiFi.begin(fetchWifiSSID(bestEntry), fetchWifiPw(bestEntry), bestChannel, bestBSSID); + wifi_state = WIFI_CONNECT; + } else { + // rescan + // wifiStart(); + WiFi.disconnect(true); + wifi_state = WIFI_DISABLED; + } +} + +static int wifi_cto; + +void loopWifiBackground() { + // Serial.printf("WifiBackground: state %d\n", wifi_state); + // handle Wifi station mode in background + if (sonde.config.wifi == 0 || sonde.config.wifi == 2) return; // nothing to do if disabled or access point mode + + if (wifi_state == WIFI_DISABLED) { // stopped => start can + wifi_state = WIFI_SCAN; + Serial.println("WiFi start scan"); + WiFi.scanNetworks(true); // scan in async mode + } else if (wifi_state == WIFI_SCAN) { + int16_t res = WiFi.scanComplete(); + if (res == 0 || res == WIFI_SCAN_FAILED) { + // retry + Serial.println("WiFi restart scan"); + WiFi.disconnect(true); + wifi_state = WIFI_DISABLED; + return; + } + if (res == WIFI_SCAN_RUNNING) { + return; + } + // Scan finished, try to connect + wifiConnect(res); + wifi_cto = 0; + } else if (wifi_state == WIFI_CONNECT) { + wifi_cto++; + if (WiFi.isConnected()) { + wifi_state = WIFI_CONNECTED; + // update IP in display + String localIPstr = WiFi.localIP().toString(); + sonde.setIP(localIPstr.c_str(), false); + sonde.updateDisplayIP(); + enableNetwork(true); + } + if (wifi_cto > 20) { // failed, restart scanning + wifi_state = WIFI_DISABLED; + WiFi.disconnect(true); + } + } else if (wifi_state == WIFI_CONNECTED) { + if (!WiFi.isConnected()) { + sonde.setIP("", false); + sonde.updateDisplayIP(); + + wifi_state = WIFI_DISABLED; // restart scan + enableNetwork(false); + WiFi.disconnect(true); + } + } +} + +void startAP() { + Serial.println("Activating access point mode"); + wifi_state = WIFI_APMODE; + WiFi.softAP(networks[0].id.c_str(), networks[0].pw.c_str()); + + Serial.println("Wait 100 ms for AP_START..."); + delay(100); + Serial.println(WiFi.softAPConfig(IPAddress (192, 168, 4, 1), IPAddress (0, 0, 0, 0), IPAddress (255, 255, 255, 0)) ? "Ready" : "Failed!"); + + IPAddress myIP = WiFi.softAPIP(); + String myIPstr = myIP.toString(); + sonde.setIP(myIPstr.c_str(), true); + sonde.updateDisplayIP(); + // enableNetwork(true); done later in WifiLoop. +} + +void initialMode() { + if (sonde.config.touch_thresh == 0) { + enterMode(ST_TOUCHCALIB); + return; + } + if (sonde.config.spectrum != -1) { // enable Spectrum in config.txt: spectrum=number_of_seconds + startSpectrumDisplay(); + } else { + setCurrentDisplay(0); + enterMode(ST_DECODER); + } +} + +void loopTouchCalib() { + uint8_t dispw, disph, dispxs, dispys; + disp.rdis->clear(); + disp.rdis->getDispSize(&disph, &dispw, &dispxs, &dispys); + char num[10]; + + while (1) { + int t1 = touchRead(button1.pin & 0x7f); + int t2 = touchRead(button2.pin & 0x7f); + disp.rdis->setFont(FONT_LARGE); + disp.rdis->drawString(0, 0, "Touch calib."); + disp.rdis->drawString(0, 3 * dispys, "Touch1: "); + snprintf(num, 10, "%d ", t1); + disp.rdis->drawString(8 * dispxs, 3 * dispys, num); + disp.rdis->drawString(0, 6 * dispys, "Touch2: "); + snprintf(num, 10, "%d ", t2); + disp.rdis->drawString(8 * dispxs, 6 * dispys, num); + delay(300); + } +} + +// Wifi modes +// 0: disabled. directly start initial mode (spectrum or scanner) +// 1: station mode in background. directly start initial mode (spectrum or scanner) +// 2: access point mode in background. directly start initial mode (spectrum or scanner) +// 3: traditional sync. WifiScan. Tries to connect to a network, in case of failure activates AP. +// Mode 3 shows more debug information on serial port and display. +#define MAXWIFIDELAY 40 +static const char* _scan[2] = {"/", "\\"}; +void loopWifiScan() { + if (sonde.config.wifi == 0) { // no Wifi + wifi_state = WIFI_DISABLED; + initialMode(); + return; + } + if (sonde.config.wifi == 1) { // station mode, setup in background + wifi_state = WIFI_DISABLED; // will start scanning in wifiLoopBackgroiund + initialMode(); + return; + } + if (sonde.config.wifi == 2) { // AP mode, setup in background + startAP(); + enableNetwork(true); + initialMode(); + return; + } + // wifi==3 => original mode with non-async wifi setup + disp.rdis->setFont(FONT_SMALL); + disp.rdis->drawString(0, 0, "WiFi Scan..."); + uint8_t dispw, disph, dispxs, dispys; + disp.rdis->getDispSize(&disph, &dispw, &dispxs, &dispys); + + int line = 0; + int cnt = 0; + + WiFi.disconnect(true); + WiFi.mode(WIFI_STA); + int index = -1; + int n = WiFi.scanNetworks(); + for (int i = 0; i < n; i++) { + String ssid = WiFi.SSID(i); + disp.rdis->drawString(0, dispys * (1 + line), ssid.c_str()); + line = (line + 1) % (disph / dispys); + String mac = WiFi.BSSIDstr(i); + String encryptionTypeDescription = translateEncryptionType(WiFi.encryptionType(i)); + Serial.printf("Network %s: RSSI %d, MAC %s, enc: %s\n", ssid.c_str(), WiFi.RSSI(i), mac.c_str(), encryptionTypeDescription.c_str()); + int curidx = fetchWifiIndex(ssid.c_str()); + if (curidx >= 0 && index == -1) { + index = curidx; + Serial.printf("Match found at scan entry %d, config network %d\n", i, index); + } + } + int lastl = (disph / dispys - 2) * dispys; + if (index >= 0) { // some network was found + Serial.print("Connecting to: "); Serial.print(fetchWifiSSID(index)); + Serial.print(" with password "); Serial.println(fetchWifiPw(index)); + + disp.rdis->drawString(0, lastl, "Conn:"); + disp.rdis->drawString(6 * dispxs, lastl, fetchWifiSSID(index)); + WiFi.begin(fetchWifiSSID(index), fetchWifiPw(index)); + while (WiFi.status() != WL_CONNECTED && cnt < MAXWIFIDELAY) { + delay(500); + Serial.print("."); + disp.rdis->drawString(15 * dispxs, lastl + dispys, _scan[cnt & 1]); + cnt++; + } + } + if (index < 0 || cnt >= MAXWIFIDELAY) { // no network found, or connect not successful + WiFi.disconnect(true); + delay(1000); + startAP(); + IPAddress myIP = WiFi.softAPIP(); + Serial.print("AP IP address: "); + Serial.println(myIP); + disp.rdis->drawString(0, lastl, "AP: "); + disp.rdis->drawString(6 * dispxs, lastl + 1, networks[0].id.c_str()); + delay(3000); + } else { + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + String localIPstr = WiFi.localIP().toString(); + Serial.println(localIPstr); + sonde.setIP(localIPstr.c_str(), false); + sonde.updateDisplayIP(); + wifi_state = WIFI_CONNECTED; + bool hasRS92 = false; + for (int i = 0; i < MAXSONDE; i++) { + if (sonde.sondeList[i].type == STYPE_RS92) hasRS92 = true; + } + if (hasRS92) { + geteph(); + if (ephstate == EPH_PENDING) ephstate = EPH_ERROR; + get_eph("/brdc"); + } + delay(3000); + } + enableNetwork(true); + initialMode(); +} + + +/// Testing OTA Updates +/// somewhat based on Arduino's AWS_S3_OTA_Update +// Utility to extract header value from headers +String getHeaderValue(String header, String headerName) { + return header.substring(strlen(headerName.c_str())); +} + +// OTA Logic +void execOTA() { + int contentLength = 0; + bool isValidContentType = false; + sonde.clearDisplay(); + disp.rdis->setFont(FONT_SMALL); + disp.rdis->drawString(0, 0, "RadioSonde"); + disp.rdis->drawString(0, 1, "Upgrade Os"); + String dispHost = updateHost.substring(0, 14); + //disp.rdis->drawString(2, 0, dispHost.c_str()); + + Serial.println("Connecting to: " + updateHost); + // Connect to Update host + if (client.connect(updateHost.c_str(), updatePort)) { + // Connection succeeded, fecthing the bin + Serial.println("Fetching bin: " + String(*updateBin)); + disp.rdis->drawString(0, 2, "Fetching update"); + + // Get the contents of the bin file + client.print(String("GET ") + *updateBin + " HTTP/1.1\r\n" + + "Host: " + updateHost + "\r\n" + + "Cache-Control: no-cache\r\n" + + "Connection: close\r\n\r\n"); + + // Check what is being sent + // Serial.print(String("GET ") + bin + " HTTP/1.1\r\n" + + // "Host: " + host + "\r\n" + + // "Cache-Control: no-cache\r\n" + + // "Connection: close\r\n\r\n"); + + unsigned long timeout = millis(); + while (client.available() == 0) { + if (millis() - timeout > 5000) { + Serial.println("Client Timeout !"); + client.stop(); + return; + } + } + + while (client.available()) { + // read line till /n + String line = client.readStringUntil('\n'); + // remove space, to check if the line is end of headers + line.trim(); + + // if the the line is empty, + // this is end of headers + // break the while and feed the + // remaining `client` to the + // Update.writeStream(); + if (!line.length()) { + //headers ended + break; // and get the OTA started + } + + // Check if the HTTP Response is 200 + // else break and Exit Update + if (line.startsWith("HTTP/1.1")) { + if (line.indexOf("200") < 0) { + Serial.println("Got a non 200 status code from server. Exiting OTA Update."); + break; + } + } + + // extract headers here + // Start with content length + if (line.startsWith("Content-Length: ")) { + contentLength = atoi((getHeaderValue(line, "Content-Length: ")).c_str()); + Serial.println("Got " + String(contentLength) + " bytes from server"); + } + + // Next, the content type + if (line.startsWith("Content-Type: ")) { + String contentType = getHeaderValue(line, "Content-Type: "); + Serial.println("Got " + contentType + " payload."); + if (contentType == "application/octet-stream") { + isValidContentType = true; + } + } + } + } else { + // Connect to updateHost failed + // May be try? + // Probably a choppy network? + Serial.println("Connection to " + String(updateHost) + " failed. Please check your setup"); + // retry?? + // execOTA(); + } + + // Check what is the contentLength and if content type is `application/octet-stream` + Serial.println("contentLength : " + String(contentLength) + ", isValidContentType : " + String(isValidContentType)); + disp.rdis->drawString(0, 2, "Len: "); + String cls = String(contentLength); + disp.rdis->drawString(5, 2, cls.c_str()); + + // check contentLength and content type + if (contentLength && isValidContentType) { + // Check if there is enough to OTA Update + bool canBegin = Update.begin(contentLength); + disp.rdis->drawString(0, 4, "Starting update"); + + // If yes, begin + if (canBegin) { + Serial.println("Begin OTA. This may take 2 - 5 mins to complete. Things might be quite for a while.. Patience!"); + // No activity would appear on the Serial monitor + // So be patient. This may take 2 - 5mins to complete + disp.rdis->drawString(0, 5, "Please wait!"); + size_t written = Update.writeStream(client); + + if (written == contentLength) { + Serial.println("Written : " + String(written) + " successfully"); + } else { + Serial.println("Written only : " + String(written) + "/" + String(contentLength) + ". Retry?" ); + // retry?? + // execOTA(); + } + + /* + //ICI Update Data + + // Update DATAWeb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + //Data data.tar + updatedataweb(updateHost,updatePort,updateDataWeb,"index.html"); + */ + + + if (Update.end()) { + Serial.println("OTA done!"); + if (Update.isFinished()) { + Serial.println("Update successfully completed. Rebooting."); + disp.rdis->drawString(0, 7, "Rebooting...."); + delay(1000); + ESP.restart(); + } else { + Serial.println("Update not finished? Something went wrong!"); + } + } else { + Serial.println("Error Occurred. Error #: " + String(Update.getError())); + } + } else { + // not enough space to begin OTA + // Understand the partitions and + // space availability + Serial.println("Not enough space to begin OTA"); + client.flush(); + } + } else { + Serial.println("There was no content in the response"); + client.flush(); + } + + // Back to some normal state + enterMode(ST_DECODER); +} + +void updatedataweb(String host, int port, String dataweb, String fichier){ + + //Data1 index.html + sonde.clearDisplay(); + disp.rdis->setFont(FONT_SMALL); + disp.rdis->drawString(0, 0, "RadioSonde"); + disp.rdis->drawString(0, 1, "Upgrade Data"); + String *data = &dataweb; + String dispHost = host.substring(0, 14); + Serial.println("Connecting to: " + host); + // Connect to Update host + if (client.connect(host.c_str(), port)) { + // Connection succeeded, fecthing the dataweb + Serial.println("Fetching data: " + String(*data)); + disp.rdis->drawString(0, 3, "Fetching data"); + char buf[16]; + snprintf(buf, 16, "%s", fichier); + disp.rdis->drawString(0, 4, buf); + // Get the contents of the bin file + client.print(String("GET ") + *data + " HTTP/1.1\r\n" + + "Host: " + host + "\r\n" + + "Cache-Control: no-cache\r\n" + + "Connection: close\r\n\r\n"); + + unsigned long timeout = millis(); + while (client.available() == 0) { + if (millis() - timeout > 5000) { + Serial.println("Client Timeout !"); + client.stop(); + return; + } + } + + File file = SPIFFS.open("/"+fichier, FILE_WRITE); + int cpt=0; + // Read all the lines of the reply from server and print them to Serial + while(client.available()){ + String line = client.readStringUntil('\r'); + line.trim(); + Serial.print(line); + cpt += 1; + if (!file) { + Serial.println("There was an error opening the file for writing"); + return; + } + if (cpt>10){ + if (file.print(line+"\n")) { + Serial.println("File was written"); + } else { + Serial.println("File write failed"); + } + } + } + file.close(); + } + client.flush(); + //Untar data.tar + +} + +int fetchHTTPheader(int *validType) { + int contentLength = -1; + unsigned long timeout = millis(); + while (client.available() == 0) { + if (millis() - timeout > 5000) { + Serial.println("Client Timeout !"); + client.stop(); + return -1; + } + } + + while (client.available()) { + // read line till \n + String line = client.readStringUntil('\n'); + // remove space, to check if the line is end of headers + line.trim(); + + // if the the line is empty, + // this is end of headers + // break the while and feed the + // remaining `client` to the + // Update.writeStream(); + if (!line.length()) { + //headers ended + break; // and get the OTA started + } + + // Check if the HTTP Response is 200 + // else break and Exit Update + if (line.startsWith("HTTP/1.1")) { + if (line.indexOf("200") < 0) { + Serial.println("Got a non 200 status code from server. Exiting OTA Update."); + return -1; + } + } + + // extract headers here + // Start with content length + if (line.startsWith("Content-Length: ")) { + contentLength = atoi((getHeaderValue(line, "Content-Length: ")).c_str()); + Serial.println("Got " + String(contentLength) + " bytes from server"); + } + + // Next, the content type + if (line.startsWith("Content-Type: ")) { + String contentType = getHeaderValue(line, "Content-Type: "); + Serial.println("Got " + contentType + " payload."); + if (contentType == "application/octet-stream") { + if (validType) *validType = 1; + } + } + } + return contentLength; +} + + + +void loop() { + Serial.printf("\nMAIN: Running loop in state %d [currentDisp:%d, lastDisp:%d]. free heap: %d, unused stack: %d\n", + mainState, currentDisplay, lastDisplay, ESP.getFreeHeap(), uxTaskGetStackHighWaterMark(0)); + switch (mainState) { + case ST_DECODER: +#ifndef DISABLE_MAINRX + loopDecoder(); +#else + delay(1000); +#endif + break; + case ST_SPECTRUM: loopSpectrum(); break; + case ST_WIFISCAN: loopWifiScan(); break; + case ST_UPDATE: execOTA(); break; + case ST_TOUCHCALIB: loopTouchCalib(); break; + } +#if 0 + int rssi = sx1278.getRSSI(); + Serial.print(" RSSI: "); + Serial.print(rssi); + + int gain = sx1278.getLNAGain(); + Serial.print(" LNA Gain: "), + Serial.println(gain); +#endif + loopWifiBackground(); + if (currentDisplay != lastDisplay && (mainState == ST_DECODER)) { + disp.setLayout(currentDisplay); + sonde.clearDisplay(); + sonde.updateDisplay(); + lastDisplay = currentDisplay; + } + +#if FEATURE_MQTT + int now = millis(); + if (mqttEnabled && (lastMqttUptime == 0 || (lastMqttUptime + 60000 < now) || (lastMqttUptime > now))) { + mqttclient.publishUptime(); + lastMqttUptime = now; + } +#endif + +} + +void aprs_station_update() { + int chase = sonde.config.chase; + // automatically decided if CHASE or FIXED mode is used (for config AUTO) + if (chase == SH_LOC_AUTO) { + if (SH_LOC_AUTO_IS_CHASE) chase = SH_LOC_CHASE; else chase = SH_LOC_FIXED; + } + unsigned long time_now = millis(); + unsigned long time_delta = time_now - time_last_aprs_update; + unsigned long update_time = (chase == SH_LOC_CHASE) ? APRS_MOBILE_STATION_UPDATE_TIME : APRS_STATION_UPDATE_TIME; + Serial.printf("aprs_station_update: delta: %ld, update in %ld\n", time_delta, update_time); + if (time_delta < update_time) return; + Serial.println("Update is due!!"); + + float lat, lon; + if (chase == SH_LOC_FIXED) { + // fixed location + lat = sonde.config.rxlat; + lon = sonde.config.rxlon; + if (isnan(lat) || isnan(lon)) return; + } else { + if (gpsPos.valid) { + lat = gpsPos.lat; + lon = gpsPos.lon; + } else { + return; + } + } + Serial.printf("Really updating!! (objcall is %s)", sonde.config.objcall); + char *bcn = aprs_send_beacon(sonde.config.call, lat, lon, sonde.config.beaconsym + ((chase==SH_LOC_CHASE)?2:0), sonde.config.comment); + if ( tcpclient.disconnected()) { + tcpclient.connect(sonde.config.tcpfeed.host, sonde.config.tcpfeed.port); + } + if ( tcpclient.connected() ) { + strcat(bcn, "\r\n"); + Serial.println("****BEACON****"); + Serial.print(bcn); + tcpclient.write(bcn, strlen(bcn)); + time_last_aprs_update = time_now; + } +} + +#if FEATURE_SONDEHUB +// Sondehub v2 DB related codes +/* + Update station data to the sondehub v2 DB +*/ +/* which_pos: 0=none, 1=fixed, 2=gps */ +void sondehub_station_update(WiFiClient * client, struct st_sondehub * conf) { +#define STATION_DATA_LEN 300 + char data[STATION_DATA_LEN]; + char *w; + + // If there is no connection to some WiFi AP, we cannot upload any data at all.... + if ( wifi_state != WIFI_CONNECTED ) return; + + unsigned long time_now = millis(); + // time_delta will be correct, even if time_now overflows + unsigned long time_delta = time_now - time_last_update; + + int chase = conf->chase; + // automatically decided if CHASE or FIXED mode is used (for config AUTO) + if (chase == SH_LOC_AUTO) { + if (SH_LOC_AUTO_IS_CHASE) chase = SH_LOC_CHASE; else chase = SH_LOC_FIXED; + } + + // Use 30sec update time in chase mode, 60 min in station mode. + unsigned long update_time = (chase == SH_LOC_CHASE) ? SONDEHUB_MOBILE_STATION_UPDATE_TIME : SONDEHUB_STATION_UPDATE_TIME; + + // If it is not yet time to send another update. do nothing.... + if ( (time_delta <= update_time) ) return; + + Serial.println("sondehub_station_update()"); + time_last_update = time_now; + + if (!client->connected()) { + if (!client->connect(conf->host, 80)) { + Serial.println("Connection FAILED"); + return; + } + } + + w = data; + // not necessary... memset(w, 0, STATION_DATA_LEN); + + sprintf(w, + "{" + "\"software_name\": \"%s\"," + "\"software_version\": \"%s\"," + "\"uploader_callsign\": \"%s\",", + version_name, version_id, conf->callsign); + w += strlen(w); + + // Only send email if provided + if (strlen(conf->email) != 0) { + sprintf(w, "\"uploader_contact_email\": \"%s\",", conf->email); + w += strlen(w); + } + + // Only send antenna if provided + if (strlen(conf->antenna) != 0) { + sprintf(w, "\"uploader_antenna\": \"%s\",", conf->antenna); + w += strlen(w); + } + + // We send GPS position: (a) in CHASE mode, (b) in AUTO mode if no fixed location has been specified in config + if (chase == SH_LOC_CHASE) { + if (gpsPos.valid) { + sprintf(w, + "\"uploader_position\": [%.6f,%.6f,%d]," + "\"mobile\": true", + gpsPos.lat, gpsPos.lon, gpsPos.alt); + } else { + sprintf(w, "\"uploader_position\": [null,null,null]"); + } + w += strlen(w); + } + // Otherweise, in FIXED mode we send the fixed position from config (if specified) + else if (chase == SH_LOC_FIXED) { + if ((!isnan(sonde.config.rxlat)) && (!isnan(sonde.config.rxlon))) { + if (isnan(sonde.config.rxalt)) + sprintf(w, "\"uploader_position\": [%.6f,%.6f,null]", sonde.config.rxlat, sonde.config.rxlon); + else + sprintf(w, "\"uploader_position\": [%.6f,%.6f,%d]", sonde.config.rxlat, sonde.config.rxlon, (int)sonde.config.rxalt); + } else { + sprintf(w, "\"uploader_position\": [null,null,null]"); + } + w += strlen(w); + } else { + sprintf(w, "\"uploader_position\": [null,null,null]"); + w += strlen(w); + } + + // otherwise (in SH_LOC_NONE mode) we dont include any position info + sprintf(w, "}"); + + client->println("PUT /listeners HTTP/1.1"); + client->print("Host: "); + client->println(conf->host); + client->println("accept: text/plain"); + client->println("Content-Type: application/json"); + client->print("Content-Length: "); + client->println(strlen(data)); + client->println(); + client->println(data); + Serial.println(strlen(data)); + Serial.println(data); + Serial.println("Waiting for response"); + // TODO: better do this asyncrhonously + // At least, do this safely. See Notes-on-Using-WiFiClient.txt for details + // If any of the client->print failed before (remote end closed connection), + // then calling client->read will cause a LoadProhibited exception + if (client->connected()) { + String response = client->readString(); + Serial.println(response); + Serial.println("Response done..."); + } else { + Serial.println("SH client connection closed\n"); + } + //client->stop(); +} + +/* + Update sonde data to the sondehub v2 DB +*/ +enum SHState { SH_DISCONNECTED, SH_CONNECTING, SH_CONN_IDLE, SH_CONN_APPENDING, SH_CONN_WAITACK }; + +SHState shState = SH_DISCONNECTED; +time_t shStart = 0; + + + +void sondehub_reply_handler(WiFiClient * client) { + // sondehub handler for tasks to be done even if no data is to be sent: + // process response messages from sondehub + // request frequency list (if active) +#define MSG_SIZE 1000 + char rs_msg[MSG_SIZE]; + + if (shImport == 1) { // we are waiting for a reply to a sondehub frequency import request + // while we are waiting, we do nothing else with sondehub... + int res = ShFreqImport::shImportHandleReply(&shclient); + Serial.printf("ret: %d\n", res); + // res==0 means more data is expected, res==1 means complete reply received (or error) + if (res == 1) { + shImport = 2; // finished + shImportInterval = sonde.config.sondehub.fiinterval * 60; + } + } + else { + // any reply here belongs to normal telemetry upload, lets just print it. + // and wait for a valid HTTP response + int cnt = 0; + while (client->available() > 0) { + // data is available from remote server, process it... + // readBytesUntil may wait for up to 1 second if enough data is not available... + // int cnt = client->readBytesUntil('\n', rs_msg, MSG_SIZE - 1); + int c = client->read(); + if (c < 0) break; // should never happen in available() returned >0 right before.... + rs_msg[cnt++] = c; + if (c == '\n') { + rs_msg[cnt] = 0; + Serial.println(rs_msg); + // If something that looks like a valid HTTP response is received, we are ready to send the next data item + if (shState == SH_CONN_WAITACK && cnt > 11 && strncmp(rs_msg, "HTTP/1", 6) == 0) { + shState = SH_CONN_IDLE; + } + cnt = 0; + } + if (cnt >= MSG_SIZE - 1) { + cnt = 0; + Serial.println("(overlong line from network, ignoring)"); + } + } + if (cnt > 0) { + rs_msg[cnt + 1] = 0; + Serial.println(rs_msg); + } + } + // send import requests if needed + if (sonde.config.sondehub.fiactive) { + if (shImport == 2) { + Serial.printf("next sondehub frequncy import in %d seconds\n", shImportInterval); + shImportInterval --; + if (shImportInterval <= 0) { + shImport = 0; + } + } + else if (shImport == 0) { + if (shState == SH_CONN_APPENDING || shState == SH_CONN_WAITACK) + Serial.printf("Time to request next sondehub import.... but still busy with upload request"); + else + sondehub_send_fimport(&shclient); + } + } + + // also handle periodic station updates here... + // interval check moved to sondehub_station_update to avoid having to calculate distance in auto mode twice + if (sonde.config.sondehub.active) { + if (shState == SH_CONN_IDLE || shState == SH_DISCONNECTED ) { + // (do not set station update while a telemetry report is being sent + sondehub_station_update(&shclient, &sonde.config.sondehub); + } + } +} + +void sondehub_send_fimport(WiFiClient * client) { + if (shState == SH_CONN_APPENDING || shState == SH_CONN_WAITACK) { + // Currently busy with SondeHub data upload + // So do nothing here. + // sond_fimport will be re-sent later, when shState becomes SH_CONN_IDLE + return; + } + // It's time to run, so check prerequisites + float lat = sonde.config.rxlat, lon = sonde.config.rxlon; + if (gpsPos.valid) { + lat = gpsPos.lat; + lon = gpsPos.lon; + } + + int maxdist = sonde.config.sondehub.fimaxdist; // km + int maxage = sonde.config.sondehub.fimaxage * 60; // fimaxage is hours, shImportSendRequest uses minutes + int fiinterval = sonde.config.sondehub.fiinterval; + Serial.printf("shimp : %f %f %d %d %d\n", lat, lon, maxdist, maxage, shImportInterval); + if ( !isnan(lat) && !isnan(lon) && maxdist > 0 && maxage > 0 && fiinterval > 0 ) { + int res = ShFreqImport::shImportSendRequest(&shclient, lat, lon, maxdist, maxage); + if (res == 0) shImport = 1; // Request OK: wait for response + else shImport = 2; // Request failed: wait interval, then retry + } +} + +// in hours.... max allowed diff UTC <-> sonde time +#define SONDEHUB_TIME_THRESHOLD (3) +void sondehub_send_data(WiFiClient * client, SondeInfo * s, struct st_sondehub * conf) { + Serial.println("sondehub_send_data()"); + Serial.printf("shState = %d\n", shState); + + // max age of data in JSON request (in seconds) +#define SONDEHUB_MAXAGE 15 + + char rs_msg[MSG_SIZE]; + char *w; + struct tm ts; + // config setting M10 and M20 will both decode both types, so use the real type that was decoded + uint8_t realtype = sonde.realType(s); + + // For DFM, s->d.time is data from subframe DAT8 (gps date/hh/mm), and sec is from DAT1 (gps sec/usec) + // For all others, sec should always be 0 and time the exact time in seconds + time_t t = s->d.time; + + int chase = conf->chase; + // automatically decided if CHASE or FIXED mode is used (for config AUTO) + if (chase == SH_LOC_AUTO) { + if (SH_LOC_AUTO_IS_CHASE) chase = SH_LOC_CHASE; else chase = SH_LOC_FIXED; + } + + + struct tm timeinfo; + time_t now; + time(&now); + gmtime_r(&now, &timeinfo); + if (timeinfo.tm_year <= (2016 - 1900)) { + Serial.println("Failed to obtain time"); + return; + } + + // Check if current sonde data is valid. If not, don't do anything.... + if (*s->d.ser == 0 || s->d.validID==0 ) return; // Don't send anything without serial number + if (((int)s->d.lat == 0) && ((int)s->d.lon == 0)) return; // Sometimes these values are zeroes. Don't send those to the sondehub + if ((int)s->d.alt > 50000) return; // If alt is too high don't send to SondeHub + // M20 data does not include #sat information + if ( realtype != STYPE_M20 && (int)s->d.sats < 4) return; // If not enough sats don't send to SondeHub + + // If not connected to sondehub, try reconnecting. + // TODO: do this outside of main loop + if (!client->connected()) { + Serial.println("NO CONNECTION"); + shState = SH_DISCONNECTED; + if (!client->connect(conf->host, 80)) { + Serial.println("Connection FAILED"); + return; + } + client->Client::setTimeout(0); // does this work? + shState = SH_CONN_IDLE; + } + + if ( shState == SH_CONN_WAITACK ) { + Serial.println("Previous SH-frame not yet ack'ed, not sending new data"); + return; + } + + if ( abs(now - (time_t)s->d.time) > (3600 * SONDEHUB_TIME_THRESHOLD) ) { + Serial.printf("Sonde time %d too far from current UTC time %ld", s->d.time, now); + return; + } + + // DFM uses UTC. Most of the other radiosondes use GPS time + // SondeHub expect datetime to be the same time sytem as the sonde transmits as time stamp + if ( realtype == STYPE_RS41 || realtype == STYPE_RS92 || realtype == STYPE_M20 ) { + t += 18; // convert back to GPS time from UTC time +18s + } + + gmtime_r(&t, &ts); + + memset(rs_msg, 0, MSG_SIZE); + w = rs_msg; + + sprintf(w, + " {" + "\"software_name\": \"%s\"," + "\"software_version\": \"%s\"," + "\"uploader_callsign\": \"%s\"," + "\"time_received\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\"," + "\"manufacturer\": \"%s\"," + "\"serial\": \"%s\"," + "\"datetime\": \"%04d-%02d-%02dT%02d:%02d:%02d.000Z\"," + "\"lat\": %.5f," + "\"lon\": %.5f," + "\"alt\": %.5f," + "\"frequency\": %.3f," + "\"vel_h\": %.5f," + "\"vel_v\": %.5f," + "\"heading\": %.5f," + "\"rssi\": %.1f," + "\"frame\": %d," + "\"type\": \"%s\",", + version_name, version_id, conf->callsign, + timeinfo.tm_year + 1900, timeinfo.tm_mon + 1, timeinfo.tm_mday, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec, + manufacturer_string[realtype], s->d.ser, + ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec, + (float)s->d.lat, (float)s->d.lon, (float)s->d.alt, (float)s->freq, (float)s->d.hs, (float)s->d.vs, + (float)s->d.dir, -((float)s->rssi / 2), s->d.vframe, sondeTypeStrSH[realtype] + ); + w += strlen(w); + + // Only send sats if not M20 + if (realtype != STYPE_M20) { + sprintf(w, "\"sats\": %d,", (int)s->d.sats); + w += strlen(w); + } + + /* if there is a subtype (DFM only) */ + if ( TYPE_IS_DFM(s->type) && s->d.subtype > 0 && s->d.subtype < 16 ) { + const char *t = dfmSubtypeStrSH[s->d.subtype]; + // as in https://github.com/projecthorus/radiosonde_auto_rx/blob/e680221f69a568e1fdb24e76db679233f32cb027/auto_rx/autorx/sonde_specific.py#L84 + if (t) sprintf(w, "\"subtype\": \"%s\",", t); + else sprintf(w, "\"subtype\": \"DFMx%X\",", s->d.subtype); // Unknown subtype + w += strlen(w); + } else if ( s->type == STYPE_RS41 ) { + char buf[11]; + if (RS41::getSubtype(buf, 11, s) == 0) { + sprintf(w, "\"subtype\": \"%s\",", buf); + w += strlen(w); + } + } + + // Only send temp if provided + if (!isnan(s->d.temperature)) { + sprintf(w, "\"temp\": %.1f,", s->d.temperature); + w += strlen(w); + } + + // Only send humidity if provided + if (!isnan(s->d.relativeHumidity)) { + sprintf(w, "\"humidity\": %.1f,", s->d.relativeHumidity); + w += strlen(w); + } + + // Only send pressure if provided + if (!isnan(s->d.pressure)) { + sprintf(w, "\"pressure\": %.2f,", s->d.pressure); + w += strlen(w); + } + + // Only send burst timer if RS41 and fresh within the last 51s + if ((realtype == STYPE_RS41) && (s->d.crefKT > 0) && (s->d.vframe - s->d.crefKT < 51)) { + sprintf(w, "\"burst_timer\": %d,", (int)s->d.countKT); + w += strlen(w); + } + + // Only send battery if provided + if (s->d.batteryVoltage > 0) { + sprintf(w, "\"batt\": %.2f,", s->d.batteryVoltage); + w += strlen(w); + } + + // Only send antenna if provided + if (strlen(conf->antenna) != 0) { + sprintf(w, "\"uploader_antenna\": \"%s\",", conf->antenna); + w += strlen(w); + } + + // We send GPS position: (a) in CHASE mode, (b) in AUTO mode if no fixed location has been specified in config + if (chase == SH_LOC_CHASE) { + if (gpsPos.valid) { + sprintf(w, "\"uploader_position\": [%.6f,%.6f,%d]", gpsPos.lat, gpsPos.lon, gpsPos.alt); + } else { + sprintf(w, "\"uploader_position\": [null,null,null]"); + } + w += strlen(w); + } + // Otherweise, in FIXED mode we send the fixed position from config (if specified) + else if (chase == SH_LOC_FIXED) { + if ((!isnan(sonde.config.rxlat)) && (!isnan(sonde.config.rxlon))) { + if (isnan(sonde.config.rxalt)) + sprintf(w, "\"uploader_position\": [%.6f,%.6f,null]", sonde.config.rxlat, sonde.config.rxlon); + else + sprintf(w, "\"uploader_position\": [%.6f,%.6f,%d]", sonde.config.rxlat, sonde.config.rxlon, (int)sonde.config.rxalt); + } else { + sprintf(w, "\"uploader_position\": [null,null,null]"); + } + w += strlen(w); + } else { + sprintf(w, "\"uploader_position\": [null,null,null]"); + w += strlen(w); + } + + // otherwise (in SH_LOC_NONE mode) we dont include any position info + sprintf(w, "}"); + + if (shState != SH_CONN_APPENDING) { + sondehub_send_header(client, s, conf, &timeinfo); + sondehub_send_next(client, s, conf, rs_msg, strlen(rs_msg), 1); + shState = SH_CONN_APPENDING; + shStart = now; + } else { + sondehub_send_next(client, s, conf, rs_msg, strlen(rs_msg), 0); + } + if (now - shStart > SONDEHUB_MAXAGE) { // after MAXAGE seconds + sondehub_send_last(client, s, conf); + shState = SH_CONN_WAITACK; + shStart = 0; + } + //client->println(rs_msg); + //Serial.println(rs_msg); + //String response = client->readString(); + //Serial.println(response); +} + +void sondehub_finish_data(WiFiClient * client, SondeInfo * s, struct st_sondehub * conf) { + // If there is an "old" pending collection of JSON data sets, send it even if no now data is received + if (shState == SH_CONN_APPENDING) { + time_t now; + time(&now); + if (now - shStart > SONDEHUB_MAXAGE + 3) { // after MAXAGE seconds + sondehub_send_last(client, s, conf); + shState = SH_CONN_WAITACK; + shStart = 0; + } + } +} + +static const char *DAYS[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}; +static const char *MONTHS[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Noc", "Dec"}; + +void sondehub_send_header(WiFiClient * client, SondeInfo * s, struct st_sondehub * conf, struct tm * now) { + Serial.print("PUT /sondes/telemetry HTTP/1.1\r\n" + "Host: "); + Serial.println(conf->host); + Serial.print("accept: text/plain\r\n" + "Content-Type: application/json\r\n" + "Transfer-Encoding: chunked\r\n"); + + client->print("PUT /sondes/telemetry HTTP/1.1\r\n" + "Host: "); + client->println(conf->host); + client->print("accept: text/plain\r\n" + "Content-Type: application/json\r\n" + "Transfer-Encoding: chunked\r\n"); + if (now) { + Serial.printf("Date: %s, %02d %s %04d %02d:%02d:%02d GMT\r\n", + DAYS[now->tm_wday], now->tm_mday, MONTHS[now->tm_mon], now->tm_year + 1900, + now->tm_hour, now->tm_min, now->tm_sec); + client->printf("Date: %s, %02d %s %04d %02d:%02d:%02d GMT\r\n", + DAYS[now->tm_wday], now->tm_mday, MONTHS[now->tm_mon], now->tm_year + 1900, + now->tm_hour, now->tm_min, now->tm_sec); + } + client->print("User-agent: "); + client->print(version_name); + client->print("/"); + client->println(version_id); + client->println(""); // another cr lf as indication of end of header +} +void sondehub_send_next(WiFiClient * client, SondeInfo * s, struct st_sondehub * conf, char *chunk, int chunklen, int first) { + // send next chunk of JSON request + client->printf("%x\r\n", chunklen + 1); + client->write(first ? "[" : ",", 1); + client->write(chunk, chunklen); + client->print("\r\n"); + + Serial.printf("%x\r\n", chunklen + 1); + Serial.write((const uint8_t *)(first ? "[" : ","), 1); + Serial.write((const uint8_t *)chunk, chunklen); + Serial.print("\r\n"); +} +void sondehub_send_last(WiFiClient * client, SondeInfo * s, struct st_sondehub * conf) { + // last chunk. just the closing "]" of the json request + client->printf("1\r\n]\r\n0\r\n\r\n"); + Serial.printf("1\r\n]\r\n0\r\n\r\n"); +} + + +// End of sondehub v2 related codes +#endif diff --git a/RX_FSK/data.tar b/RX_FSK/data.tar new file mode 100644 index 0000000000000000000000000000000000000000..c25589fa1189b70483f851b387ca0c86ab445620 GIT binary patch literal 276480 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
XEdt6kpy`rLTfnV;bm$)qV0qDM$ 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 [sec])" ], +[ "startfreq", "Start frequency (MHz, default 400)" ], +[ "channelbw", "Bandwidth (kHz)" ], +[ "marker", "Spectrum MHz marker" ], // maybe remove, assume always ==1? +[ "noisefloor", "Spectrum noisefloor" ], +[ "", "Receiver configuration", "" ], +[ "freqofs", "RX frequency offset (Hz)"], +[ "rs41.agcbw", "RS41 AGC bandwidth"], +[ "rs41.rxbw", "RS41 RX bandwidth"], +[ "rs92.rxbw", "RS92 RX (and AGC) bandwidth"], +[ "rs92.alt2d", "RS92 2D fix default altitude"], +[ "dfm.agcbw", "DFM AGC bandwidth"], +[ "dfm.rxbw", "DFM RX bandwidth"], +[ "m10m20.agcbw", "M10/M20 AGC bandwidth"], +[ "m10m20.rxbw", "M10/M20 RX bandwidth"], +[ "mp3h.agcbw", "MP3H AGC bandwidth"], +[ "mp3h.rxbw", "MP3H RX bandwidth"], +[ "", "KISS TNC/AXUDP/AXTCP data feed configuration", ""], +[ "call", "Call"], +[ "passcode", "Passcode"], +[ "kisstnc.active", "KISS TNC (port 14590) (needs reboot)"], +[ "axudp.active", "AXUDP active"], +[ "axudp.host", "AXUDP host"], +[ "axudp.port", "AXUDP port"], +[ "axudp.highrate", "Rate limit"], +[ "tcp.active", "APRS TCP active"], +[ "tcp.host", "APRS TCP host"], +[ "tcp.port", "APRS TCP port"], +[ "tcp.highrate", "Rate limit"], +[ "tcp.objcall", "APRS object call"], +[ "tcp.beaconsym", "APRS tracker symbol"], +[ "tcp.chase", "APRS location reporting (0=off, 1=fixed, 2=chase/GPS, 3=auto)"], +[ "tcp.comment", "APRS location comment"], +[ "", "MQTT data feed configuration", ""], +[ "mqtt.active", "MQTT active (needs reboot)"], +[ "mqtt.id", "MQTT client ID"], +[ "mqtt.host", "MQTT server hostname"], +[ "mqtt.port", "MQTT port"], +[ "mqtt.username", "MQTT username"], +[ "mqtt.password", "MQTT password"], +[ "mqtt.prefix", "MQTT prefix"], +[ "", "Chasemapper settings", ""], +[ "cm.active", "Chasemapper active (0=disabled, 1=active)"], +[ "cm.host", "Chasemapper UDP host"], +[ "cm.port", "Chasemapper UDP port"], +[ "", "SondeHub settings", ""], +[ "sondehub.active", "SondeHub reporting (0=disabled, 1=active)"], +[ "sondehub.chase", "SondeHub location reporting (0=off, 1=fixed, 2=chase/GPS, 3=auto)"], +[ "sondehub.host", "SondeHub host (DO NOT CHANGE)"], +[ "sondehub.callsign", "Callsign"], +[ "sondehub.antenna", "Antenna (optional, visisble on SondeHub tracker)"], +[ "sondehub.email", "SondeHub email (optional, only used to contact in case of upload errors)"], +[ "", "SondeHub frequency import", "" ], +[ "sondehub.fiactive", "SondeHub frequency import active (0=disabled, 1=active)" ], +[ "sondehub.fiinterval", "Import frequency (minutes, ≥ 5)" ], +[ "sondehub.fimaxdist", "Import maximum distance (km, ≤ 700)" ], +[ "sondehub.fimaxage", "Import maximum age (hours, ≤ 48)" ], +[ "", "Hardware configuration (requires reboot)", ""], +[ "disptype", "Display type (0=OLED/SSD1306, 2=OLED/SH1106, 5=ST7789)"], +[ "oled_sda", "OLED SDA/TFT SDA"], +[ "oled_scl", "OLED SCL/TFT CLK"], +[ "oled_rst", "OLED RST/TFT RST (needs reboot)"], +[ "button_pin", "Button input port"], +[ "button2_pin", "Button 2 input port"], +[ "button2_axp", "Use AXP192 PWR as Button 2"], +[ "touch_thresh", "Touch button threshold
(0 for calib mode)"], +[ "power_pout", "Power control port"], +[ "led_pout", "LED output port (25)"], + +["buzzerOn", "Buzzer (0=Disabled, 1 Enable)"], +["buzzerPort", "Buzzer Port (4)"], +["buzzerFreq", "Buzzer Frequency (700)"], +["dbsmetre", "dB = 0 / Smetre =1)"], +["degdec", "Lat,Lon Decimal =0 ou Degres =1)"], + +[ "gps_rxd", "GPS RXD pin (-1 to disable)"], +[ "gps_txd", "GPS TXD pin (not really needed)"], +[ "batt_adc", "Battery measurement pin"], +[ "sx1278_ss", "SX1278 SS"], +[ "sx1278_miso", "SX1278 MISO"], +[ "sx1278_mosi", "SX1278 MOSI"], +[ "sx1278_sck", "SX1278 SCK"], +]; + +function mkcfg(id, key, label, value) { + var s = "" + label + "\n"; + return s; +} +function mkcfgbtn(id, key, label, value) { + var touch = ""; + var v = value; + if(v != -1 && (v&128)) { + touch = " checked"; + v = v & 127; + } + var s = "" + label + ""; + s += " Touch\n"; + return s; +} + +function mksep(id,label,url) { + return ""+label+"
[wiki]\n"; +} +function rowdisp(id,disp) { + var matches = document.querySelectorAll("tr."+id); + matches.forEach(function(e) { if(disp) e.hidden=true; else e.removeAttribute('hidden');}); + hid=id; nid="N"+id; + if(!disp) { hid=nid; nid=id; } + document.querySelector("span."+hid).hidden=true; + document.querySelector("span."+nid).removeAttribute('hidden'); +} +function configTable() { + // iterate over cfgs + var tab = "\n"; + var id=0; + for(i=0; i" + } else { + tab += mkcfg("s"+id, key, lbl, cf.get(key)); + } + } else { + id++; + tab += mksep("s"+id, lbl, cfgs[i][2]); + } + } + tab += "
OptionValue
"+scr+"
"; + var cfgdiv = document.getElementById("cfgtab"); + cfgdiv.innerHTML = tab; + // enable collapse / expand of items below a header + var acc = document.getElementsByClassName("cfgheader"); + for(i=0; i0: screens${i}.txt +# predefined: 1: for OLED, 2: for ILI9225; 3: for ILI9225 (portrait mode); 4: for ILI9431; 5: for ILI9431 (portrait mode) +# screenfile=2 +# display configuration. List of "displays" +# first entry: "Scanner" display +# second entry: default "Receiver" display +# additional entries: alternative receiver display, activated by button +display=0,1,2,3,4,5,6,7 +# turn off display: 0=never, 1=always, 2=if no RX; (+n*10: after n seconds) +dispsaver=0 +# set OLED contrast (0..255) or leave at factory default (-1) +dispcontrast=-1 +# set to -1 to disable (used for "N" values in timers in screens.txt). Value in seconds +norx_timeout=20 +#Add F4IYT +buzzerOn=1 +buzzerPort=25 +buzzerFreq=700 +dbsmetre=1 +#-------------------------------# +# Spectrum display settings +#-------------------------------# +startfreq=400 +channelbw=10 +spectrum=-1 #10 +noisefloor=-125 +marker=1 +#-------------------------------# +# APRS settings +#-------------------------------# +call=N0CALL +passcode=12345 +#-------------------------------# +# Sonde specific settings: bandwidth +# valid values: 3100, 3900, 5200, 6300, 7800, 10400, 12500, +# 15600, 20800, 25000, ... +# other values will be rounded up to the next valid value +# rs92.alt2d: default altitude used by RS92 decoder if only 3 sats available +#-------------------------------# +rs41.agcbw=12500 +rs41.rxbw=6300 +rs92.rxbw=12500 +rs92.alt2d=480 +dfm.agcbw=20800 +dfm.rxbw=10400 +#-------------------------------# +# ftp server for RINEX data (for RS92) +# YYYY/DDD/brdcDDD0.YYn.gz is appended +# s1: igs.bkg.bund.de/IGS/BRDC/ +# s2: www.ngs.noaa.gov/cors/rinex/ +#-------------------------------# +#ephftp=www.ngs.noaa.gov/cors/rinex/ +#ephftp=igs.bkg.bund.de/IGS/BRDC/ +ephftp=gssc.esa.int/gnss/data/daily/ +#-------------------------------# +# axudp for sending to aprsmap +#-------------------------------# +# local use only, do not feed to public services +# data not sanitized / quality checked, outliers not filtered out +axudp.active=1 +axudp.host=192.168.42.20 +axudp.port=9002 +axudp.symbol=/O +axudp.highrate=1 +#-------------------------------# +# connect to some aprs server +#-------------------------------# +tcp.active=0 +tcp.host=radiosondy.info +tcp.port=14590 +tcp.symbol=/O +tcp.highrate=20 +# send beacon (possibly with different call or SSID) +tcp.chase=0 +tcp.objcall= +tcp.beaconsym=/`/( +tcp.comment= +#-------------------------------# +# mqtt settings +#-------------------------------# +# data not sanitized / quality checked, outliers not filtered out +mqtt.active=0 +mqtt.id=rdz_sonde_server +mqtt.ip=192.168.1.5 +mqtt.port=1883 +mqtt.username= +mqtt.password= +mqtt.prefix=rdz_sonde_server/ +#-------------------------------# +# Sondehub v2 settings +#-------------------------------# +# Sondehub v2 DB settings +sondehub.active=0 +sondehub.chase=3 +sondehub.host=api.v2.sondehub.org +sondehub.callsign=CHANGEME_RDZTTGO +sondehub.antenna= +sondehub.email= +#-------------------------------# +# Sondehub freq import settings +#-------------------------------# +shfimp.active=0 +shfimp.interval=60 +shfimp.maxdist=150 +shfimp.maxage=6 +#-------------------------------# +# EOF +#-------------------------------# diff --git a/RX_FSK/data/fontawesome-webfont.eot b/RX_FSK/data/fontawesome-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..33b2bb80055cc480e797de704925acaba4ba7d7d GIT binary patch literal 60767 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%0DKehr}RFC`2XTB_?==0w^)u1m5PYii@6f)6_5Ydu zv+NIZ_(Rt}Q++LT5!n8!J4x!>sE&v_3*cXat{Zq5;17w;B6$epw}$Rg`0nFJg5D-L zYvw@(goc5TeJjM($AJAZxZHZN}RzBcP0=_>ZI6WVGU zO#Nk-YqZTa3{!84P0K~GsI#32<+_AsXU43wILwZS(8n%S9)lP!Dg$$e2$$9$E?^Nj zql4do#+a8qEP(bD2)DpP|$dp<`TZ#bY6^~7Xv_Lle)77^OsVhMOm(@ z??8O8kA%}ZWpR&2v!7qFSw@TF6d*=9YT^Rtk(n8p=CQWvt1Om=n&5uP;GiT6 zMRvbm39kbp*KB`qoVg12w52Z)T}`X41P>D|q_%K#zuhwb+BpEogY0E)KnSy#@+(m5 z20@LG@LUEvk`I|OIUV^^0_YtG9AElBS!Dsh%k^P9r0moJ25Lkm-gh#igwBDhAOj0!EF&8MxV^-m1U1MEd?H7} zL;r;tfFIT|ei3-Z@gyM=!%Ba7Pa626JRAA`V<2D<{RLRT@0o=bE)XF)nFtUL67`2L z{?_Qz_`Yy2t+I)?9&z#z__Q%L3pnhN}U z_rN#WU)kD59D4whbSYERHY01jM7id50EuI1ctl?<_IT=Y5vP>(sNNkB&U5&F&^kBhm5y{o!y!F+4wdxXoy;!4$W`?_nL(+bK_QDAMUV1O0AwZ| z6j)s}9YEZbY-C^Y)9Ej`aS&~{sXCG2SS3ce$EY;Yv-c8TlrD$C85ATlLZpGP_YWfi z`RQ?z1@zIfa{yqfsUDMEPpwuX%XHdO+ASb3EPi1fBPocvfgsC0xa^CG2SWBPWQ&GS zpCXPti8b>WkYbf#Vg%A?&_UwUsUQE_t4GX?7QqUpKJ2Iw#%)Q4Ft(`9Ja&Yk{C@38 z@%T`)#wWy(kKfEH;ZBQ(m*Iq&L=<)4D7tNO{SsA4Fp4D?(Ex6nQS&f3TK|atgj`fE z2|OX0(&(ZqxJd~IANX&dvX?U14_<~h2(lP6k^H8ep;2HW6oPo?U%v{M>|{sU~;p zLTv$OTx3H^4zNUn4wUfo>j{CEvTC@C+cw+cW*ABH6u@!M2EdBL?1GbL_#e;7YDBas zic?MTazk(khXSyPeDom_I~wkLv?Wr8<%egEfM!*M9^kl$>zsVzaP}S!gcD3;Czy#58RTm?`p)RTS8I<-sC3+*n{A)P*rU!@Npj`e{x9xsif2v zTW`{q3p^?A!Mk60Q{(FLt(&TVe9z z0-!PiOV02JcNeq?AbJaI+B9xC;LB=}Ho0vH(@;Qe0zq~-8ckOa!(u@Wou`p_TR|QT z38H`lJE$G{q1egUX@&v$x7wNLWD#j*!D58GLv^bT+jpdKBrK#SsQsWK(+RO40VA^w z0nA7MN1Y1Fc#5JkwD5TtHG1t;lo=i)U+kFG?1Jh11h9382!marrRE2eZh;JGh`wNO zQA_~n?%97HOKLA^#oG(5*bgSllS%rOc(S%Yj00cYR;!D9G_90{pfq7D4I*$k?byOV zR|epi%oIJ{ou`5zS!-_dnxOa{uNv)(luMo^5TCOItq}2}sxCztLEzBGS)Mf6dzaw< z!GweAgvFYJu&mH(Vl9HJBV%=Jz~~i%nDGIF9ncTET-AQ=fv{L11&K_;ei!iht(!De;ym|y7ksL|^5Ko~B-vSh80++s?unD}bZaYa@ zPH4M$&fw;xEGN3_H1vHW><%-+dg7dfW)F8$bB+h7sThoOtteO(v{&-+iK}r$%G))# z*Nhx^!ZMj1VeG?EkWg+0CYQSX1t96fV9^3c+9C393LU&CHsFCa1q99$`zTMsEWwLc zxsw1|A?k8-m8HCrk6;K7dhNDJN3R9iws%6vTq_}PtR2CZ8TG;ltZ4I}sU+^s8`P3F5QxrypG1-{ zGlr^7$Wsy(lo=xfC~BpKfg<2z4OEeEF@~x{Pi7O#CvqMJy+f+}=CB_$&IuEslB@s# J000000038FvZ??8 literal 0 HcmV?d00001 diff --git a/RX_FSK/data/fontawesome-webfont.woff b/RX_FSK/data/fontawesome-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..8b280b98fa2fa261aa4b0f8fd061f772073ef83e GIT binary patch literal 71508 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 + + + RadioSonde (version %VERSION_ID%) + + + + + +
+

  RadioSonde (version %VERSION_ID%)

+
+ + + + + +
+

QRG - Setup

+ +
+ +
+

WiFi - Settings

+ +
+ +
+

Data

+ +
+ +
+ +
+ +
+ +
+ +
+

Configuration

+ +
+ +
+

Control

+ +
+ +
+

Update

+ +
+
+

Telemetry

+ +
+
+ %VERSION_NAME%
+ CopyLeft 2020-2022 Modifier par Xav, FRS2013 & Vigor
+ Check for update (requires TTGO internet connection via WiFi)

+
+ (version %VERSION_ID%) +
+ Original project by Hansi
+ Copyright © 2019-2022 by Hansi Reiser, DL9RDZ
+

+ Autodetect info: %AUTODETECT_INFO%
+
+ RS92 RINEX eph state: %EPHSTATE%
+
+ 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 of + the License, or (at your option) any later version.
+ See https://www.gnu.org/licenses/gpl-2.0.txt + for details. +
+ +

+ +
+ + + + + + diff --git a/RX_FSK/data/livemap.html b/RX_FSK/data/livemap.html new file mode 100644 index 0000000..397186e --- /dev/null +++ b/RX_FSK/data/livemap.html @@ -0,0 +1,18 @@ + + + + RadioSonde LiveMap + + + + + + + + + + + +
+ + diff --git a/RX_FSK/data/livemap.js b/RX_FSK/data/livemap.js new file mode 100644 index 0000000..7aeea16 --- /dev/null +++ b/RX_FSK/data/livemap.js @@ -0,0 +1,530 @@ +try { + var check = $(document); +} catch (e) { + document.addEventListener("DOMContentLoaded", function(event) { + document.getElementById('map').innerHTML = '

In order to use this functionality, there must be an internet connection.

retry

go back'; + }); +} + +$(document).ready(function(){ + + var map = L.map('map', { attributionControl: false, zoomControl: false }); + map.on('mousedown touchstart',function () { follow=false; }); + + L.control.scale().addTo(map); + L.control.attribution({prefix:false}).addTo(map); + + var osmlight = L.tileLayer('https://{s}.tile.openstreetmap.de/{z}/{x}/{y}.png', { + maxZoom: 19, + attribution: '© OpenStreetMap contributors' + }); + + var osmdark = L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors © CARTO', + maxZoom: 19 + }); + + var opentopo = L.tileLayer('https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', { + maxZoom: 17, + attribution: 'Map data: © OpenStreetMap contributors, SRTM
Map style: © OpenTopoMap (CC-BY-SA)' + }); + + var esri = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', { + attribution: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye,
Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community', + maxZoom: 21 + }); + + var basemap; + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + map.addLayer(osmdark); + basemap='osmdark'; + } else { + map.addLayer(osmlight); + basemap='osmlight'; + } + + basemap_change = function () { + if (basemap == 'osmlight') { + map.removeLayer(osmlight); + map.addLayer(opentopo); + basemap = 'opentopo'; + } else if (basemap == 'opentopo') { + map.removeLayer(opentopo); + map.addLayer(esri); + basemap = 'esri'; + } else if (basemap == 'esri') { + map.removeLayer(esri); + map.addLayer(osmdark); + basemap = 'osmdark'; + } else { + map.removeLayer(osmdark); + map.addLayer(osmlight); + basemap = 'osmlight'; + } + }; + + if(mapcenter) map.setView(mapcenter, 5); + else map.setView([51.163361,10.447683], 5); // Mitte DE + +var reddot = ''; +var yellowdot = ''; +var greendot = ''; +var lastframe = 0; + +$('#map .leaflet-control-container').append(L.DomUtil.create('div', 'leaflet-top leaflet-center leaflet-header')); +var header = ''; +header += '
rdzTTGOSonde LiveMap
🎈 - MHz -
'; +header += '
m | m/s | km/h | °
| -dBm
'; +header += '
'; +header += '

Prediction-Settings
'; + +header += ' m
'; +header += ' m/s
'; +header += ' m
'; +header += 'after the transmitted descend will be used'; +header += '
   
'; +header += '
'; +$('.leaflet-header').append(header); + + +$('#map .leaflet-control-container').append(L.DomUtil.create('div', 'leaflet-bottom leaflet-center leaflet-footer')); +var footer = ''; +footer += '
Direction: ...°
Distance: ...m
'; +$('.leaflet-footer').append(footer); + +var statbar = ''; +headtxt = function(data,stat) { + var staticon = (stat == '1')?greendot:yellowdot; + statbar = staticon + statbar; + if ((statbar.length) > 10*greendot.length) { statbar = statbar.substring(0,10*greendot.length); } + if (data.id && data.vframe != lastframe ) { + lastframe = data.vframe; + $('#sonde_id').html(data.id); + $('#sonde_alt').html(data.alt); + $('#sonde_climb').html(data.climb); + $('#sonde_speed').html( mr(data.speed * 3.6 * 10) / 10 ); + $('#sonde_dir').html(data.dir); + $('#sonde_time').html(new Date(data.time * 1000).toISOString()); + $('#sonde_rssi').html(data.rssi / 2 ); + $('#sonde_detail').show(); + } else { + if (!data.id) { + $('#sonde_id').html(data.launchsite.trim()); + // $('#sonde_detail').hide(); + } + } + $('#sonde_freq').html(data.freq); + $('#sonde_type').html(data.type); + $('#sonde_statbar').html(' '+statbar); +}; + +map.addControl(new L.Control.Button([ { position: 'topleft', text: '🔙', href: 'index.html' } ])); + +L.control.zoom({ position:'topleft' }).addTo(map); + +map.addControl(new L.Control.Button([ { position: 'topleft', text: '🗺️', href: 'javascript:basemap_change();' } ])); + +map.addControl(new L.Control.Button([ { position: 'topright', id: "status", text: '', href: 'javascript:get_data();' } ])); + +map.addControl(new L.Control.Button([ + { position:'topright', text: '🎈', href: 'javascript:show(marker[last_id],\'marker\');' }, + { text: '〰️', href: 'javascript:show_line();' }, + { text: '💥', href: 'javascript:show(marker_burst[last_id],\'burst\');' }, + { text: '🎯', href: 'javascript:show(marker_landing[last_id],\'landing\');' } +])); + +map.addControl(new L.Control.Button([ { position:'topright', text: '⚙️', href: 'javascript:show_settings();' } ])); + + + + show = function(e,p) { + if (p == 'landing') { get_predict(last_data); } + if (e) { + map.closePopup(); + map.setView(map._layers[e._leaflet_id].getLatLng()); + map._layers[e._leaflet_id].openPopup(); + follow = p; + } + }; + + + getTwoBounds = function (a,b) { + var sW = new L.LatLng((a._southWest.lat > b._southWest.lat)?b._southWest.lat:a._southWest.lat, (a._southWest.lng > b._southWest.lng)?b._southWest.lng:a._southWest.lng); + var nE = new L.LatLng((a._northEast.lat < b._northEast.lat)?b._northEast.lat:a._northEast.lat, (a._northEast.lng < b._northEast.lng)?b._northEast.lng:a._northEast.lng); + + return new L.LatLngBounds(sW, nE); + }; + + show_line = function() { + $('.i_position, .i_landing').remove(); + map.closePopup(); + if (line[last_id]._latlngs.length != 0 && line_predict[last_id]._latlngs.length != 0) { + map.fitBounds(getTwoBounds(line[last_id].getBounds(),line_predict[last_id].getBounds())); + } else if (line[last_id]._latlngs.length != 0) { + map.fitBounds(line[last_id].getBounds()); + } else if (line_predict[last_id]._latlngs.length != 0) { + map.fitBounds(line_predict[last_id].getBounds()); + } + }; + + + + last_data = false; + last_id = false; + follow = 'marker'; + + marker_landing = []; + icon_landing = L.divIcon({className: 'leaflet-landing'}); + dots_predict = []; + line_predict = []; + marker_burst = []; + icon_burst = L.divIcon({className: 'leaflet-burst'}); + + marker = []; + dots = []; + line = []; + + draw = function(data) { + var stat; + if (data.id) { + last_id = data.id; + // data.res: 0: ok 1: no rx (timeout), 2: crc err, >2 some other error + if ((data.lat && data.lon && data.alt) && (lastframe != 0)) { + var location = [data.lat,data.lon,data.alt]; + if (!marker[data.id]) { + map.setView(location, 14); + marker[data.id] = L.marker(location).addTo(map) + .bindPopup(poptxt('position',data),{closeOnClick:false, autoPan:false}).openPopup(); + get_predict(data); + } else { + marker[data.id].slideTo(location, { + duration: 500, + keepAtCenter: (follow=='marker')?true:false + }) + .setPopupContent(poptxt('position',data)); + } + if (!dots[data.id]) { dots[data.id] = []; } + dots[data.id].push(location); + if (!line[data.id]) { + line[data.id] = L.polyline(dots[data.id]).addTo(map); + } else { + line[data.id].setLatLngs(dots[data.id]); + } + + } + if (data.res == 0) { + storage_write(data); + $('#status').html(greendot); + stat = 1; + } else { + $('#status').html(yellowdot); + stat = 0; + } + headtxt(data,stat); + last_data = data; + } else { + $('#status').html(yellowdot); + headtxt(data,0); + } + }; + + + marker_gps = false; + icon_gps = L.divIcon({className: 'leaflet-gps'}); + circ_gps = false; + + gps = function(e) { + gps_location = [e.lat,e.lon]; + gps_accuracy = e.hdop*2; + + if (last_data && last_data.lat != '0.000000') { + if ($('.leaflet-footer').css('display') == 'none') { $('.leaflet-footer').show(); } + + var distance = Math.round(map.distance(gps_location,[last_data.lat, last_data.lon])); + distance = (distance > 1000)?(distance / 1000) + 'k':distance; + $('.leaflet-footer .gps_dist').html(distance); + + $('.leaflet-footer .gps_dir').html( bearing(gps_location,[last_data.lat, last_data.lon]) ); + } + + if (!marker_gps) { + map.addControl(new L.Control.Button([{ position: 'topleft', text: '🛰️', href: 'javascript:show(marker_gps,\'gps\');' }])); + + marker_gps = L.marker(gps_location,{icon:icon_gps}).addTo(map) + .bindPopup(poptxt('gps',e),{closeOnClick:false, autoPan:false}); + circ_gps = L.circle(gps_location, gps_accuracy).addTo(map); + } else { + marker_gps.slideTo(gps_location, { + duration: 500, + keepAtCenter: (follow=='gps')?true:false + }) + .setPopupContent(poptxt('gps',e)); + circ_gps.slideTo(gps_location, { duration: 500 }); + circ_gps.setRadius(gps_accuracy); + } + }; + + get_data = function() { + $('#status').html(reddot); + $.ajax({url: 'live.json', success: (function( data ) { + if (typeof data != "object") { data = $.parseJSON(data); } + if (data.sonde) { + draw(data.sonde); + } else { + setTimeout(function() {$('#status').html(yellowdot);},100); + } + if (data.gps) { + gps(data.gps); + } + }), + timeout: 1000} + ); + }; + + storage = (typeof(Storage) !== "undefined")?true:false; + + settings_std = { + burst: 32500, + overwrite_descend: 6, + overwrite_descend_till: 12000 + }; + + settings_read = function() { + if (storage) { + if (sessionStorage.settings) { + return JSON.parse(sessionStorage.settings); + } else { + settings_write(settings_std); + return settings_std; + } + } else { + return settings_std; + } + return false; + }; + + settings_write = function (data) { + if (storage) { + sessionStorage.settings = JSON.stringify(data); + settings = data; + } + }; + + settings = settings_read(); + + settings_save = function() { + settings.burst = parseInt($('#settings #burst').val()); + settings.overwrite_descend = parseInt($('#settings #overwrite_descend').val()); + settings.overwrite_descend_till = parseInt($('#settings #overwrite_descend_till').val()); + if (Number.isInteger(settings.burst) && Number.isInteger(settings.overwrite_descend) && Number.isInteger(settings.overwrite_descend_till)) { + settings_write(settings); + $("#settings").slideUp(); + get_predict(last_data); + } else { + alert('Error: only numeric values allowed!'); + } + }; + + settings_reset = function() { + if (confirm('Reset to default?')) { + settings_write(settings_std); + show_settings(); + } + }; + + show_settings = function() { + $('#settings #burst').val(settings.burst); + $('#settings #overwrite_descend').val(settings.overwrite_descend); + $('#settings #overwrite_descend_till').val(settings.overwrite_descend_till); + $("#settings").slideToggle(); + }; + + predictor = false; + get_predict = function(data) { + if (!data) { return; } + var ascent = (data.climb > 0)? data.climb : 15; + var descent = (data.climb > 0)? settings.overwrite_descend : data.climb * -1; + + var burst; + if (data.climb > 0) { + burst = (data.alt > settings.burst )?data.alt + 100 : settings.burst; + } else { + burst = parseInt(data.alt) + 7; + if (data.alt > settings.overwrite_descend_till ) { descent = settings.overwrite_descend; } + } + + var m = new Date(); + var datetime = m.getUTCFullYear() + "-" + az(m.getUTCMonth()+1) + "-" + az(m.getUTCDate()) + "T" + + az(m.getUTCHours()) + ":" + az(m.getUTCMinutes()) + ":" + az(m.getUTCSeconds()) + "Z"; + var url = 'https://api.v2.sondehub.org/tawhiri'; + url += '?launch_latitude='+data.lat + '&launch_longitude='+tawhiri_lon(data.lon); + url += '&launch_altitude='+data.alt + '&launch_datetime='+datetime; + url += '&ascent_rate='+ascent + '&burst_altitude=' + burst + '&descent_rate='+descent; + + $.getJSON(url, function( prediction ) { + draw_predict(prediction,data); + }); + }; + + draw_predict = function(prediction,data) { + var ascending = prediction.prediction[0].trajectory; + var highest = ascending[ascending.length-1]; + var highest_location = [highest.latitude,sanitize_lon(highest.longitude)]; + + var descending = prediction.prediction[1].trajectory; + var landing = descending[descending.length-1]; + var landing_location = [landing.latitude,sanitize_lon(landing.longitude)]; + + if (!marker_landing[data.id]) { + marker_landing[data.id] = L.marker(landing_location,{icon: icon_landing}).addTo(map) + .bindPopup(poptxt('landing',landing),{closeOnClick:false, autoPan:false}); + } else { + marker_landing[data.id].slideTo(landing_location, { + duration: 500, + keepAtCenter: (follow=='landing')?true:false + }) + .setPopupContent(poptxt('landing',landing)); + } + + dots_predict[data.id]=[]; + + if (data.climb > 0) { + ascending.forEach(p => dots_predict[data.id].push([p.latitude,sanitize_lon(p.longitude)])); + + if (!marker_burst[data.id]) { + marker_burst[data.id] = L.marker(highest_location,{icon:icon_burst}).addTo(map).bindPopup(poptxt('burst',highest),{closeOnClick:false, autoPan:false}); + } else { + marker_burst[data.id].slideTo(highest_location, { + duration: 500, + keepAtCenter: (follow=='burst')?true:false + }).setPopupContent(poptxt('burst',highest)); + } + } + + descending.forEach(p => dots_predict[data.id].push([p.latitude,sanitize_lon(p.longitude)])); + + if (!line_predict[data.id]) { + line_predict[data.id] = L.polyline(dots_predict[data.id],{color: 'yellow'}).addTo(map); + } else { + line_predict[data.id].setLatLngs(dots_predict[data.id]); + } + + if (data.climb > 0) { + predictor_time = 5 * 60; // ascending, every 5 min + } else if (data.climb < 0 && data.alt > 5000) { + predictor_time = 2 * 60; // descending, above 5km, every 2 min + } else { + predictor_time = 30; // descending, below 5km, every 30 sec + } + clearTimeout(predictor); + predictor = setTimeout(function() {get_predict(last_data);}, predictor_time*1000); + }; + + sanitize_lon = function(lon) { + if (lon > 180) { return lon - 360; } + return lon; + } + tawhiri_lon = function(lon) { + if (lon < 0) { return lon + 360; } + return lon; + } + + poptxt = function(t,i) { + var lat_input = (i.id)?i.lat:i.latitude; + var lon_input = sanitize_lon((i.id)?i.lon:i.longitude); + + var lat = Math.round(lat_input * 1000000) / 1000000; + var lon = Math.round(lon_input * 1000000) / 1000000; + + var add = + '
Position: '+lat+', '+lon+'
'+ + 'Open: GMaps | OSM | GeoApp'; + + if (t == 'position') { return '
🎈 '+i.id+''+add+'
'; } + if (t == 'burst') { return '
💥 Predicted Burst:
'+fd(i.datetime)+' in '+mr(i.altitude)+'m'+add+'
'; } + if (t == 'highest') { return '
💥 Burst: '+mr(i.altitude)+'m'+add+'
';} + if (t == 'landing') { return '
🎯 Predicted Landing:
'+fd(i.datetime)+' at '+mr(i.altitude)+'m'+add+'
'; } + if (t == 'gps') { return '
Position: '+(i.lat)+','+(i.lon)+'
Altitude: '+i.alt+'m
Speed: '+mr(i.speed * 3.6 * 10)/10+'km/h '+i.dir+'°
Sat: '+i.sat+' Hdop:'+(i.hdop/10)+'
'; } + }; + + fd = function(date) { + var d = new Date(Date.parse(date)); + return az(d.getUTCHours()) +':'+ az(d.getUTCMinutes())+' UTC'; + }; + az = function(n) { return (n<10)?'0'+n:n; }; + mr = function(n) { return Math.round(n); }; + + storage = (typeof(Storage) !== "undefined")?true:false; + storage_write = function (data) { + if (storage) { + if (sessionStorage.sonde) { + storage_data = JSON.parse(sessionStorage.sonde); + } else { + storage_data = []; + } + if (JSON.stringify(data) != JSON.stringify(storage_data[storage_data.length - 1])) { + storage_data.push(data); + sessionStorage.sonde = JSON.stringify(storage_data); + } + } + }; + + storage_read = function() { + if (storage) { + if (sessionStorage.sonde) { + storage_data = JSON.parse(sessionStorage.sonde); + return storage_data; + } + } + return false; + }; + + storage_remove = function() { + sessionStorage.removeItem('sonde'); + }; + + session_storage = storage_read(); + if (session_storage) { + session_storage.forEach(function(d) { + dots.push([d.lat,d.lon,d.alt]); + session_storage_last = d; + }); + draw(session_storage_last); + } + + setInterval(get_data,1000); + +}); + +L.Control.Button = L.Control.extend({ + onAdd: function (map) { + var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control'); + options = this.options; + Object.keys(options).forEach(function(key) { + this.link = L.DomUtil.create('a', '', container); + this.link.text = options[key].text; + this.link.href = options[key].href; + this.link.id = options[key].id; + }); + + this.options.position = this.options[0].position; + return container; + } +}); + + +// https://github.com/makinacorpus/Leaflet.GeometryUtil/blob/master/src/leaflet.geometryutil.js#L682 +// modified to fit +function bearing(latlng1, latlng2) { + var rad = Math.PI / 180, + lat1 = latlng1[0] * rad, + lat2 = latlng2[0] * rad, + lon1 = latlng1[1] * rad, + lon2 = latlng2[1] * rad, + y = Math.sin(lon2 - lon1) * Math.cos(lat2), + x = Math.cos(lat1) * Math.sin(lat2) - + Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1); + var bearing = ((Math.atan2(y, x) * 180 / Math.PI) + 360) % 360; + bearing = bearing < 0 ? bearing-360 : bearing; + return Math.round(bearing); +} diff --git a/RX_FSK/data/map.html b/RX_FSK/data/map.html new file mode 100644 index 0000000..6990bc1 --- /dev/null +++ b/RX_FSK/data/map.html @@ -0,0 +1,25 @@ + + + + + + + diff --git a/RX_FSK/data/networks.txt b/RX_FSK/data/networks.txt new file mode 100755 index 0000000..8d87bc8 --- /dev/null +++ b/RX_FSK/data/networks.txt @@ -0,0 +1,6 @@ +Radiosonde +Radiosonde +Terreandro +terrexavier +TERREWIFI +terrexavier diff --git a/RX_FSK/data/qrg.txt b/RX_FSK/data/qrg.txt new file mode 100644 index 0000000..8eb57fb --- /dev/null +++ b/RX_FSK/data/qrg.txt @@ -0,0 +1,26 @@ +# Frequency in Mhz (format nnn.nnn) +# Type (4=RS41, R=RS92, D=DFM (automated normal/inverted), M=M10/M20, 3=MP3H) +# (older versions: 6=DFM6, 9=DFM9, now both treated the same as D) +# (older versions: M=M10, 2=M20, now both treaded the same: automated M10/M20 decoding) +# +: active, -: not active +# +400.000 9 + Test(FR) +402.000 2 + Nimes(FR) +402.800 4 + Cuneo(IT) +403.000 6 - Ajactio(FR) +403.200 M - OHP(FR) +403.010 6 - Canjuers(FR) +404.200 4 - Rome(IT) +404.789 9 - Frejus1(FR) +404.800 4 - Milan(IT) +405.000 R - Frejus2(FR) +405.789 9 - Pegomas(FR) +403.700 4 - Cuneo2(IT) +400.000 D - +400.000 D - +400.000 D - +400.000 D - +400.000 D - +400.000 D - +400.000 D - +# end diff --git a/RX_FSK/data/rdz.js b/RX_FSK/data/rdz.js new file mode 100644 index 0000000..9f2a133 --- /dev/null +++ b/RX_FSK/data/rdz.js @@ -0,0 +1,54 @@ +let stypes=new Map(); +stypes.set('4', 'RS41'); +stypes.set('R', 'RS92'); +stypes.set('D', 'DFM'); +stypes.set('M', 'M10/M20'); +stypes.set('3', 'MP3H'); + +function footer() { + document.addEventListener("DOMContentLoaded", function(){ + var form = document.querySelector(".wrapper"); + form.addEventListener("input", function() { + document.querySelector(".save").disabled = false; + }); + document.querySelector(".save").disabled = true; + }); +} + +/* Used by qrg.html in RX_FSK.ino */ +function prep() { + var stlist=document.querySelectorAll("input.stype"); + for(txt of stlist){ + var val=txt.getAttribute('value'); var nam=txt.getAttribute('name'); + if(val=='2') { val='M'; } + var sel=document.createElement('select'); + sel.setAttribute('name',nam); + for(stype of stypes) { + var opt=document.createElement('option'); + opt.value=stype[0]; + opt.innerHTML=stype[1]; + if(stype[0]==val) { opt.setAttribute('selected','selected'); } + sel.appendChild(opt); + } + txt.replaceWith(sel); + } +} + +function qrgTable() { + var tab=document.getElementById("divTable"); + + var table = ""; + for(i=0; i" + (i+1) + ""; + table += ""; + table += ""; + table += ""; + } + table += "
ChActiveFrequencyDecoderLaunchsite
"; + tab.innerHTML = table; + prep(); + footer(); +} + diff --git a/RX_FSK/data/screens.txt b/RX_FSK/data/screens.txt new file mode 100644 index 0000000..5fd6d7e --- /dev/null +++ b/RX_FSK/data/screens.txt @@ -0,0 +1,460 @@ +# Definition of display content and action behaviour +# +# Timer: (view timer, rx timer, norx timer) +# - value -1: timer is disabled; value>=0: timer fires after (value) seconds +# - view timer: time since current view (display mode and sonde) was started +# - rx timer: time since when sonde data has been received continuously (trigger immediatly after RX) +# - norx timer: time since when no sonde data has been received continuously +# (rx and norx timer is started after tuning a new frequency and receiving a signal or not receiving +# anything for a 1s period) +# +# Actions: +# - W: activate WiFi scan +# - F: activate frequency spectrum display +# - 0: activate "Scan:" display (this is basically just display mode 0) +# - x: (1..N): activate display mode x [deprecated] +# - >: activate next display mode +# - D: activate default receiver display (display mode specified in config) +# - +: advance to next active sonde from QRG config +# - #: no action +# +# Display content (lower/upper case: small/large font) +# line,column=content +# for ILI9225 its also possible to indicate +# line,column,width=content for text within a box of width 'width' +# line,column,-width=content for right-justified text +# +# XText : Text +# F(suffix): frequency (with suffix, e.g., " MHz") +# L latitade +# O lOngitute +# A altitude +# Hm(suffix) hor. speed m/s (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Hk(suffix) hor. speed km/h (suffix: e.g. "km/h"; no suffix=>km/h as 16x8 bitmap for SSD1306 display only) +# V(suffix) vert. speef (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Ix sonde ID (default/d: dxlaprs; s: short id, n: real serial number) +# RS41,RS92: all identical R1234567 +# DFMx: ID M12345678; short ID and serial 12345678 +# M10: ID ME95231F0; short ID: M95231F0; serial 9062104592 +# Q signal quality statistics bar +# T type string (RS41/DFM9/DFM6/RS92) +# C afC value +# N ip address (only tiny font) +# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries, /: #/t +# K RS41 kill timer values: Kl launch timer, Kb burst timer, Kc kill countdown +# format: K_4: h:mm k_6: h:mm:ss k_s: sssss, nothing shown for other sonde +# Mx telemetry value x (t temp p preassure h hyg) [not yet implemented, maybe some day in future] +# Gx GPS-related data +# raw data from GPS: GA, GO, GH, GC: LAtitude, lOngitude, Altutide(Height), Course over ground +# relative to sonde: GD, GI, GB: Distance, dIrection (absolute), relative Bearing +# G0 GPS circle diagram e.g. 3,5=g0NCS,50,ff0000,000033,5,ffff00,4,ffffff +# "N" (what is on top: N=north C=course) +# "C" (where does the arrow point to: C=course, S=sonde) +# "S" (what is shown by the bullet: C=course, S=sonde) +# 50: circle radius, followed by fg and bg color +# 5: bullet radius, followed by fg color +# 4: arrow width, followed by fg color +# R RSSI +# B battery(T-Beam 1.0) S=status V=Batt.Volt C=charge current D=discharge current +# U=USB volt I=USB current T=IC temp +# +# fonts=x,y can be used to select font (x=small, y=large) for all items below +# for SSD1306, x and y can be used to select one of those fonts: +# (y should be a 1x2 font (1,5,6,7), x a small font) +# u8x8_font_chroma48medium8_r, // 0 ** default small +# u8x8_font_7x14_1x2_f, // 1 ** default large +# u8x8_font_amstrad_cpc_extended_f, // 2 +# u8x8_font_5x7_f, // 3 +# u8x8_font_5x8_f, // 4 +# u8x8_font_8x13_1x2_f, // 5 +# u8x8_font_8x13B_1x2_f, // 6 +# u8x8_font_7x14B_1x2_f, // 7 +# u8x8_font_artossans8_r, // 8 +# u8x8_font_artosserif8_r, // 9 +# u8x8_font_torussansbold8_r, // 10 +# u8x8_font_victoriabold8_r, // 11 +# u8x8_font_victoriamedium8_r, // 12 +# u8x8_font_pressstart2p_f, // 13 +# u8x8_font_pcsenior_f, // 14 +# u8x8_font_pxplusibmcgathin_f, // 15 +# u8x8_font_pxplusibmcga_f, // 16 +# u8x8_font_pxplustandynewtv_f, // 17 +# +# for ILI9225, these fonts are available: +# Terminal6x8 // 0 +# Terminal11x16 // 1 +# Terminal12x16 // 2 +# FreeMono9pt7b, // 3 +# FreeMono12pt7b, // 4 +# FreeSans9pt7b, // 5 +# FreeSans12pt7b, // 6 +# Picopixel, // 7 +# +# color=rrggbb,rrggbb can be used to select color (foreground, background) +# see https://github.com/Nkawu/TFT_22_ILI9225/wiki#color-reference for example (use without "#"-sign) +# +# for TFT display, coordinates and width are multiplied by xscale,yscale and later used in pixels +# with scale=1,1 you can directly use pixel coordinates. (default: xscale=13,yscale=22 => 8 lines, 16 columns) +########### +# +# Default configuration for "Scanner" display: +# - view timer disabled; rx timer=0; norx timer = 0 +# => after 1 second immediately an action is triggered +# (norx: go to next sonde; rx: go to default receiver display) +# - key1 actions: D,0,F,W +# => Button press activates default receiver view, double press does nothing +# Mid press activates Spectrum display, long press activates Wifi scan +# - key2 has no function +@Scanner +timer=-1,0,0 +key1action=D,#,F,W +key2action=#,#,#,# +timeaction=#,D,+ +0,0=XScan +0,5=S#: +0,9=T +3,0=F MHz +5,0=S +7,5=n + +############ +# Default configuration for "Legacy" display: +# - view timer=-1, rx timer=-1 (disabled); norx timer=20 (or -1 for "old" behaviour) +# => norx timer fires after not receiving a singla for 20 seconds +# - key1 actions: +,0,F,W +# => Button1 press: next sonde; double press => @Scanner display +# => Mid press activates Spectrum display, long press activates Wifi scan +# - key2 actions: 2,#,#,# +# => BUtton2 activates display 2 (@Field) +# - timer actions: #,#,0 +# (norx timer: if no signal for >20 seconds: go back to scanner mode) +# +@Legacy +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +0,5=f MHz +1,8=c +0,0=t +1,0=is +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +6,0=R +6,7=Q + +############ +# Configuratoon for "Field" display (display 2) +# similar to @Legacy, but no norx timer, and Key2 goes to display 4 +@Field +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +# Configuration for "Field2" display (display 3) +# similar to @Field +@Field2 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +1,12=t +0,9=f +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############# +# Configuration for "GPS" display +# not yet the final version, just for testing +@GPSDIST +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=Is +0,9=f +1,12=t +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +5,9=gC +5,13=gB +6,7=Q +7,0=gV +7,2=xd= +7,4=gD +7,12=gI° + +############ +# Scan display for large 2" TFT dispaly +@ScannerTFT +timer=-1,0,0 +key1action=D,#,F,W +key2action=#,#,#,# +timeaction=#,D,+ +fonts=5,6 +0,0=XScan +0,8,-3=S#: +0,9,5=T +3,0=F MHz +5,0,16=S +7,5=n + +############ +@MainTFT +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +color=FFD700 +0,0=Is +color=0000FF +0,11,-5.5=f +1,1,6=c +1,12.5,-4=t +color=00ff00 +2,0=L +4,0=O +color=FFA500 +2,9.5,-7=A +3,9.5,-7=vm/s +color=AA5522 +4,9.5,-7=hkkm/h +color=FFFFFF +6,2=r +7,0=xd= +7,2,6=gD +7,12=gI + +############ +@PeilungTFT +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +color=ffff00,000033 +color=bbbbbb,000000 +0,2=xN Top: +0,8=xCourse Top: +color=ffff00,000033 +1,0=g0NCS,48,ffff00,000044,6,33ff33,5,eeaa00 +1,8=g0CCS,48,ffff00,000044,6,55ff55,5,eeaa00 +color=ffffff,000000 +6,0=xDirection: +6,8,4=gI +7,0=xCOG: +7,4,4=gC +7,8=xturn: +7,12,4=gB + + +############ +@GPSdataTFT +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=xOn-board GPS: +1,0,8=gA +2,0,8=gO +3,0,8=gH +4,0,8=gC +5,0=xGPS vs Sonde: +6,0,8=gD +7,0,8=gI +7,8,8=gB + +############ +@BatteryTFT +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=xBattery status: +0,14=bS +1,0=xBatt: +1,5,5=bVV +2,0,16=bCmA(charging) +3,0,16=bDmA(discharging) +4.4,0=xUSB: +4.4,5,5=bUV +5.4,0,10=bImA +6.4,0=xTemp: +6.4,5,5=bT C + +############ +@BatteryOLED +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xBat.Status: +0,12=bS +1,0=xBatt: +1,6=bVV +2,0=bCmA (charge) +3,0=bDmA (disch.) +4,0=xUSB: +4,5=bUV +5,5=bImA +6,0=xTemp: +6,5=bT C + +### Alternative display layouts based on https://gist.github.com/bazjo +# Scan display for large 2" TFT dispaly +@Scan.TFT.Bazjo +timer=-1,0,0 +key1action=D,#,F,W +key2action=#,#,#,# +timeaction=#,D,+ +scale=11,10 +fonts=0,2 +color=e0e0e0 +#Row 1 +0.5,0=XScanning... +#Row 2 +3,0=xIndex +4,0=S/ +3,9=xSite +4,9=S +#Row 3 +6,0=xType +7,0=T +6,9=xFrequency +7,9=F +#Row 4 +9,0=xWeb UI IP +10,0=N +#Row 5 +#Footer +color=6C757D +15,0=xScan Mode +15,18=bVV + +############ +@Decode/General.TFT.Bazjo +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +scale=11,10 +fonts=0,2 +#Row 1 +color=996A06 +0,0=xSerial +0,5=t +color=FFB10B +1,0=Is +color=996A06 +0,11=xFreq. +0,16=c +color=FFB10B +1,11=F +#Row 2 +color=3C5C99 +3,0=xLatitude +color=639AFF +4,0=L +color=3C5C99 +3,11=xLongitude +color=639AFF +4,11=O +#Row 3 +color=3C5C99 +6,0=xHoriz. Speed +color=639AFF +7,0=Hkkm/h +color=3C5C99 +6,11=xVert. Speed +color=639AFF +7,11=Vm/s +#Row 4 +color=99004A +9,0=xAltitude +color=FF007B +10,0=A +color=99004A +9,11=xBearing +color=FF007B +10,11=GB +#Row 5 +color=06998E +12,0=xRSSI +color=0AFFEF +13,0=R +color=06998E +12,11=xHistory +color=0AFFEF +13.5,11=Q4 +#Footer +color=6C757D +15,0=xDecode Mode / General View +15,18=bVV + + +############ +@Decode/Battery.TFT.Bazjo +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +scale=11,10 +fonts=0,2 +#Row 1 +color=99001F +0,0=xBattery Status +0,11=xBattery Voltage +color=FF0035 +1,0=BS +1,11=BVV +#Row 2 +color=99001F +3,0=xCharge Current +3,11=xDischarge Current +color=FF0035 +4,0=BCmA +4,11=BDmA +#Row 3 +color=99001F +6,0=xUSB Voltage +6,11=xUSB Current +color=FF0035 +7,0=BUV +7,11=BImA +#Row 4 +color=99001F +9,0=xIC Temperature +#9,11=xKey +color=FF0035 +10,0=BTC +#10,11=XValue +#Row 5 +#12,0=xKey +#12,11=xKey +#13,0=XValue +#13,11=XValue +#Footer +color=99001F +15,0=xDecode Mode/Battery View +15,18=bVV + diff --git a/RX_FSK/data/screens1.txt b/RX_FSK/data/screens1.txt new file mode 100644 index 0000000..289a5fe --- /dev/null +++ b/RX_FSK/data/screens1.txt @@ -0,0 +1,267 @@ +### screens1.txt: OLED display +# Definition of display content and action behaviour +# +# Timer: (view timer, rx timer, norx timer) +# - value -1: timer is disabled; value>=0: timer fires after (value) seconds +# - view timer: time since current view (display mode and sonde) was started +# - rx timer: time since when sonde data has been received continuously (trigger immediatly after RX) +# - norx timer: time since when no sonde data has been received continuously +# (rx and norx timer is started after tuning a new frequency and receiving a signal or not receiving +# anything for a 1s period) +# +# Actions: +# - W: activate WiFi scan +# - F: activate frequency spectrum display +# - 0: activate "Scan:" display (this is basically just display mode 0) +# - x: (1..N): activate display mode x [deprecated] +# - >: activate next display mode +# - D: activate default receiver display (display mode specified in config) +# - +: advance to next active sonde from QRG config +# - #: no action +# +# Display content (lower/upper case: small/large font) +# line,column=content +# for ILI9225 its also possible to indicate +# line,column,width=content for text within a box of width 'width' +# line,column,-width=content for right-justified text +# +# XText : Text +# F(suffix): frequency (with suffix, e.g., " MHz") +# L latitade +# O lOngitute +# A altitude +# Hm(suffix) hor. speed m/s (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Hk(suffix) hor. speed km/h (suffix: e.g. "km/h"; no suffix=>km/h as 16x8 bitmap for SSD1306 display only) +# V(suffix) vert. speef (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Ix sonde ID (default/d: dxlaprs; s: short id, n: real serial number) +# RS41,RS92: all identical R1234567 +# DFMx: ID M12345678; short ID and serial 12345678 +# M10: ID ME95231F0; short ID: M95231F0; serial 9062104592 +# Q signal quality statistics bar +# T type string (RS41/DFM9/DFM6/RS92) +# C afC value +# N ip address (only tiny font) +# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries, /: #/t +# K RS41 kill timer values: Kl launch timer, Kb burst timer, Kc kill countdown +# format: K_4: h:mm k_6: h:mm:ss k_s: sssss, nothing shown for other sonde +# Mx telemetry value x (t temp p preassure h hyg b battery) +# Gx GPS-related data +# raw data from GPS: GA, GO, GH, GC: LAtitude, lOngitude, Altutide(Height), Course over ground +# relative to sonde: GD, GI, GB: Distance, dIrection (absolute), relative Bearing +# G0 GPS circle diagram e.g. 3,5=g0NCS,50,ff0000,000033,5,ffff00,4,ffffff +# "N" (what is on top: N=north C=course) +# "C" (where does the arrow point to: C=course, S=sonde) +# "S" (what is shown by the bullet: C=course, S=sonde) +# 50: circle radius, followed by fg and bg color +# 5: bullet radius, followed by fg color +# 4: arrow width, followed by fg color +# R RSSI +# B battery(T-Beam 1.0) S=status V=Batt.Volt C=charge current D=discharge current +# U=USB volt I=USB current T=IC temp +# +# fonts=x,y can be used to select font (x=small, y=large) for all items below +# for SSD1306, x and y can be used to select one of those fonts: +# (y should be a 1x2 font (1,5,6,7), x a small font) +# u8x8_font_chroma48medium8_r, // 0 ** default small +# u8x8_font_7x14_1x2_f, // 1 ** default large +# u8x8_font_amstrad_cpc_extended_f, // 2 +# u8x8_font_5x7_f, // 3 +# u8x8_font_5x8_f, // 4 +# u8x8_font_8x13_1x2_f, // 5 +# u8x8_font_8x13B_1x2_f, // 6 +# u8x8_font_7x14B_1x2_f, // 7 +# u8x8_font_artossans8_r, // 8 +# u8x8_font_artosserif8_r, // 9 +# u8x8_font_torussansbold8_r, // 10 +# u8x8_font_victoriabold8_r, // 11 +# u8x8_font_victoriamedium8_r, // 12 +# u8x8_font_pressstart2p_f, // 13 +# u8x8_font_pcsenior_f, // 14 +# u8x8_font_pxplusibmcgathin_f, // 15 +# u8x8_font_pxplusibmcga_f, // 16 +# u8x8_font_pxplustandynewtv_f, // 17 +# +# for ILI9225, these fonts are available: +# Terminal6x8 // 0 +# Terminal11x16 // 1 +# Terminal12x16 // 2 +# FreeMono9pt7b, // 3 +# FreeMono12pt7b, // 4 +# FreeSans9pt7b, // 5 +# FreeSans12pt7b, // 6 +# Picopixel, // 7 +# +# color=rrggbb,rrggbb can be used to select color (foreground, background) +# see https://github.com/Nkawu/TFT_22_ILI9225/wiki#color-reference for example (use without "#"-sign) +# +# for TFT display, coordinates and width are multiplied by xscale,yscale and later used in pixels +# with scale=1,1 you can directly use pixel coordinates. (default: xscale=13,yscale=22 => 8 lines, 16 columns) +########### +# +# Default configuration for "Scanner" display: +# - view timer disabled; rx timer=0; norx timer = 0 +# => after 1 second immediately an action is triggered +# (norx: go to next sonde; rx: go to default receiver display) +# - key1 actions: D,0,F,W +# => Button press activates default receiver view, double press does nothing +# Mid press activates Spectrum display, long press activates Wifi scan +# - key2 has no function +@Scanner +timer=-1,0,0 +key1action=D,#,F,W +key2action=D,#,#,# +timeaction=#,D,+ +0,0=XScan +0,5=S#: +0,9=T +3,0=F MHz +5,0,16=S +7,0=bVV +#7,0=gV +7,5=n + +############ +# Default configuration for "Legacy" display: +# - view timer=-1, rx timer=-1 (disabled); norx timer=20 (or -1 for "old" behaviour) +# => norx timer fires after not receiving a singla for 20 seconds +# - key1 actions: +,0,F,W +# => Button1 press: next sonde; double press => @Scanner display +# => Mid press activates Spectrum display, long press activates Wifi scan +# - key2 actions: 2,#,#,# +# => BUtton2 activates display 2 (@Field) +# - timer actions: #,#,0 +# (norx timer: if no signal for >20 seconds: go back to scanner mode) +# +@Legacy +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +0,5=f MHz +1,8=c +0,0=t +1,0=is +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +6,0=R +6,7=Q + +############ +# Configuratoon for "Field" display (display 2) +# similar to @Legacy, but no norx timer, and Key2 goes to display 4 +@Field +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +# Configuration for "Field2" display (display 3) +# similar to @Field +@Field2 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +1,12=t +0,9=f +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############# +# Configuration for "GPS" display +# not yet the final version, just for testing +@GPSDIST +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=Is +0,9=f +1,12=t +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +5,9=gC +5,13=gB +6,7=Q +7,0=gV +7,2=xd= +7,4=gD +7,12=gI° + +############ +@BatteryOLED +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xBat.Status: +0,12=bS +1,0=xBatt: +1,6=bVV +2,0=bCmA (charge) +3,0=bDmA (disch.) +4,0=xUSB: +4,5=bUV +5,5=bImA +6,0=xTemp: +6,5=bT C + +############# +@Meteo +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=Is +0,9=f +1,12=t +2,0=xSonde +3,0=xData +2,10=A +4,0=Mt°C +4,9=Mh%rH +6,0=MphPa +6,11=MbV + +############# +@GPS-Data +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xGPS-Data +1,0=xLAT : +1,6=gA +2,0=xLONG: +2,6=gO +3,0=xALT : +3,9=gH +4,0=xSonde +5,0=xAlt : +5,6=a +6,0=xDist: +6,6=gD + + diff --git a/RX_FSK/data/screens2.txt b/RX_FSK/data/screens2.txt new file mode 100644 index 0000000..351a6fd --- /dev/null +++ b/RX_FSK/data/screens2.txt @@ -0,0 +1,276 @@ +## screens2.txt: TFT display (landscape) +# Definition of display content and action behaviour +# +# Timer: (view timer, rx timer, norx timer) +# - value -1: timer is disabled; value>=0: timer fires after (value) seconds +# - view timer: time since current view (display mode and sonde) was started +# - rx timer: time since when sonde data has been received continuously (trigger immediatly after RX) +# - norx timer: time since when no sonde data has been received continuously +# (rx and norx timer is started after tuning a new frequency and receiving a signal or not receiving +# anything for a 1s period) +# +# Actions: +# - W: activate WiFi scan +# - F: activate frequency spectrum display +# - 0: activate "Scan:" display (this is basically just display mode 0) +# - x: (1..N): activate display mode x [deprecated] +# - >: activate next display mode +# - D: activate default receiver display (display mode specified in config) +# - +: advance to next active sonde from QRG config +# - #: no action +# +# Display content (lower/upper case: small/large font) +# line,column=content +# for ILI9225 its also possible to indicate +# line,column,width=content for text within a box of width 'width' +# line,column,-width=content for right-justified text +# +# XText : Text +# F(suffix): frequency (with suffix, e.g., " MHz") +# L latitade +# O lOngitute +# A altitude +# Hm(suffix) hor. speed m/s (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Hk(suffix) hor. speed km/h (suffix: e.g. "km/h"; no suffix=>km/h as 16x8 bitmap for SSD1306 display only) +# V(suffix) vert. speef (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Ix sonde ID (default/d: dxlaprs; s: short id, n: real serial number) +# RS41,RS92: all identical R1234567 +# DFMx: ID M12345678; short ID and serial 12345678 +# M10: ID ME95231F0; short ID: M95231F0; serial 9062104592 +# Q signal quality statistics bar +# T type string (RS41/DFM9/DFM6/RS92) +# C afC value +# N ip address (only tiny font) +# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries, /: #/t +# K RS41 kill timer values: Kl launch timer, Kb burst timer, Kc kill countdown +# format: K_4: h:mm k_6: h:mm:ss k_s: sssss, nothing shown for other sonde +# Mx telemetry value x (t temp p preassure h hyg b batt) +# Gx GPS-related data +# raw data from GPS: GA, GO, GH, GC: LAtitude, lOngitude, Altutide(Height), Course over ground +# relative to sonde: GD, GI, GB: Distance, dIrection (absolute), relative Bearing +# G0 GPS circle diagram e.g. 3,5=g0NCS,50,ff0000,000033,5,ffff00,4,ffffff +# "N" (what is on top: N=north C=course) +# "C" (where does the arrow point to: C=course, S=sonde) +# "S" (what is shown by the bullet: C=course, S=sonde) +# 50: circle radius, followed by fg and bg color +# 5: bullet radius, followed by fg color +# 4: arrow width, followed by fg color +# R RSSI +# B battery(T-Beam 1.0) S=status V=Batt.Volt C=charge current D=discharge current +# U=USB volt I=USB current T=IC temp +# +# fonts=x,y can be used to select font (x=small, y=large) for all items below +# for SSD1306, x and y can be used to select one of those fonts: +# (y should be a 1x2 font (1,5,6,7), x a small font) +# u8x8_font_chroma48medium8_r, // 0 ** default small +# u8x8_font_7x14_1x2_f, // 1 ** default large +# u8x8_font_amstrad_cpc_extended_f, // 2 +# u8x8_font_5x7_f, // 3 +# u8x8_font_5x8_f, // 4 +# u8x8_font_8x13_1x2_f, // 5 +# u8x8_font_8x13B_1x2_f, // 6 +# u8x8_font_7x14B_1x2_f, // 7 +# u8x8_font_artossans8_r, // 8 +# u8x8_font_artosserif8_r, // 9 +# u8x8_font_torussansbold8_r, // 10 +# u8x8_font_victoriabold8_r, // 11 +# u8x8_font_victoriamedium8_r, // 12 +# u8x8_font_pressstart2p_f, // 13 +# u8x8_font_pcsenior_f, // 14 +# u8x8_font_pxplusibmcgathin_f, // 15 +# u8x8_font_pxplusibmcga_f, // 16 +# u8x8_font_pxplustandynewtv_f, // 17 +# +# for ILI9225, these fonts are available: +# Terminal6x8 // 0 +# Terminal11x16 // 1 +# Terminal12x16 // 2 +# FreeMono9pt7b, // 3 +# FreeMono12pt7b, // 4 +# FreeSans9pt7b, // 5 +# FreeSans12pt7b, // 6 +# Picopixel, // 7 +# +# color=rrggbb,rrggbb can be used to select color (foreground, background) +# see https://github.com/Nkawu/TFT_22_ILI9225/wiki#color-reference for example (use without "#"-sign) +# +# for TFT display, coordinates and width are multiplied by xscale,yscale and later used in pixels +# with scale=1,1 you can directly use pixel coordinates. (default: xscale=13,yscale=22 => 8 lines, 16 columns) +########### + +############ +# Scan display for large 2" TFT dispaly +@ScannerTFT +timer=-1,0,0 +key1action=D,#,F,W +key2action=D,#,#,# +timeaction=#,D,+ +0,0=XScan +0,5=S#: +0,9=T +3,0=F MHz +5,0,16=S +7,0=bVV +7,5=n + +############ +@Legacy +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +0,0=t +0,5=f MHz +1,0=is +#1,8=c +1,8=z +2,0=L +2,10=a +3,10=h +4,0=O +4,9=v +5,9=gC +5,13=gB +6,0=R +6,7=Q +7,6=gD +7,12=gI° + +############ +@Field +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@Field2 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +1,12=t +0,9=f +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@GPSDIST +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=Is +0,9=f +1,12=t +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +5,9=gC +5,13=gB +6,7=Q +7,0=gV +7,2=xd= +7,4=gD +7,12=gI° + +### Alternative display layouts based on https://gist.github.com/bazjo +# Scan display for large 2" TFT dispaly +@BatteryOLED +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xBat.Status: +0,12=bS +1,0=xBatt: +1,6=bVV +2,0=bCmA (charge) +3,0=bDmA (disch.) +4,0=xUSB: +4,5=bUV +5,5=bImA +6,0=xTemp: +6,5=bT C + +############ +@Meteo +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=Is +0,9=f +1,12=t +2,0=xSonde +3,0=xData +2,10=A +4,0=Mt°C +4,9=Mh%rH +6,0=MphPa +6,11=MbV + +################## +@GPS-Data +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xGPS-Data +1,0=xLAT : +1,6=gA +2,0=xLONG: +2,6=gO +3,0=xALT : +3,9=gH +4,0=xSonde +5,0=xAlt : +5,6=a +6,0=xDist: +6,6=gD + +################# +@TelemetryData +scale=22,13 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +fonts=5,6 +color=FFD700 +0,0,10.5=Is +color=0000FF +0,11,-5.5=f +1,0,4=t +1,10.5,-6=c +color=00ff00 +2,0,7=L +3,0,7=O +color=FFA500 +2,9.5,-7=a +2.8,9.5,-7=vm/s +color=AA5522 +3.6,9.5,-7=hkkm/h +color=FFFFFF +4.4,0=xTelemetry Data: +5.3,0=Mt C +5.3,9=Mh%rH +6.5,0=MphPa +6.5,11=MbV diff --git a/RX_FSK/data/screens3.txt b/RX_FSK/data/screens3.txt new file mode 100644 index 0000000..351a6fd --- /dev/null +++ b/RX_FSK/data/screens3.txt @@ -0,0 +1,276 @@ +## screens2.txt: TFT display (landscape) +# Definition of display content and action behaviour +# +# Timer: (view timer, rx timer, norx timer) +# - value -1: timer is disabled; value>=0: timer fires after (value) seconds +# - view timer: time since current view (display mode and sonde) was started +# - rx timer: time since when sonde data has been received continuously (trigger immediatly after RX) +# - norx timer: time since when no sonde data has been received continuously +# (rx and norx timer is started after tuning a new frequency and receiving a signal or not receiving +# anything for a 1s period) +# +# Actions: +# - W: activate WiFi scan +# - F: activate frequency spectrum display +# - 0: activate "Scan:" display (this is basically just display mode 0) +# - x: (1..N): activate display mode x [deprecated] +# - >: activate next display mode +# - D: activate default receiver display (display mode specified in config) +# - +: advance to next active sonde from QRG config +# - #: no action +# +# Display content (lower/upper case: small/large font) +# line,column=content +# for ILI9225 its also possible to indicate +# line,column,width=content for text within a box of width 'width' +# line,column,-width=content for right-justified text +# +# XText : Text +# F(suffix): frequency (with suffix, e.g., " MHz") +# L latitade +# O lOngitute +# A altitude +# Hm(suffix) hor. speed m/s (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Hk(suffix) hor. speed km/h (suffix: e.g. "km/h"; no suffix=>km/h as 16x8 bitmap for SSD1306 display only) +# V(suffix) vert. speef (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Ix sonde ID (default/d: dxlaprs; s: short id, n: real serial number) +# RS41,RS92: all identical R1234567 +# DFMx: ID M12345678; short ID and serial 12345678 +# M10: ID ME95231F0; short ID: M95231F0; serial 9062104592 +# Q signal quality statistics bar +# T type string (RS41/DFM9/DFM6/RS92) +# C afC value +# N ip address (only tiny font) +# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries, /: #/t +# K RS41 kill timer values: Kl launch timer, Kb burst timer, Kc kill countdown +# format: K_4: h:mm k_6: h:mm:ss k_s: sssss, nothing shown for other sonde +# Mx telemetry value x (t temp p preassure h hyg b batt) +# Gx GPS-related data +# raw data from GPS: GA, GO, GH, GC: LAtitude, lOngitude, Altutide(Height), Course over ground +# relative to sonde: GD, GI, GB: Distance, dIrection (absolute), relative Bearing +# G0 GPS circle diagram e.g. 3,5=g0NCS,50,ff0000,000033,5,ffff00,4,ffffff +# "N" (what is on top: N=north C=course) +# "C" (where does the arrow point to: C=course, S=sonde) +# "S" (what is shown by the bullet: C=course, S=sonde) +# 50: circle radius, followed by fg and bg color +# 5: bullet radius, followed by fg color +# 4: arrow width, followed by fg color +# R RSSI +# B battery(T-Beam 1.0) S=status V=Batt.Volt C=charge current D=discharge current +# U=USB volt I=USB current T=IC temp +# +# fonts=x,y can be used to select font (x=small, y=large) for all items below +# for SSD1306, x and y can be used to select one of those fonts: +# (y should be a 1x2 font (1,5,6,7), x a small font) +# u8x8_font_chroma48medium8_r, // 0 ** default small +# u8x8_font_7x14_1x2_f, // 1 ** default large +# u8x8_font_amstrad_cpc_extended_f, // 2 +# u8x8_font_5x7_f, // 3 +# u8x8_font_5x8_f, // 4 +# u8x8_font_8x13_1x2_f, // 5 +# u8x8_font_8x13B_1x2_f, // 6 +# u8x8_font_7x14B_1x2_f, // 7 +# u8x8_font_artossans8_r, // 8 +# u8x8_font_artosserif8_r, // 9 +# u8x8_font_torussansbold8_r, // 10 +# u8x8_font_victoriabold8_r, // 11 +# u8x8_font_victoriamedium8_r, // 12 +# u8x8_font_pressstart2p_f, // 13 +# u8x8_font_pcsenior_f, // 14 +# u8x8_font_pxplusibmcgathin_f, // 15 +# u8x8_font_pxplusibmcga_f, // 16 +# u8x8_font_pxplustandynewtv_f, // 17 +# +# for ILI9225, these fonts are available: +# Terminal6x8 // 0 +# Terminal11x16 // 1 +# Terminal12x16 // 2 +# FreeMono9pt7b, // 3 +# FreeMono12pt7b, // 4 +# FreeSans9pt7b, // 5 +# FreeSans12pt7b, // 6 +# Picopixel, // 7 +# +# color=rrggbb,rrggbb can be used to select color (foreground, background) +# see https://github.com/Nkawu/TFT_22_ILI9225/wiki#color-reference for example (use without "#"-sign) +# +# for TFT display, coordinates and width are multiplied by xscale,yscale and later used in pixels +# with scale=1,1 you can directly use pixel coordinates. (default: xscale=13,yscale=22 => 8 lines, 16 columns) +########### + +############ +# Scan display for large 2" TFT dispaly +@ScannerTFT +timer=-1,0,0 +key1action=D,#,F,W +key2action=D,#,#,# +timeaction=#,D,+ +0,0=XScan +0,5=S#: +0,9=T +3,0=F MHz +5,0,16=S +7,0=bVV +7,5=n + +############ +@Legacy +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +0,0=t +0,5=f MHz +1,0=is +#1,8=c +1,8=z +2,0=L +2,10=a +3,10=h +4,0=O +4,9=v +5,9=gC +5,13=gB +6,0=R +6,7=Q +7,6=gD +7,12=gI° + +############ +@Field +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@Field2 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +1,12=t +0,9=f +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@GPSDIST +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=Is +0,9=f +1,12=t +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +5,9=gC +5,13=gB +6,7=Q +7,0=gV +7,2=xd= +7,4=gD +7,12=gI° + +### Alternative display layouts based on https://gist.github.com/bazjo +# Scan display for large 2" TFT dispaly +@BatteryOLED +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xBat.Status: +0,12=bS +1,0=xBatt: +1,6=bVV +2,0=bCmA (charge) +3,0=bDmA (disch.) +4,0=xUSB: +4,5=bUV +5,5=bImA +6,0=xTemp: +6,5=bT C + +############ +@Meteo +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=Is +0,9=f +1,12=t +2,0=xSonde +3,0=xData +2,10=A +4,0=Mt°C +4,9=Mh%rH +6,0=MphPa +6,11=MbV + +################## +@GPS-Data +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xGPS-Data +1,0=xLAT : +1,6=gA +2,0=xLONG: +2,6=gO +3,0=xALT : +3,9=gH +4,0=xSonde +5,0=xAlt : +5,6=a +6,0=xDist: +6,6=gD + +################# +@TelemetryData +scale=22,13 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +fonts=5,6 +color=FFD700 +0,0,10.5=Is +color=0000FF +0,11,-5.5=f +1,0,4=t +1,10.5,-6=c +color=00ff00 +2,0,7=L +3,0,7=O +color=FFA500 +2,9.5,-7=a +2.8,9.5,-7=vm/s +color=AA5522 +3.6,9.5,-7=hkkm/h +color=FFFFFF +4.4,0=xTelemetry Data: +5.3,0=Mt C +5.3,9=Mh%rH +6.5,0=MphPa +6.5,11=MbV diff --git a/RX_FSK/data/screens4.txt b/RX_FSK/data/screens4.txt new file mode 100644 index 0000000..351a6fd --- /dev/null +++ b/RX_FSK/data/screens4.txt @@ -0,0 +1,276 @@ +## screens2.txt: TFT display (landscape) +# Definition of display content and action behaviour +# +# Timer: (view timer, rx timer, norx timer) +# - value -1: timer is disabled; value>=0: timer fires after (value) seconds +# - view timer: time since current view (display mode and sonde) was started +# - rx timer: time since when sonde data has been received continuously (trigger immediatly after RX) +# - norx timer: time since when no sonde data has been received continuously +# (rx and norx timer is started after tuning a new frequency and receiving a signal or not receiving +# anything for a 1s period) +# +# Actions: +# - W: activate WiFi scan +# - F: activate frequency spectrum display +# - 0: activate "Scan:" display (this is basically just display mode 0) +# - x: (1..N): activate display mode x [deprecated] +# - >: activate next display mode +# - D: activate default receiver display (display mode specified in config) +# - +: advance to next active sonde from QRG config +# - #: no action +# +# Display content (lower/upper case: small/large font) +# line,column=content +# for ILI9225 its also possible to indicate +# line,column,width=content for text within a box of width 'width' +# line,column,-width=content for right-justified text +# +# XText : Text +# F(suffix): frequency (with suffix, e.g., " MHz") +# L latitade +# O lOngitute +# A altitude +# Hm(suffix) hor. speed m/s (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Hk(suffix) hor. speed km/h (suffix: e.g. "km/h"; no suffix=>km/h as 16x8 bitmap for SSD1306 display only) +# V(suffix) vert. speef (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Ix sonde ID (default/d: dxlaprs; s: short id, n: real serial number) +# RS41,RS92: all identical R1234567 +# DFMx: ID M12345678; short ID and serial 12345678 +# M10: ID ME95231F0; short ID: M95231F0; serial 9062104592 +# Q signal quality statistics bar +# T type string (RS41/DFM9/DFM6/RS92) +# C afC value +# N ip address (only tiny font) +# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries, /: #/t +# K RS41 kill timer values: Kl launch timer, Kb burst timer, Kc kill countdown +# format: K_4: h:mm k_6: h:mm:ss k_s: sssss, nothing shown for other sonde +# Mx telemetry value x (t temp p preassure h hyg b batt) +# Gx GPS-related data +# raw data from GPS: GA, GO, GH, GC: LAtitude, lOngitude, Altutide(Height), Course over ground +# relative to sonde: GD, GI, GB: Distance, dIrection (absolute), relative Bearing +# G0 GPS circle diagram e.g. 3,5=g0NCS,50,ff0000,000033,5,ffff00,4,ffffff +# "N" (what is on top: N=north C=course) +# "C" (where does the arrow point to: C=course, S=sonde) +# "S" (what is shown by the bullet: C=course, S=sonde) +# 50: circle radius, followed by fg and bg color +# 5: bullet radius, followed by fg color +# 4: arrow width, followed by fg color +# R RSSI +# B battery(T-Beam 1.0) S=status V=Batt.Volt C=charge current D=discharge current +# U=USB volt I=USB current T=IC temp +# +# fonts=x,y can be used to select font (x=small, y=large) for all items below +# for SSD1306, x and y can be used to select one of those fonts: +# (y should be a 1x2 font (1,5,6,7), x a small font) +# u8x8_font_chroma48medium8_r, // 0 ** default small +# u8x8_font_7x14_1x2_f, // 1 ** default large +# u8x8_font_amstrad_cpc_extended_f, // 2 +# u8x8_font_5x7_f, // 3 +# u8x8_font_5x8_f, // 4 +# u8x8_font_8x13_1x2_f, // 5 +# u8x8_font_8x13B_1x2_f, // 6 +# u8x8_font_7x14B_1x2_f, // 7 +# u8x8_font_artossans8_r, // 8 +# u8x8_font_artosserif8_r, // 9 +# u8x8_font_torussansbold8_r, // 10 +# u8x8_font_victoriabold8_r, // 11 +# u8x8_font_victoriamedium8_r, // 12 +# u8x8_font_pressstart2p_f, // 13 +# u8x8_font_pcsenior_f, // 14 +# u8x8_font_pxplusibmcgathin_f, // 15 +# u8x8_font_pxplusibmcga_f, // 16 +# u8x8_font_pxplustandynewtv_f, // 17 +# +# for ILI9225, these fonts are available: +# Terminal6x8 // 0 +# Terminal11x16 // 1 +# Terminal12x16 // 2 +# FreeMono9pt7b, // 3 +# FreeMono12pt7b, // 4 +# FreeSans9pt7b, // 5 +# FreeSans12pt7b, // 6 +# Picopixel, // 7 +# +# color=rrggbb,rrggbb can be used to select color (foreground, background) +# see https://github.com/Nkawu/TFT_22_ILI9225/wiki#color-reference for example (use without "#"-sign) +# +# for TFT display, coordinates and width are multiplied by xscale,yscale and later used in pixels +# with scale=1,1 you can directly use pixel coordinates. (default: xscale=13,yscale=22 => 8 lines, 16 columns) +########### + +############ +# Scan display for large 2" TFT dispaly +@ScannerTFT +timer=-1,0,0 +key1action=D,#,F,W +key2action=D,#,#,# +timeaction=#,D,+ +0,0=XScan +0,5=S#: +0,9=T +3,0=F MHz +5,0,16=S +7,0=bVV +7,5=n + +############ +@Legacy +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +0,0=t +0,5=f MHz +1,0=is +#1,8=c +1,8=z +2,0=L +2,10=a +3,10=h +4,0=O +4,9=v +5,9=gC +5,13=gB +6,0=R +6,7=Q +7,6=gD +7,12=gI° + +############ +@Field +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@Field2 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +1,12=t +0,9=f +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@GPSDIST +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=Is +0,9=f +1,12=t +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +5,9=gC +5,13=gB +6,7=Q +7,0=gV +7,2=xd= +7,4=gD +7,12=gI° + +### Alternative display layouts based on https://gist.github.com/bazjo +# Scan display for large 2" TFT dispaly +@BatteryOLED +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xBat.Status: +0,12=bS +1,0=xBatt: +1,6=bVV +2,0=bCmA (charge) +3,0=bDmA (disch.) +4,0=xUSB: +4,5=bUV +5,5=bImA +6,0=xTemp: +6,5=bT C + +############ +@Meteo +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=Is +0,9=f +1,12=t +2,0=xSonde +3,0=xData +2,10=A +4,0=Mt°C +4,9=Mh%rH +6,0=MphPa +6,11=MbV + +################## +@GPS-Data +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xGPS-Data +1,0=xLAT : +1,6=gA +2,0=xLONG: +2,6=gO +3,0=xALT : +3,9=gH +4,0=xSonde +5,0=xAlt : +5,6=a +6,0=xDist: +6,6=gD + +################# +@TelemetryData +scale=22,13 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +fonts=5,6 +color=FFD700 +0,0,10.5=Is +color=0000FF +0,11,-5.5=f +1,0,4=t +1,10.5,-6=c +color=00ff00 +2,0,7=L +3,0,7=O +color=FFA500 +2,9.5,-7=a +2.8,9.5,-7=vm/s +color=AA5522 +3.6,9.5,-7=hkkm/h +color=FFFFFF +4.4,0=xTelemetry Data: +5.3,0=Mt C +5.3,9=Mh%rH +6.5,0=MphPa +6.5,11=MbV diff --git a/RX_FSK/data/screens5.txt b/RX_FSK/data/screens5.txt new file mode 100644 index 0000000..351a6fd --- /dev/null +++ b/RX_FSK/data/screens5.txt @@ -0,0 +1,276 @@ +## screens2.txt: TFT display (landscape) +# Definition of display content and action behaviour +# +# Timer: (view timer, rx timer, norx timer) +# - value -1: timer is disabled; value>=0: timer fires after (value) seconds +# - view timer: time since current view (display mode and sonde) was started +# - rx timer: time since when sonde data has been received continuously (trigger immediatly after RX) +# - norx timer: time since when no sonde data has been received continuously +# (rx and norx timer is started after tuning a new frequency and receiving a signal or not receiving +# anything for a 1s period) +# +# Actions: +# - W: activate WiFi scan +# - F: activate frequency spectrum display +# - 0: activate "Scan:" display (this is basically just display mode 0) +# - x: (1..N): activate display mode x [deprecated] +# - >: activate next display mode +# - D: activate default receiver display (display mode specified in config) +# - +: advance to next active sonde from QRG config +# - #: no action +# +# Display content (lower/upper case: small/large font) +# line,column=content +# for ILI9225 its also possible to indicate +# line,column,width=content for text within a box of width 'width' +# line,column,-width=content for right-justified text +# +# XText : Text +# F(suffix): frequency (with suffix, e.g., " MHz") +# L latitade +# O lOngitute +# A altitude +# Hm(suffix) hor. speed m/s (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Hk(suffix) hor. speed km/h (suffix: e.g. "km/h"; no suffix=>km/h as 16x8 bitmap for SSD1306 display only) +# V(suffix) vert. speef (suffix: e.g. "m/s"; no suffix=>m/s as 16x8 bitmap for SSD1306 display only) +# Ix sonde ID (default/d: dxlaprs; s: short id, n: real serial number) +# RS41,RS92: all identical R1234567 +# DFMx: ID M12345678; short ID and serial 12345678 +# M10: ID ME95231F0; short ID: M95231F0; serial 9062104592 +# Q signal quality statistics bar +# T type string (RS41/DFM9/DFM6/RS92) +# C afC value +# N ip address (only tiny font) +# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries, /: #/t +# K RS41 kill timer values: Kl launch timer, Kb burst timer, Kc kill countdown +# format: K_4: h:mm k_6: h:mm:ss k_s: sssss, nothing shown for other sonde +# Mx telemetry value x (t temp p preassure h hyg b batt) +# Gx GPS-related data +# raw data from GPS: GA, GO, GH, GC: LAtitude, lOngitude, Altutide(Height), Course over ground +# relative to sonde: GD, GI, GB: Distance, dIrection (absolute), relative Bearing +# G0 GPS circle diagram e.g. 3,5=g0NCS,50,ff0000,000033,5,ffff00,4,ffffff +# "N" (what is on top: N=north C=course) +# "C" (where does the arrow point to: C=course, S=sonde) +# "S" (what is shown by the bullet: C=course, S=sonde) +# 50: circle radius, followed by fg and bg color +# 5: bullet radius, followed by fg color +# 4: arrow width, followed by fg color +# R RSSI +# B battery(T-Beam 1.0) S=status V=Batt.Volt C=charge current D=discharge current +# U=USB volt I=USB current T=IC temp +# +# fonts=x,y can be used to select font (x=small, y=large) for all items below +# for SSD1306, x and y can be used to select one of those fonts: +# (y should be a 1x2 font (1,5,6,7), x a small font) +# u8x8_font_chroma48medium8_r, // 0 ** default small +# u8x8_font_7x14_1x2_f, // 1 ** default large +# u8x8_font_amstrad_cpc_extended_f, // 2 +# u8x8_font_5x7_f, // 3 +# u8x8_font_5x8_f, // 4 +# u8x8_font_8x13_1x2_f, // 5 +# u8x8_font_8x13B_1x2_f, // 6 +# u8x8_font_7x14B_1x2_f, // 7 +# u8x8_font_artossans8_r, // 8 +# u8x8_font_artosserif8_r, // 9 +# u8x8_font_torussansbold8_r, // 10 +# u8x8_font_victoriabold8_r, // 11 +# u8x8_font_victoriamedium8_r, // 12 +# u8x8_font_pressstart2p_f, // 13 +# u8x8_font_pcsenior_f, // 14 +# u8x8_font_pxplusibmcgathin_f, // 15 +# u8x8_font_pxplusibmcga_f, // 16 +# u8x8_font_pxplustandynewtv_f, // 17 +# +# for ILI9225, these fonts are available: +# Terminal6x8 // 0 +# Terminal11x16 // 1 +# Terminal12x16 // 2 +# FreeMono9pt7b, // 3 +# FreeMono12pt7b, // 4 +# FreeSans9pt7b, // 5 +# FreeSans12pt7b, // 6 +# Picopixel, // 7 +# +# color=rrggbb,rrggbb can be used to select color (foreground, background) +# see https://github.com/Nkawu/TFT_22_ILI9225/wiki#color-reference for example (use without "#"-sign) +# +# for TFT display, coordinates and width are multiplied by xscale,yscale and later used in pixels +# with scale=1,1 you can directly use pixel coordinates. (default: xscale=13,yscale=22 => 8 lines, 16 columns) +########### + +############ +# Scan display for large 2" TFT dispaly +@ScannerTFT +timer=-1,0,0 +key1action=D,#,F,W +key2action=D,#,#,# +timeaction=#,D,+ +0,0=XScan +0,5=S#: +0,9=T +3,0=F MHz +5,0,16=S +7,0=bVV +7,5=n + +############ +@Legacy +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +0,0=t +0,5=f MHz +1,0=is +#1,8=c +1,8=z +2,0=L +2,10=a +3,10=h +4,0=O +4,9=v +5,9=gC +5,13=gB +6,0=R +6,7=Q +7,6=gD +7,12=gI° + +############ +@Field +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@Field2 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +2,0=L +4,0=O +1,12=t +0,9=f +3,10=h +4,9=v +0,0=Is +6,0=A +6,7=Q + +############ +@GPSDIST +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +0,0=Is +0,9=f +1,12=t +2,0=L +4,0=O +2,10=a +3,10=h +4,9=v +5,9=gC +5,13=gB +6,7=Q +7,0=gV +7,2=xd= +7,4=gD +7,12=gI° + +### Alternative display layouts based on https://gist.github.com/bazjo +# Scan display for large 2" TFT dispaly +@BatteryOLED +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xBat.Status: +0,12=bS +1,0=xBatt: +1,6=bVV +2,0=bCmA (charge) +3,0=bDmA (disch.) +4,0=xUSB: +4,5=bUV +5,5=bImA +6,0=xTemp: +6,5=bT C + +############ +@Meteo +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=Is +0,9=f +1,12=t +2,0=xSonde +3,0=xData +2,10=A +4,0=Mt°C +4,9=Mh%rH +6,0=MphPa +6,11=MbV + +################## +@GPS-Data +timer=-1,-1,-1 +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,# +fonts=0,1 +0,0=xGPS-Data +1,0=xLAT : +1,6=gA +2,0=xLONG: +2,6=gO +3,0=xALT : +3,9=gH +4,0=xSonde +5,0=xAlt : +5,6=a +6,0=xDist: +6,6=gD + +################# +@TelemetryData +scale=22,13 +timer=-1,-1,N +key1action=+,0,F,W +key2action=>,#,#,# +timeaction=#,#,0 +fonts=5,6 +color=FFD700 +0,0,10.5=Is +color=0000FF +0,11,-5.5=f +1,0,4=t +1,10.5,-6=c +color=00ff00 +2,0,7=L +3,0,7=O +color=FFA500 +2,9.5,-7=a +2.8,9.5,-7=vm/s +color=AA5522 +3.6,9.5,-7=hkkm/h +color=FFFFFF +4.4,0=xTelemetry Data: +5.3,0=Mt C +5.3,9=Mh%rH +6.5,0=MphPa +6.5,11=MbV diff --git a/RX_FSK/data/style.css b/RX_FSK/data/style.css new file mode 100755 index 0000000..d12fbe7 --- /dev/null +++ b/RX_FSK/data/style.css @@ -0,0 +1,659 @@ +body, html { + height: 100%; + margin: 0; + font-family: Arial; +} + +table, th, td { + border: 1px solid black; + border-collapse: collapse; + background-color: #ddd +} + +td#caption { + text-align: center; + background-color: #aaa; + font-weight: bold; +} + +td#sfreq { + background-color: #ccc; +} + +.tab { + overflow: hidden; + border: 1px solid #ccc; +} + +.tab button { + background-color: inherit; + float: left; + border: none; + outline: none; + cursor: pointer; + padding: 14px 16px; + transition: 0.3s; +} + +.tab button:hover { + background-color: #ddd; +} + +.tab button.active { + background-color: #ccc; +} + +.tabcontent { + display: none; + padding: 6px 12px; + border: 1px solid #ccc; + border-top: none; + height: 100%; + background-color: #FFFFFF; +} + +html { + font-family: Helvetica; + display: inline-block; + margin: 0px auto; + text-align: center; +} +h1{ + color: #0F3376; + padding: 2vh; +} +p{ + font-size: 1.5rem; +} +.button { + display: inline-block; + background-color: #008CBA; + border: none; + border-radius: 4px; + color: white; + padding: 16px 40px; + text-decoration: none; + font-size: 30px; + margin: 2px; + cursor: pointer; +} +.button2 { + background-color: #f44336; +} + +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome'; +src:url('fontawesome-webfont.eot?v=4.3.0'); +src:url('fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('fontawesome-webfont.woff?v=4.3.0') format('woff'),url('fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg'); +font-weight:normal; +font-style:normal}.fa{display:inline-block; +font:normal normal normal 14px/1 FontAwesome; +font-size:inherit; +text-rendering:auto; +-webkit-font-smoothing:antialiased; +-moz-osx-font-smoothing:grayscale; +transform:translate(0, 0)}.fa-lg{font-size:1.33333333em; +line-height:.75em; +vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em; +text-align:center}.fa-ul{padding-left:0; +margin-left:2.14285714em; +list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute; +left:-2.14285714em; +width:2.14285714em; +top:.14285714em; +text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em; +border:solid .08em #eee; +border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear; +animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8); +animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg); +transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg); +transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg); +transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg); +transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +-webkit-transform:rotate(90deg); +-ms-transform:rotate(90deg); +transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +-webkit-transform:rotate(180deg); +-ms-transform:rotate(180deg); +transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +-webkit-transform:rotate(270deg); +-ms-transform:rotate(270deg); +transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); +-webkit-transform:scale(-1, 1); +-ms-transform:scale(-1, 1); +transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); +-webkit-transform:scale(1, -1); +-ms-transform:scale(1, -1); +transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative; +display:inline-block; +width:2em; +height:2em; +line-height:2em; +vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute; +left:0; +width:100%; +text-align:center} +.fa-stack-1x{line-height:inherit} +.fa-stack-2x{font-size:2em} +.fa-inverse{color:#fff} +.fa-glass:before{content:"\f000"} +.fa-music:before{content:"\f001"} +.fa-search:before{content:"\f002"} +.fa-envelope-o:before{content:"\f003"} +.fa-heart:before{content:"\f004"} +.fa-star:before{content:"\f005"} +.fa-star-o:before{content:"\f006"} +.fa-user:before{content:"\f007"} +.fa-film:before{content:"\f008"} +.fa-th-large:before{content:"\f009"} +.fa-th:before{content:"\f00a"} +.fa-th-list:before{content:"\f00b"} +.fa-check:before{content:"\f00c"} +.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"} +.fa-search-plus:before{content:"\f00e"} +.fa-search-minus:before{content:"\f010"} +.fa-power-off:before{content:"\f011"} +.fa-signal:before{content:"\f012"} +.fa-gear:before,.fa-cog:before{content:"\f013"} +.fa-trash-o:before{content:"\f014"} +.fa-home:before{content:"\f015"} +.fa-file-o:before{content:"\f016"} +.fa-clock-o:before{content:"\f017"} +.fa-road:before{content:"\f018"} +.fa-download:before{content:"\f019"} +.fa-arrow-circle-o-down:before{content:"\f01a"} +.fa-arrow-circle-o-up:before{content:"\f01b"} +.fa-inbox:before{content:"\f01c"} +.fa-play-circle-o:before{content:"\f01d"} +.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"} +.fa-refresh:before{content:"\f021"} +.fa-list-alt:before{content:"\f022"} +.fa-lock:before{content:"\f023"} +.fa-flag:before{content:"\f024"} +.fa-headphones:before{content:"\f025"} +.fa-volume-off:before{content:"\f026"} +.fa-volume-down:before{content:"\f027"} +.fa-volume-up:before{content:"\f028"} +.fa-qrcode:before{content:"\f029"} +.fa-barcode:before{content:"\f02a"} +.fa-tag:before{content:"\f02b"} +.fa-tags:before{content:"\f02c"} +.fa-book:before{content:"\f02d"} +.fa-bookmark:before{content:"\f02e"} +.fa-print:before{content:"\f02f"} +.fa-camera:before{content:"\f030"} +.fa-font:before{content:"\f031"} +.fa-bold:before{content:"\f032"} +.fa-italic:before{content:"\f033"} +.fa-text-height:before{content:"\f034"} +.fa-text-width:before{content:"\f035"} +.fa-align-left:before{content:"\f036"} +.fa-align-center:before{content:"\f037"} +.fa-align-right:before{content:"\f038"} +.fa-align-justify:before{content:"\f039"} +.fa-list:before{content:"\f03a"} +.fa-dedent:before,.fa-outdent:before{content:"\f03b"} +.fa-indent:before{content:"\f03c"} +.fa-video-camera:before{content:"\f03d"} +.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"} +.fa-pencil:before{content:"\f040"} +.fa-map-marker:before{content:"\f041"} +.fa-adjust:before{content:"\f042"} +.fa-tint:before{content:"\f043"} +.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"} +.fa-share-square-o:before{content:"\f045"} +.fa-check-square-o:before{content:"\f046"} +.fa-arrows:before{content:"\f047"} +.fa-step-backward:before{content:"\f048"} +.fa-fast-backward:before{content:"\f049"} +.fa-backward:before{content:"\f04a"} +.fa-play:before{content:"\f04b"} +.fa-pause:before{content:"\f04c"} +.fa-stop:before{content:"\f04d"} +.fa-forward:before{content:"\f04e"} +.fa-fast-forward:before{content:"\f050"} +.fa-step-forward:before{content:"\f051"} +.fa-eject:before{content:"\f052"} +.fa-chevron-left:before{content:"\f053"} +.fa-chevron-right:before{content:"\f054"} +.fa-plus-circle:before{content:"\f055"} +.fa-minus-circle:before{content:"\f056"} +.fa-times-circle:before{content:"\f057"} +.fa-check-circle:before{content:"\f058"} +.fa-question-circle:before{content:"\f059"} +.fa-info-circle:before{content:"\f05a"} +.fa-crosshairs:before{content:"\f05b"} +.fa-times-circle-o:before{content:"\f05c"} +.fa-check-circle-o:before{content:"\f05d"} +.fa-ban:before{content:"\f05e"} +.fa-arrow-left:before{content:"\f060"} +.fa-arrow-right:before{content:"\f061"} +.fa-arrow-up:before{content:"\f062"} +.fa-arrow-down:before{content:"\f063"} +.fa-mail-forward:before,.fa-share:before{content:"\f064"} +.fa-expand:before{content:"\f065"} +.fa-compress:before{content:"\f066"} +.fa-plus:before{content:"\f067"} +.fa-minus:before{content:"\f068"} +.fa-asterisk:before{content:"\f069"} +.fa-exclamation-circle:before{content:"\f06a"} +.fa-gift:before{content:"\f06b"} +.fa-leaf:before{content:"\f06c"} +.fa-fire:before{content:"\f06d"} +.fa-eye:before{content:"\f06e"} +.fa-eye-slash:before{content:"\f070"} +.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"} +.fa-plane:before{content:"\f072"} +.fa-calendar:before{content:"\f073"} +.fa-random:before{content:"\f074"} +.fa-comment:before{content:"\f075"} +.fa-magnet:before{content:"\f076"} +.fa-chevron-up:before{content:"\f077"} +.fa-chevron-down:before{content:"\f078"} +.fa-retweet:before{content:"\f079"} +.fa-shopping-cart:before{content:"\f07a"} +.fa-folder:before{content:"\f07b"} +.fa-folder-open:before{content:"\f07c"} +.fa-arrows-v:before{content:"\f07d"} +.fa-arrows-h:before{content:"\f07e"} +.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"} +.fa-twitter-square:before{content:"\f081"} +.fa-facebook-square:before{content:"\f082"} +.fa-camera-retro:before{content:"\f083"} +.fa-key:before{content:"\f084"} +.fa-gears:before,.fa-cogs:before{content:"\f085"} +.fa-comments:before{content:"\f086"} +.fa-thumbs-o-up:before{content:"\f087"} +.fa-thumbs-o-down:before{content:"\f088"} +.fa-star-half:before{content:"\f089"} +.fa-heart-o:before{content:"\f08a"} +.fa-sign-out:before{content:"\f08b"} +.fa-linkedin-square:before{content:"\f08c"} +.fa-thumb-tack:before{content:"\f08d"} +.fa-external-link:before{content:"\f08e"} +.fa-sign-in:before{content:"\f090"} +.fa-trophy:before{content:"\f091"} +.fa-github-square:before{content:"\f092"} +.fa-upload:before{content:"\f093"} +.fa-lemon-o:before{content:"\f094"} +.fa-phone:before{content:"\f095"} +.fa-square-o:before{content:"\f096"} +.fa-bookmark-o:before{content:"\f097"} +.fa-phone-square:before{content:"\f098"} +.fa-twitter:before{content:"\f099"} +.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"} +.fa-github:before{content:"\f09b"} +.fa-unlock:before{content:"\f09c"} +.fa-credit-card:before{content:"\f09d"} +.fa-rss:before{content:"\f09e"} +.fa-hdd-o:before{content:"\f0a0"} +.fa-bullhorn:before{content:"\f0a1"} +.fa-bell:before{content:"\f0f3"} +.fa-certificate:before{content:"\f0a3"} +.fa-hand-o-right:before{content:"\f0a4"} +.fa-hand-o-left:before{content:"\f0a5"} +.fa-hand-o-up:before{content:"\f0a6"} +.fa-hand-o-down:before{content:"\f0a7"} +.fa-arrow-circle-left:before{content:"\f0a8"} +.fa-arrow-circle-right:before{content:"\f0a9"} +.fa-arrow-circle-up:before{content:"\f0aa"} +.fa-arrow-circle-down:before{content:"\f0ab"} +.fa-globe:before{content:"\f0ac"} +.fa-wrench:before{content:"\f0ad"} +.fa-tasks:before{content:"\f0ae"} +.fa-filter:before{content:"\f0b0"} +.fa-briefcase:before{content:"\f0b1"} +.fa-arrows-alt:before{content:"\f0b2"} +.fa-group:before,.fa-users:before{content:"\f0c0"} +.fa-chain:before,.fa-link:before{content:"\f0c1"} +.fa-cloud:before{content:"\f0c2"} +.fa-flask:before{content:"\f0c3"} +.fa-cut:before,.fa-scissors:before{content:"\f0c4"} +.fa-copy:before,.fa-files-o:before{content:"\f0c5"} +.fa-paperclip:before{content:"\f0c6"} +.fa-save:before,.fa-floppy-o:before{content:"\f0c7"} +.fa-square:before{content:"\f0c8"} +.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"} +.fa-list-ul:before{content:"\f0ca"} +.fa-list-ol:before{content:"\f0cb"} +.fa-strikethrough:before{content:"\f0cc"} +.fa-underline:before{content:"\f0cd"} +.fa-table:before{content:"\f0ce"} +.fa-magic:before{content:"\f0d0"} +.fa-truck:before{content:"\f0d1"} +.fa-pinterest:before{content:"\f0d2"} +.fa-pinterest-square:before{content:"\f0d3"} +.fa-google-plus-square:before{content:"\f0d4"} +.fa-google-plus:before{content:"\f0d5"} +.fa-money:before{content:"\f0d6"} +.fa-caret-down:before{content:"\f0d7"} +.fa-caret-up:before{content:"\f0d8"} +.fa-caret-left:before{content:"\f0d9"} +.fa-caret-right:before{content:"\f0da"} +.fa-columns:before{content:"\f0db"} +.fa-unsorted:before,.fa-sort:before{content:"\f0dc"} +.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"} +.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"} +.fa-envelope:before{content:"\f0e0"} +.fa-linkedin:before{content:"\f0e1"} +.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"} +.fa-legal:before,.fa-gavel:before{content:"\f0e3"} +.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"} +.fa-comment-o:before{content:"\f0e5"} +.fa-comments-o:before{content:"\f0e6"} +.fa-flash:before,.fa-bolt:before{content:"\f0e7"} +.fa-sitemap:before{content:"\f0e8"} +.fa-umbrella:before{content:"\f0e9"} +.fa-paste:before,.fa-clipboard:before{content:"\f0ea"} +.fa-lightbulb-o:before{content:"\f0eb"} +.fa-exchange:before{content:"\f0ec"} +.fa-cloud-download:before{content:"\f0ed"} +.fa-cloud-upload:before{content:"\f0ee"} +.fa-user-md:before{content:"\f0f0"} +.fa-stethoscope:before{content:"\f0f1"} +.fa-suitcase:before{content:"\f0f2"} +.fa-bell-o:before{content:"\f0a2"} +.fa-coffee:before{content:"\f0f4"} +.fa-cutlery:before{content:"\f0f5"} +.fa-file-text-o:before{content:"\f0f6"} +.fa-building-o:before{content:"\f0f7"} +.fa-hospital-o:before{content:"\f0f8"} +.fa-ambulance:before{content:"\f0f9"} +.fa-medkit:before{content:"\f0fa"} +.fa-fighter-jet:before{content:"\f0fb"} +.fa-beer:before{content:"\f0fc"} +.fa-h-square:before{content:"\f0fd"} +.fa-plus-square:before{content:"\f0fe"} +.fa-angle-double-left:before{content:"\f100"} +.fa-angle-double-right:before{content:"\f101"} +.fa-angle-double-up:before{content:"\f102"} +.fa-angle-double-down:before{content:"\f103"} +.fa-angle-left:before{content:"\f104"} +.fa-angle-right:before{content:"\f105"} +.fa-angle-up:before{content:"\f106"} +.fa-angle-down:before{content:"\f107"} +.fa-desktop:before{content:"\f108"} +.fa-laptop:before{content:"\f109"} +.fa-tablet:before{content:"\f10a"} +.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"} +.fa-circle-o:before{content:"\f10c"} +.fa-quote-left:before{content:"\f10d"} +.fa-quote-right:before{content:"\f10e"} +.fa-spinner:before{content:"\f110"} +.fa-circle:before{content:"\f111"} +.fa-mail-reply:before,.fa-reply:before{content:"\f112"} +.fa-github-alt:before{content:"\f113"} +.fa-folder-o:before{content:"\f114"} +.fa-folder-open-o:before{content:"\f115"} +.fa-smile-o:before{content:"\f118"} +.fa-frown-o:before{content:"\f119"} +.fa-meh-o:before{content:"\f11a"} +.fa-gamepad:before{content:"\f11b"} +.fa-keyboard-o:before{content:"\f11c"} +.fa-flag-o:before{content:"\f11d"} +.fa-flag-checkered:before{content:"\f11e"} +.fa-terminal:before{content:"\f120"} +.fa-code:before{content:"\f121"} +.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"} +.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"} +.fa-location-arrow:before{content:"\f124"} +.fa-crop:before{content:"\f125"} +.fa-code-fork:before{content:"\f126"} +.fa-unlink:before,.fa-chain-broken:before{content:"\f127"} +.fa-question:before{content:"\f128"} +.fa-info:before{content:"\f129"} +.fa-exclamation:before{content:"\f12a"} +.fa-superscript:before{content:"\f12b"} +.fa-subscript:before{content:"\f12c"} +.fa-eraser:before{content:"\f12d"} +.fa-puzzle-piece:before{content:"\f12e"} +.fa-microphone:before{content:"\f130"} +.fa-microphone-slash:before{content:"\f131"} +.fa-shield:before{content:"\f132"} +.fa-calendar-o:before{content:"\f133"} +.fa-fire-extinguisher:before{content:"\f134"} +.fa-rocket:before{content:"\f135"} +.fa-maxcdn:before{content:"\f136"} +.fa-chevron-circle-left:before{content:"\f137"} +.fa-chevron-circle-right:before{content:"\f138"} +.fa-chevron-circle-up:before{content:"\f139"} +.fa-chevron-circle-down:before{content:"\f13a"} +.fa-html5:before{content:"\f13b"} +.fa-css3:before{content:"\f13c"} +.fa-anchor:before{content:"\f13d"} +.fa-unlock-alt:before{content:"\f13e"} +.fa-bullseye:before{content:"\f140"} +.fa-ellipsis-h:before{content:"\f141"} +.fa-ellipsis-v:before{content:"\f142"} +.fa-rss-square:before{content:"\f143"} +.fa-play-circle:before{content:"\f144"} +.fa-ticket:before{content:"\f145"} +.fa-minus-square:before{content:"\f146"} +.fa-minus-square-o:before{content:"\f147"} +.fa-level-up:before{content:"\f148"} +.fa-level-down:before{content:"\f149"} +.fa-check-square:before{content:"\f14a"} +.fa-pencil-square:before{content:"\f14b"} +.fa-external-link-square:before{content:"\f14c"} +.fa-share-square:before{content:"\f14d"} +.fa-compass:before{content:"\f14e"} +.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"} +.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"} +.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"} +.fa-euro:before,.fa-eur:before{content:"\f153"} +.fa-gbp:before{content:"\f154"} +.fa-dollar:before,.fa-usd:before{content:"\f155"} +.fa-rupee:before,.fa-inr:before{content:"\f156"} +.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"} +.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"} +.fa-won:before,.fa-krw:before{content:"\f159"} +.fa-bitcoin:before,.fa-btc:before{content:"\f15a"} +.fa-file:before{content:"\f15b"} +.fa-file-text:before{content:"\f15c"} +.fa-sort-alpha-asc:before{content:"\f15d"} +.fa-sort-alpha-desc:before{content:"\f15e"} +.fa-sort-amount-asc:before{content:"\f160"} +.fa-sort-amount-desc:before{content:"\f161"} +.fa-sort-numeric-asc:before{content:"\f162"} +.fa-sort-numeric-desc:before{content:"\f163"} +.fa-thumbs-up:before{content:"\f164"} +.fa-thumbs-down:before{content:"\f165"} +.fa-youtube-square:before{content:"\f166"} +.fa-youtube:before{content:"\f167"} +.fa-xing:before{content:"\f168"} +.fa-xing-square:before{content:"\f169"} +.fa-youtube-play:before{content:"\f16a"} +.fa-dropbox:before{content:"\f16b"} +.fa-stack-overflow:before{content:"\f16c"} +.fa-instagram:before{content:"\f16d"} +.fa-flickr:before{content:"\f16e"} +.fa-adn:before{content:"\f170"} +.fa-bitbucket:before{content:"\f171"} +.fa-bitbucket-square:before{content:"\f172"} +.fa-tumblr:before{content:"\f173"} +.fa-tumblr-square:before{content:"\f174"} +.fa-long-arrow-down:before{content:"\f175"} +.fa-long-arrow-up:before{content:"\f176"} +.fa-long-arrow-left:before{content:"\f177"} +.fa-long-arrow-right:before{content:"\f178"} +.fa-apple:before{content:"\f179"} +.fa-windows:before{content:"\f17a"} +.fa-android:before{content:"\f17b"} +.fa-linux:before{content:"\f17c"} +.fa-dribbble:before{content:"\f17d"} +.fa-skype:before{content:"\f17e"} +.fa-foursquare:before{content:"\f180"} +.fa-trello:before{content:"\f181"} +.fa-female:before{content:"\f182"} +.fa-male:before{content:"\f183"} +.fa-gittip:before,.fa-gratipay:before{content:"\f184"} +.fa-sun-o:before{content:"\f185"} +.fa-moon-o:before{content:"\f186"} +.fa-archive:before{content:"\f187"} +.fa-bug:before{content:"\f188"} +.fa-vk:before{content:"\f189"} +.fa-weibo:before{content:"\f18a"} +.fa-renren:before{content:"\f18b"} +.fa-pagelines:before{content:"\f18c"} +.fa-stack-exchange:before{content:"\f18d"} +.fa-arrow-circle-o-right:before{content:"\f18e"} +.fa-arrow-circle-o-left:before{content:"\f190"} +.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"} +.fa-dot-circle-o:before{content:"\f192"} +.fa-wheelchair:before{content:"\f193"} +.fa-vimeo-square:before{content:"\f194"} +.fa-turkish-lira:before,.fa-try:before{content:"\f195"} +.fa-plus-square-o:before{content:"\f196"} +.fa-space-shuttle:before{content:"\f197"} +.fa-slack:before{content:"\f198"} +.fa-envelope-square:before{content:"\f199"} +.fa-wordpress:before{content:"\f19a"} +.fa-openid:before{content:"\f19b"} +.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"} +.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"} +.fa-yahoo:before{content:"\f19e"} +.fa-google:before{content:"\f1a0"} +.fa-reddit:before{content:"\f1a1"} +.fa-reddit-square:before{content:"\f1a2"} +.fa-stumbleupon-circle:before{content:"\f1a3"} +.fa-stumbleupon:before{content:"\f1a4"} +.fa-delicious:before{content:"\f1a5"} +.fa-digg:before{content:"\f1a6"} +.fa-pied-piper:before{content:"\f1a7"} +.fa-pied-piper-alt:before{content:"\f1a8"} +.fa-drupal:before{content:"\f1a9"} +.fa-joomla:before{content:"\f1aa"} +.fa-language:before{content:"\f1ab"} +.fa-fax:before{content:"\f1ac"} +.fa-building:before{content:"\f1ad"} +.fa-child:before{content:"\f1ae"} +.fa-paw:before{content:"\f1b0"} +.fa-spoon:before{content:"\f1b1"} +.fa-cube:before{content:"\f1b2"} +.fa-cubes:before{content:"\f1b3"} +.fa-behance:before{content:"\f1b4"} +.fa-behance-square:before{content:"\f1b5"} +.fa-steam:before{content:"\f1b6"} +.fa-steam-square:before{content:"\f1b7"} +.fa-recycle:before{content:"\f1b8"} +.fa-automobile:before,.fa-car:before{content:"\f1b9"} +.fa-cab:before,.fa-taxi:before{content:"\f1ba"} +.fa-tree:before{content:"\f1bb"} +.fa-spotify:before{content:"\f1bc"} +.fa-deviantart:before{content:"\f1bd"} +.fa-soundcloud:before{content:"\f1be"} +.fa-database:before{content:"\f1c0"} +.fa-file-pdf-o:before{content:"\f1c1"} +.fa-file-word-o:before{content:"\f1c2"} +.fa-file-excel-o:before{content:"\f1c3"} +.fa-file-powerpoint-o:before{content:"\f1c4"} +.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"} +.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"} +.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"} +.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"} +.fa-file-code-o:before{content:"\f1c9"} +.fa-vine:before{content:"\f1ca"} +.fa-codepen:before{content:"\f1cb"} +.fa-jsfiddle:before{content:"\f1cc"} +.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"} +.fa-circle-o-notch:before{content:"\f1ce"} +.fa-ra:before,.fa-rebel:before{content:"\f1d0"} +.fa-ge:before,.fa-empire:before{content:"\f1d1"} +.fa-git-square:before{content:"\f1d2"} +.fa-git:before{content:"\f1d3"} +.fa-hacker-news:before{content:"\f1d4"} +.fa-tencent-weibo:before{content:"\f1d5"} +.fa-qq:before{content:"\f1d6"} +.fa-wechat:before,.fa-weixin:before{content:"\f1d7"} +.fa-send:before,.fa-paper-plane:before{content:"\f1d8"} +.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"} +.fa-history:before{content:"\f1da"} +.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"} +.fa-header:before{content:"\f1dc"} +.fa-paragraph:before{content:"\f1dd"} +.fa-sliders:before{content:"\f1de"} +.fa-share-alt:before{content:"\f1e0"} +.fa-share-alt-square:before{content:"\f1e1"} +.fa-bomb:before{content:"\f1e2"} +.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"} +.fa-tty:before{content:"\f1e4"} +.fa-binoculars:before{content:"\f1e5"} +.fa-plug:before{content:"\f1e6"} +.fa-slideshare:before{content:"\f1e7"} +.fa-twitch:before{content:"\f1e8"} +.fa-yelp:before{content:"\f1e9"} +.fa-newspaper-o:before{content:"\f1ea"} +.fa-wifi:before{content:"\f1eb"} +.fa-calculator:before{content:"\f1ec"} +.fa-paypal:before{content:"\f1ed"} +.fa-google-wallet:before{content:"\f1ee"} +.fa-cc-visa:before{content:"\f1f0"} +.fa-cc-mastercard:before{content:"\f1f1"} +.fa-cc-discover:before{content:"\f1f2"} +.fa-cc-amex:before{content:"\f1f3"} +.fa-cc-paypal:before{content:"\f1f4"} +.fa-cc-stripe:before{content:"\f1f5"} +.fa-bell-slash:before{content:"\f1f6"} +.fa-bell-slash-o:before{content:"\f1f7"} +.fa-trash:before{content:"\f1f8"} +.fa-copyright:before{content:"\f1f9"} +.fa-at:before{content:"\f1fa"} +.fa-eyedropper:before{content:"\f1fb"} +.fa-paint-brush:before{content:"\f1fc"} +.fa-birthday-cake:before{content:"\f1fd"} +.fa-area-chart:before{content:"\f1fe"} +.fa-pie-chart:before{content:"\f200"} +.fa-line-chart:before{content:"\f201"} +.fa-lastfm:before{content:"\f202"} +.fa-lastfm-square:before{content:"\f203"} +.fa-toggle-off:before{content:"\f204"} +.fa-toggle-on:before{content:"\f205"} +.fa-bicycle:before{content:"\f206"} +.fa-bus:before{content:"\f207"} +.fa-ioxhost:before{content:"\f208"} +.fa-angellist:before{content:"\f209"} +.fa-cc:before{content:"\f20a"} +.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"} +.fa-meanpath:before{content:"\f20c"} +.fa-buysellads:before{content:"\f20d"} +.fa-connectdevelop:before{content:"\f20e"} +.fa-dashcube:before{content:"\f210"} +.fa-forumbee:before{content:"\f211"} +.fa-leanpub:before{content:"\f212"} +.fa-sellsy:before{content:"\f213"} +.fa-shirtsinbulk:before{content:"\f214"} +.fa-simplybuilt:before{content:"\f215"} +.fa-skyatlas:before{content:"\f216"} +.fa-cart-plus:before{content:"\f217"} +.fa-cart-arrow-down:before{content:"\f218"} +.fa-diamond:before{content:"\f219"} +.fa-ship:before{content:"\f21a"} +.fa-user-secret:before{content:"\f21b"} +.fa-motorcycle:before{content:"\f21c"} +.fa-street-view:before{content:"\f21d"} +.fa-heartbeat:before{content:"\f21e"} +.fa-venus:before{content:"\f221"} +.fa-mars:before{content:"\f222"} +.fa-mercury:before{content:"\f223"} +.fa-transgender:before{content:"\f224"} +.fa-transgender-alt:before{content:"\f225"} +.fa-venus-double:before{content:"\f226"} +.fa-mars-double:before{content:"\f227"} +.fa-venus-mars:before{content:"\f228"} +.fa-mars-stroke:before{content:"\f229"} +.fa-mars-stroke-v:before{content:"\f22a"} +.fa-mars-stroke-h:before{content:"\f22b"} +.fa-neuter:before{content:"\f22c"} +.fa-facebook-official:before{content:"\f230"} +.fa-pinterest-p:before{content:"\f231"} +.fa-whatsapp:before{content:"\f232"} +.fa-server:before{content:"\f233"} +.fa-user-plus:before{content:"\f234"} +.fa-user-times:before{content:"\f235"} +.fa-hotel:before,.fa-bed:before{content:"\f236"} +.fa-viacoin:before{content:"\f237"} +.fa-train:before{content:"\f238"} +.fa-subway:before{content:"\f239"} +.fa-medium:before{content:"\f23a"} diff --git a/RX_FSK/data/style_map.css b/RX_FSK/data/style_map.css new file mode 100755 index 0000000..c5d02b7 --- /dev/null +++ b/RX_FSK/data/style_map.css @@ -0,0 +1,392 @@ +body, html { + height: 100%; + margin: 0; + font-family: Arial; +} + +.active, .cfgheader:hover { + background-color: #ccc; +} +.cfgpanel { +} + +th.cfg { + padding:5pt +} +table.stat { + margin:0px 0px 5px 0px; +} + +.hamburger { + position: relative; + display: inline-block; + width: 1.25em; + height: 0.8em; + margin-right: 0.3em; + border-top: 0.2em solid #fff; + border-bottom: 0.2em solid #fff; +} + +.hamburger:before { + content: ""; + position: absolute; + top: 0.3em; + left: 0px; + width: 100%; + border-top: 0.2em solid #fff; +} + +.wrapper { + height: 100%; + display: flex; + flex-direction: column; + margin: 0; +} +.tci { + flex-grow: 1; border: none; margin: 0; padding: 0; +} +.footer { + background-color: #333; + display: flex; + justify-content: space-between; +} + +td.ch { + text-align: right; + padding: 0px 8px; +} +td.act { + text-align: center; +} +table, th, td { + border: 1px solid black; + border-collapse: collapse; + background-color: #ddd +} + +td#caption { + text-align: center; + background-color: #aaa; + font-weight: bold; +} + +td#sfreq { + background-color: #ccc; +} + +.content { + display: flex; + flex: 1; + flex-direction: column; + overflow: auto; + height: 100%; +} +.tabcontent { + display: none; + flex: 1; + border-top: none; + flex-direction: column; + overflow: auto; +} + +html { + font-family: Helvetica; + display: inline-block; + margin: 0px auto; + text-align: center; +} +h1{ + color: #0F3376; + font-size: 24px +} +p{ + font-size: 1.5rem; +} + +.button2 { + background-color: #f44336; +} +:disabled.save { + opacity: 0.5; +} +.save { + background-color: #CC1111; /* 0F33C6; */ + border: white; + border-width: 1; + color: white; + padding: 8px 30px; + text-align: center; + text-decoration: none; + display: block; + font-size: 14px; + margin: 0 +} + +.ttgoinfo { + color: white; + padding: 8px 10px; + display: block; + font-size: 14px; + margin: 0 +} +.ctlbtn { + background-color: #ccc; + border: black; + border-width: 1; + color: black; + padding: 4px 30px; + text-align: center; + text-decoration: none; + display: block; + margin: 2; + font-size: 4vh; +} +.update { + margin: 0; + display: block; +} + +#map { + height: 100%; +} + +.leaflet-popup-content table, .leaflet-popup-content table td { + border:0; + background-color: white; +} + +.leaflet-popup-content table td:nth-child(2),.leaflet-popup-content table td:nth-child(5) { + text-align: right; + padding-left: 3px; +} + +.leaflet-popup-content table td:nth-child(3),.leaflet-popup-content table td:nth-child(6) { + text-align: left; + padding-right: 10px; +} + +.leaflet-gps{animation:fading 1s infinite}@keyframes fading{0%{opacity:0.7}50%{opacity:1}100%{opacity:0.7}} + +.leaflet-gps::after { + content: '🔵'; +} +.leaflet-gps { + margin-left: -7px !important; + margin-top: -9px !important; +} + +.leaflet-burst::after { + content: '💥'; +} +.leaflet-burst { + margin-left: -20px !important; + margin-top: -22px !important; + font-weight: bold; + font-size: 30px; +} + +.leaflet-landing::after { + content: '×'; +} + +.leaflet-landing { + margin-left: -13px !important; + margin-top: -30px !important; + font-weight: bold; + font-size: 40px; +} + + +.leaflet-header { + text-align: center; + width: 250px; + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + pointer-events: auto !important; +} + +.leaflet-header #settings { + display: none; +} + +.leaflet-header label { + display: block; + margin-top: 5px; +} +.leaflet-header input { + width: 80px; + margin: 0 auto; +} + +.leaflet-header #submit { + margin: 3px auto; +} + +.leaflet-footer { + display:none; + text-align: center; + width: 180px; + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +.leaflet-center { + left:0; + right:0; + margin: 0 auto; + padding: 5px; + background: #fff; + background: rgba(255, 255, 255, 0.8); +} + +.leaflet-header #sonde_detail { + display:none; +} + +@media screen and (max-width: 600px) { + .leaflet-control-attribution { + -moz-transform: rotate(-90deg) translateX(100%); + -ms-transform: rotate(-90deg) translateX(100%); + -o-transform: rotate(-90deg) translateX(100%);; + -webkit-transform: rotate(-90deg) translateX(100%); + transform: rotate(-90deg) translateX(100%); + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; + } +} + +.ldot { + height: 15px; + width: 15px; + margin-top: 8px; + margin-left: -1px; + border-radius: 50%; + display: inline-block; +} + +.ybg { + background-color: orange; + background-image: -webkit-gradient(linear, left top, left bottom, from(yellow), to(orange)); + background-image: linear-gradient(top, yellow, orange); +} +.gbg { + background-color: green; + background-image: -webkit-gradient(linear, left top, left bottom, from(lime), to(green)); + background-image: linear-gradient(top, lime, green); +} +.rbg { + background-color: red; + background-image: -webkit-gradient(linear, left top, left bottom, from(orange), to(red)); + background-image: linear-gradient(top, orange, red); +} + +#sonde_statbar .ldot { + margin-right: 3px; +} + +/* Add a black background color to the top navigation */ +.topnav { + background-color: #333; + overflow: hidden; +} + +/* Style the links inside the navigation bar */ +.topnav a { + float: left; + display: block; + color: #f2f2f2; + text-align: center; + padding: 14px 16px; + text-decoration: none; + font-size: 17px; +} + +/* Change the color of links on hover */ +.topnav a:hover { + background-color: #ddd; + color: black; +} + +/* Add an active class to highlight the current page */ +.topnav a.active { + background-color: #04AA6D; + color: white; +} + +/* Hide the link that should open and close the topnav on small screens */ +.topnav .icon { + display: none; + padding-bottom: 12px; + padding-top: 11px; +} + +/* When the screen is less than 600 pixels wide, hide all links, except for the first one ("Home"). Show the link that contains should open and close the topnav (.icon) */ +@media screen and (max-width: 600px) { + .topnav a:not(.active) {display: none;} + .topnav a.icon { + float: right; + display: block; + } +} + +/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */ +@media screen and (max-width: 600px) { + .topnav.responsive {position: relative;} + .topnav.responsive a.icon { + position: absolute; + right: 0; + top: 0; + } + .topnav.responsive a { + float: none; + display: block; + text-align: left; + } +} +@media (prefers-color-scheme: dark) { + body { + background-color: #333; + } + h2{ + color: white; + } + table, th, td, .save, a.active { + color: white; + border: 1px solid grey; + border-collapse: collapse; + background-color: #333; + } + input, select, .tci, .warning { + color: white; + background-color: #333; + } + a:link, a:visited { + color: #D3D3D3; + } + .topnav, td#sfreq { + background-color: grey; + } + .topnav a:visited { + color: white; + } + .ctlbtn { + color: white; + background-color: grey; + } + .leaflet-center { + color: white; + background-color: grey; + } + .leaflet-bar a { + background-color: grey !important; + } + .leaflet-popup-content-wrapper, .leaflet-popup-tip { + color: white !important; + background: grey !important; + } +} diff --git a/RX_FSK/features.h b/RX_FSK/features.h new file mode 100644 index 0000000..eafc6d8 --- /dev/null +++ b/RX_FSK/features.h @@ -0,0 +1,24 @@ + +// Configuration flags for including/excluding fuctionality from the compiled binary +// set flag to 0 for exclude/1 for include + +/* data feed to sondehubv2 */ +/* needs about 4k4 code, 200b data, 200b stack, 200b heap */ +#define FEATURE_SONDEHUB 1 +#define FEATURE_CHASEMAPPER 1 +#define FEATURE_MQTT 0 + +#define FEATURE_RS92 1 + +/* Most recent version support fonts in a dedicated flash parition "fonts". + * This is incomabtible (in terms of code and flash layout) to previous versions. + * If LEGACY_FONTS_IN_CODEBIN is sets, fonts are also included in the bin image. + * This maintains compatibility for OTA with previous versions (in which case the + * bin image fonts will be used as before). + * The code automatically uses fonts in flash partition if that exists, otherwise + * fonts in code. + * The flash partition fonts support latin15 codeset (instead of 7bit ascii). + * Also, it is easier to use different fonts :) just flash the font partition w/ something else... + * This option will likely be removed post-master1.0 + */ +#define LEGACY_FONTS_IN_CODEBIN 1 diff --git a/RX_FSK/src/Chasemapper.cpp b/RX_FSK/src/Chasemapper.cpp new file mode 100644 index 0000000..166abaf --- /dev/null +++ b/RX_FSK/src/Chasemapper.cpp @@ -0,0 +1,43 @@ +#include "Chasemapper.h" + +extern const char *sondeTypeStrSH[]; + +int Chasemapper::send(WiFiUDP &udp, SondeInfo *si) { + char buf[1024]; + struct tm tim; + time_t t = si->d.time; + gmtime_r(&t, &tim); + uint8_t realtype = si->type; + if (TYPE_IS_METEO(realtype)) { + realtype = si->d.subtype == 1 ? STYPE_M10 : STYPE_M20; + } + sprintf(buf, "{ \"type\": \"PAYLOAD_SUMMARY\"," + "\"callsign\": \"%s\"," + "\"latitude\": %.5f," + "\"longitude\": %.5f," + "\"altitude\": %d," + "\"speed\": %d," + "\"heading\": %d," + "\"time\": \"%02d:%02d:%02d\"," + "\"model\": \"%s\"," + "\"freq\": \"%.3f MHz\"", + si->d.ser, + si->d.lat, + si->d.lon, + (int)si->d.alt, + (int)(si->d.hs * 1.9438445), // m/s into knots + (int)si->d.dir, + tim.tm_hour, tim.tm_min, tim.tm_sec, + sondeTypeStrSH[realtype], + si->freq); + if( !isnan(si->d.temperature) ) { + sprintf(buf + strlen(buf), ", \"temp\": %.1f", si->d.temperature); + } + strcat(buf, "}"); + Serial.printf("Sending chasemapper json: %s\n", buf); + udp.beginPacket(sonde.config.cm.host, sonde.config.cm.port); + udp.write((const uint8_t *)buf, strlen(buf)); + udp.endPacket(); + return 0; +} + diff --git a/RX_FSK/src/Chasemapper.h b/RX_FSK/src/Chasemapper.h new file mode 100644 index 0000000..4f537b9 --- /dev/null +++ b/RX_FSK/src/Chasemapper.h @@ -0,0 +1,13 @@ +#ifndef _CHASEMAPPER_H +#define _CHASEMAPPER_H + +#include "Sonde.h" +//#include +#include +#include +class Chasemapper { +public: + static int send(WiFiUDP &udb, SondeInfo *si); +}; + +#endif diff --git a/RX_FSK/src/DFM.cpp b/RX_FSK/src/DFM.cpp new file mode 100644 index 0000000..e93ab05 --- /dev/null +++ b/RX_FSK/src/DFM.cpp @@ -0,0 +1,693 @@ + +/* DFM decoder functions */ +#include "DFM.h" +#include "SX1278FSK.h" +#include "Sonde.h" + +#define DFM_DEBUG 0 + +#if DFM_DEBUG +#define DFM_DBG(x) x +#else +#define DFM_DBG(x) +#endif + +#define DFM_FRAMELEN 33 + +#define MAXIDAGE 1800 + +/* + * observed DAT patterns for DFM-9: + * A: 0+1; 2+3; 4+5; 6+7; 8+0 => keep frame in shadowFrame + * B: 1+2; 3+4; 5+6; 7+8 => all good => keep date in shadowDate + * C: 0+1; 2+3; 4+5; 6+7; 8+15 => all good => keep date in shadowDate + * D: 0+1; 2+3; 4+5; 6+7; 0+1 => use shadowDate + * not seen:5+6; 7+1 + * values: + * 0:packet counter; 1:utc-msec; 2:lat,vh; 3:lon,dir, 4:alt,vv, 8=utc-date(day-hh-mm) + */ + +// single data structure, search restarts after decoder change +static struct st_dfmstat { + int idcnt0; + int idcnt1; + int lastfrid; + int lastfrcnt; + uint8_t start[50]; + uint16_t dat[50*2]; + uint8_t cnt[50*2]; + uint16_t good; + uint32_t datesec; + uint8_t frame; + uint16_t msec; + uint8_t nameregok; + uint8_t nameregtop; + uint8_t lastdat; + uint8_t cycledone; // 0=no; 1=OK, 2=partially/with errors + float meas[5+2]; +} dfmstate; + +decoderSetupCfg DFMSetupCfg { + .bitrate = 2500, + // continuous mode + // Enable auto-AFC, auto-AGC, RX Trigger by preamble ???? + .rx_cfg = 0x1E, + .sync_cfg = 0x70, + .sync_len = 2, + .sync_data = (const uint8_t *)"\xAA\xAA", + .preamble_cfg = 0xA8, +}; + +int DFM::setup(float frequency, int type) +{ + stype = type; +#if DFM_DEBUG + Serial.printf("Setup sx1278 for DFM sonde (type=%d)\n", stype); +#endif + if(sx1278.ON()!=0) { + DFM_DBG(Serial.println("Setting SX1278 power on FAILED")); + return 1; + } + + if(DecoderBase::setup(DFMSetupCfg, sonde.config.dfm.agcbw, sonde.config.dfm.rxbw) != 0) { + return 1; + } +#if 0 + // This is now all done by the generic setup method in base class + if(sx1278.setFSK()!=0) { + DFM_DBG(Serial.println("Setting FSM mode FAILED")); + return 1; + } + if(sx1278.setBitrate(2500)!=0) { + DFM_DBG(Serial.println("Setting bitrate 2500bit/s FAILED")); + return 1; + } + if(sx1278.setAFCBandwidth(sonde.config.dfm.agcbw)!=0) { + DFM_DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", sonde.config.dfm.agcbw)); + return 1; + } + if(sx1278.setRxBandwidth(sonde.config.dfm.rxbw)!=0) { + DFM_DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", sonde.config.dfm.rxbw)); + return 1; + } + { + if(sx1278.setRxConf(0x1E)!=0) { + DFM_DBG(Serial.println("Setting RX Config FAILED")); + return 1; + } + // working with continuous RX + const char *SYNC="\xAA\xAA"; + if(sx1278.setSyncConf(0x70, 2, (const uint8_t *)SYNC)!=0) { + DFM_DBG(Serial.println("Setting SYNC Config FAILED")); + return 1; + } + if(sx1278.setPreambleDetect(0xA8)!=0) { + //if(sx1278.setPreambleDetect(0x9F)!=0) { + DFM_DBG(Serial.println("Setting PreambleDetect FAILED")); + return 1; + } + } +#endif + if(sx1278.setPacketConfig(0x08, 0x40)!=0) { + DFM_DBG(Serial.println("Setting Packet config FAILED")); + return 1; + } + sx1278.setPayloadLength(0); // infinite for now... + Serial.print("DFM: setting RX frequency to "); + Serial.println(frequency); + + int retval = sx1278.setFrequency(frequency); + sx1278.clearIRQFlags(); + + // Do this only once in setup in continous mode + sx1278.writeRegister(REG_OP_MODE, FSK_RX_MODE); + + memset((void *)&dfmstate, 0, sizeof(dfmstate)); + DFM_DBG(Serial.println("Setting SX1278 config for DFM finished\n"); Serial.println()); + return retval; +} + + +#define bitpick(value,bitpos) (((value)>>(7-(bitpos)))&0x01) +// Input: str: packed data, MSB first +void DFM::deinterleave(uint8_t *str, int L, uint8_t *block) { + int i, j; + for (j = 0; j < B; j++) { // L = 7 (CFG), 13 (DAT1, DAT2) + for (i = 0; i < L; i++) { + block[B*i+j] = bitpick( str[(L*j+i)/8], (L*j+i)&7 )?0:1; + } + } +} + +uint32_t DFM::bits2val(const uint8_t *bits, int len) { + uint32_t val = 0; + for (int j = 0; j < len; j++) { + val |= (bits[j] << (len-1-j)); + } + return val; +} + +// Error correction for hamming code +// returns 0: ok >0: 1 error was corrected -1: uncorrectable error +int DFM::check(uint8_t code[8]) { + int i, j; + uint32_t synval = 0; + uint8_t syndrom[4]; + int ret=0; + + for (i = 0; i < 4; i++) { + syndrom[i] = 0; + for (j = 0; j < 8; j++) { + syndrom[i] ^= H[i][j] & code[j]; + } + } + synval = bits2val(syndrom, 4); + if (synval) { + ret = -1; + for (j = 0; j < 8; j++) { // 1-bit-error + if (synval == He[j]) { // reicht auf databits zu pruefen, d.h. + ret = j+1; // (systematischer Code) He[0..3] + break; + } + } + } + else ret = 0; + if (ret > 0) code[ret-1] ^= 0x1; + + return ret; +} + +// Extended (8,4) Hamming code +// Return number of corrected bits, -1 if uncorrectable error +int DFM::hamming(uint8_t *ham, int L, uint8_t *sym) { + int i, j; + int ret = 0; // DFM: length L = 7 or 13 + for (i = 0; i < L; i++) { // L bytes (4bit data, 4bit parity) + if (use_ecc) { + int res = check(ham+8*i); + if( res<0 ) ret = -1; + else if ( ret >= 0 && res > 0 ) ret++; + } + // systematic Hamming code: copy bits 0..3 + for (j = 0; j < 4; j++) { + sym[4*i+j] = ham[8*i+j]; + } + } + return ret; +} + +DFM::DFM() { +} + +void DFM::printRaw(const char *label, int len, int ret, const uint8_t *data) +{ + Serial.print(label); Serial.print("("); + Serial.print(ret); + Serial.print("):"); + int i; + for(i=0; i DFM6 + "PS15", // 07 => PS15 (untested) + "", "", + "DFM9", // 0A => DFM9 + "DF17", // 0B => DFM17? + "DF9P", // 0C => DFM9P or DFM17 test + "DF17", // 0D => DFM17 + "", "" +}; + +void DFM::killid() { + SondeData *sd = &(sonde.si()->d); + sd->validID = false; + *(sd->id) = 0; + *(sd->ser) = 0; + memset((void *)&dfmstate, 0, sizeof(dfmstate)); +} + +#define DFMIDTHRESHOLD 2 +/* inspired by oe5dxl's finddnmae in sondeudp.c of dxlaprs */ +void DFM::finddfname(uint8_t *b) +{ + uint8_t st; + uint32_t thres; + uint32_t i; + uint8_t ix; + uint16_t d; + SondeData *sd = &(sonde.si()->d); + + st = b[0]; /* frame start byte */ + ix = b[3]; /* hi/lo part of ser; (LSB due to our bitsToBytes...) */ + d = (b[1]<<8) + b[2]; /* data byte */ + /* find highest channel number single frame serial, + (2 frame serial will make a single serial too) */ + if(dfmstate.idcnt0 < DFMIDTHRESHOLD && dfmstate.idcnt1 < DFMIDTHRESHOLD) { + uint32_t v = (st<<20) | (d<<4) | ix; + if ( st > (dfmstate.lastfrid>>20) ) { + dfmstate.lastfrid = v; + Serial.print(" MAXCH:"); Serial.print(st); + dfmstate.lastfrcnt = 0; + } else if ( st == (dfmstate.lastfrid>>20) ) { + /* same id found */ + if (v == dfmstate.lastfrid) { + ++dfmstate.lastfrcnt; + thres = DFMIDTHRESHOLD * 2; + /* may be a 2 frame serial so increase safety level */ + if (ix <= 1) thres *= 2; + /* may be not a dfm6 so increase safety level */ + if ( (st>>4) != 6) thres *= 2; + if (dfmstate.lastfrcnt >= thres) { + /* id found */ + if (dfmstate.lastfrcnt == thres) { + uint32_t id = ((st&0x0F)<<20) | (d<<4) | ix; + uint32_t chkid = id; + int i; + /* check validity */ + for(i=0; i<6; i++) { + if((chkid&0x0f)>9) { break; /* not ok */ } + chkid >>= 4; + } + if(i==6) { + snprintf(sd->id, 10, "D%x ", id); + memcpy(sd->ser, sd->id+1, 9); + sd->validID = true; + sd->subtype = (st>>4)&0x0F; + strncpy(sd->typestr, typestr[ (st>>4)&0x0F ], 5); + return; + } + dfmstate.lastfrcnt = 0; + Serial.print(" NOT NUMERIC SERIAL"); + } + //anonym->idtime = osic_time(); + } else { + Serial.print(" MAXCHCNT/SECLVL:"); + Serial.print(dfmstate.lastfrcnt); + Serial.print("/"); + Serial.print(thres); + } + } else { + dfmstate.lastfrid = v; /* not stable ser */ + dfmstate.lastfrcnt = 0UL; + } + } + } /*find highest channel number single frame serial */ + + i = 0; + while (iid); + memcpy(sd->ser, sd->id+1, 9); + sd->validID = true; + sd->subtype = (st>>4)&0x0F; + strncpy(sd->typestr, typestr[ (st>>4)&0x0F ], 5); + } + if(dfmstate.nameregok==i) { + Serial.print(" ID OK"); + // idtime = .... /* TODO */ + } + } + } else { + /* data changed so not ser */ + dfmstate.cnt[2*i] = 0; + dfmstate.cnt[2*i+1] = 0; + if(dfmstate.nameregok == i) { /* found id wrong */ + dfmstate.idcnt0 = 0; + dfmstate.idcnt1 = 0; + } + } + } else if (ix<=1) { /* add new entry for possible ID */ + dfmstate.start[dfmstate.nameregtop] = st; + dfmstate.cnt[2*dfmstate.nameregtop] = 0; + dfmstate.cnt[2*dfmstate.nameregtop+1] = 0; + dfmstate.cnt[2*dfmstate.nameregtop+ix] = 1; + dfmstate.dat[2*dfmstate.nameregtop+ix] = d; + if(dfmstate.nameregtop<49) dfmstate.nameregtop++; + } +} + +static float get_Temp() { + SondeData *si = &(sonde.si()->d); + if(!si->validID) { // type not yet known, so don't try to decode + return NAN; + } + float f = dfmstate.meas[0], + f1 = dfmstate.meas[3], + f2 = dfmstate.meas[4]; + if(si->subtype >= 0x0C) { + f = dfmstate.meas[1]; + f1 = dfmstate.meas[5]; + f2 = dfmstate.meas[6]; + } + Serial.printf("Meas: %f %f %f\n", f, f1, f2); + // as in autorx / dfm + float BB0 = 3260.0; // B/Kelvin, fit -55C..+40C + float T0 = 25 + 273.15; // t0=25C + float R0 = 5.0e3; // R0=R25=5k + float Rf = 220e3; // Rf = 220k + float g = f2/Rf; + float R = (f-f1) / g; // meas[0,3,4] > 0 ? + float T = 0; // T/Kelvin + if (f*f1*f2 == 0) R = 0; + if (R > 0) T = 1/(1/T0 + 1/BB0 * log(R/R0)); + T = T - 273.15; // Celsius + if(T<-100 || T>50) { + Serial.printf("Temperature invalid: %f\n", T); + return NAN; + } + return T; +} + +void DFM::decodeCFG(uint8_t *cfg) +{ + SondeData *si = &(sonde.si()->d); + // new ID + finddfname(cfg); + // get meas + uint8_t conf_id = (*cfg)>>4; + if(conf_id<=6) { + uint32_t val = (cfg[1]<<12) | (cfg[2]<<4) | cfg[3]; + uint8_t exp = cfg[0] & 0xF; + dfmstate.meas[conf_id] = val / (float)(1<validID && si->subtype>=0x0A) { + // otherwise don't try, as we might not have the right type yet... + int cid = (si->subtype >= 0x0C) ? 0x7 : 0x5; + if(conf_id == cid) { + uint16_t val = cfg[1]<<8 | cfg[2]; + si->batteryVoltage = val / 1000.0; + Serial.printf("battery: %f\n", si->batteryVoltage); + } + } +} + +#if 0 +// not used any more +static int bitCount(int x) { + int m4 = 0x1 | (0x1<<8) | (0x1<<16) | (0x1<<24); + int m1 = 0xFF; + int s4 = (x&m4) + ((x>>1)&m4) + ((x>>2)&m4) + ((x>>3)&m4) + ((x>>4)&m4) + ((x>>5)&m4) + ((x>>6)&m4) + ((x>>7)&m4); + int s1 = (s4&m1) + ((s4>>8)&m1) + ((s4>>16)&m1) + ((s4>>24)&m1); + return s1; +} +#endif + +uint16_t MON[]={0,0,31,59,90,120,151,181,212,243,273,304,334}; + +void DFM::decodeDAT(uint8_t *dat) +{ + // TODO: Here we need to work on a shadow copy of SondeData in order to prevent concurrent changes while using data in main loop + SondeData *si = &(sonde.si()->d); + Serial.print(" DAT["); Serial.print(dat[6]); Serial.print("]: "); + + // We handle this case already here, because we need to update dfmstate.datesec before the cycle complete handling + if( dat[6]==8 ) { + int y = (dat[0]<<4) + (dat[1]>>4); + int m = dat[1]&0x0F; + int d = dat[2]>>3; + int h = ((dat[2]&0x07)<<2) + (dat[3]>>6); + int mi = (dat[3]&0x3F); + Serial.printf("Date: %04d-%02d-%02d %02d:%02dz ", y, m, d, h, mi); + si->sats = dat[4]; + si->validPos |= 0x40; + // convert to unix time + int tt = (y-1970)*365 + (y-1969)/4; // days since 1970 + if(m<=12) { tt += MON[m]; if((y%4)==0 && m>2) tt++; } + tt = (tt+d-1)*(60*60*24) + h*3600 + mi*60; + // If we get a time stamp much different to the previously received one, kill the ID. + // most likely, we have a new sonde now, so wait for the new ID. + if(tt-dfmstate.datesec > MAXIDAGE) killid(); + dfmstate.datesec = tt; + dfmstate.good |= 0x100; + } + else if( dat[6]>8 ) return; // we ignore those... + + /* Here we update data that should be updated only after receiving a "complete" frame (mainly for consistent SondeHub exports) + * We do this (a) when there is a DAT8 block and (b) when there is wrap from DAT7 to DAT0, for these fields: + * => frame + * => vframe (only used for SondeHub as virtual frame number) + * => time (calculated with using date and msec) + * [assuming that if there is no DAT8, then the date value did not change.] + */ + + if( dat[6]==8 || dat[6] < dfmstate.lastdat) { // After DAT8, or after a "warp around" + if( dfmstate.good&1 ) si->frame = dfmstate.frame; + if( (dfmstate.good&0x102)==0x102 ) { + si->time = dfmstate.datesec + dfmstate.msec/1000; + // Lets be consistent with autorx: the timestamp uses the msec value truncated to seconds, + // whereas the virtual frame number for DFM uses the msec value rounded to full seconds. + // Actually, tt is real UTC, and the transformation to GPS seconds lacks adjusting for leap seconds + si->vframe = dfmstate.datesec + (dfmstate.msec+500)/1000 - 315964800; + } + // All fields updated? 1=OK, 2=with errors + Serial.printf("Cycle done: good is %x\n", dfmstate.good); + si->temperature = get_Temp(); + Serial.printf("Temp: %f\n", si->temperature); + dfmstate.cycledone = ((dfmstate.good&0x11F)==0x11F) ? 1 : 2; + dfmstate.good = 0; + dfmstate.lastdat = 0; + } else { + dfmstate.lastdat = dat[6]; + } + dfmstate.good |= (1<sats = bitCount(tmp); + } + break; + case 2: + { + float lat, vh; + lat = (int32_t)(((uint32_t)dat[0]<<24) + ((uint32_t)dat[1]<<16) + ((uint32_t)dat[2]<<8) + ((uint32_t)dat[3])); + vh = ((uint16_t)dat[4]<<8) + dat[5]; + Serial.print("GPS-lat: "); Serial.print(lat*0.0000001); + Serial.print(", hor-V: "); Serial.print(vh*0.01); + lat = lat*0.0000001; + if( lat!=0 && si->lat!=0 && abs(lat-si->lat)>.25 ) killid(); + si->lat = lat; + si->hs = vh*0.01; + if(lat!=0 || vh!=0) si->validPos |= 0x11; else si->validPos &= ~0x11; + } + break; + case 3: + { + float lon, dir; + lon = (int32_t)(((uint32_t)dat[0]<<24) + ((uint32_t)dat[1]<<16) + ((uint32_t)dat[2]<<8) + (uint32_t)dat[3]); + dir = ((uint16_t)dat[4]<<8) + dat[5]; + lon = lon*0.0000001; + if( lon!=0 && si->lon!=0 && abs(lon-si->lon)>.25 ) killid(); + si->lon = lon; + si->dir = dir*0.01; + Serial.print("GPS-lon: "); Serial.print(si->lon); + Serial.print(", dir: "); Serial.print(si->dir); + if(lon != 0 || dir != 0) si->validPos |= 0x22; else si->validPos &= ~0x22; + } + break; + case 4: + { + float alt, vv; + alt = ((uint32_t)dat[0]<<24) + ((uint32_t)dat[1]<<16) + ((uint32_t)dat[2]<<8) + dat[3]; + vv = (int16_t)( ((int16_t)dat[4]<<8) | dat[5] ); + Serial.print("GPS-height: "); Serial.print(alt*0.01); + Serial.print(", vv: "); Serial.print(vv*0.01); + si->alt = alt*0.01; + si->vs = vv*0.01; + if(alt!=0 || vv != 0) si->validPos |= 0x0C; else si->validPos &= ~0x0C; + } + break; + case 8: + // handled above + break; + default: + Serial.print("(?)"); + break; + } +} + + +void DFM::bitsToBytes(uint8_t *bits, uint8_t *bytes, int len) +{ + int i; + for(i=0; i 01 or 10 => 1, otherweise => 0 + // not here: (10=>1, 01=>0)!!! rxbyte = rxbyte ^ d; + } + // + if(rxsearching) { + if( rxdata == 0x6566A5AA || rxdata == 0x9A995A55 ) { + rxsearching = false; + rxbitc = 0; + rxp = 0; + rxbyte = 0; + rssi=sx1278.getRSSI(); + fei=sx1278.getFEI(); + afc=sx1278.getAFC(); + sonde.si()->rssi = rssi; + sonde.si()->afc = afc; + invers = (rxdata == 0x6566A5AA)?1:0; + } + } else { + rxbitc = (rxbitc+1)%16; // 16; + if(rxbitc == 0) { // got 8 data bit + if(invers) rxbyte=~rxbyte; + data[rxp++] = rxbyte&0xff; // (rxbyte>>1)&0xff; + if(rxp>=DFM_FRAMELEN) { + rxsearching = true; + //Serial.println("Got a DFM frame!"); + Serial.print("[RSSI="); Serial.print(rssi); + Serial.print(" FEI="); Serial.print(fei); + Serial.print(" AFC="); Serial.print(afc); Serial.print("] "); + decodeFrameDFM(data); + haveNewFrame = 1; + } + } + } + } + return 0; +} + +int DFM::receive() { + int rxframes = 5; // UP TO 5 frames, stop at type 8 frame + + // tentative continuous RX version... + unsigned long t0 = millis(); + dfmstate.cycledone = 0; + while( ( millis() - t0 ) < 1300 ) { + uint8_t value = sx1278.readRegister(REG_IRQ_FLAGS2); + if ( bitRead(value, 7) ) { + Serial.println("FIFO full"); + } + if ( bitRead(value, 4) ) { + Serial.println("FIFO overflow"); + // new: (maybe clear only overflow??) TODO + sx1278.clearIRQFlags(); + } + if ( bitRead(value, 2) == 1 ) { + Serial.println("FIFO: payload ready()"); + // does not make much sence? (from m10): TODO + // ??????? sx1278.clearIRQFlags(); + } + if(bitRead(value, 6) == 0) { // while FIFO not empty + byte data = sx1278.readRegister(REG_FIFO); + processDFMdata(data); + value = sx1278.readRegister(REG_IRQ_FLAGS2); + } else { + if(haveNewFrame) { + //Serial.printf("DFM::receive(): new frame complete after %ldms\n", millis()-t0); + haveNewFrame = 0; + rxframes--; + // OK: All DAT frames (0/1/2/3/4/8) have been received in the last cycle + if(dfmstate.cycledone==1) return RX_OK; + if(dfmstate.cycledone>1 || rxframes==0) return RX_ERROR; + } + delay(2); + } + } + return rxframes == 5 ? RX_TIMEOUT : RX_ERROR; +} + +int DFM::decodeFrameDFM(uint8_t *data) { + deinterleave(data, 7, hamming_conf); + deinterleave(data+7, 13, hamming_dat1); + deinterleave(data+20, 13, hamming_dat2); + + int ret0 = hamming(hamming_conf, 7, block_conf); + int ret1 = hamming(hamming_dat1, 13, block_dat1); + int ret2 = hamming(hamming_dat2, 13, block_dat2); + //Serial.printf("Hamming returns %d %d %d -- %d\n", ret0, ret1, ret2, ret0|ret1|ret2); + + byte byte_conf[4], byte_dat1[7], byte_dat2[7]; + bitsToBytes(block_conf, byte_conf, 7); + bitsToBytes(block_dat1, byte_dat1, 13); + bitsToBytes(block_dat2, byte_dat2, 13); + + printRaw("CFG", 7, ret0, byte_conf); + printRaw("DAT", 13, ret1, byte_dat1); + printRaw("DAT", 13, ret2, byte_dat2); + if (ret0>=0) decodeCFG(byte_conf); + if (ret1>=0 && ret1<=4) decodeDAT(byte_dat1); + if (ret2>=0 && ret2<=4) decodeDAT(byte_dat2); + Serial.println(""); + // Consistent with autorx: If more than 4 corrected bit errors in DAT block, assume it is possibly corrupt and + // don't treat it as a correct frame (ttgo display shows data anyway, but it is not sent to external sites) + if(ret1>4 || ret2>4) return RX_ERROR; + return (ret0|ret1|ret2)>=0 ? RX_OK : RX_ERROR; +} + +// moved to a single function in Sonde(). This function can be used for additional +// processing here, that takes too long for doing in the RX task loop +int DFM::waitRXcomplete() { + return 0; +} + +DFM dfm = DFM(); diff --git a/RX_FSK/src/DFM.h b/RX_FSK/src/DFM.h new file mode 100644 index 0000000..0d690bb --- /dev/null +++ b/RX_FSK/src/DFM.h @@ -0,0 +1,74 @@ +/* + * DFM.h + * Functions for decoding DFM sondes with SX127x chips + * Copyright (C) 2019 Hansi Reiser, dl9rdz + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef DFM_h +#define DFM_h + +#include +#include +#include +#ifndef inttypes_h + #include +#endif +#include "DecoderBase.h" + +#define DFM_NORMAL 0 +#define DFM_INVERSE 1 + +/* Main class */ +class DFM : public DecoderBase +{ +private: + int stype; + char *stypename=NULL; + + void deinterleave(uint8_t *str, int L, uint8_t *block); + uint32_t bits2val(const uint8_t *bits, int len); + int check(uint8_t code[8]); + int hamming(uint8_t *ham, int L, uint8_t *sym); + void printRaw(const char *prefix, int len, int ret, const uint8_t* data); + void finddfname(uint8_t *cfg); + void decodeCFG(uint8_t *cfg); + void decodeDAT(uint8_t *dat); + void bitsToBytes(uint8_t *bits, uint8_t *bytes, int len); + int processDFMdata(uint8_t dt); + int decodeFrameDFM(uint8_t *data); + void killid(); + + +#define B 8 +#define S 4 + uint8_t hamming_conf[ 7*B]; // 7*8=56 + uint8_t hamming_dat1[13*B]; // 13*8=104 + uint8_t hamming_dat2[13*B]; + + uint8_t block_conf[ 7*S]; // 7*4=28 + uint8_t block_dat1[13*S]; // 13*4=52 + uint8_t block_dat2[13*S]; + + uint8_t H[4][8] = // extended Hamming(8,4) particy check matrix + {{ 0, 1, 1, 1, 1, 0, 0, 0}, + { 1, 0, 1, 1, 0, 1, 0, 0}, + { 1, 1, 0, 1, 0, 0, 1, 0}, + { 1, 1, 1, 0, 0, 0, 0, 1}}; + uint8_t He[8] = { 0x7, 0xB, 0xD, 0xE, 0x8, 0x4, 0x2, 0x1}; // Spalten von H: + // 1-bit-error-Syndrome + +public: + DFM(); + // main decoder API + int setup(float frequency, int type); + int receive(); + int waitRXcomplete(); + + int use_ecc = 1; +}; + +extern DFM dfm; + +#endif diff --git a/RX_FSK/src/DecoderBase.cpp b/RX_FSK/src/DecoderBase.cpp new file mode 100644 index 0000000..86a4e00 --- /dev/null +++ b/RX_FSK/src/DecoderBase.cpp @@ -0,0 +1,51 @@ + +#include "DecoderBase.h" +#include "SX1278FSK.h" +#include "Sonde.h" + +#define DECODERBASE_DEBUG 1 + +#if DECODERBASE_DEBUG +#define DBG(x) x +#else +#define DBG(x) +#endif + + +int DecoderBase::setup(decoderSetupCfg &setupcfg, uint16_t agcbw, uint16_t rxbw) { + if(sx1278.setFSK()!=0) { + DBG(Serial.println("Setting FSK mode FAILED")); + return 1; + } + if(sx1278.setBitrate(setupcfg.bitrate)!=0) { + DBG(Serial.println("Setting bitrate FAILED")); + return 1; + } +#if DECODERBASE_DEBUG + float br = sx1278.getBitrate(); + Serial.print("Exact bitrate is "); + Serial.println(br); +#endif + if(sx1278.setAFCBandwidth(agcbw)!=0) { + DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", agcbw)); + return 1; + } + if(sx1278.setRxBandwidth(rxbw)!=0) { + DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", rxbw)); + return 1; + } + + if(sx1278.setRxConf(setupcfg.rx_cfg)!=0) { + DBG(Serial.println("Setting RX Config FAILED")); + return 1; + } + if(sx1278.setSyncConf(setupcfg.sync_cfg, setupcfg.sync_len, setupcfg.sync_data)!=0) { + DBG(Serial.println("Setting SYNC Config FAILED")); + return 1; + } + if(sx1278.setPreambleDetect(setupcfg.preamble_cfg)!=0) { + DBG(Serial.println("Setting PreambleDetect FAILED")); + return 1; + } + return 0; +} diff --git a/RX_FSK/src/DecoderBase.h b/RX_FSK/src/DecoderBase.h new file mode 100644 index 0000000..d1867ba --- /dev/null +++ b/RX_FSK/src/DecoderBase.h @@ -0,0 +1,38 @@ + +#ifndef DECODER_BASE_H +#define DECODER_BASE_H + +#include +#include +#include +#ifndef inttypes_h + #include +#endif +#include "Sonde.h" + +typedef struct _decoderSetupCfg { + uint16_t bitrate; + //uint16_t agcbw; + //uint16_t rxbw; + uint8_t rx_cfg; + uint8_t sync_cfg; + uint8_t sync_len; + const uint8_t *sync_data; + uint8_t preamble_cfg; +} decoderSetupCfg; + +/* Generic base class for all sonde decoders */ +class DecoderBase +{ +protected: + +public: + int setup(decoderSetupCfg &setupcfg, uint16_t agcbw, uint16_t rxbw); + virtual int setup(float frequency, int type=0) = 0; + + virtual int receive() = 0; + virtual int waitRXcomplete() = 0; +}; + + +#endif diff --git a/RX_FSK/src/DefaultFonts.c b/RX_FSK/src/DefaultFonts.c new file mode 100644 index 0000000..665c6ac --- /dev/null +++ b/RX_FSK/src/DefaultFonts.c @@ -0,0 +1,367 @@ +// SPDX-License-Identifier: GPL-3.0 +// original source: https://github.com/Nkawu/TFT_22_ILI9225 + + +#ifdef __AVR__ + #include +#elif defined(ESP8266) || defined(ESP32) + #include +#endif + +#if defined(ARDUINO_ARCH_SAM) || defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_STM32) || defined(ARDUINO_ARCH_STM32F1) || defined(STM32F1) || defined(ESP32) + #define PROGMEM + #define fontdatatype const char +#else + #define fontdatatype const uint8_t +#endif + +//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 +//MikroElektronika 2011 +//http://www.mikroe.com + +//GLCD FontName : Terminal6x8 +//GLCD FontSize : 6 x 8 + +fontdatatype Terminal6x8[] PROGMEM = { + 0x06, 0x08, 0x20, 0x60, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 0x05, 0x00, 0x00, 0x06, 0x5F, 0x06, 0x00, // Code for char ! + 0x06, 0x00, 0x07, 0x03, 0x00, 0x07, 0x03, // Code for char " + 0x06, 0x00, 0x24, 0x7E, 0x24, 0x7E, 0x24, // Code for char # + 0x05, 0x00, 0x24, 0x2B, 0x6A, 0x12, 0x00, // Code for char $ + 0x06, 0x00, 0x63, 0x13, 0x08, 0x64, 0x63, // Code for char % + 0x06, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, // Code for char & + 0x04, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, // Code for char ' + 0x04, 0x00, 0x00, 0x3E, 0x41, 0x00, 0x00, // Code for char ( + 0x04, 0x00, 0x00, 0x41, 0x3E, 0x00, 0x00, // Code for char ) + 0x06, 0x00, 0x08, 0x3E, 0x1C, 0x3E, 0x08, // Code for char * + 0x06, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, // Code for char + + 0x04, 0x00, 0x00, 0xE0, 0x60, 0x00, 0x00, // Code for char , + 0x06, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // Code for char - + 0x04, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // Code for char . + 0x06, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, // Code for char / + 0x06, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, // Code for char 0 + 0x05, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // Code for char 1 + 0x06, 0x00, 0x62, 0x51, 0x49, 0x49, 0x46, // Code for char 2 + 0x06, 0x00, 0x22, 0x49, 0x49, 0x49, 0x36, // Code for char 3 + 0x06, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, // Code for char 4 + 0x06, 0x00, 0x2F, 0x49, 0x49, 0x49, 0x31, // Code for char 5 + 0x06, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, // Code for char 6 + 0x06, 0x00, 0x01, 0x71, 0x09, 0x05, 0x03, // Code for char 7 + 0x06, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, // Code for char 8 + 0x06, 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, // Code for char 9 + 0x04, 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00, // Code for char : + 0x04, 0x00, 0x00, 0xEC, 0x6C, 0x00, 0x00, // Code for char ; + 0x05, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // Code for char < + 0x06, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, // Code for char = + 0x06, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, // Code for char > + 0x06, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, // Code for char ? + 0x06, 0x00, 0x3E, 0x41, 0x5D, 0x55, 0x1E, // Code for char @ + 0x06, 0x00, 0x7E, 0x11, 0x11, 0x11, 0x7E, // Code for char A + 0x06, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, // Code for char B + 0x06, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, // Code for char C + 0x06, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E, // Code for char D + 0x06, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, // Code for char E + 0x06, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, // Code for char F + 0x06, 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A, // Code for char G + 0x06, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, // Code for char H + 0x05, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, // Code for char I + 0x06, 0x00, 0x30, 0x40, 0x40, 0x40, 0x3F, // Code for char J + 0x06, 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, // Code for char K + 0x06, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, // Code for char L + 0x06, 0x00, 0x7F, 0x02, 0x04, 0x02, 0x7F, // Code for char M + 0x06, 0x00, 0x7F, 0x02, 0x04, 0x08, 0x7F, // Code for char N + 0x06, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, // Code for char O + 0x06, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, // Code for char P + 0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, // Code for char Q + 0x06, 0x00, 0x7F, 0x09, 0x09, 0x19, 0x66, // Code for char R + 0x06, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, // Code for char S + 0x06, 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, // Code for char T + 0x06, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, // Code for char U + 0x06, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, // Code for char V + 0x06, 0x00, 0x3F, 0x40, 0x3C, 0x40, 0x3F, // Code for char W + 0x06, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, // Code for char X + 0x06, 0x00, 0x07, 0x08, 0x70, 0x08, 0x07, // Code for char Y + 0x05, 0x00, 0x71, 0x49, 0x45, 0x43, 0x00, // Code for char Z + 0x05, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, // Code for char [ + 0x06, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, // Code for char BackSlash + 0x05, 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, // Code for char ] + 0x06, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, // Code for char ^ + 0x06, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // Code for char _ + 0x04, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, // Code for char ` + 0x06, 0x00, 0x20, 0x54, 0x54, 0x54, 0x78, // Code for char a + 0x06, 0x00, 0x7F, 0x44, 0x44, 0x44, 0x38, // Code for char b + 0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, // Code for char c + 0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0x7F, // Code for char d + 0x06, 0x00, 0x38, 0x54, 0x54, 0x54, 0x08, // Code for char e + 0x05, 0x00, 0x08, 0x7E, 0x09, 0x09, 0x00, // Code for char f + 0x06, 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, // Code for char g + 0x05, 0x00, 0x7F, 0x04, 0x04, 0x78, 0x00, // Code for char h + 0x05, 0x00, 0x00, 0x00, 0x7D, 0x40, 0x00, // Code for char i + 0x05, 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, // Code for char j + 0x05, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, // Code for char k + 0x05, 0x00, 0x00, 0x00, 0x7F, 0x40, 0x00, // Code for char l + 0x06, 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78, // Code for char m + 0x05, 0x00, 0x7C, 0x04, 0x04, 0x78, 0x00, // Code for char n + 0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, // Code for char o + 0x06, 0x00, 0xFC, 0x44, 0x44, 0x44, 0x38, // Code for char p + 0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0xFC, // Code for char q + 0x06, 0x00, 0x44, 0x78, 0x44, 0x04, 0x08, // Code for char r + 0x06, 0x00, 0x08, 0x54, 0x54, 0x54, 0x20, // Code for char s + 0x05, 0x00, 0x04, 0x3E, 0x44, 0x24, 0x00, // Code for char t + 0x05, 0x00, 0x3C, 0x40, 0x20, 0x7C, 0x00, // Code for char u + 0x06, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, // Code for char v + 0x06, 0x00, 0x3C, 0x60, 0x30, 0x60, 0x3C, // Code for char w + 0x05, 0x00, 0x6C, 0x10, 0x10, 0x6C, 0x00, // Code for char x + 0x05, 0x00, 0x9C, 0xA0, 0x60, 0x3C, 0x00, // Code for char y + 0x05, 0x00, 0x64, 0x54, 0x54, 0x4C, 0x00, // Code for char z + 0x05, 0x00, 0x08, 0x3E, 0x41, 0x41, 0x00, // Code for char { + 0x04, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, // Code for char | + 0x06, 0x00, 0x00, 0x41, 0x41, 0x3E, 0x08, // Code for char } + 0x05, 0x00, 0x02, 0x01, 0x02, 0x01, 0x00, // Code for char ~ + 0x06, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C // Code for char  + }; + + +//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 +//MikroElektronika 2011 +//http://www.mikroe.com + +//GLCD FontName : Terminal11x16 +//GLCD FontSize : 11 x 16 + +fontdatatype Terminal11x16[] PROGMEM = { + 0x0B, 0x10, 0x20, 0x60, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, 0x33, 0xFF, 0x33, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! + 0x08, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " + 0x0B, 0x00, 0x02, 0x10, 0x1E, 0x90, 0x1F, 0xF0, 0x03, 0x7E, 0x02, 0x1E, 0x1E, 0x90, 0x1F, 0xF0, 0x03, 0x7E, 0x02, 0x1E, 0x00, 0x10, 0x00, // Code for char # + 0x09, 0x00, 0x00, 0x78, 0x04, 0xFC, 0x0C, 0xCC, 0x0C, 0xFF, 0x3F, 0xFF, 0x3F, 0xCC, 0x0C, 0xCC, 0x0F, 0x88, 0x07, 0x00, 0x00, 0x00, 0x00, // Code for char $ + 0x0B, 0x00, 0x30, 0x38, 0x38, 0x38, 0x1C, 0x38, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x38, 0x70, 0x38, 0x38, 0x38, 0x1C, 0x00, // Code for char % + 0x0A, 0x00, 0x00, 0x00, 0x1F, 0xB8, 0x3F, 0xFC, 0x31, 0xC6, 0x21, 0xE2, 0x37, 0x3E, 0x1E, 0x1C, 0x1C, 0x00, 0x36, 0x00, 0x22, 0x00, 0x00, // Code for char & + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' + 0x08, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x07, 0x38, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( + 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x20, 0x07, 0x38, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) + 0x09, 0x00, 0x00, 0x98, 0x0C, 0xB8, 0x0E, 0xE0, 0x03, 0xF8, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xB8, 0x0E, 0x98, 0x0C, 0x00, 0x00, 0x00, 0x00, // Code for char * + 0x09, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF0, 0x0F, 0xF0, 0x0F, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // Code for char + + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , + 0x09, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // Code for char - + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . + 0x0B, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, // Code for char / + 0x0B, 0xF8, 0x07, 0xFE, 0x1F, 0x06, 0x1E, 0x03, 0x33, 0x83, 0x31, 0xC3, 0x30, 0x63, 0x30, 0x33, 0x30, 0x1E, 0x18, 0xFE, 0x1F, 0xF8, 0x07, // Code for char 0 + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0E, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, // Code for char 1 + 0x0B, 0x1C, 0x30, 0x1E, 0x38, 0x07, 0x3C, 0x03, 0x3E, 0x03, 0x37, 0x83, 0x33, 0xC3, 0x31, 0xE3, 0x30, 0x77, 0x30, 0x3E, 0x30, 0x1C, 0x30, // Code for char 2 + 0x0B, 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x39, 0x7E, 0x1F, 0x3C, 0x0E, // Code for char 3 + 0x0B, 0xC0, 0x03, 0xE0, 0x03, 0x70, 0x03, 0x38, 0x03, 0x1C, 0x03, 0x0E, 0x03, 0x07, 0x03, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x03, 0x00, 0x03, // Code for char 4 + 0x0B, 0x3F, 0x0C, 0x7F, 0x1C, 0x63, 0x38, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0xE3, 0x38, 0xC3, 0x1F, 0x83, 0x0F, // Code for char 5 + 0x0B, 0xC0, 0x0F, 0xF0, 0x1F, 0xF8, 0x39, 0xDC, 0x30, 0xCE, 0x30, 0xC7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0x80, 0x1F, 0x00, 0x0F, // Code for char 6 + 0x0B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x0F, 0xC3, 0x03, 0xF3, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00, // Code for char 7 + 0x0B, 0x00, 0x0F, 0xBC, 0x1F, 0xFE, 0x39, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFE, 0x39, 0xBC, 0x1F, 0x00, 0x0F, // Code for char 8 + 0x0B, 0x3C, 0x00, 0x7E, 0x00, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x38, 0xC3, 0x1C, 0xC3, 0x0E, 0xE7, 0x07, 0xFE, 0x03, 0xFC, 0x00, // Code for char 9 + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x9C, 0x70, 0xFC, 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; + 0x09, 0x00, 0x00, 0xC0, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char < + 0x0A, 0x00, 0x00, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x00, 0x00, // Code for char = + 0x09, 0x00, 0x00, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char > + 0x0A, 0x1C, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x00, 0x83, 0x37, 0xC3, 0x37, 0xE3, 0x00, 0x77, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, // Code for char ? + 0x0B, 0xF8, 0x0F, 0xFE, 0x1F, 0x07, 0x18, 0xF3, 0x33, 0xFB, 0x37, 0x1B, 0x36, 0xFB, 0x37, 0xFB, 0x37, 0x07, 0x36, 0xFE, 0x03, 0xF8, 0x01, // Code for char @ + 0x0A, 0x00, 0x38, 0x00, 0x3F, 0xE0, 0x07, 0xFC, 0x06, 0x1F, 0x06, 0x1F, 0x06, 0xFC, 0x06, 0xE0, 0x07, 0x00, 0x3F, 0x00, 0x38, 0x00, 0x00, // Code for char A + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFE, 0x39, 0xBC, 0x1F, 0x00, 0x0F, 0x00, 0x00, // Code for char B + 0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0x0C, 0x0C, 0x00, 0x00, // Code for char C + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, // Code for char D + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, // Code for char E + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // Code for char F + 0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x3F, 0xC6, 0x3F, 0x00, 0x00, // Code for char G + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char H + 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I + 0x0A, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00, // Code for char J + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00, // Code for char K + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, // Code for char L + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0x78, 0x00, 0x1E, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char M + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x0E, 0x00, 0x38, 0x00, 0xF0, 0x00, 0xC0, 0x03, 0x00, 0x07, 0x00, 0x1C, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char N + 0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, // Code for char O + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xC7, 0x01, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, // Code for char P + 0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x36, 0x07, 0x3E, 0x0E, 0x1C, 0xFC, 0x3F, 0xF0, 0x33, 0x00, 0x00, // Code for char Q + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x01, 0x83, 0x03, 0x83, 0x07, 0x83, 0x0F, 0xC7, 0x1D, 0xFE, 0x38, 0x7C, 0x30, 0x00, 0x00, // Code for char R + 0x0A, 0x3C, 0x0C, 0x7E, 0x1C, 0xE7, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x39, 0x8E, 0x1F, 0x0C, 0x0F, 0x00, 0x00, // Code for char S + 0x09, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T + 0x0A, 0xFF, 0x07, 0xFF, 0x1F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00, // Code for char U + 0x0A, 0x07, 0x00, 0x3F, 0x00, 0xF8, 0x01, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0xC0, 0x0F, 0xF8, 0x01, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x00, // Code for char V + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x1C, 0x00, 0x06, 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x1C, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char W + 0x0A, 0x03, 0x30, 0x0F, 0x3C, 0x1C, 0x0E, 0x30, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0x30, 0x03, 0x1C, 0x0E, 0x0F, 0x3C, 0x03, 0x30, 0x00, 0x00, // Code for char X + 0x0A, 0x03, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0xC0, 0x3F, 0xC0, 0x3F, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, // Code for char Y + 0x0A, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x3E, 0x03, 0x33, 0xC3, 0x31, 0xE3, 0x30, 0x33, 0x30, 0x1F, 0x30, 0x0F, 0x30, 0x03, 0x30, 0x00, 0x00, // Code for char Z + 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ + 0x0B, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, // Code for char BackSlash + 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] + 0x0B, 0x60, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, // Code for char ^ + 0x0B, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, // Code for char _ + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` + 0x0A, 0x00, 0x1C, 0x40, 0x3E, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, 0x00, // Code for char a + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00, // Code for char b + 0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xC0, 0x18, 0x80, 0x08, 0x00, 0x00, // Code for char c + 0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x30, 0xC0, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char d + 0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3B, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xC0, 0x13, 0x80, 0x01, 0x00, 0x00, // Code for char e + 0x08, 0xC0, 0x00, 0xC0, 0x00, 0xFC, 0x3F, 0xFE, 0x3F, 0xC7, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f + 0x0A, 0x80, 0x03, 0xC0, 0xC7, 0xE0, 0xCE, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xE6, 0xE0, 0x7F, 0xE0, 0x3F, 0x00, 0x00, // Code for char g + 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, // Code for char h + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x30, 0xEC, 0x3F, 0xEC, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x60, 0xC0, 0xEC, 0xFF, 0xEC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j + 0x09, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x03, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1C, 0x60, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char k + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l + 0x0A, 0xE0, 0x3F, 0xC0, 0x3F, 0xE0, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, // Code for char m + 0x0A, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, // Code for char n + 0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00, // Code for char o + 0x0A, 0xE0, 0xFF, 0xE0, 0xFF, 0x60, 0x0C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xE0, 0x1C, 0xC0, 0x0F, 0x80, 0x07, 0x00, 0x00, // Code for char p + 0x0A, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x0C, 0xE0, 0xFF, 0xE0, 0xFF, 0x00, 0x00, // Code for char q + 0x0A, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, // Code for char r + 0x08, 0xC0, 0x11, 0xE0, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x3F, 0x40, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s + 0x08, 0x60, 0x00, 0x60, 0x00, 0xFE, 0x1F, 0xFE, 0x3F, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t + 0x0A, 0xE0, 0x0F, 0xE0, 0x1F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0xE0, 0x3F, 0xE0, 0x3F, 0x00, 0x00, // Code for char u + 0x0A, 0x60, 0x00, 0xE0, 0x01, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x38, 0x00, 0x1E, 0x80, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00, // Code for char v + 0x0A, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x38, 0x00, 0x1C, 0xE0, 0x0F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0xE0, 0x1F, 0xE0, 0x07, 0x00, 0x00, // Code for char w + 0x09, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x1D, 0x80, 0x0F, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x1D, 0xE0, 0x38, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char x + 0x09, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x81, 0x80, 0xE7, 0x00, 0x7E, 0x00, 0x1E, 0x80, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y + 0x09, 0x60, 0x30, 0x60, 0x38, 0x60, 0x3C, 0x60, 0x36, 0x60, 0x33, 0xE0, 0x31, 0xE0, 0x30, 0x60, 0x30, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char z + 0x09, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x01, 0xFC, 0x1F, 0x7E, 0x3F, 0x07, 0x70, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, // Code for char { + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | + 0x09, 0x00, 0x00, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x07, 0x70, 0x7E, 0x3F, 0xFC, 0x1F, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } + 0x0A, 0x10, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x10, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00, // Code for char ~ + 0x0A, 0x00, 0x0F, 0x80, 0x0F, 0xC0, 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x60, 0x0C, 0xC0, 0x0C, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x00 // Code for char  + }; + + +//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 +//MikroElektronika 2011 +//http://www.mikroe.com + +//GLCD FontName : Terminal12x16 +//GLCD FontSize : 12 x 16 + +fontdatatype Terminal12x16[] PROGMEM = { + 0x0C, 0x10, 0x20, 0x60, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, 0x33, 0xFF, 0x33, 0xFF, 0x33, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! + 0x09, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " + 0x0C, 0x00, 0x02, 0x10, 0x1E, 0x90, 0x1F, 0xF0, 0x1F, 0xFE, 0x03, 0x7E, 0x1E, 0x9E, 0x1F, 0xF0, 0x1F, 0xFE, 0x03, 0x7E, 0x02, 0x1E, 0x00, 0x10, 0x00, // Code for char # + 0x0A, 0x00, 0x00, 0x78, 0x04, 0xFC, 0x0C, 0xFC, 0x0C, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xCC, 0x0F, 0xCC, 0x0F, 0x88, 0x07, 0x00, 0x00, 0x00, 0x00, // Code for char $ + 0x0C, 0x00, 0x30, 0x38, 0x38, 0x38, 0x3C, 0x38, 0x1E, 0x38, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x39, 0xF0, 0x38, 0x78, 0x38, 0x3C, 0x38, 0x1C, 0x00, // Code for char % + 0x0B, 0x00, 0x00, 0x00, 0x1F, 0xB8, 0x3F, 0xFC, 0x3F, 0xFE, 0x31, 0xE6, 0x37, 0xFE, 0x3F, 0x3E, 0x1E, 0x1C, 0x3E, 0x00, 0x36, 0x00, 0x22, 0x00, 0x00, // Code for char & + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' + 0x09, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0x07, 0x38, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( + 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x20, 0x07, 0x38, 0xFF, 0x3F, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) + 0x0A, 0x00, 0x00, 0x98, 0x0C, 0xB8, 0x0E, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xB8, 0x0E, 0x98, 0x0C, 0x00, 0x00, 0x00, 0x00, // Code for char * + 0x0A, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // Code for char + + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , + 0x0A, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // Code for char - + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . + 0x0C, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, // Code for char / + 0x0C, 0xF8, 0x07, 0xFE, 0x1F, 0xFE, 0x1F, 0x07, 0x3F, 0x83, 0x33, 0xC3, 0x31, 0xE3, 0x30, 0x73, 0x30, 0x3F, 0x38, 0xFE, 0x1F, 0xFE, 0x1F, 0xF8, 0x07, // Code for char 0 + 0x0B, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0E, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, // Code for char 1 + 0x0C, 0x1C, 0x30, 0x1E, 0x38, 0x1F, 0x3C, 0x07, 0x3E, 0x03, 0x3F, 0x83, 0x37, 0xC3, 0x33, 0xE3, 0x31, 0xF7, 0x30, 0x7F, 0x30, 0x3E, 0x30, 0x1C, 0x30, // Code for char 2 + 0x0C, 0x0C, 0x0C, 0x0E, 0x1C, 0x0F, 0x3C, 0xC7, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x39, 0xFF, 0x3F, 0x7E, 0x1F, 0x3C, 0x0E, // Code for char 3 + 0x0C, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0x78, 0x03, 0x3C, 0x03, 0x1E, 0x03, 0x0F, 0x03, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x03, 0x00, 0x03, // Code for char 4 + 0x0C, 0x3F, 0x0C, 0x7F, 0x1C, 0x7F, 0x3C, 0x63, 0x38, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0xE3, 0x38, 0xE3, 0x3F, 0xC3, 0x1F, 0x83, 0x0F, // Code for char 5 + 0x0C, 0xC0, 0x0F, 0xF0, 0x1F, 0xF8, 0x3F, 0xFC, 0x39, 0xDE, 0x30, 0xCF, 0x30, 0xC7, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0xC3, 0x3F, 0x80, 0x1F, 0x00, 0x0F, // Code for char 6 + 0x0C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x3F, 0xC3, 0x0F, 0xF3, 0x03, 0xFF, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00, // Code for char 7 + 0x0C, 0x00, 0x0F, 0xBC, 0x1F, 0xFE, 0x3F, 0xFF, 0x39, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFF, 0x39, 0xFE, 0x3F, 0xBC, 0x1F, 0x00, 0x0F, // Code for char 8 + 0x0C, 0x3C, 0x00, 0x7E, 0x00, 0xFF, 0x30, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x38, 0xC3, 0x3C, 0xC3, 0x1E, 0xE7, 0x0F, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x00, // Code for char 9 + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x9C, 0x70, 0xFC, 0x70, 0xFC, 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; + 0x0A, 0x00, 0x00, 0xC0, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0xF8, 0x07, 0x3C, 0x0F, 0x1E, 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char < + 0x0B, 0x00, 0x00, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x00, 0x00, // Code for char = + 0x0A, 0x00, 0x00, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char > + 0x0B, 0x1C, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x83, 0x37, 0xC3, 0x37, 0xE3, 0x37, 0xF7, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, // Code for char ? + 0x0C, 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1F, 0xF7, 0x3B, 0xFB, 0x37, 0xFB, 0x37, 0xFB, 0x37, 0xFB, 0x37, 0xFF, 0x37, 0xFF, 0x37, 0xFE, 0x03, 0xF8, 0x01, // Code for char @ + 0x0B, 0x00, 0x38, 0x00, 0x3F, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x06, 0x1F, 0x06, 0xFF, 0x06, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0x3F, 0x00, 0x38, 0x00, 0x00, // Code for char A + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFF, 0x39, 0xFE, 0x3F, 0xBC, 0x1F, 0x00, 0x0F, 0x00, 0x00, // Code for char B + 0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0x0E, 0x1C, 0x0C, 0x0C, 0x00, 0x00, // Code for char C + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, // Code for char D + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, // Code for char E + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // Code for char F + 0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x3F, 0xC7, 0x3F, 0xC6, 0x3F, 0x00, 0x00, // Code for char G + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char H + 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I + 0x0B, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00, // Code for char J + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x01, 0xF0, 0x03, 0xF8, 0x07, 0x3C, 0x0F, 0x1E, 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00, // Code for char K + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, // Code for char L + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xF8, 0x01, 0x7E, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char M + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x3E, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x1F, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char N + 0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, // Code for char O + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xC7, 0x01, 0xFF, 0x01, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, // Code for char P + 0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x36, 0x07, 0x3E, 0x0F, 0x3E, 0xFE, 0x3F, 0xFC, 0x3F, 0xF0, 0x33, 0x00, 0x00, // Code for char Q + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x03, 0x83, 0x07, 0x83, 0x0F, 0xC7, 0x1F, 0xFF, 0x3D, 0xFE, 0x38, 0x7C, 0x30, 0x00, 0x00, // Code for char R + 0x0B, 0x3C, 0x0C, 0x7E, 0x1C, 0xFF, 0x3C, 0xE7, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x39, 0xCF, 0x3F, 0x8E, 0x1F, 0x0C, 0x0F, 0x00, 0x00, // Code for char S + 0x0A, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T + 0x0B, 0xFF, 0x07, 0xFF, 0x1F, 0xFF, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00, // Code for char U + 0x0B, 0x07, 0x00, 0x3F, 0x00, 0xFF, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x00, 0x3E, 0xC0, 0x3F, 0xF8, 0x0F, 0xFF, 0x01, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x00, // Code for char V + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x1E, 0x80, 0x07, 0x80, 0x03, 0x80, 0x07, 0x00, 0x1E, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char W + 0x0B, 0x03, 0x30, 0x0F, 0x3C, 0x1F, 0x3E, 0x3C, 0x0F, 0xF0, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0x3C, 0x0F, 0x1F, 0x3E, 0x0F, 0x3C, 0x03, 0x30, 0x00, 0x00, // Code for char X + 0x0B, 0x03, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x3F, 0xC0, 0x3F, 0xF0, 0x3F, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, // Code for char Y + 0x0B, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x3E, 0x03, 0x3F, 0xC3, 0x33, 0xE3, 0x31, 0xF3, 0x30, 0x3F, 0x30, 0x1F, 0x30, 0x0F, 0x30, 0x03, 0x30, 0x00, 0x00, // Code for char Z + 0x09, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ + 0x0C, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x18, // Code for char BackSlash + 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] + 0x0C, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x70, 0x00, 0x60, 0x00, // Code for char ^ + 0x0C, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, // Code for char _ + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` + 0x0B, 0x00, 0x1C, 0x40, 0x3E, 0x60, 0x3F, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, 0x00, // Code for char a + 0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00, // Code for char b + 0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x18, 0x80, 0x08, 0x00, 0x00, // Code for char c + 0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x30, 0xE0, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, // Code for char d + 0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x3B, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x33, 0xC0, 0x13, 0x80, 0x01, 0x00, 0x00, // Code for char e + 0x09, 0xC0, 0x00, 0xC0, 0x00, 0xFC, 0x3F, 0xFE, 0x3F, 0xFF, 0x3F, 0xC7, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f + 0x0B, 0x80, 0x03, 0xC0, 0xC7, 0xE0, 0xCF, 0xE0, 0xCE, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xEE, 0xE0, 0xFF, 0xE0, 0x7F, 0xE0, 0x3F, 0x00, 0x00, // Code for char g + 0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, // Code for char h + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x30, 0xEC, 0x3F, 0xEC, 0x3F, 0xEC, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x60, 0xC0, 0xEC, 0xFF, 0xEC, 0xFF, 0xEC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j + 0x0A, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x3C, 0x60, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char k + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l + 0x0B, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, // Code for char m + 0x0B, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, // Code for char n + 0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00, // Code for char o + 0x0B, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x60, 0x1C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xE0, 0x1C, 0xE0, 0x1F, 0xC0, 0x0F, 0x80, 0x07, 0x00, 0x00, // Code for char p + 0x0B, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x1C, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x00, 0x00, // Code for char q + 0x0B, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, // Code for char r + 0x09, 0xC0, 0x11, 0xE0, 0x33, 0xE0, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x3F, 0x60, 0x3F, 0x40, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s + 0x09, 0x60, 0x00, 0x60, 0x00, 0xFE, 0x1F, 0xFE, 0x3F, 0xFE, 0x3F, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t + 0x0B, 0xE0, 0x0F, 0xE0, 0x1F, 0xE0, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0x00, 0x00, // Code for char u + 0x0B, 0x60, 0x00, 0xE0, 0x01, 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x38, 0x00, 0x3E, 0x80, 0x1F, 0xE0, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00, // Code for char v + 0x0B, 0xE0, 0x07, 0xE0, 0x1F, 0xE0, 0x3F, 0x00, 0x3C, 0xE0, 0x1F, 0xE0, 0x0F, 0xE0, 0x1F, 0x00, 0x3C, 0xE0, 0x3F, 0xE0, 0x1F, 0xE0, 0x07, 0x00, 0x00, // Code for char w + 0x0A, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3D, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3D, 0xE0, 0x38, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char x + 0x0A, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x81, 0xE0, 0xE7, 0x80, 0xFF, 0x00, 0x7E, 0x80, 0x1F, 0xE0, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y + 0x0A, 0x60, 0x30, 0x60, 0x38, 0x60, 0x3C, 0x60, 0x3E, 0x60, 0x37, 0xE0, 0x33, 0xE0, 0x31, 0xE0, 0x30, 0x60, 0x30, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, // Code for char z + 0x0A, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x01, 0xFC, 0x1F, 0xFE, 0x3F, 0x7F, 0x7F, 0x07, 0x70, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, // Code for char { + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | + 0x0A, 0x00, 0x00, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x07, 0x70, 0x7F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } + 0x0B, 0x10, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00, // Code for char ~ + 0x0B, 0x00, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0C, 0x70, 0x0C, 0x30, 0x0C, 0x70, 0x0C, 0xE0, 0x0C, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x00 // Code for char  + }; + + +//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 +//MikroElektronika 2011 +//http://www.mikroe.com + +//GLCD FontName : Trebuchet_MS16x21 +//GLCD FontSize : 16 x 21 + +fontdatatype Trebuchet_MS16x21[] PROGMEM = { + 0x10, 0x15, 0x2E, 0x0D, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . + 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0x1F, 0x00, 0xF0, 0x1F, 0x00, 0xFE, 0x0F, 0x80, 0xFF, 0x03, 0xF0, 0x7F, 0x00, 0xFE, 0x0F, 0x00, 0xFF, 0x03, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char / + 0x10, 0x00, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0xF0, 0xFF, 0x03, 0xFC, 0xFF, 0x07, 0xFE, 0xFF, 0x0F, 0x3E, 0x80, 0x0F, 0x0F, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1E, 0x1F, 0x80, 0x0F, 0xFE, 0xFF, 0x0F, 0xFC, 0xFF, 0x07, 0xF8, 0xFF, 0x01, 0xC0, 0x7F, 0x00, // Code for char 0 + 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0xFE, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1 + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x1E, 0x00, 0x1C, 0x0E, 0x00, 0x1F, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x07, 0xF0, 0x1F, 0x07, 0xF8, 0x1D, 0x07, 0xFE, 0x1C, 0x0F, 0x3F, 0x1C, 0xFE, 0x1F, 0x1C, 0xFE, 0x0F, 0x1C, 0xFC, 0x03, 0x1C, 0xF8, 0x00, 0x1C, 0x00, 0x00, 0x1C, // Code for char 2 + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x0E, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x07, 0x07, 0x1C, 0x07, 0x07, 0x1C, 0x07, 0x07, 0x1C, 0x8F, 0x0F, 0x1E, 0xFF, 0x1F, 0x1E, 0xFE, 0xFD, 0x0F, 0xFC, 0xFD, 0x0F, 0x78, 0xF8, 0x07, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, // Code for char 3 + 0x10, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xEF, 0x00, 0x80, 0xE7, 0x00, 0xC0, 0xE3, 0x00, 0xF0, 0xE0, 0x00, 0x78, 0xE0, 0x00, 0xFC, 0xFF, 0x1F, 0xFE, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, // Code for char 4 + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x03, 0x0F, 0xFF, 0x07, 0x0E, 0xFF, 0x03, 0x1C, 0xFF, 0x01, 0x1C, 0xC7, 0x01, 0x1C, 0xC7, 0x01, 0x1C, 0xC7, 0x01, 0x1E, 0xC7, 0x03, 0x1F, 0xC7, 0xFF, 0x0F, 0x87, 0xFF, 0x0F, 0x07, 0xFF, 0x07, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00, // Code for char 5 + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x80, 0xFF, 0x03, 0xE0, 0xFF, 0x07, 0xF0, 0xFF, 0x0F, 0xF8, 0x0F, 0x1E, 0x7C, 0x07, 0x1C, 0x3E, 0x07, 0x1C, 0x1E, 0x07, 0x1C, 0x0F, 0x07, 0x1C, 0x07, 0x0F, 0x1E, 0x02, 0xFE, 0x0F, 0x00, 0xFE, 0x0F, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x01, // Code for char 6 + 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x18, 0x07, 0x00, 0x1E, 0x07, 0xC0, 0x1F, 0x07, 0xF0, 0x1F, 0x07, 0xFC, 0x0F, 0x07, 0xFF, 0x01, 0xC7, 0x7F, 0x00, 0xF7, 0x0F, 0x00, 0xFF, 0x03, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x00, // Code for char 7 + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x03, 0x78, 0xF8, 0x07, 0xFC, 0xFD, 0x0F, 0xFE, 0xFF, 0x0F, 0xFF, 0x1F, 0x1E, 0x8F, 0x0F, 0x1C, 0x07, 0x07, 0x1C, 0x07, 0x0F, 0x1C, 0x8F, 0x0F, 0x1C, 0xFF, 0x3F, 0x1E, 0xFE, 0xFD, 0x0F, 0xFE, 0xFD, 0x0F, 0x78, 0xF0, 0x07, 0x00, 0xE0, 0x03, // Code for char 8 + 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0xFC, 0x07, 0x00, 0xFE, 0x0F, 0x00, 0xFE, 0x0F, 0x08, 0x0F, 0x1E, 0x1C, 0x07, 0x1C, 0x1E, 0x07, 0x1C, 0x0F, 0x07, 0x9C, 0x0F, 0x07, 0xDC, 0x07, 0x0F, 0xFE, 0x03, 0xFE, 0xFF, 0x01, 0xFC, 0xFF, 0x00, 0xF8, 0x3F, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, // Code for char 9 + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0C, 0xC0, 0x03, 0x1E, 0xC0, 0x03, 0x1E, 0x80, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char : + }; + + + diff --git a/RX_FSK/src/Display.cpp b/RX_FSK/src/Display.cpp new file mode 100644 index 0000000..c076870 --- /dev/null +++ b/RX_FSK/src/Display.cpp @@ -0,0 +1,1616 @@ +#include "../features.h" +#include +#include +#include +#include +#include +#include "Display.h" +#include "Sonde.h" + +int readLine(Stream &stream, char *buffer, int maxlen); + +extern const char *version_name; +extern const char *version_id; + +#include "fonts/FreeMono9pt7b.h" +#include "fonts/FreeMono12pt7b.h" +#include "fonts/FreeSans9pt7b.h" +#include "fonts/FreeSans12pt7b.h" +#include "fonts/FreeSans18pt7b.h" +#include "fonts/Picopixel.h" +#include "fonts/Terminal11x16.h" + +extern Sonde sonde; + +extern AXP20X_Class axp; +extern bool axp192_found; +extern SemaphoreHandle_t axpSemaphore; + +extern xSemaphoreHandle globalLock; +#define SPI_MUTEX_LOCK() \ + do \ + { \ + } while (xSemaphoreTake(globalLock, portMAX_DELAY) != pdPASS) +#define SPI_MUTEX_UNLOCK() xSemaphoreGive(globalLock) + +struct GpsPos gpsPos; + +//SPIClass spiDisp(HSPI); + +byte myIP_tiles[8*11]; +static uint8_t ap_tile[8]={0x00,0x04,0x22,0x92, 0x92, 0x22, 0x04, 0x00}; + +static const uint8_t font[10][5]={ + 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0 + 0x00, 0x42, 0x7F, 0x40, 0x00, // 1 + 0x42, 0x61, 0x51, 0x49, 0x46, // 2 + 0x21, 0x41, 0x45, 0x4B, 0x31, // 3 + 0x18, 0x14, 0x12, 0x7F, 0x10, // 4 + 0x27, 0x45, 0x45, 0x45, 0x39, // 5 + 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6 + 0x01, 0x01, 0x79, 0x05, 0x03, // 7 + 0x36, 0x49, 0x49, 0x49, 0x36, // 8 + 0x06, 0x49, 0x39, 0x29, 0x1E }; // 9; .=0x40 + + +static unsigned char kmh_tiles[] U8X8_PROGMEM = { + 0x1F, 0x04, 0x0A, 0x11, 0x00, 0x1F, 0x02, 0x04, 0x42, 0x3F, 0x10, 0x08, 0xFC, 0x22, 0x20, 0xF8 + }; +static unsigned char ms_tiles[] U8X8_PROGMEM = { + 0x1F, 0x02, 0x04, 0x02, 0x1F, 0x40, 0x20, 0x10, 0x08, 0x04, 0x12, 0xA8, 0xA8, 0xA4, 0x40, 0x00 + }; +static unsigned char stattiles[5][4] = { + 0x00, 0x1F, 0x00, 0x00 , // | == ok + 0x00, 0x10, 0x10, 0x00 , // . == no header found + 0x1F, 0x15, 0x15, 0x00 , // E == decode error + 0x00, 0x00, 0x00, 0x00 , // ' ' == unknown/unassigned + 0x07, 0x05, 0x07, 0x00 }; // ° = rx ok, but no valid position +static unsigned char stattilesXL[5][5] = { + 0x00, 0x7F, 0x00, 0x00, 0x00, // | == ok + 0x00, 0x40, 0x40, 0x00, 0x00, // . == no header found + 0x7F, 0x49, 0x49, 0x49, 0x00, // E == decode error + 0x00, 0x00, 0x00, 0x00, 0x00, // ' ' == unknown/unassigned + 0x07, 0x05, 0x07, 0x00, 0x00 }; // ° = rx ok, but no valid position (not yet used?) + + +//static uint8_t halfdb_tile[8]={0x80, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x00}; + +static uint8_t halfdb_tile1[8]={0x00, 0x38, 0x28, 0x28, 0x28, 0xC8, 0x00, 0x00}; +static uint8_t halfdb_tile2[8]={0x00, 0x11, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00}; + +//static uint8_t empty_tile[8]={0x80, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00}; + +static uint8_t empty_tile1[8]={0x00, 0xF0, 0x88, 0x48, 0x28, 0xF0, 0x00, 0x00}; +static uint8_t empty_tile2[8]={0x00, 0x11, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00}; + +//static uint8_t gps_tile[8]={0x3E, 0x77, 0x63, 0x77, 0x3E, 0x1C, 0x08, 0x00}; +static uint8_t gps_tile[8]={0x00, 0x0E, 0x1F, 0x3B, 0x71, 0x3B, 0x1F, 0x0E}; +static uint8_t nogps_tile[8]={0x41, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00}; + +static uint8_t deg_tile[8]={0x00, 0x06,0x09, 0x09, 0x06, 0x00, 0x00, 0x00}; + + +/* Description of display layouts. + * for each display, the content is described by a DispEntry structure + * timeout values are in milliseconds, for view activ, rx signal present, no rx signal present + * for each displey, actions (switching to different sonde or different view) can be defined + * based on key presses or on expired timeouts + */ +DispEntry searchLayout[] = { + {0, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawText, "Scan:"}, + {0, 8, FONT_LARGE, -1, 0xFFFF, 0, disp.drawType, NULL}, + {3, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawFreq, " MHz"}, + {5, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawSite, "l"}, + {7, 5, 0, -1, 0xFFFF, 0, disp.drawIP, NULL}, + {-1, -1, -1, 0, 0, 0, NULL, NULL}, +}; +int16_t searchTimeouts[] = { -1, 0, 0 }; +uint8_t searchActions[] = { + ACT_NONE, + ACT_DISPLAY_DEFAULT, ACT_NONE, ACT_DISPLAY_SPECTRUM, ACT_DISPLAY_WIFI, + ACT_NONE, ACT_NONE, ACT_NONE, ACT_NONE, + ACT_NONE, ACT_DISPLAY_DEFAULT, ACT_NEXTSONDE}; +DispEntry legacyLayout[] = { + {0, 5, FONT_SMALL, -1, 0xFFFF, 0, disp.drawFreq, " MHz"}, + {1, 8, FONT_SMALL, -1, 0xFFFF, 0, disp.drawAFC, NULL}, + {0, 0, FONT_SMALL, -1, 0xFFFF, 0, disp.drawType, NULL}, + {1, 0, FONT_SMALL, -1, 0xFFFF, 0, disp.drawID, NULL}, + {2, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawLat, NULL}, + {4, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawLon, NULL}, + {2, 10, FONT_SMALL, -1, 0xFFFF, 0, disp.drawAlt, NULL}, + {3, 10, FONT_SMALL, -1, 0xFFFF, 0, disp.drawHS, NULL}, + {4, 9, FONT_SMALL, -1, 0xFFFF, 0, disp.drawVS, NULL}, + {6, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawRSSI, NULL}, + {6, 7, 0, -1, 0xFFFF, 0, disp.drawQS, NULL}, + {7, 5, 0, -1, 0xFFFF, 0, disp.drawIP, NULL}, + {-1, -1, -1, 0, 0, 0, NULL, NULL}, +}; +int16_t legacyTimeouts[] = { -1, -1, 20000 }; +uint8_t legacyActions[] = { + ACT_NONE, + ACT_NEXTSONDE, ACT_DISPLAY(0), ACT_DISPLAY_SPECTRUM, ACT_DISPLAY_WIFI, + ACT_DISPLAY(2), ACT_NONE, ACT_NONE, ACT_NONE, + ACT_NONE, ACT_NONE, ACT_DISPLAY(0)}; +DispEntry fieldLayout[] = { + {2, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawLat, NULL}, + {4, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawLon, NULL}, + {3, 10, FONT_SMALL, -1, 0xFFFF, 0, disp.drawHS, NULL}, + {4, 9, FONT_SMALL, -1, 0xFFFF, 0, disp.drawVS, NULL}, + {0, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawID, NULL}, + {6, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawAlt, NULL}, + {6, 7, 0, -1, 0xFFFF, 0, disp.drawQS, NULL}, + {-1, -1, -1, 0, 0, 0, NULL, NULL}, +}; +int16_t fieldTimeouts[] = { -1, -1, -1 }; +uint8_t fieldActions[] = { + ACT_NONE, + ACT_NEXTSONDE, ACT_DISPLAY(0), ACT_DISPLAY_SPECTRUM, ACT_DISPLAY_WIFI, + ACT_DISPLAY(4), ACT_NONE, ACT_NONE, ACT_NONE, + ACT_NONE, ACT_NONE, ACT_NONE}; +DispEntry field2Layout[] = { + {2, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawLat, NULL}, + {4, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawLon, NULL}, + {1, 12, FONT_SMALL, -1, 0xFFFF, 0, disp.drawType, NULL}, + {0, 9, FONT_SMALL, -1, 0xFFFF, 0, disp.drawFreq, ""}, + {3, 10, FONT_SMALL, -1, 0xFFFF, 0, disp.drawHS, NULL}, + {4, 9, FONT_SMALL, -1, 0xFFFF, 0, disp.drawVS, NULL}, + {0, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawID, NULL}, + {6, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawAlt, NULL}, + {6, 7, 0, -1, 0xFFFF, 0, disp.drawQS, NULL}, + {-1, -1, -1, 0, 0, 0, NULL, NULL}, +}; +uint8_t field2Actions[] = { + ACT_NONE, + ACT_NEXTSONDE, ACT_DISPLAY(0), ACT_DISPLAY_SPECTRUM, ACT_DISPLAY_WIFI, + ACT_DISPLAY(1), ACT_NONE, ACT_NONE, ACT_NONE, + ACT_NONE, ACT_NONE, ACT_NONE}; +DispEntry gpsLayout[] = { + {0, 0, FONT_LARGE, -1, 0xFFFF, 0, disp.drawID, NULL}, + {2, 0, FONT_SMALL, -1, 0xFFFF, 0, disp.drawLat, NULL}, + {3, 0, FONT_SMALL, -1, 0xFFFF, 0, disp.drawLon, NULL}, + {4, 0, FONT_SMALL, -1, 0xFFFF, 0, disp.drawAlt, NULL}, + {6, 0, FONT_SMALL, -1, 0xFFFF, 0, disp.drawGPS, "V"}, + //{6, 1, FONT_SMALL, disp.drawGPS, "A"}, + //{6, 8, FONT_SMALL, disp.drawGPS, "O"}, + {7, 0, FONT_SMALL, -1, 0xFFFF, 0, disp.drawGPS, "D"}, + {7, 8, FONT_SMALL, -1, 0xFFFF, 0, disp.drawGPS, "I"}, + {-1, -1, -1, 0, 0, 0, NULL, NULL}, +}; +uint8_t gpsActions[] = { + ACT_NONE, + ACT_NEXTSONDE, ACT_DISPLAY(0), ACT_DISPLAY_SPECTRUM, ACT_DISPLAY_WIFI, + ACT_DISPLAY(1), ACT_NONE, ACT_NONE, ACT_NONE, + ACT_NONE, ACT_NONE, ACT_NONE}; + +DispInfo staticLayouts[5] = { + { searchLayout, searchActions, searchTimeouts, "StaticSearch" }, + { legacyLayout, legacyActions, legacyTimeouts, "StaticLegacy" }, + { fieldLayout, fieldActions, fieldTimeouts, "StaticField1" }, + { field2Layout, field2Actions, fieldTimeouts, "StaticFiel2" }, + { gpsLayout, gpsActions, fieldTimeouts, "StaticGPS" } }; + + +/////////////// Wrapper code for various display + +static void utf2latin15(const char *src, char *dst, int dstlen) { + static uint8_t decoderState = 0; + static uint16_t decoderBuffer; + + while(uint8_t c = *src++) { + if( (c&0x80)==0 || c==0xB0) { // 7bit code point (or special case: old °sign) + decoderState = 0; + *dst++ = c; + continue; + } + if(decoderState==0) { + if((c&0xE0)==0xC0) { // 11bit code point + decoderBuffer = ((c&0x1F)<<6); // first 5 bit + decoderState = 1; + } else if ((c&0xF0)==0xE0) { // 16 bit code point + decoderBuffer = ((c&0x0f)<<12); // first 4 bit + decoderState = 2; + } + } else { + decoderState --; + if(decoderState == 1) + decoderBuffer |= ((c&0x3f)<<6); // next 6 bit of 16 bit code point + else if (decoderState==0) { + decoderBuffer |= (c&0x3f); // last 6 bit of code point$a + } + } + if(decoderState==0) { + // emit encoded byte if possible + switch(decoderBuffer) { + case 0x0152: decoderBuffer=0xbc; break; + case 0x0153: decoderBuffer=0xbd; break; + case 0x0160: decoderBuffer=0xa6; break; + case 0x0161: decoderBuffer=0xa8; break; + case 0x0178: decoderBuffer=0xbe; break; + case 0x017D: decoderBuffer=0xb4; break; + case 0x017E: decoderBuffer=0xb8; break; + case 0x20AC: decoderBuffer=0xa4; break; + } + + if(decoderBuffer>0xff) decoderBuffer=0x7f; + else if(decoderBuffer>0x7f) decoderBuffer-=0x20; + *dst++ = (uint8_t)decoderBuffer; + } + + } + *dst = 0; +} + + +// ALLFONTS requires 30k extra flash memory... for now there is still enough space :) +//#define ALLFONTS 1 +static const uint8_t *fl[] = { + u8x8_font_chroma48medium8_r, // 0 ** default small + u8x8_font_7x14_1x2_f, // 1 ** default large +#ifdef ALLFONTS + u8x8_font_amstrad_cpc_extended_f, // 2 + u8x8_font_5x7_f, // 3 + u8x8_font_5x8_f, // 4 + u8x8_font_8x13_1x2_f, // 5 + u8x8_font_8x13B_1x2_f, // 6 + u8x8_font_7x14B_1x2_f, // 7 + u8x8_font_artossans8_r, // 8 + u8x8_font_artosserif8_r, // 9 + u8x8_font_torussansbold8_r, // 10 + u8x8_font_victoriabold8_r, // 11 + u8x8_font_victoriamedium8_r, // 12 + u8x8_font_pressstart2p_f, // 13 + u8x8_font_pcsenior_f, // 14 + u8x8_font_pxplusibmcgathin_f, // 15 + u8x8_font_pxplusibmcga_f, // 16 + u8x8_font_pxplustandynewtv_f, // 17 +#endif +}; + + +void U8x8Display::begin() { + Serial.printf("Init SSD1306 display %d %d\n", sonde.config.oled_scl, sonde.config.oled_sda); + //u8x8 = new U8X8_SSD1306_128X64_NONAME_SW_I2C(/* clock=*/ sonde.config.oled_scl, /* data=*/ sonde.config.oled_sda, /* reset=*/ sonde.config.oled_rst); // Unbuffered, basic graphics, software I2C + if (_type==2) { + u8x8 = new U8X8_SH1106_128X64_NONAME_HW_I2C(/* reset=*/ sonde.config.oled_rst, /* clock=*/ sonde.config.oled_scl, /* data=*/ sonde.config.oled_sda); // Unbuffered, basic graphics, software I2C + } else { //__type==0 or anything else + u8x8 = new U8X8_SSD1306_128X64_NONAME_HW_I2C(/* reset=*/ sonde.config.oled_rst, /* clock=*/ sonde.config.oled_scl, /* data=*/ sonde.config.oled_sda); // Unbuffered, basic graphics, software I2C + } + u8x8->begin(); + if(sonde.config.oled_orient==3) u8x8->setFlipMode(true); + if(sonde.config.dispcontrast>=0) u8x8->setContrast(sonde.config.dispcontrast); + + fontlist = fl; + nfonts = sizeof(fl)/sizeof(uint8_t *); + Serial.printf("Size of font list is %d\n", nfonts); +} + +void U8x8Display::clear() { + u8x8->clear(); +} + +void U8x8Display::setContrast(uint8_t contrast) { + u8x8->setContrast(contrast); +} + + +// For u8x8 oled display: 0=small font, 1=large font 7x14 +void U8x8Display::setFont(uint8_t fontindex) { + if(fontindex>=nfonts) fontindex=0; // prevent overflow + u8x8->setFont( fontlist[fontindex] ); +} + +void U8x8Display::getDispSize(uint8_t *height, uint8_t *width, uint8_t *lineskip, uint8_t *colskip) { + // TODO: maybe we should decided depending on font size (single/double?) + if(height) *height = 8; + if(width) *width = 16; + if(lineskip) *lineskip = 1; + if(colskip) *colskip = 1; +} + +void U8x8Display::drawString(uint16_t x, uint16_t y, const char *s, int16_t width, uint16_t fg, uint16_t bg) { + char buf[50]; + utf2latin15(s, buf, 50); + if(width!=WIDTH_AUTO && width>0) { + for(int l = strlen(buf); ldrawString(x, y, buf); +} + +void U8x8Display::drawTile(uint16_t x, uint16_t y, uint8_t cnt, uint8_t *tile_ptr) { + u8x8->drawTile(x, y, cnt, tile_ptr); +} + +void U8x8Display::drawBitmap(uint16_t x1, uint16_t y1, const uint16_t* bitmap, int16_t w, int16_t h) { + // not supported +} +void U8x8Display::drawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color, bool fill) { + // not supported (yet) +} + +void U8x8Display::welcome() { + u8x8->clear(); + setFont(FONT_LARGE); + drawString(8 - strlen(version_name) / 2, 0, version_name); + drawString(8 - strlen(version_id) / 2, 2, version_id); + setFont(FONT_SMALL); + drawString(0, 4, "RS41/92,DFM,M1&2"); + drawString(0, 6, " by Vigor & Xav "); +} + +static String previp; +void U8x8Display::drawIP(uint16_t x, uint16_t y, int16_t width, uint16_t fg, uint16_t bg) { + if(!previp.equals(sonde.ipaddr)) { + // ip address has changed + // create tiles + memset(myIP_tiles, 0, 11*8); + int len = sonde.ipaddr.length(); + const char *ip = sonde.ipaddr.c_str(); + int pix = (len-3)*6+6; + int tp = 80-pix+8; + if(sonde.isAP) memcpy(myIP_tiles+(tp<16?0:8), ap_tile, 8); + for(int i=0; idrawTile(x, y, 11, myIP_tiles); +} + +// len must be multiple of 2, size is fixed for u8x8 display +void U8x8Display::drawQS(uint16_t x, uint16_t y, uint8_t len, uint8_t /*size*/, uint8_t *stat, uint16_t fg, uint16_t bg) { + for(int i=0; isize, SPI_FLASH_MMAP_DATA, (const void **)&data, &handle); + if( err != ESP_OK ) { + Serial.println("mmap not OK\n"); + return; + } + Serial.println("font partition successfully mmaped"); + // do relocation stuff.... + const GFXfont **fptr = (const GFXfont **)data; + if((uint32_t)*fptr != 0x544E4F46) { // FONT + Serial.println("No font data in font partition"); + return; + } + int n=0; + for(const GFXfont **g=fptr; *g!=NULL; g++) n++; + Serial.printf("There a %d fonts in the font partition\n", n); + if(n>MAXFONT) n=MAXFONT; + GFXfont **newgfl = (GFXfont **)malloc( n*sizeof(GFXfont) + MAXFONT*sizeof(GFXfont *) ); + if(!newgfl) { + Serial.println("no memory for gfx fonts"); + return; + } + GFXfont *fonts = (GFXfont *)(((char *)newgfl) + MAXFONT*sizeof(GFXfont *)); + // create GFXfont list + for(int i=0; ibitmap = newgfl[i]->bitmap + (uint32_t)data; // relocate bitmap pointer to mmap partition + newgfl[i]->glyph = (GFXglyph *)( ((char *)newgfl[i]->glyph) + (uint32_t)data ); + Serial.printf("font i: gfl[i] is %p, gfl[i]->bitmap is %p, gfl[i]->glyph is %p\n", newgfl[i], newgfl[i]->bitmap, newgfl[i]->glyph); + } + gfl = (const GFXfont **)newgfl; + ngfx = n; + } +} + +struct gfxoffset_t { + uint8_t yofs, yclear; +}; +#if 0 +///// **** this is now calculated automatically +// +// obtained as max offset from font (last column) and maximum height (3rd column) in glyphs +// first value: offset: max offset from font glyphs (last column * (-1)) (check /, \, `, $)` +// yclear:max height: max of (height in 3rd column) + (yofs + 6th column) (check j) +const struct gfxoffset_t gfxoffsets[]={ + { 16, 18}, + { 16, 18}, + { 13, 18 }, // 17+13-12 "j" + { 17, 23 }, // 23+17-17 + { 4, 6}, // 6+4-4 + { 25, 34 }, // 34 25 -25 +}; +#endif + +struct gfxoffset_t gfxoffsets[MAXFONT]; + +void calc_gfx_offsets() { + for(int i=0; iglyph; + for(int j=0; j<=gfl[i]->last-gfl[i]->first; j++) { + if(g[j].yOffset < bofs) bofs = g[j].yOffset; // yOffset are negative values + } + gfxoffsets[i].yofs = -bofs; + // find max. height (yofs + yOffset + height) -- note that yOffset is negative + int hgt = 0; + for(int j=0; j<=gfl[i]->last-gfl[i]->first; j++) { + int h = gfxoffsets[i].yofs + g[j].yOffset + g[j].height; + if(h>hgt) hgt=h; + } + gfxoffsets[i].yclear = hgt; + printf("Font %d: yofs=%d, yclear=%d\n", i, gfxoffsets[i].yofs, gfxoffsets[i].yclear); + } +} + +#define TFT_LED 0 // 0 if wired to +5V directly +#define TFT_BRIGHTNESS 100 // Initial brightness of TFT backlight (optional) + +Arduino_DataBus *bus; + + + + + +#include +#define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr)) + + +/////////////// + + +char Display::buf[17]; +char Display::lineBuf[Display::LINEBUFLEN]; + +RawDisplay *Display::rdis = NULL; + +//TODO: maybe merge with initFromFile later? +void Display::init() { + Serial.printf("disptype is %d\n",sonde.config.disptype); + if(sonde.config.disptype==0 || sonde.config.disptype==2) { + rdis = new U8x8Display(sonde.config.disptype); + } + Serial.println("Display created"); + rdis->begin(); + delay(100); + Serial.println("Display initialized"); + rdis->clear(); + dispstate = 1; // display active by default +} + + +Display::Display() { + layouts = staticLayouts; + setLayout(0); +} + +#define MAXSCREENS 20 +#define DISP_ACTIONS_N 12 +#define DISP_TIMEOUTS_N 3 + +void Display::replaceLayouts(DispInfo *newlayouts, int nnew) { + if(nnew<1) return; // no new layouts => ignore + + // remember old layouts + DispInfo *old = layouts; + + // assign new layouts and current layout + Serial.printf("replaceLayouts: idx=%d n(new)=%d\n", layoutIdx, nLayouts); + layouts = newlayouts; + nLayouts = nnew; + if(layoutIdx >= nLayouts) layoutIdx = 0; + layout = layouts+layoutIdx; + + // Make it unlikely that anyone else is still using previous layouts + delay(500); + + // and release memory not used any more + if(old==staticLayouts) return; + for(int i=0; ide = (DispEntry *)mem; + mem += (entries+1) * sizeof(DispEntry); + + d->actions = (uint8_t *)mem; + mem += DISP_ACTIONS_N * sizeof(uint8_t); + d->actions[0] = ACT_NONE; + + d->timeouts = (int16_t *)mem; + + d->label = label; + Serial.printf("%s: alloc %d bytes (%d entries) for %p (addr=%p)\n", label, totalsize, entries, d, d->de); + return 0; +} + +uint16_t encodeColor(uint32_t col) { + return (col>>19) << 11 | ((col>>10)&0x3F) << 5 | ((col>>3)&0x1F); +} +uint16_t encodeColor(char *colstr) { + uint32_t col; + int res=sscanf(colstr, "%" SCNx32, &col); + if(res!=1) return 0xffff; + return encodeColor(col); +} + +void Display::parseDispElement(char *text, DispEntry *de) +{ + char type = *text; + if(type>='A'&&type<='Z') { + type += 32; // lc + de->fmt = fontlar; + } else { + de->fmt = fontsma; + } + de->fg = colfg; + de->bg = colbg; + switch(type) { + case 'l': + de->func = disp.drawLat; break; + case 'o': + de->func = disp.drawLon; break; + case 'a': + de->func = disp.drawAlt; break; + case 'h': + de->func = disp.drawHS; + de->extra = text[1]?strdup(text+1):NULL; break; + case 'v': + de->func = disp.drawVS; + de->extra = text[1]?strdup(text+1):NULL; break; + case 'i': + de->func = disp.drawID; + de->extra = strdup(text+1); + break; + case 'q': + { + struct StatInfo *statinfo = (struct StatInfo *)malloc(sizeof(struct StatInfo)); + // maybe enable more flexible configuration? + statinfo->size=3; + statinfo->len=18; + if(text[1]=='4') statinfo->size = 4; + + de->extra = (const char *)statinfo; + de->func = disp.drawQS; + } + break; + case 't': + de->func = disp.drawType; break; + case 'c': + de->func = disp.drawAFC; break; + case 'f': + de->func = disp.drawFreq; + de->extra = strdup(text+1); + //Serial.printf("parsing 'f' entry: extra is '%s'\n", de->extra); + break; + case 'm': + de->func = disp.drawTelemetry; + de->extra = strdup(text+1); + break; + case 'n': + // IP address / small always uses tiny font on TFT for backward compatibility + // Large font can be used arbitrarily + if(de->fmt==fontsma) de->fmt=0; + de->func = disp.drawIP; + de->extra = strdup(text+1); + break; + case 's': + de->func = disp.drawSite; + de->extra = strdup(text+1); + break; + case 'k': + de->func = disp.drawKilltimer; + de->extra = strdup(text+1); + break; + case 'g': + de->func = disp.drawGPS; + if(text[1]=='0') { + // extended configuration for arrow... + struct CircleInfo *circinfo = (struct CircleInfo *)malloc(sizeof(struct CircleInfo)); +#if 1 + circinfo->type = '0'; + circinfo->top = text[2]; + circinfo->arr = text[3]; + circinfo->bul = text[4]; + char *ptr=text+5; + while(*ptr && *ptr!=',') ptr++; ptr++; + // next: radius + circinfo->radius = atoi(ptr); + while(*ptr && *ptr!=',') ptr++; ptr++; + circinfo->fgcol = encodeColor(ptr); + while(*ptr && *ptr!=',') ptr++; ptr++; + circinfo->bgcol = encodeColor(ptr); +#else + circinfo->type = '0'; + circinfo->top = 'N'; + circinfo->bul = 'S'; + circinfo->arr = 'C'; + circinfo->radius = 50; + circinfo->fgcol = 0xfe80; + circinfo->bgcol = 0x0033; +#endif + while(*ptr && *ptr!=',') ptr++; ptr++; + circinfo->awidth = atoi(ptr); + while(*ptr && *ptr!=',') ptr++; ptr++; + circinfo->acol = encodeColor(ptr); + while(*ptr && *ptr!=',') ptr++; ptr++; + circinfo->brad = atoi(ptr); + while(*ptr && *ptr!=',') ptr++; ptr++; + circinfo->bcol = encodeColor(ptr); + de->extra = (char *)circinfo; + } else { + de->extra = strdup(text+1); + //Serial.printf("parsing 'g' entry: extra is '%s'\n", de->extra); + } + break; + case 'r': + de->func = disp.drawRSSI; break; + case 'x': + de->func = disp.drawText; + de->extra = strdup(text+1); + break; + case 'b': + de->func = disp.drawBatt; + de->extra = strdup(text+1); + break; + default: + Serial.printf("Unknown element: %c\n", type); + break; + } +} + +static uint8_t ACTION(char c) { + switch(c) { + case 'D': + return ACT_DISPLAY_DEFAULT; + case 'F': + return ACT_DISPLAY_SPECTRUM; + case 'W': + return ACT_DISPLAY_WIFI; + case '+': + return ACT_NEXTSONDE; + case '#': + return ACT_NONE; + case '>': + return ACT_DISPLAY_NEXT; + default: + if(c>='0'&&c<='9') + return ACT_DISPLAY(c-'0'); + // Hack, will change later to better syntax + if(c>='a'&&c<='z') + return ACT_ADDFREQ(c-'a'+2); + } + return ACT_NONE; +} + + +int Display::countEntries(File f) { + int pos = f.position(); + int n = 0; + while(1) { + //String line = readLine(f); //f.readStringUntil('\n'); + //line.trim(); + //const char *c=line.c_str(); + readLine(f, lineBuf, LINEBUFLEN); + const char *c = trim(lineBuf); + if(*c=='#') continue; + if(*c>='0'&&*c<='9') n++; + if(strchr(c,'=')) continue; + break; + } + f.seek(pos, SeekSet); + //Serial.printf("Counted %d entries\n", n); + return n; +} + +int Display::getScreenIndex(int index) { + if(index!=0) return index; + switch(sonde.config.disptype) { + case 1: // ILI9225 + index = 2; // landscape mode (orient=1/3) + if( (sonde.config.oled_orient&0x01)==0 ) index++; // portrait mode (0/2) + break; + case 3: // ILI9341 + case 4: // ILI9342 + case 5: + index = 4; // landscape mode (orient=1/3) + if( (sonde.config.oled_orient&0x01)==0 ) index++; // portrait mode (0/2) + break; + case 0: case 2: // small OLED display (SD1306/SH1106) + default: + index = 1; break; + } + return index; +} +void Display::initFromFile(int index) { + File d; + char file[20]; + + index = getScreenIndex(index); // auto selection for index==0 + snprintf(file, 20, "/screens%d.txt", index); + Serial.printf("Reading %s\n", file); + d = SPIFFS.open(file, "r"); + if(!d || d.available()==0 ) { Serial.printf("%s not found\n", file); return; } + + DispInfo *newlayouts = (DispInfo *)malloc(MAXSCREENS * sizeof(DispInfo)); + if(!newlayouts) { + Serial.println("Init from file: FAILED, not updating layouts"); + return; + } + memset(newlayouts, 0, MAXSCREENS * sizeof(DispInfo)); + + // default values + xscale=13; + yscale=22; + fontsma=0; + fontlar=1; + // default color + colfg = 0xffff; // white; only used for ILI9225 + colbg = 0; // black; only used for ILI9225 + int idx = -1; + int what = -1; + int entrysize; + Serial.printf("Reading from screen config: available=%d\n",d.available()); + while(d.available()) { + //Serial.printf("Unused stack: %d\n", uxTaskGetStackHighWaterMark(0)); + const char *ptr; + readLine(d, lineBuf, LINEBUFLEN); + const char *s = trim(lineBuf); + // String line = readLine(d); + // line.trim(); + // const char *s = line.c_str(); + DebugPrintf(DEBUG_SPARSER, "Line: '%s'\n", s); + if(*s == '#') continue; // ignore comments + switch(what) { + case -1: // wait for start of screen (@) + { + if(*s != '@') { + if(*s==0 || *s==10 || *s==13) continue; + Serial.printf("Illegal start of screen: %s\n", s); + continue; + } + char *label = strdup(s+1); + entrysize = countEntries(d); + DebugPrintf(DEBUG_SPARSER,"Reading entry with %d elements\n", entrysize); + idx++; + int res = allocDispInfo(entrysize, &newlayouts[idx], label); + if(res<0) { + Serial.println("Error allocating memory for disp info"); + continue; + } + what = 0; + } + break; + default: // parse content... (additional data or line `what`) + if(strncmp(s,"timer=",6)==0) { // timer values + char t1[10],t2[10],t3[10]; + sscanf(s+6, "%5[0-9a-zA-Z-] , %5[0-9a-zA-Z-] , %5[0-9a-zA-Z-]", t1, t2, t3); + DebugPrintf(DEBUG_SPARSER,"timers are %s, %s, %s\n", t1, t2, t3); + newlayouts[idx].timeouts[0] = (*t1=='n'||*t1=='N')?sonde.config.norx_timeout:atoi(t1); + newlayouts[idx].timeouts[1] = (*t2=='n'||*t2=='N')?sonde.config.norx_timeout:atoi(t2); + newlayouts[idx].timeouts[2] = (*t3=='n'||*t3=='N')?sonde.config.norx_timeout:atoi(t3); + // Code later assumes milliseconds, but config.txt and screens.txt use values in seconds + if(newlayouts[idx].timeouts[0]>0) newlayouts[idx].timeouts[0]*=1000; + if(newlayouts[idx].timeouts[1]>0) newlayouts[idx].timeouts[1]*=1000; + if(newlayouts[idx].timeouts[2]>0) newlayouts[idx].timeouts[2]*=1000; + //sscanf(s+6, "%hd,%hd,%hd", newlayouts[idx].timeouts, newlayouts[idx].timeouts+1, newlayouts[idx].timeouts+2); + //Serial.printf("timer values: %d, %d, %d\n", newlayouts[idx].timeouts[0], newlayouts[idx].timeouts[1], newlayouts[idx].timeouts[2]); + } else if(strncmp(s, "key1action=",11)==0) { // key 1 actions + char c1,c2,c3,c4; + sscanf(s+11, "%c,%c,%c,%c", &c1, &c2, &c3, &c4); + newlayouts[idx].actions[1] = ACTION(c1); + newlayouts[idx].actions[2] = ACTION(c2); + newlayouts[idx].actions[3] = ACTION(c3); + newlayouts[idx].actions[4] = ACTION(c4); + } else if(strncmp(s, "key2action=",11)==0) { // key 2 actions + char c1,c2,c3,c4; + sscanf(s+11, "%c,%c,%c,%c", &c1, &c2, &c3, &c4); + newlayouts[idx].actions[5] = ACTION(c1); + newlayouts[idx].actions[6] = ACTION(c2); + newlayouts[idx].actions[7] = ACTION(c3); + newlayouts[idx].actions[8] = ACTION(c4); + //Serial.printf("parsing key2action: %c %c %c %c\n", c1, c2, c3, c4); + } else if(strncmp(s, "timeaction=",11)==0) { // timer actions + char c1,c2,c3; + sscanf(s+11, "%c,%c,%c", &c1, &c2, &c3); + newlayouts[idx].actions[9] = ACTION(c1); + newlayouts[idx].actions[10] = ACTION(c2); + newlayouts[idx].actions[11] = ACTION(c3); + } else if(strncmp(s, "fonts=",6)==0) { // change font + sscanf(s+6, "%d,%d", &fontsma, &fontlar); + } else if(strncmp(s, "scale=",6)==0) { // change line->pixel scaling for ILI9225 display + sscanf(s+6, "%d,%d", &yscale, &xscale); + } else if(strncmp(s, "color=",6)==0) { // + int res; + uint32_t fg,bg; + res=sscanf(s+6, "%" SCNx32 ",%" SCNx32, &fg, &bg); + colfg = (fg>>19) << 11 | ((fg>>10)&0x3F) << 5 | ((fg>>3)&0x1F); + if(res==2) { + colbg = (bg>>19) << 11 | ((bg>>10)&0x3F) << 5 | ((bg>>3)&0x1F); + } + } else if( (ptr=strchr(s, '=')) ) { // one line with some data... + float x,y,w; + int n; + char text[61]; + n=sscanf(s, "%f,%f,%f", &y, &x, &w); + sscanf(ptr+1, "%60[^\r\n]", text); + if(sonde.config.disptype!=0 && sonde.config.disptype!=2) { + x*=xscale; y*=yscale; w*=xscale; + } + newlayouts[idx].de[what].x = x; + newlayouts[idx].de[what].y = y; + newlayouts[idx].de[what].width = n>2 ? w : WIDTH_AUTO; + parseDispElement(text, newlayouts[idx].de+what); + DebugPrintf(DEBUG_SPARSER,"entry at %d,%d width=%d font %d, color=%x,%x\n", (int)x, (int)y, newlayouts[idx].de[what].width, newlayouts[idx].de[what].fmt, + newlayouts[idx].de[what].fg, newlayouts[idx].de[what].bg); + if(newlayouts[idx].de[what].func == disp.drawGPS) { + newlayouts[idx].usegps = GPSUSE_BASE|GPSUSE_DIST|GPSUSE_BEARING; // just all for now + } + what++; + newlayouts[idx].de[what].func = NULL; + } else { + what=-1; + } + break; + } + } + replaceLayouts(newlayouts, idx+1); +} + +void Display::circ(uint16_t *bm, int16_t size, int16_t x0, int16_t y0, int16_t r, uint16_t fg, boolean fill, uint16_t bg) { + // draw circle + int x = 0; + int y = r; + int ddF_x = 1; + int ddF_y = -2 * r; + int f = 1-r; + bm[x0 + (y0+r)*size] = fg; + bm[x0 + (y0-r)*size] = fg; + bm[x0+r + y0*size] = fg; + bm[x0-r + y0*size] = fg; + if(fill) { for(int yy=-y+1; yy=0) { y--; ddF_y += 2; f += ddF_y; newy = true; } + x++; ddF_x += 2; f += ddF_x; + bm[ (x0+x) + (y0+y)*size ] = fg; + bm[ (x0-x) + (y0+y)*size ] = fg; + bm[ (x0+x) + (y0-y)*size ] = fg; + bm[ (x0-x) + (y0-y)*size ] = fg; + bm[ (x0+y) + (y0+x)*size ] = fg; + bm[ (x0-y) + (y0+x)*size ] = fg; + bm[ (x0+y) + (y0-x)*size ] = fg; + bm[ (x0-y) + (y0-x)*size ] = fg; + if(fill) { + if(newy) { + for(int xx = -x+1; xx=nLayouts) newidx = 0; + layout = &layouts[newidx]; + layoutIdx = newidx; +} + +void Display::drawString(DispEntry *de, const char *str) { + rdis->drawString(de->x, de->y, str, de->width, de->fg, de->bg); +} + +void Display::drawLat(DispEntry *de) { + rdis->setFont(de->fmt); + if(!VALIDPOS(sonde.si()->d.validPos)) { + drawString(de," "); + return; + } + //Format Degres, minutes, secondes ou decimal 1=degres 0=decimal + if (sonde.config.degdec==1) + { + float decimal=sonde.si()->d.lat; + int degres=int(decimal); + float minutes=(decimal - degres)*60; + float secondes=(minutes-int(minutes))*60; + snprintf(buf, 16, "%2d %2.0f'%2.0f", degres, minutes, secondes); + drawString(de,buf); + rdis->drawTile(2, 2, 1, deg_tile); + } else + { + snprintf(buf, 16, "%2.5f", sonde.si()->d.lat); + drawString(de,buf); + } +} +void Display::drawLon(DispEntry *de) { + rdis->setFont(de->fmt); + if(!VALIDPOS(sonde.si()->d.validPos)) { + drawString(de," "); + return; + } + //Format Degres, minutes, secondes ou decimal 1=degres 0=decimal + if (sonde.config.degdec==1) + { + float decimal=sonde.si()->d.lon; + int degres=int(decimal); + float minutes=(decimal - degres)*60; + float secondes=(minutes-int(minutes))*60; + snprintf(buf, 16, "%2d %2.0f'%2.0f", degres, minutes, secondes); + drawString(de,buf); + rdis->drawTile(2, 4, 1, deg_tile); + } else + { + snprintf(buf, 16, "%2.5f", sonde.si()->d.lon); + drawString(de,buf); + } +} +void Display::drawAlt(DispEntry *de) { + rdis->setFont(de->fmt); + if(!VALIDALT(sonde.si()->d.validPos)) { + drawString(de," "); + return; + } + float alt = sonde.si()->d.alt; + //testing only.... alt += 30000-454; + snprintf(buf, 16, alt>=1000?" %5.0fm":" %3.1fm", alt); + drawString(de,buf+strlen(buf)-6); +} +void Display::drawHS(DispEntry *de) { + rdis->setFont(de->fmt); + if(!VALIDHS(sonde.si()->d.validPos)) { + drawString(de," "); + return; + } + boolean is_ms = (de->extra && de->extra[0]=='m')?true:false; // m/s or km/h + float hs = sonde.si()->d.hs; + if(!is_ms) hs = hs * 3.6; + boolean has_extra = (de->extra && de->extra[1]!=0)? true: false; + snprintf(buf, 16, hs>99?" %3.0f":" %2.1f", hs); + if(has_extra) { strcat(buf, de->extra+1); } + drawString(de,buf+strlen(buf)-4- (has_extra?strlen(de->extra+1):0) ); + if(!has_extra) rdis->drawTile(de->x+4,de->y,2,is_ms?ms_tiles:kmh_tiles); +} +void Display::drawVS(DispEntry *de) { + rdis->setFont(de->fmt); + if(!VALIDVS(sonde.si()->d.validPos)) { + drawString(de," "); + return; + } + snprintf(buf, 16, " %+2.1f", sonde.si()->d.vs); + DebugPrintf(DEBUG_DISPLAY, "drawVS: extra is %s width=%d\n", de->extra?de->extra:"", de->width); + if(de->extra) { strcat(buf, de->extra); } + drawString(de, buf+strlen(buf)-5- (de->extra?strlen(de->extra):0) ); + if(!de->extra) rdis->drawTile(de->x+5,de->y,2,ms_tiles); +} +void Display::drawID(DispEntry *de) { + rdis->setFont(de->fmt); + if(!sonde.si()->d.validID) { + drawString(de, "nnnnnnnn "); + return; + } + if(de->extra && de->extra[0]=='n') { + // real serial number, as printed on sonde, can be up to 11 digits long + drawString(de, sonde.si()->d.ser); + } else if (de->extra && de->extra[0]=='s') { + // short ID, max 8 digits (no initial "D" for DFM, "M" instead of "ME" for M10) + if( TYPE_IS_DFM(sonde.si()->type) ) { + drawString(de, sonde.si()->d.id+1); + } else if (TYPE_IS_METEO(sonde.si()->type)) { + char sid[9]; + sid[0]='M'; + memcpy(sid+1, sonde.si()->d.id+2, 8); + sid[8] = 0; + drawString(de, sid); + } else { + drawString(de, sonde.si()->d.id); + } + } else { + // dxlAPRS sonde number, max 9 digits, as used on aprs.fi and radiosondy.info + drawString(de, sonde.si()->d.id); + } +} +void Display::drawRSSI(DispEntry *de) { + rdis->setFont(de->fmt); + Serial.printf("\ndBSmetre %d\n",sonde.config.dbsmetre); + if (sonde.config.dbsmetre==0) { + if(sonde.config.disptype!=1) { + snprintf(buf, 16, "-%d ", sonde.si()->rssi/2); + int len=strlen(buf)-3; + Serial.printf("drawRSSI: %d %d %d (%d)[%d]\n", de->y, de->x, sonde.si()->rssi/2, sonde.currentSonde, len); + buf[5]=0; + drawString(de,buf); + rdis->drawTile(de->x+len, de->y, 1, (sonde.si()->rssi&1)?halfdb_tile1:empty_tile1); + rdis->drawTile(de->x+len, de->y+1, 1, (sonde.si()->rssi&1)?halfdb_tile2:empty_tile2); + } else { // special for 2" display + snprintf(buf, 16, "-%d.%c ", sonde.si()->rssi/2, (sonde.si()->rssi&1)?'5':'0'); + drawString(de,buf); + } + } else { + int dbmetre=sonde.si()->rssi/2; + Serial.printf("\nSmetre %d\n",sonde.si()->rssi/2); + //Ici tableau Smetre + //S1 <-121dB //S2 <-115dB //S3 <-109dB //S4 <-103dB //S5 <-97dB + //S6 <-91dB //S7 <-85dB //S8 <-79dB //S9 <-73dB //S9+10 <-63dB + //S9+20 <-53dB //S9+30 <-43db //S9+40 <- 33dB //S9+50dB <-23dB //S9+60 <-13dB + //S9+70 <-0dB + if (dbmetre>138) drawString(de,"S0"); + if ((dbmetre<137)&&(dbmetre>122)) drawString(de,"S1 "); + if ((dbmetre<121)&&(dbmetre>116)) drawString(de,"S2 "); + if ((dbmetre<115)&&(dbmetre>108)) drawString(de,"S3 "); + if ((dbmetre<109)&&(dbmetre>104)) drawString(de,"S4 "); + if ((dbmetre<103)&&(dbmetre>98)) drawString(de,"S5 "); + if ((dbmetre<97)&&(dbmetre>92)) drawString(de,"S6 "); + if ((dbmetre<91)&&(dbmetre>86)) drawString(de,"S7 "); + if ((dbmetre<85)&&(dbmetre>80)) drawString(de,"S8 "); + if ((dbmetre<79)&&(dbmetre>74)) drawString(de,"S9 "); + if ((dbmetre<73)&&(dbmetre>64)) drawString(de,"S9+10"); + if ((dbmetre<63)&&(dbmetre>54)) drawString(de,"S9+20"); + if ((dbmetre<53)&&(dbmetre>44)) drawString(de,"S9+30"); + if ((dbmetre<43)&&(dbmetre>34)) drawString(de,"S9+40"); + if ((dbmetre<33)&&(dbmetre>24)) drawString(de,"S9+50"); + if ((dbmetre<23)&&(dbmetre>14)) drawString(de,"S9+60"); + if ((dbmetre<13)&&(dbmetre>0)) drawString(de,"S9+70"); + } +} +void Display::drawQS(DispEntry *de) { + uint8_t *stat = sonde.si()->rxStat; + struct StatInfo *statinfo = (struct StatInfo *)de->extra; + rdis->drawQS(de->x, de->y, statinfo->len, statinfo->size, stat, de->fg, de->bg); +} + +void Display::drawType(DispEntry *de) { + rdis->setFont(de->fmt); + const char *typestr = sonde.si()->d.typestr; + if(*typestr==0) typestr = sondeTypeStr[sonde.si()->type]; + drawString(de, typestr); +} +void Display::drawFreq(DispEntry *de) { + rdis->setFont(de->fmt); + snprintf(buf, 16, "%3.3f%s", sonde.si()->freq, de->extra?de->extra:""); + drawString(de, buf); +} + +void Display::drawAFC(DispEntry *de) { + rdis->setFont(de->fmt); + { snprintf(buf, 15, " %+3.2fk", sonde.si()->afc*0.001); } + drawString(de, buf+strlen(buf)-8); +} +void Display::drawIP(DispEntry *de) { + rdis->setFont(de->fmt); + rdis->drawIP(de->x, de->y, de->width, de->fg, de->bg); +} +void Display::drawSite(DispEntry *de) { + rdis->setFont(de->fmt); + switch(de->extra[0]) { + case '#': + // currentSonde is index in array starting with 0; + // but we draw "1" for the first entry and so on... + snprintf(buf, 3, "%d ", sonde.currentSonde+1); + buf[2]=0; + break; + case 't': + snprintf(buf, 3, "%d", sonde.config.maxsonde); + buf[2]=0; + break; + case 'a': + { + uint8_t active = 0; + for(int i=0; ilaunchsite); + //drawString(de, sonde.si()->launchsite); + //return; + } + if(de->extra[0]) strcat(buf, de->extra+1); + drawString(de, buf); +} +void Display::drawTelemetry(DispEntry *de) { + rdis->setFont(de->fmt); + float value=0; + memset(buf, ' ', 16); + switch(de->extra[0]) { + case 't': + value = sonde.si()->d.temperature; + if(!isnan(value)) { + sprintf(buf, "%5.1f", value); + strcat(buf, de->extra+1); + } + buf[5+strlen(de->extra+1)] = 0; + break; + case 'p': + value = sonde.si()->d.pressure; + if(!isnan(value)) { + if(value>=1000) sprintf(buf, "%6.1f", value); + else sprintf(buf, "%6.2f", value); + strcat(buf, de->extra+1); + } + buf[6+strlen(de->extra+1)] = 0; + break; + case 'h': + value = sonde.si()->d.relativeHumidity; + if(!isnan(value)) { + sprintf(buf, "%4.1f", value); + strcat(buf, de->extra+1); + } + buf[4+strlen(de->extra+1)] = 0; + break; + case 'b': + value = sonde.si()->d.batteryVoltage; + if(!isnan(value)) { + snprintf(buf, 5, "%4.2f", value); + strcat(buf, de->extra+1); + } + buf[5+strlen(de->extra+1)] = 0; + break; + } + drawString(de,buf); +} + +void Display::drawKilltimer(DispEntry *de) { + rdis->setFont(de->fmt); + uint16_t value=0; + switch(de->extra[0]) { + case 'l': value = sonde.si()->d.launchKT; break; + case 'b': value = sonde.si()->d.burstKT; break; + case 'c': value = sonde.si()->d.countKT; break; + } + // format: 4=h:mm; 6=h:mm:ss; s=sssss + uint16_t h=value/3600; + uint16_t m=(value-h*3600)/60; + uint16_t s=value%60; + switch(de->extra[1]) { + case '4': + if(value!=0xffff) snprintf(buf, 5, "%d:%02d", h, m); + else strcpy(buf, " "); + break; + case '6': + if(value!=0xffff) snprintf(buf, 7, "%d:%02d:%02d", h, m, s); + else strcpy(buf, " "); + break; + default: + if(value!=0xffff) snprintf(buf, 6, "%5d", value); + else strcpy(buf, " "); + break; + } + if(de->extra[1]) + strcat(buf, de->extra+2); + drawString(de, buf); +} +#define EARTH_RADIUS (6371000.0F) +#ifndef PI +#define PI (3.1415926535897932384626433832795) +#endif +// defined by Arduino.h #define radians(x) ( (x)*180.0F/PI ) + +extern int lastCourse; // from RX_FSK.ino + + +float calcLatLonDist(float lat1, float lon1, float lat2, float lon2) { + float x = radians(lon1-lon2) * cos( radians((lat1+lat2)/2) ); + float y = radians(lat2-lat1); + float d = sqrt(x*x+y*y)*EARTH_RADIUS; + return d; +} + +void Display::calcGPS() { + float mylat = sonde.config.rxlat; + float mylon = sonde.config.rxlon; + bool valid = !(isnan(mylat)||isnan(mylon)); + if( gpsPos.valid) { + mylat = gpsPos.lat; + mylon = gpsPos.lon; + valid = true; + } + // distance + if( valid && VALIDPOS(sonde.si()->d.validPos) && (layout->usegps&GPSUSE_DIST)) { + gpsDist = (int)calcLatLonDist(mylat, mylon, sonde.si()->d.lat, sonde.si()->d.lon); + } else { + gpsDist = -1; + } + // bearing + if( valid && VALIDPOS(sonde.si()->d.validPos&0x03) && (layout->usegps&GPSUSE_BEARING)) { + float lat1 = radians(mylat); + float lat2 = radians(sonde.si()->d.lat); + float lon1 = radians(mylon); + float lon2 = radians(sonde.si()->d.lon); + float y = sin(lon2-lon1)*cos(lat2); + float x = cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1); + float dir = atan2(y, x)/PI*180; + if(dir<0) dir+=360; + gpsDir = (int)dir; + gpsBear = gpsDir - gpsPos.course; + if(gpsBear < 0) gpsBear += 360; + if(gpsBear >= 360) gpsBear -= 360; + } else { + gpsDir = -1; + gpsBear = -1; + } + + DebugPrintf(DEBUG_DISPLAY, "GPS data: valid%d GPS at %f,%f (alt=%d,cog=%d); sonde at dist=%d, dir=%d rel.bear=%d\n",gpsPos.valid?1:0, + gpsPos.lat, gpsPos.lon, gpsPos.alt, gpsPos.course, gpsDist, gpsDir, gpsBear); +} + +void Display::drawGPS(DispEntry *de) { + // TODO: FIXME: ??? if(sonde.config.gps_rxd<0) return; + rdis->setFont(de->fmt); + switch(de->extra[0]) { + case 'V': + { + // show if GPS location is valid + uint8_t *tile = gpsPos.valid?gps_tile:nogps_tile; + rdis->drawTile(de->x, de->y, 1, tile); + } + break; + case 'O': + // GPS long + snprintf(buf, 16, "%2.5f", gpsPos.lon); + drawString(de,buf); + break; + case 'A': + // GPS lat + snprintf(buf, 16, "%2.5f", gpsPos.lat); + drawString(de,buf); + break; + case 'H': + // GPS alt + snprintf(buf, 16, "%4dm", gpsPos.alt); + drawString(de,buf); + break; + case 'C': + // GPS Course over ground + snprintf(buf, 4, "%3d", gpsPos.course); + drawString(de, buf); + break; + case 'D': + { + // distance + // equirectangular approximation is good enough + if( !VALIDPOS(sonde.si()->d.validPos) ) { + snprintf(buf, 16, "no pos "); + if(de->extra && *de->extra=='5') buf[5]=0; + } else if( disp.gpsDist < 0 ) { + snprintf(buf, 16, "no gps "); + if(de->extra && *de->extra=='5') buf[5]=0; + } else { + if(de->extra && *de->extra=='5') { // 5-character version: ****m / ***km / **e6m + if(disp.gpsDist>999999) snprintf(buf, 16, "%de6m ", (int)(disp.gpsDist/1000000)); + if(disp.gpsDist>9999) snprintf(buf, 16, "%dkm ", (int)(disp.gpsDist/1000)); + else snprintf(buf, 16, "%dm ", (int)disp.gpsDist); + buf[5]=0; + } else { // 6-character version: *****m / ****km) + if(disp.gpsDist>99999) snprintf(buf, 16, "%dkm ", (int)(disp.gpsDist/1000)); + else snprintf(buf, 16, "%dm ", (int)disp.gpsDist); + buf[6]=0; + } + } + drawString(de, buf); + } + break; + case 'I': + // dIrection + if( disp.gpsDir<0 ) { // 0..360 valid, -1 invalid + drawString(de, "---"); + break; + } + snprintf(buf, 16, "%3d", disp.gpsDir); + buf[3]=0; + drawString(de, buf); + if(de->extra[1]==(char)176) + rdis->drawTile(de->x+3, de->y, 1, deg_tile); + break; + case 'B': + // relative bearing + if( disp.gpsBear < 0 ) { // 0..360 valid, -1 invalid + drawString(de, "---"); + break; + } + snprintf(buf, 16, "%3d", disp.gpsBear); + buf[3]=0; + drawString(de, buf); + if(de->extra[1]==(char)176) + rdis->drawTile(de->x+3, de->y, 1, deg_tile); + break; + case '0': + // diagram + { + static int alpha = 0; + alpha = (alpha+5)%360; + struct CircleInfo *circinfo = (struct CircleInfo *)de->extra; + int border = circinfo->brad; + if(border<7) border=7; // space for "N" label + int size = 1 + 2*circinfo->radius + 2*border; + uint16_t *bitmap = (uint16_t *)malloc(sizeof(uint16_t) * size * size); + Serial.printf("Drawing circle with size %d at %d,%d\n",size,de->x, de->y); + for(int i=0; iradius, de->fg, true, de->bg); + // + bool rxgood = (sonde.si()->rxStat[0]==0); + int angN, angA, angB; // angle of north, array, bullet + int validA, validB; // 0: no, 1: yes, -1: old + if(circinfo->arr=='C') { angA=gpsPos.course; validA=disp.gpsCourseOld?-1:1; } + else { angA=disp.gpsDir; validA=sonde.si()->d.validPos?(rxgood?1:-1):0; } + if(circinfo->bul=='C') { angB=gpsPos.course; validB=disp.gpsCourseOld?-1:1; } + else { angB=disp.gpsDir; validB=sonde.si()->d.validPos?(rxgood?1:-1):0; } + if(circinfo->top=='N') { + angN = 0; + } else { + //if (circinfo->top=='C') { + angN = 360-gpsPos.course; + angA += angN; if(angA>=360) angA-=360; + angB += angN; if(angB>=360) angB-=360; + } + Serial.printf("GPS0: %c%c%c N=%d, A=%d, B=%d\n", circinfo->top, circinfo->arr, circinfo->bul, angN, angA, angB); + // "N" in direction angN +#if 1 + // TODO +#else + static_cast(rdis)->tft->drawGFXcharBM(x0 + circinfo->radius*sin(angN*PI/180)-6, y0 - circinfo->radius*cos(angN*PI/180)+7, 'N', 0xffff, bitmap, size, size); +#endif + + // small circle in direction angB + if(validB) { + circ(bitmap, size, x0+circinfo->radius*sin(angB*PI/180), y0-circinfo->radius*cos(angB*PI/180), circinfo->brad, + circinfo->bcol, true, validB==1?circinfo->bcol:0); + } + rdis->drawBitmap(de->x, de->y, bitmap, size, size); + // triangle in direction angA + uint16_t xa,ya,xb,yb,xc,yc; + float xf=sin(angA*PI/180); + float yf=cos(angA*PI/180); + xa = de->x + x0 + xf*circinfo->radius; + ya = de->y + y0 - yf*circinfo->radius; + xb = de->x + x0 + yf*circinfo->awidth; + yb = de->y + y0 + xf*circinfo->awidth; + xc = de->x + x0 - yf*circinfo->awidth; + yc = de->y + y0 - xf*circinfo->awidth; + Serial.printf("%d: %d,%d\n", alpha, xa, ya); + if(validA==-1) + rdis->drawTriangle(xa,ya,xb,yb,xc,yc,circinfo->acol, false); + else if(validA==1) + rdis->drawTriangle(xa,ya,xb,yb,xc,yc,circinfo->acol, true); + free(bitmap); + } + break; + case 'E': + // elevation + break; + } +} + +void Display::drawBatt(DispEntry *de) { + float val; + char buf[30]; + if (!axp192_found) { + if (sonde.config.batt_adc<0) return; + switch (de->extra[0]) + { + case 'V': + val = (float)(analogRead(sonde.config.batt_adc)) / 4095 * 2 * 3.3 * 1.1; + snprintf(buf, 30, "%.2f%s", val, de->extra + 1); + break; + default: + *buf = 0; + } + rdis->setFont(de->fmt); + drawString(de, buf); + } else { + xSemaphoreTake( axpSemaphore, portMAX_DELAY ); + switch(de->extra[0]) { + case 'S': + if(!axp.isBatteryConnect()) { + if(axp.isVBUSPlug()) { strcpy(buf, "U"); } + else { strcpy(buf, "N"); } // no battary + } + else if (axp.isChargeing()) { strcpy(buf, "C"); } // charging + else { strcpy(buf, "B"); } // battery, but not charging + break; + case 'V': + val = axp.getBattVoltage(); + snprintf(buf, 30, "%.2f%s", val/1000, de->extra+1); + break; + case 'C': + val = axp.getBattChargeCurrent(); + snprintf(buf, 30, "%.2f%s", val, de->extra+1); + break; + case 'D': + val = axp.getBattDischargeCurrent(); + snprintf(buf, 30, "%.2f%s", val, de->extra+1); + break; + case 'U': + if(sonde.config.type == TYPE_M5_CORE2) { + val = axp.getAcinVoltage(); + } else { + val = axp.getVbusVoltage(); + } + snprintf(buf, 30, "%.2f%s", val/1000, de->extra+1); + break; + case 'I': + if(sonde.config.type == TYPE_M5_CORE2) { + val = axp.getAcinCurrent(); + } else { + val = axp.getVbusCurrent(); + } + snprintf(buf, 30, "%.2f%s", val, de->extra+1); + break; + case 'T': + val = axp.getTemp(); // fixed in newer versions of libraray: -144.7 no longer needed here! + snprintf(buf, 30, "%.2f%s", val, de->extra+1); + break; + default: + *buf=0; + } + xSemaphoreGive( axpSemaphore ); + rdis->setFont(de->fmt); + drawString(de, buf); + } +} + +void Display::drawText(DispEntry *de) { + rdis->setFont(de->fmt); + drawString(de, de->extra); +} +extern void buzzerLed(int temps); +void Display::updateDisplayPos() { + if( dispstate == 0 ) return; // do not display anything + for(DispEntry *di=layout->de; di->func != NULL; di++) { + if(di->func != disp.drawLat && di->func != disp.drawLon) continue; + di->func(di); + } +} +void Display::updateDisplayPos2() { + if( dispstate == 0 ) return; // do not display anything + for(DispEntry *di=layout->de; di->func != NULL; di++) { + if(di->func != disp.drawAlt && di->func != disp.drawHS && di->func != disp.drawVS) continue; + di->func(di); + } +} +void Display::updateDisplayID() { + if( dispstate == 0 ) return; // do not display anything + for(DispEntry *di=layout->de; di->func != NULL; di++) { + if(di->func != disp.drawID) continue; + di->func(di); + } +} +void Display::updateDisplayRSSI() { + if( dispstate == 0 ) return; // do not display anything + for(DispEntry *di=layout->de; di->func != NULL; di++) { + if(di->func != disp.drawRSSI) continue; + di->func(di); + } +} +void Display::updateStat() { + if( dispstate == 0 ) return; // do not display anything + for(DispEntry *di=layout->de; di->func != NULL; di++) { + if(di->func != disp.drawQS) continue; + di->func(di); + } +} + +void Display::updateDisplayRXConfig() { + if( dispstate == 0 ) return; // do not display anything + for(DispEntry *di=layout->de; di->func != NULL; di++) { + if(di->func != disp.drawQS && di->func != disp.drawAFC) continue; + di->func(di); + } +} + +void Display::updateDisplayIP() { + for(DispEntry *di=layout->de; di->func != NULL; di++) { + if(di->func != disp.drawIP) continue; + Serial.printf("updateDisplayIP: %d %d\n",di->x, di->y); + di->func(di); + } +} + +void Display::updateDisplay() { + if( dispstate == 0 ) return; // do not display anything + calcGPS(); + for(DispEntry *di=layout->de; di->func != NULL; di++) { + di->func(di); + } +} + +// Called when key is pressed or new RX starts +void Display::dispsavectlON() { + // nothing to do to turn display on, may add power on code here later + dispstate = 1; +} + +// Should be called 1x / sec to update display +// parameter: rxactive (1=currently receiving something, 0=no rx) +void Display::dispsavectlOFF(int rxactive) { + if( sonde.config.dispsaver == 0 ) return; // screensaver disabled + if( dispstate == 0 ) return; // already OFF + if( rxactive && ((sonde.config.dispsaver%10)==2) ) return; // OFF only if no RX, but rxactive is 0 + dispstate++; + if( dispstate > (sonde.config.dispsaver/10) ) { + rdis->clear(); + dispstate = 0; + } +} + +void Display::setContrast() { + if(sonde.config.dispcontrast<0) return; + rdis->setContrast(sonde.config.dispcontrast); +} + +Display disp = Display(); diff --git a/RX_FSK/src/Display.h b/RX_FSK/src/Display.h new file mode 100644 index 0000000..f7f8728 --- /dev/null +++ b/RX_FSK/src/Display.h @@ -0,0 +1,185 @@ +#ifndef Display_h +#define Display_h + +#define FONT_LARGE 1 +#define FONT_SMALL 0 + +#include +#include +#include +#include + +struct GpsPos { + double lat; + double lon; + int alt; + int course; + float speed; + int sat; + int accuracy; + int hdop; + int valid; +}; +extern struct GpsPos gpsPos; + +#define WIDTH_AUTO 9999 +struct DispEntry { + int16_t y; + int16_t x; + int16_t fmt, width; + uint16_t fg,bg; + void (*func)(DispEntry *de); + const char *extra; +}; + +#define GPSUSE_BASE 1 +#define GPSUSE_DIST 2 +#define GPSUSE_BEARING 4 +struct DispInfo { + DispEntry *de; + uint8_t *actions; + int16_t *timeouts; + const char *label; + uint8_t usegps; +}; + +struct StatInfo { + uint8_t len; + uint8_t size; +}; + +struct CircleInfo { // 3,5=g0NCS,50,ff0000,000033,5,ffff00,4,ffffff + char type; + char top,bul,arr; // what to point to with top, bullet, array + uint16_t fgcol, bgcol; + uint8_t radius; + uint8_t brad; + uint16_t bcol; + uint8_t awidth; + uint16_t acol; +}; + +// Now starting towards supporting different Display types / libraries +class RawDisplay { +public: + virtual void begin() = 0; + virtual void clear() = 0; + virtual void setContrast(uint8_t contrast) = 0; + virtual void setFont(uint8_t fontindex) = 0; + virtual void getDispSize(uint8_t *height, uint8_t *width, uint8_t *lineskip, uint8_t *colskip) = 0; + virtual void drawString(uint16_t x, uint16_t y, const char *s, int16_t width=WIDTH_AUTO, uint16_t fg=0xffff, uint16_t bg=0 ) = 0; + virtual void drawTile(uint16_t x, uint16_t y, uint8_t cnt, uint8_t *tile_ptr) = 0; + virtual void drawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color, bool fill) = 0; + virtual void drawBitmap(uint16_t x1, uint16_t y1, const uint16_t* bitmap, int16_t w, int16_t h) = 0; + virtual void welcome() = 0; + virtual void drawIP(uint16_t x, uint16_t y, int16_t width=WIDTH_AUTO, uint16_t fg=0xffff, uint16_t bg=0 ) = 0; + virtual void drawQS(uint16_t x, uint16_t y, uint8_t len, uint8_t size, uint8_t *stat, uint16_t fg=0xffff, uint16_t bg=0) = 0; +}; + +class U8x8Display : public RawDisplay { +private: + U8X8 *u8x8 = NULL; // initialize later after reading config file + uint8_t _type; + const uint8_t **fontlist; + int nfonts; + +public: + U8x8Display(uint8_t type = 0) { _type = type; } + void begin(); + void clear(); + void setContrast(uint8_t contrast); + void setFont(uint8_t fontindex); + void getDispSize(uint8_t *height, uint8_t *width, uint8_t *lineskip, uint8_t *colskip); + void drawString(uint16_t x, uint16_t y, const char *s, int16_t width=WIDTH_AUTO, uint16_t fg=0xffff, uint16_t bg=0); + void drawTile(uint16_t x, uint16_t y, uint8_t cnt, uint8_t *tile_ptr); + void drawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color, bool fill); + void drawBitmap(uint16_t x1, uint16_t y1, const uint16_t* bitmap, int16_t w, int16_t h); + void welcome(); + void drawIP(uint16_t x, uint16_t y, int16_t width=WIDTH_AUTO, uint16_t fg=0xffff, uint16_t bg=0); + void drawQS(uint16_t x, uint16_t y, uint8_t len, uint8_t size, uint8_t *stat, uint16_t fg=0xffff, uint16_t bg=0); +}; + +typedef Arduino_GFX MY_ILI9225; + +class Display { +private: + void replaceLayouts(DispInfo *newlayout, int nnew); + int allocDispInfo(int entries, DispInfo *d, char *label); + void parseDispElement(char *text, DispEntry *de); + int xscale=13, yscale=22; + int fontsma=0, fontlar=1; + uint16_t colfg, colbg; + static void circ(uint16_t *bm, int16_t w, int16_t x0, int16_t y0, int16_t r, uint16_t fg, boolean fill, uint16_t bg); + static int countEntries(File f); + void calcGPS(); + int gpsDist; // -1: invalid + int gpsDir, gpsBear; // 0..360; -1: invalid + boolean gpsCourseOld; + static const int LINEBUFLEN{ 255 }; + static char lineBuf[LINEBUFLEN]; + static const char *trim(char *s) { + char *ret = s; + while(*ret && isspace(*ret)) { ret++; } + while(1) { + int lastidx; + lastidx = strlen(ret)-1; + if(lastidx>=0 && isspace(ret[lastidx])) + ret[lastidx] = 0; + else + break; + } + return ret; + } +public: + static int getScreenIndex(int index); + void initFromFile(int index); + + int layoutIdx; + DispInfo *layout; + + DispInfo *layouts; + int nLayouts; + static RawDisplay *rdis; + uint16_t dispstate; + + Display(); + void init(); + static char buf[17]; + static void drawLat(DispEntry *de); + static void drawLon(DispEntry *de); + static void drawAlt(DispEntry *de); + static void drawHS(DispEntry *de); + static void drawVS(DispEntry *de); + static void drawID(DispEntry *de); + static void drawRSSI(DispEntry *de); + static void drawQS(DispEntry *de); + static void drawType(DispEntry *de); + static void drawFreq(DispEntry *de); + static void drawAFC(DispEntry *de); + static void drawIP(DispEntry *de); + static void drawSite(DispEntry *de); + static void drawTelemetry(DispEntry *de); + static void drawKilltimer(DispEntry *de); + static void drawGPS(DispEntry *de); + static void drawText(DispEntry *de); + static void drawBatt(DispEntry *de); + static void drawString(DispEntry *de, const char *str); + void clearIP(); + void setIP(const char *ip, bool AP); + void updateDisplayPos(); + void updateDisplayPos2(); + void updateDisplayID(); + void updateDisplayRSSI(); + void updateStat(); + void updateDisplayRXConfig(); + void updateDisplayIP(); + void updateDisplay(); + void dispsavectlON(); + void dispsavectlOFF(int rxactive); + void setLayout(int layout); + void setContrast(); +}; + +extern Display disp; + +#endif diff --git a/RX_FSK/src/M10M20.cpp b/RX_FSK/src/M10M20.cpp new file mode 100644 index 0000000..bfaf0a8 --- /dev/null +++ b/RX_FSK/src/M10M20.cpp @@ -0,0 +1,652 @@ + +/* M10 and M20 decoder functions */ + +#include "M10M20.h" +#include "SX1278FSK.h" +#include "rsc.h" +#include "Sonde.h" +#include + +#define M10M20_DEBUG 1 + +#if M10M20_DEBUG +#define M10M20_DBG(x) x +#else +#define M10M20_DBG(x) +#endif + + +static byte data1[512]; +static byte *dataptr=data1; + +static uint8_t rxbitc; +static uint16_t rxbyte; +static int rxp=0; +static int haveNewFrame = 0; +//static int lastFrame = 0; +static int headerDetected = 0; + + +decoderSetupCfg m10m20SetupCfg = { + .bitrate = 9600, + //// Disable auto-AFC, auto-AGC, RX Trigger by preamble + .rx_cfg = 0x00, + .sync_cfg = 0x70, + .sync_len = 1, + .sync_data = (const uint8_t *)"\x66\x66", + // Preamble detection off (+ size 1 byte, maximum tolerance; should not matter for "off"?) + .preamble_cfg = 0x00 | 0x00 | 0x1F, +}; + +int M10M20::setup(float frequency, int /*type*/) +{ + M10M20_DBG(Serial.println("Setup sx1278 for M10/M20 sonde"));; + if(sx1278.ON()!=0) { + M10M20_DBG(Serial.println("Setting SX1278 power on FAILED")); + return 1; + } + // setFSK: switches to FSK standby mode + if(sx1278.setFSK()!=0) { + M10M20_DBG(Serial.println("Setting FSK mode FAILED")); + return 1; + } + Serial.print("M10/M20: setting RX frequency to "); + Serial.println(frequency); + int res = sx1278.setFrequency(frequency); + // Test: maybe fix issue after spectrum display? + sx1278.writeRegister(REG_PLL_HOP, 0); + + if(sx1278.setAFCBandwidth(sonde.config.m10m20.agcbw)!=0) { + M10M20_DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", sonde.config.m10m20.agcbw)); + return 1; + } + if(sx1278.setRxBandwidth(sonde.config.m10m20.rxbw)!=0) { + M10M20_DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", sonde.config.m10m20.rxbw)); + return 1; + } + +/// TODO: Maybe do this conditionally? -- maybe skip if afc if agcbw set to 0 or -1? +//// Step 1: Tentative AFC mode + sx1278.clearIRQFlags(); + // preamble detector + AFC + AGC on + // wait for preamble interrupt within 2sec + sx1278.setBitrate(4800); + // DetectorOn=1, Preamble detector size 01, preamble tol 0x0A (10) + sx1278.setPreambleDetect(0x80 | 0x20 | 0x0A); + // Manual start RX, Enable Auto-AFC, Auto-AGC, RX Trigger (AGC+AFC)by preamble + sx1278.setRxConf(0x20 | 0x10 | 0x08 | 0x06); + // Packet config 1: fixed len, no mancecer, no crc, no address filter + // Packet config 2: packet mode, no home ctrl, no beackn, msb(packetlen)=0) + if(sx1278.setPacketConfig(0x08, 0x40)!=0) { + M10M20_DBG(Serial.println("Setting Packet config FAILED")); + return 1; + } + // enable RX + sx1278.setPayloadLength(0); + sx1278.writeRegister(REG_OP_MODE, FSK_RX_MODE); + unsigned long t0 = millis(); + M10M20_DBG(Serial.printf("M10M20::setup() AFC preamble search start at %ld\n",t0)); + while( millis() - t0 < 1000 ) { + uint8_t value = sx1278.readRegister(REG_IRQ_FLAGS1); + if(value & 2) { + int32_t afc = sx1278.getAFC(); + int16_t rssi = sx1278.getRSSI(); + Serial.printf("M10M20::setup: preamble: AFC is %d, RSSI is %.1f\n", afc, rssi/2.0); + sonde.sondeList[rxtask.currentSonde].rssi = rssi; + sonde.sondeList[rxtask.currentSonde].afc = afc; + break; + } + yield(); + } + if( millis() - t0 >= 1000) { + Serial.println("Preamble scan for AFC: TIMEOUT\n"); + return 1; // no preamble, so we may fail fast.... + } + +//// Step 2: Real reception + if( DecoderBase::setup(m10m20SetupCfg, sonde.config.m10m20.agcbw, sonde.config.m10m20.rxbw)!=0 ) { + return 1; + } +#if 0 + // Now all done in DecoderBase::setup + // FSK standby mode, seems like otherweise baudrate cannot be changed? + sx1278.setFSK(); + if(sx1278.setBitrate(9600)!=0) { + M10M20_DBG(Serial.println("Setting bitrate 9600bit/s FAILED")); + return 1; + } + M10M20_DBG(Serial.printf("Exact bitrate is %f\n", sx1278.getBitrate())); + // Probably not necessary, as this was set before + if(sx1278.setAFCBandwidth(sonde.config.m10m20.agcbw)!=0) { + M10M20_DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", sonde.config.m10m20.agcbw)); + return 1; + } + if(sx1278.setRxBandwidth(sonde.config.m10m20.rxbw)!=0) { + M10M20_DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", sonde.config.m10m20.rxbw)); + return 1; + } + + ///// Enable auto-AFC, auto-AGC, RX Trigger by preamble + //if(sx1278.setRxConf(0x1E)!=0) { + // Disable auto-AFC, auto-AGC, RX Trigger by preamble + if(sx1278.setRxConf(0x00)!=0) { + M10M20_DBG(Serial.println("Setting RX Config FAILED")); + return 1; + } + // version 1, working with continuous RX + const char *SYNC="\x66\x66"; + if(sx1278.setSyncConf(0x70, 1, (const uint8_t *)SYNC)!=0) { + M10M20_DBG(Serial.println("Setting SYNC Config FAILED")); + return 1; + } + // Preamble detection off (+ size 1 byte, maximum tolerance; should not matter for "off"?) + if(sx1278.setPreambleDetect(0x00 | 0x00 | 0x1F)!=0) { + M10M20_DBG(Serial.println("Setting PreambleDetect FAILED")); + return 1; + } +#endif + + // Packet config 1: fixed len, no mancecer, no crc, no address filter + // Packet config 2: packet mode, no home ctrl, no beackn, msb(packetlen)=0) + if(sx1278.setPacketConfig(0x08, 0x40)!=0) { + M10M20_DBG(Serial.println("Setting Packet config FAILED")); + return 1; + } + + // enable RX + sx1278.setPayloadLength(0); // infinite for now... + sx1278.setRxConf(0x20); + uint16_t afc = sx1278.getRawAFC(); + sx1278.writeRegister(REG_OP_MODE, FSK_RX_MODE); + delay(50); + sx1278.setRawAFC(afc); + delay(50); + Serial.printf("after RX_MODE: AFC is %d\n", sx1278.getAFC()); + +#if M10M20_DEBUG + M10M20_DBG(Serial.println("Setting SX1278 config for M10 finished\n"); Serial.println()); +#endif + return res; +} + + +M10M20::M10M20() { +} + +#define M10_FRAMELEN 101 +#define M10_CRCPOS 99 + +#define M20_FRAMELEN 88 +#define M20_CRCPOSB 22 + +void M10M20::printRaw(uint8_t *data, int len) +{ + char buf[3]; + int i; + for(i=0; i> 1) | ((b & 1) << 7); + b ^= (b >> 2) & 0xFF; + // A1 + t6 = ( c & 1) ^ ((c >> 2) & 1) ^ ((c >> 4) & 1); + t7 = ((c >> 1) & 1) ^ ((c >> 3) & 1) ^ ((c >> 5) & 1); + t = (c & 0x3F) | (t6 << 6) | (t7 << 7); + // A2 + s = (c >> 7) & 0xFF; + s ^= (s >> 2) & 0xFF; + c0 = b ^ t ^ s; + return ((c1 << 8) | c0) & 0xFFFF; +} +static uint16_t crc_M10M20(int len, uint8_t *msg) { + uint16_t cs = 0; + for (int i = 0; i < len; i++) { + cs = update_checkM10M20(cs, msg[i]); + } + return cs; +} +static bool checkM10M20crc(int crcpos, uint8_t *msg) { + uint16_t cs, cs1; + cs = crc_M10M20(crcpos, msg); + cs1 = (msg[crcpos] << 8) | msg[crcpos+1]; + return (cs1 == cs); +} + +typedef uint32_t SET256[8]; +static SET256 sondeudp_VARSET = {0x03BBBBF0UL,0x80600000UL,0x06A001A0UL, + 0x0000001CUL,0x00000000UL,0x00000000UL,0x00000000UL, + 0x00000000UL}; +// VARSET=SET256{4..9,11..13,15..17,19..21,23..25,53..54,63,69,71,72,85,87,89,90,98..100}; +static SET256 sondeudp_VARSETM20 = {0xF3E27F54UL,0x0000000FUL,0x00000030UL, + 0x00000000UL, 0x00444C39UL, 0x53445A00UL, 0x00000000UL, + 0x00000000UL}; +// VARSET=SET256{2,4,6,8..10,11..14,17,21..25,28..35,68,69}; (* known as variable *) + +static uint8_t fixcnt[M10_FRAMELEN]; +static uint8_t fixbytes[M10_FRAMELEN]; + +static int32_t getint32(uint8_t *data) { + return (int32_t)( data[3]|(data[2]<<8)|(data[1]<<16)|(data[0]<<24) ); +} + +static int32_t getint24(uint8_t *data) { + return (int32_t)(data[2]|(data[1]<<8)|(data[0]<<16) ); +} + +static int32_t getint24_r(uint8_t *data) { + return (int32_t)(data[0]|(data[1]<<8)|(data[2]<<16) ); +} + +static int16_t getint16(uint8_t *data) { + return (int16_t)(data[1]|((uint16_t)data[0]<<8)); +} + +static int16_t getint16_r(uint8_t *data) { + return (int16_t)(((uint16_t)data[1]<<8) |data[0]); +} + +static char dez(uint8_t nr) { + nr = nr%10; + return '0'+nr; +} +static char hex(uint8_t nr) { + nr = nr&0x0f; + if(nr<10) return '0'+nr; + else return 'A'+nr-10; +} +const static float DEGMUL = 1.0/0xB60B60; + +#define VMUL 0.005 +#define VMUL_M20 0.01 +#ifndef PI +#define PI (3.1415926535897932384626433832795) +#endif +#define RAD (PI/180) + + +// ret: 1=frame ok; 2=frame with errors; 0=ignored frame (m10dop-alternativ) +int M10M20::decodeframeM10(uint8_t *data) { + int repairstep = 16; + int repl = 0; + bool crcok; + // error correction, inspired by oe5dxl's sondeudp + do { + crcok = checkM10M20crc(M10_CRCPOS, data); + if(crcok || repairstep==0) break; + repl = 0; + for(int i=0; i=repairstep) ) { + repl++; + data[i] = fixbytes[i]; + } + } + repairstep >>= 1; + } while(true); + if(crcok) { + for(int i=0; id); + + // Its a M10 + // getid... + char ids[12]; + ids[0] = 'M'; + ids[1] = 'E'; + ids[2] = hex(data[95]/16); + ids[3] = hex(data[95]); + ids[4] = hex(data[93]); + uint32_t id = data[96] + data[97]*256; + ids[5] = hex(id/4096); + ids[6] = hex(id/256); + ids[7] = hex(id/16); + ids[8] = hex(id); + ids[9] = 0; + strncpy(si->id, ids, 10); + ids[0] = hex(data[95]/16); + ids[1] = dez((data[95]&0x0f)/10); + ids[2] = dez((data[95]&0x0f)); + ids[3] = '-'; + ids[4] = dez(data[93]); + ids[5] = '-'; + ids[6] = dez(id>>13); + id &= 0x1fff; + ids[7] = dez(id/1000); + ids[8] = dez((id/100)%10); + ids[9] = dez((id/10)%10); + ids[10] = dez(id%10); + ids[11] = 0; + strncpy(si->ser, ids, 12); + si->validID = true; + Serial.printf("ID is %s [%02x %02x %d]\n", ids, data[95], data[93], id); + // ID printed on sonde is ...-.-abbbb, with a=id>>13, bbbb=id&0x1fff in decimal + // position data + si->lat = getint32(data+14) * DEGMUL; + si->lon = getint32(data+18) * DEGMUL; + si->alt = getint32(data+22) * 0.001; + float ve = getint16(data+4)*VMUL; + float vn = getint16(data+6)*VMUL; + si->vs = getint16(data+8) * VMUL; + si->hs = sqrt(ve*ve+vn*vn); + si->sats = data[30]; + float dir = atan2(ve, vn)*(1.0/RAD); + if(dir<0) dir+=360; + si->dir = dir; + si->validPos = 0x3f; + // m10 temp + float T = NAN; + { + const float p0 = 1.07303516e-03, p1 = 2.41296733e-04, p2 = 2.26744154e-06, p3 = 6.52855181e-08; + const float Rs[3] = { 12.1e3 , 36.5e3 , 475.0e3 }; + const float Rp[3] = { 1e20 , 330.0e3 , 2000.0e3 }; + uint8_t sct = data[62]; + float rt = getint16_r(data+63) & (0xFFF); + if(rt!=0 && sct<3) { + rt = (4095-rt)/rt - (Rs[sct]/Rp[sct]); + if(rt>0) { + rt = Rs[sct] / rt; + if(rt>0) { + rt = log(rt); + rt = 1/( p0 + p1*rt + p2*rt*rt + p3*rt*rt*rt ) - 273.15; + if(rt>-99 && rt<50) { T = rt; } + } + } + } + si->temperature = T; + } + + // m10 battery + uint16_t batADC = (uint16_t)getint16_r(data+0x45); + si->batteryVoltage = 2.709 * batADC * 2.5/1023.0; + + // m10 humidity + { + float cRHc55 = ((float)(uint32_t)getint24_r(data+0x35)) / (uint32_t)getint24_r(data+0x32); + float TH = -273.15; + const float huRs = 22.1e3; + const float p0 = 4.42606809e-03, p1 = -6.58184309e-04, p2 = 8.95735557e-05, p3 = -2.84347503e-06; + float R = huRs / ( (4095.0/getint16_r(data+0x59)) - 1 ); + if(R>0) TH += 1/( p0 + p1*log(R) + p2*log(R)*log(R) + p3*log(R)*log(R)*log(R) ); + //float Tc = T; + float rh = (cRHc55-0.8955)/0.002; + const float T0=0.0, T1=-30.0; + //float T = Tc; + if(T100.0) rh=100.0; + si->relativeHumidity = rh; + } + Serial.printf("hum: %.2f batt: %.2f\n", si->relativeHumidity, si->batteryVoltage); + + uint32_t gpstime = getint32(data+10); + uint16_t gpsweek = getint16(data+32); + // UTC is GPSTIME - 18s (24*60*60-18 = 86382) + // one week = 7*24*60*60 = 604800 seconds + // unix epoch starts jan 1st 1970 0:00 + // gps time starts jan 6, 1980 0:00. thats 315964800 epoch seconds. + // subtracting 86400 yields 315878400UL + si->time = (gpstime/1000) + 86382 + gpsweek*604800 + 315878400UL; + // consistent with autorx, vframe is based on GPS time without the -18 seconds adjustment + // for the GPS time / UTC time difference (included in 86382 above) + si->vframe = si->time - 315964800 + 18; + si->validTime = true; + } else { + Serial.printf("data is %02x %02x %02x\n", data[0], data[1], data[2]); + return 0; + } + return 1; +} + +static uint32_t rxdata; +static bool rxsearching=true; +static bool isM20=false; + +// search for +// //101001100110011010011010011001100110100110101010100110101001 +// //1010011001100110100110100110 0110.0110 1001.1010 1010.1001 1010.1001 => 0x669AA9A9 +void M10M20::processM10data(uint8_t dt) +{ + for(int i=0; i<8; i++) { + uint8_t d = (dt&0x80)?1:0; + dt <<= 1; + rxdata = (rxdata<<1) | d; + if( (rxbitc&1)==0 ) { + // "bit1" + rxbyte = (rxbyte<<1) | d; + } else { + // "bit2" ==> 01 or 10 => 1, otherweise => 0 + rxbyte = rxbyte ^ d; + } + // + if(rxsearching) { + if( rxdata == 0xcccca64c || rxdata == 0x333359b3 ) { + rxsearching = false; + rxbitc = 0; + rxp = 0; + isM20 = false; + headerDetected = 1; +#if 1 + int rssi=sx1278.getRSSI(); + int fei=sx1278.getFEI(); + int afc=sx1278.getAFC(); + Serial.print("SYNC!!! Test: RSSI="); Serial.print(rssi); + Serial.print(" FEI="); Serial.print(fei); + Serial.print(" AFC="); Serial.println(afc); + sonde.si()->rssi = rssi; + sonde.si()->afc = afc; +#endif + } + } else { + rxbitc = (rxbitc+1)%16; // 16; + if(rxbitc == 0) { // got 8 data bit + //Serial.printf("%03x ",rxbyte); + dataptr[rxp++] = rxbyte&0xff; // (rxbyte>>1)&0xff; + // detect type of sonde: + // 64 9F 20 => M10 + // 64 49 0x => M10 (?) -- not used here + // 45 20 7x => M20 + if(rxp==2 && dataptr[0]==0x45 && dataptr[1]==0x20) { isM20 = true; } + if(isM20) { + memcpy(sonde.si()->d.typestr, "M20 ", 5); + sonde.si()->d.subtype = 2; + if(rxp>=M20_FRAMELEN) { + rxsearching = true; + haveNewFrame = decodeframeM20(dataptr); + } + } else { + memcpy(sonde.si()->d.typestr, "M10 ", 5); + sonde.si()->d.subtype = 1; + if(rxp>=M10_FRAMELEN) { + rxsearching = true; + haveNewFrame = decodeframeM10(dataptr); + } + } + } + } + } +} + +int M10M20::receive() { + unsigned long t0 = millis(); + Serial.printf("M10M20::receive() start at %ld\n",t0); + while( millis() - t0 < 1100 ) { + uint8_t value = sx1278.readRegister(REG_IRQ_FLAGS2); + if ( bitRead(value, 7) ) { + Serial.println("FIFO full"); + } + if ( bitRead(value, 4) ) { + Serial.println("FIFO overflow"); + } + if ( bitRead(value, 2) == 1 ) { + Serial.println("FIFO: ready()"); + sx1278.clearIRQFlags(); + } + if(bitRead(value, 6) == 0) { // while FIFO not empty + byte data = sx1278.readRegister(REG_FIFO); + //Serial.printf("%02x:",data); + processM10data(data); + value = sx1278.readRegister(REG_IRQ_FLAGS2); + } else { + if(headerDetected) { + t0 = millis(); // restart timer... don't time out if header detected... + headerDetected = 0; + } + if(haveNewFrame) { + Serial.printf("M10M20::receive(): new frame complete after %ldms\n", millis()-t0); + printRaw(dataptr, M10_FRAMELEN); + int retval = haveNewFrame==1 ? RX_OK: RX_ERROR; + haveNewFrame = 0; + return retval; + } + delay(2); + } + } + int32_t afc = sx1278.getAFC(); + int16_t rssi = sx1278.getRSSI(); + Serial.printf("receive: AFC is %d, RSSI is %.1f\n", afc, rssi/2.0); + Serial.printf("M10M20::receive() timed out\n"); + return RX_TIMEOUT; // TODO RX_OK; +} + +#define M10MAXLEN (240) + +int M10M20::waitRXcomplete() { + return 0; +} + + + +// ret: 1=frame ok; 2=frame with errors; 0=ignored frame (m20dop-alternativ) +int M10M20::decodeframeM20(uint8_t *data) { + int repairstep = 16; + int frl; + int repl = 0; + bool crcok = false; + bool crcbok = false; + //SondeInfo *si = sonde.si(); + SondeData *si = &(sonde.si()->d); + // error correction, inspired by oe5dxl's sondeudp + // check first block + uint8_t s[200]; + s[0] = 0x16; + for(int i=1; i<=M20_CRCPOSB-1; i++) { s[i] = data[i+1]; } + crcbok = (crc_M10M20(M20_CRCPOSB-1, s) == + ((data[M20_CRCPOSB] << 8) | data[M20_CRCPOSB+1])); + + frl = data[0] + 1; // frame len? (0x45+1 => 70) + if(frl>M20_FRAMELEN) { frl = M20_FRAMELEN; } + do { + crcok = checkM10M20crc(frl-2, data); + if(crcok || repairstep == 0) break; + repl = 0; + for(int i=crcbok?M20_CRCPOSB+2:0; i=repairstep) ) { + repl++; + data[i] = fixbytes[i]; + } + } + repairstep >>= 1; + } while(true); + if(crcbok) { + int oklen = crcok ? frl-2 : 21; + for(int i=0; iid, ids, 10); + // Serial: AAB-C-DDEEE + char *ser = si->ser; + uint8_t tmp = data[18] & 0x7F; + ser[0] = (tmp/12) + '0'; + ser[1] = ((tmp%12 + 1) / 10 ) + '0'; + ser[2] = ((tmp%12 + 1) % 10 ) + '0'; + ser[3] = '-'; + ser[4] = ((data[19]&0x03)<<1) + (data[18]/128) + 1 + '0'; + ser[5] = '-'; + ser[6] = ids[4]; + ser[7] = ids[5]; + ser[8] = ids[6]; + ser[9] = ids[7]; + ser[10] = ids[8]; + ser[11] = 0; + + // TODO + if(crcok) { + si->validID = true; + //Serial.printf("ID is %s [%02x %02x %d]\n", ids, data[95], data[93], id); + // ID printed on sonde is ...-.-abbbb, with a=id>>13, bbbb=id&0x1fff in decimal + // position data + // 0x1C 4 byte + si->lat = getint32(data+28) * 1e-6; + //0x20 4 byte + si->lon = getint32(data+32) * 1e-6; + //0x08 3 byte + si->alt = getint24(data+8) * VMUL_M20; + //0x0B 2 byte + //VMUL_M20 specific + float ve = getint16(data+11)*VMUL_M20; + //0x0D 2 byte + float vn = getint16(data+13)*VMUL_M20; + //0x18 2 byte + si->vs = getint16(data+24) * VMUL_M20; + si->hs = sqrt(ve*ve+vn*vn); + float dir = atan2(ve, vn)*(1.0/RAD); + if(dir<0) dir+=360; + si->dir = dir; + si->validPos = 0x3f; + + //0x0F 3 byte + uint32_t tow = getint24(data+15); + uint16_t week = getint16(data+26); + si->time = (tow+week*604800+315964800)-18; + si->vframe =si->time - 315964800; + + si->validTime = true; + } + return crcok?1:2; +} + + +M10M20 m10m20 = M10M20(); diff --git a/RX_FSK/src/M10M20.h b/RX_FSK/src/M10M20.h new file mode 100644 index 0000000..9585b90 --- /dev/null +++ b/RX_FSK/src/M10M20.h @@ -0,0 +1,66 @@ +/* + * M10M20.h + * Functions for decoding Meteomodem M10M20 sondes with SX127x chips + * Copyright (C) 2019 Hansi Reiser, dl9rdz + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef M10M20_h +#define M10M20_h + +#include +#include +#include +#ifndef inttypes_h + #include +#endif +#include "DecoderBase.h" + +/* Main class */ +class M10M20 : public DecoderBase +{ +private: + void printRaw(uint8_t *data, int len); + void processM10data(uint8_t data); + int decodeframeM10(uint8_t *data); + int decodeframeM20(uint8_t *data); +#if 0 + void stobyte92(uint8_t byte); + void dogps(const uint8_t *sf, int sf_len, + struct CONTEXTR9 * cont, uint32_t * timems, + uint32_t * gpstime); + uint32_t bits2val(const uint8_t *bits, int len); + int bitsToBytes(uint8_t *bits, uint8_t *bytes, int len); + int decode92(byte *data, int maxlen); + + uint8_t hamming_conf[ 7*8]; // 7*8=56 + uint8_t hamming_dat1[13*8]; // 13*8=104 + uint8_t hamming_dat2[13*8]; + + uint8_t block_conf[ 7*4]; // 7*4=28 + uint8_t block_dat1[13*4]; // 13*4=52 + uint8_t block_dat2[13*4]; + + uint8_t H[4][8] = // extended Hamming(8,4) particy check matrix + {{ 0, 1, 1, 1, 1, 0, 0, 0}, + { 1, 0, 1, 1, 0, 1, 0, 0}, + { 1, 1, 0, 1, 0, 0, 1, 0}, + { 1, 1, 1, 0, 0, 0, 0, 1}}; + uint8_t He[8] = { 0x7, 0xB, 0xD, 0xE, 0x8, 0x4, 0x2, 0x1}; // Spalten von H: + // 1-bit-error-Syndrome + boolean initialized = false; +#endif + +public: + M10M20(); + int setup(float frequency, int type = 0); + int receive(); + int waitRXcomplete(); + + //int use_ecc = 1; +}; + +extern M10M20 m10m20; + +#endif diff --git a/RX_FSK/src/MP3H.cpp b/RX_FSK/src/MP3H.cpp new file mode 100644 index 0000000..43458a5 --- /dev/null +++ b/RX_FSK/src/MP3H.cpp @@ -0,0 +1,559 @@ + +/* MP3H decoder functions */ + +#include "MP3H.h" +#include "SX1278FSK.h" +#include "rsc.h" +#include "Sonde.h" +#include + +#define MP3H_DEBUG 1 + +#if MP3H_DEBUG +#define MP3H_DBG(x) x +#else +#define MP3H_DBG(x) +#endif + +static struct st_mp3hstate { + uint32_t id1, id2; + uint8_t idok; + uint32_t gpsdate; + uint32_t gpsdatetime; + bool dateok; +} mp3hstate; + +static byte data1[512]; +static byte *dataptr=data1; + +static uint8_t rxbitc; +static uint16_t rxbyte; +static int rxp=0; +static int haveNewFrame = 0; +//static int lastFrame = 0; +static int headerDetected = 0; + +extern uint16_t MON[]; + +decoderSetupCfg mp3hSetupCfg = { + .bitrate = 2400, + .rx_cfg = 0x00, + .sync_cfg = 0x70, + .sync_len = 1, + .sync_data = (const uint8_t *)"\x66\x66", + .preamble_cfg = 0x00 | 0x00 | 0x1F +}; + +int MP3H::setup(float frequency, int /*type*/) +{ + MP3H_DBG(Serial.println("Setup sx1278 for MP3H sonde"));; + if(sx1278.ON()!=0) { + MP3H_DBG(Serial.println("Setting SX1278 power on FAILED")); + return 1; + } + // setFSK: switches to FSK standby mode + if(sx1278.setFSK()!=0) { + MP3H_DBG(Serial.println("Setting FSK mode FAILED")); + return 1; + } + Serial.print("MP3H: setting RX frequency to "); + Serial.println(frequency); + int res = sx1278.setFrequency(frequency); + // Test: maybe fix issue after spectrum display? + sx1278.writeRegister(REG_PLL_HOP, 0); + + if(sx1278.setAFCBandwidth(sonde.config.mp3h.agcbw)!=0) { + MP3H_DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", sonde.config.mp3h.agcbw)); + return 1; + } + if(sx1278.setRxBandwidth(sonde.config.mp3h.rxbw)!=0) { + MP3H_DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", sonde.config.mp3h.rxbw)); + return 1; + } + +//// Step 2: Real reception + if(DecoderBase::setup(mp3hSetupCfg, sonde.config.mp3h.agcbw, sonde.config.mp3h.rxbw)!=0) { + return 1; + } +#if 0 + // Now all done in Decoderbase + // FSK standby mode, seems like otherweise baudrate cannot be changed? + sx1278.setFSK(); + if(sx1278.setBitrate(2400)!=0) { + MP3H_DBG(Serial.println("Setting bitrate 2400bit/s FAILED")); + return 1; + } + MP3H_DBG(Serial.printf("Exact bitrate is %f\n", sx1278.getBitrate())); + // Probably not necessary, as this was set before + if(sx1278.setAFCBandwidth(sonde.config.mp3h.agcbw)!=0) { + MP3H_DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", sonde.config.mp3h.agcbw)); + return 1; + } + if(sx1278.setRxBandwidth(sonde.config.mp3h.rxbw)!=0) { + MP3H_DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", sonde.config.mp3h.rxbw)); + return 1; + } + + ///// Enable auto-AFC, auto-AGC, RX Trigger by preamble + //if(sx1278.setRxConf(0x1E)!=0) { + // Disable auto-AFC, auto-AGC, RX Trigger by preamble + if(sx1278.setRxConf(0x00)!=0) { + MP3H_DBG(Serial.println("Setting RX Config FAILED")); + return 1; + } + // version 1, working with continuous RX + const char *SYNC="\x66\x66"; + if(sx1278.setSyncConf(0x70, 1, (const uint8_t *)SYNC)!=0) { + MP3H_DBG(Serial.println("Setting SYNC Config FAILED")); + return 1; + } + // Preamble detection off (+ size 1 byte, maximum tolerance; should not matter for "off"?) + if(sx1278.setPreambleDetect(0x00 | 0x00 | 0x1F)!=0) { + MP3H_DBG(Serial.println("Setting PreambleDetect FAILED")); + return 1; + } +#endif + + // Packet config 1: fixed len, no mancecer, no crc, no address filter + // Packet config 2: packet mode, no home ctrl, no beackn, msb(packetlen)=0) + if(sx1278.setPacketConfig(0x08, 0x40)!=0) { + MP3H_DBG(Serial.println("Setting Packet config FAILED")); + return 1; + } + + // enable RX + sx1278.setPayloadLength(0); // infinite for now... + //sx1278.setRxConf(0x20); + uint16_t afc = sx1278.getRawAFC(); + sx1278.writeRegister(REG_OP_MODE, FSK_RX_MODE); + delay(50); + sx1278.setRawAFC(afc); + delay(50); + Serial.printf("after RX_MODE: AFC is %d\n", sx1278.getAFC()); + + memset((void *)&mp3hstate, 0, sizeof(mp3hstate)); +#if MP3H_DEBUG + MP3H_DBG(Serial.println("Setting SX1278 config for MP3H finished\n"); Serial.println()); +#endif + return res; +} + + +MP3H::MP3H() { +} + +#define MP3H_FRAMELEN 49 + +// offsets from zilog +// https://github.com/rs1729/RS/blob/master/demod/mod/mp3h1mod.c +#define OFS -3 +#define pos_CNT1 (OFS+ 3) // 1 nibble (0x80..0x8F ?) +#define pos_TIME (OFS+ 4) // 3*1 byte +#define pos_GPSecefX (OFS+ 8) // 4 byte +#define pos_GPSecefY (OFS+12) // 4 byte +#define pos_GPSecefZ (OFS+16) // 4 byte +#define pos_GPSecefV (OFS+20) // 3*2 byte +#define pos_GPSnSats (OFS+26) // 1 byte (num Sats ?) +#define pos_PTU1 (OFS+35) // 4 byte +#define pos_PTU2 (OFS+39) // 4 byte +#define pos_CNT2 (OFS+43) // 1 byte (0x01..0x10 ?) +#define pos_CFG (OFS+44) // 2/4 byte +#define pos_CRC (OFS+48) // 2 byte + + +#define crc16poly 0xA001 +static bool checkMP3CRC(uint8_t *data) +{ + int start = pos_CNT1; + int len = 45; + uint16_t rem = 0xffff; + for(int i=0; i>1) ^ crc16poly; + else rem = rem>>1; + } + } + uint16_t crcdat = data[pos_CRC] | (data[pos_CRC+1]<<8); + return rem == crcdat ? true : false; +} + +void MP3H::printRaw(uint8_t *data, int len) +{ + char buf[3]; + int i; + for(i=0; id); + double wx = i4(buf+pos_GPSecefX) * 0.01; + double wy = i4(buf+pos_GPSecefY) * 0.01; + double wz = i4(buf+pos_GPSecefZ) * 0.01; + double vx = i2(buf+pos_GPSecefV) * 0.01; + double vy = i2(buf+pos_GPSecefV+2) * 0.01; + double vz = i2(buf+pos_GPSecefV+4) * 0.01; + if(wx==0 && wy==0 && wz==0) { if(si->validPos&0x7f) { si->validPos |= 0x80; } return; } + // wgs84r + double lat, lng, alt; + wgs84r(wx, wy, wz, &lat, &lng, &alt); + if(alt<-1000 || alt>80000) { if(si->validPos&0x7f) { si->validPos |= 0x80; } return; } + si->lat = (float)(lat*DEG); + si->lon = (float)(lng*DEG); + si->alt = alt; + // speeddir + double sinlat = sin(lat); + double coslat = cos(lat); + double sinlng = sin(lng); + double coslng = cos(lng); + double vn = -vx*sinlat*coslng - vy*sinlat*sinlng + vz*coslat; + double ve = -vx*sinlng + vy*coslng; + double clb = vx*coslat*coslng + vy*coslat*sinlng + vz*sinlat; + double dir = atang2(vn, ve)/RAD; + if(dir<0.0) dir+=360.0; + si->dir = dir; + si->vs = clb; + si->hs = sqrt(vn*vn + ve*ve); + si->sats = buf[pos_GPSnSats]; + + Serial.printf("Pos: %f %f alt %f dir %f vs %f hs %f sats %d\n", si->lat, si->lon, si->alt, si->dir, si->vs, si->hs, si->sats); + si->validPos = 0x7f; +} +static uint32_t getgpstime(uint8_t *buf) { + return buf[pos_TIME] * 60*60 + buf[pos_TIME+1] * 60 + buf[pos_TIME+2]; +} +// unix time stamp from date and time info in frame. +static void getmp3htime(uint8_t *buf) { + //SondeInfo *si = sonde.si(); + SondeData *si =&(sonde.si()->d); + + // gpsdate from CFG frame 15 (0 if not yet received) + uint32_t gpsdate = mp3hstate.gpsdate; + uint32_t gpstime = getgpstime(buf); + int tt = 0; + if(gpsdate) { + uint16_t year = (gpsdate%100)+2000; + gpsdate /= 100; + uint8_t month = gpsdate%100; + gpsdate /= 100; + uint8_t day = gpsdate % 100; + // year-month-day to unix time + tt = (year-1970)*365 + (year-1969)/4; // days since 1970 + if(month<=12) { tt += MON[month]; if((year%4)==0 && month>2) tt++; } + tt = (tt+day-1)*(60*60*24); + if(gpstime < mp3hstate.gpsdatetime) tt += 60*60*24; // time wrapped since last date tx + Serial.printf("date: %04d-%02d-%02d t%d ", year, month, day, gpstime); + } + tt += gpstime; + si->time = tt; + si->vframe = tt - 315964800; + Serial.printf(" mp3h TIMESTAMP: %d\n", tt); +} + +static uint8_t hex(uint32_t n) { + n = n % 16; + return (n<10) ? (n+'0') : (n-10+'A'); +} + +static void resetmp3h() { + mp3hstate.id1 = mp3hstate.id2 = 0; + mp3hstate.idok = 0; + mp3hstate.gpsdate = 0; + mp3hstate.dateok = 0; +} + +// ret: 1=frame ok; 2=frame with errors; 0=ignored frame (m10dop-alternativ) +int MP3H::decodeframeMP3H(uint8_t *data) { + printRaw(data, MP3H_FRAMELEN); + + // + if(!checkMP3CRC(data)) { + // maybe add repairing frames later... + return 2; + } + + // data is a frame with correct CRC + //SondeInfo *si = sonde.si(); + SondeData *si =&(sonde.si()->d); + uint8_t cnt = data[pos_CNT1] & 0x0F; + uint32_t cfg = u4(data+pos_CFG); + if(cnt==15) { + // date + mp3hstate.gpsdate = cfg; + mp3hstate.gpsdatetime = getgpstime(data); + mp3hstate.dateok = true; + } else if(cnt==13) { + // id2 + if(mp3hstate.id2 > 0 && mp3hstate.id2 != cfg) { resetmp3h(); } + mp3hstate.id2 = cfg; + mp3hstate.idok |= 2; + } else if(cnt==12) { + // id1 + if(mp3hstate.id1 > 0 && mp3hstate.id1 != cfg) { resetmp3h(); } + mp3hstate.id1 = cfg; + mp3hstate.idok |= 1; + } + // get id + if((mp3hstate.idok&3) == 3) { + //... + //si->type = STYPE_MP3H; + uint32_t n = mp3hstate.id1*100000 + mp3hstate.id2; + si->id[0] = 'M'; + si->id[1] = 'R'; + si->id[2] = 'Z'; + si->id[3] = hex(n/0x100000); + si->id[4] = hex(n/0x10000); + si->id[5] = hex(n/0x1000); + si->id[6] = hex(n/0x100); + si->id[7] = hex(n/0x10); + si->id[8] = hex(n); + si->id[9] = 0; + snprintf(si->ser, 12, "%u-%u", mp3hstate.id1, mp3hstate.id2); + si->validID = true; + } + + // position + calcgps(data); + // time + getmp3htime(data); + return 1; +#if 0 + int repairstep = 16; + int repl = 0; + bool crcok; + // error correction, inspired by oe5dxl's sondeudp + do { + crcok = checkMP3Hcrc(M10_CRCPOS, data); + if(crcok || repairstep==0) break; + repl = 0; + for(int i=0; i=repairstep) ) { + repl++; + data[i] = fixbytes[i]; + } + } + repairstep >>= 1; + } while(true); + if(crcok) { + for(int i=0; iid, ids, 10); + ids[0] = hex(data[95]/16); + ids[1] = dez((data[95]&0x0f)/10); + ids[2] = dez((data[95]&0x0f)); + ids[3] = dez(data[93]); + ids[4] = dez(id>>13); + id &= 0x1fff; + ids[5] = dez(id/1000); + ids[6] = dez((id/100)%10); + ids[7] = dez((id/10)%10); + ids[8] = dez(id%10); + strncpy(sonde.si()->ser, ids, 10); + sonde.si()->validID = true; + Serial.printf("ID is %s [%02x %02x %d]\n", ids, data[95], data[93], id); + // ID printed on sonde is ...-.-abbbb, with a=id>>13, bbbb=id&0x1fff in decimal + // position data + sonde.si()->lat = getint32(data+14) * DEGMUL; + sonde.si()->lon = getint32(data+18) * DEGMUL; + sonde.si()->alt = getint32(data+22) * 0.001; + float ve = getint16(data+4)*VMUL; + float vn = getint16(data+6)*VMUL; + sonde.si()->vs = getint16(data+8) * VMUL; + sonde.si()->hs = sqrt(ve*ve+vn*vn); + float dir = atan2(vn, ve)*(1.0/RAD); + if(dir<0) dir+=360; + sonde.si()->dir = dir; + sonde.si()->validPos = 0x3f; + + uint32_t gpstime = getint32(data+10); + uint16_t gpsweek = getint16(data+32); + // UTC is GPSTIME - 18s (24*60*60-18 = 86382) + // one week = 7*24*60*60 = 604800 seconds + // unix epoch starts jan 1st 1970 0:00 + // gps time starts jan 6, 1980 0:00. thats 315964800 epoch seconds. + // subtracting 86400 yields 315878400UL + sonde.si()->time = (gpstime/1000) + 86382 + gpsweek*604800 + 315878400UL; + sonde.si()->validTime = true; + } else { + Serial.printf("data is %02x %02x %02x\n", data[0], data[1], data[2]); + return 0; + } + return crcok?1:2; +#endif + return 0; +} + +static uint32_t rxdata; +static bool rxsearching=true; + +// search for +// 0xBF3H (or inverse) +void MP3H::processMP3Hdata(uint8_t dt) +{ + for(int i=0; i<8; i++) { + uint8_t d = (dt&0x80)?1:0; + dt <<= 1; + rxdata = (rxdata<<1) | d; + if( (rxbitc&1)==0 ) { + // "bit1" + rxbyte = (rxbyte<<1) | d; + } else { + // "bit2" ==> 01 or 10 => 1, otherweise => 0 + // rxbyte = rxbyte ^ d; + } + // BF3H => 1011 1111 0011 0101 => 10011010 10101010 01011010 01100110 => 9AAA5A66 // 6555a599 + if(rxsearching) { + if( rxdata == 0x9AAA5A66 || rxdata == 0x6555a599 ) { + rxsearching = false; + rxbitc = 0; + rxp = 0; + headerDetected = 1; + Serial.print("SYNC\n"); + int rssi=sx1278.getRSSI(); + int fei=sx1278.getFEI(); + int afc=sx1278.getAFC(); + Serial.print("SYNC!!! Test: RSSI="); Serial.print(rssi); + Serial.print(" FEI="); Serial.print(fei); + Serial.print(" AFC="); Serial.println(afc); + sonde.si()->rssi = rssi; + sonde.si()->afc = afc; + } + } else { + rxbitc = (rxbitc+1)%16; // 16; + if(rxbitc == 0) { // got 8 data bit + dataptr[rxp++] = rxbyte&0xff; // (rxbyte>>1)&0xff; + //if(rxp==2 && dataptr[0]==0x45 && dataptr[1]==0x20) { isM20 = true; } + if(rxp>=MP3H_FRAMELEN) { + rxsearching = true; + haveNewFrame = decodeframeMP3H(dataptr); + } + } + } + } +} + +#define MAXFRAMES 6 +int MP3H::receive() { + // we wait for at most 6 frames or until a new seq nr. + uint8_t nFrames = MAXFRAMES; // MP3H sends every frame 6x + static uint32_t lastFrame = 0; + uint8_t retval = RX_TIMEOUT; + + unsigned long t0 = millis(); + Serial.printf("MP3H::receive() start at %ld\n",t0); + while( millis() - t0 < 1100 + (retval!=RX_TIMEOUT)?1000:0 ) { + uint8_t value = sx1278.readRegister(REG_IRQ_FLAGS2); + if ( bitRead(value, 7) ) { + Serial.println("FIFO full"); + } + if ( bitRead(value, 4) ) { + Serial.println("FIFO overflow"); + } + if ( bitRead(value, 2) == 1 ) { + Serial.println("FIFO: ready()"); + sx1278.clearIRQFlags(); + } + if(bitRead(value, 6) == 0) { // while FIFO not empty + byte data = sx1278.readRegister(REG_FIFO); + Serial.printf("%02x:",data); + processMP3Hdata(data); + value = sx1278.readRegister(REG_IRQ_FLAGS2); + } else { + if(headerDetected) { + t0 = millis(); // restart timer... don't time out if header detected... + headerDetected = 0; + } + if(haveNewFrame) { + Serial.printf("MP3H::receive(): new frame complete after %ldms\n", millis()-t0); + printRaw(dataptr, MP3H_FRAMELEN); + nFrames--; + // frame with CRC error: just skip and retry (unless we have waited for 6 frames alred) + if(haveNewFrame != 1) { + Serial.printf("hNF: %d (ERROR)\n", haveNewFrame); + retval = RX_ERROR; + } else if (sonde.si()->d.time == lastFrame) { // same frame number as seen before => skip + Serial.printf("Skipping frame with frame# %d\n", lastFrame); + // nothing, wait for next, "new" frame + } else { // good and new frame, return it. + Serial.println("Good frame"); + haveNewFrame = 0; + lastFrame = sonde.si()->d.time; + return RX_OK; + } + haveNewFrame = 0; +#if 0 + if(nFrames <= 0) { + // up to 6 old or erronous frames received => break out + Serial.printf("nFrames is %di, giving up\n", nFrames); + break; + } +#endif + } + delay(2); + } + } + int32_t afc = sx1278.getAFC(); + int16_t rssi = sx1278.getRSSI(); + Serial.printf("receive: AFC is %d, RSSI is %.1f\n", afc, rssi/2.0); + Serial.printf("MP3H::receive() timed out\n"); + return retval; +} + +int MP3H::waitRXcomplete() { + return 0; +} + + +MP3H mp3h = MP3H(); + diff --git a/RX_FSK/src/MP3H.h b/RX_FSK/src/MP3H.h new file mode 100644 index 0000000..7967f22 --- /dev/null +++ b/RX_FSK/src/MP3H.h @@ -0,0 +1,36 @@ +/* + * MP3H.h + * Functions for decoding MP3H radiosonde + * Copyright (C) 2021 Hansi Reiser, dl9rdz + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef MP3H_h +#define MP3H_h + +#include +#include +#include +#ifndef inttypes_h + #include +#endif +#include "DecoderBase.h" + +/* Main class */ +class MP3H : public DecoderBase +{ +private: + void printRaw(uint8_t *data, int len); + void processMP3Hdata(uint8_t data); + int decodeframeMP3H(uint8_t *data); +public: + MP3H(); + int setup(float frequency, int type = 0); + int receive(); + int waitRXcomplete(); +}; + +extern MP3H mp3h; + +#endif diff --git a/RX_FSK/src/RS41.cpp b/RX_FSK/src/RS41.cpp new file mode 100644 index 0000000..ef6fbf4 --- /dev/null +++ b/RX_FSK/src/RS41.cpp @@ -0,0 +1,934 @@ + +/* RS41 decoder functions */ +#include "RS41.h" +#include "SX1278FSK.h" +#include "rsc.h" +#include "Sonde.h" + +#define RS41_DEBUG 1 + +#if RS41_DEBUG +#define RS41_DBG(x) x +#else +#define RS41_DBG(x) +#endif + +#define RS41MAXLEN (320) +static byte data[800]; +static int dpos = 0; + + +// whole 51 row frame as C structure +// taken from https://github.com/einergehtnochrein/ra-firmware +struct subframeBuffer { + uint64_t valid; // bitmask for subframe valid; lsb=frame 0, etc. + union { + byte rawData[51*16]; + struct __attribute__((__packed__)) { + uint16_t crc16; /* CRC16 CCITT Checksum over range 0x002...0x31F */ + uint16_t frequency; /* 0x002: TX is on 400 MHz + (frequency / 64) * 10 kHz */ + uint8_t startupTxPower; /* 0x004: TX power level at startup (1...7) */ + uint8_t reserved005; + uint8_t reserved006; + uint16_t reserved007; /* 0x007: ?? (some bitfield) [0],[1],[2],[3]. Init value = 0xE */ + uint16_t reserved009; /* 0x009: ? */ + uint8_t reserved00B; + uint8_t reserved00C; + uint8_t serial[8]; /* 0x00D: Sonde ID, 8 char, not terminated */ + uint16_t firmwareVersion; /* 0x015: 10000*major + 100*minor + patch*/ + uint16_t reserved017; + uint16_t minHeight4Flight; /* 0x019: Height (meter above ground) where flight mode begins */ + uint8_t lowBatteryThreshold100mV; /* 0x01B: (Default=18) Shutdown if battery voltage below this + threshold for some time (10s ?) + */ + uint8_t nfcDetectorThreshold; /* 0x01C: NFC detector threshold [25mV] (Default: 0x05 = 125mV) */ + uint8_t reserved01D; /* 0x01D: ?? (Init value = 0xB4) */ + uint8_t reserved01E; /* 0x01E: ?? (Init value = 0x3C) */ + uint16_t reserved01F; + int8_t refTemperatureThreshold; /* 0x021: Reference temperature threshold [°C] */ + uint8_t reserved022; + uint16_t reserved023; + uint16_t reserved025; + int16_t flightKillFrames; /* 0x027: Number of frames in flight until kill (-1 = disabled) */ + uint16_t reserved029; /* 0x029: ? (Init value = 0) */ + uint8_t burstKill; /* 0x02B: Burst kill (0=disabled, 1=enabled) */ + uint8_t reserved02C; + uint8_t reserved02D; + uint16_t reserved02E; + uint16_t reserved030; + uint8_t reserved032; + uint16_t reserved033; + uint16_t reserved035; + uint16_t reserved037; + uint16_t reserved039; /* 0x039: */ + uint8_t reserved03B; /* 0x03B: */ + uint8_t reserved03C; /* 0x03C: */ + float refResistorLow; /* 0x03D: Reference resistor low (750 Ohms) */ + float refResistorHigh; /* 0x041: Reference resistor high (1100 Ohms) */ + float refCapLow; /* 0x045: Reference capacitance low (0) */ + float refCapHigh; /* 0x049: Reference capacitance high (47 pF) */ + float taylorT[3]; /* 0x04D: Tayor coefficients for main temperature calculation */ + float calT; /* 0x059: Calibration factor for main sensor */ + float polyT[6]; /* 0x05D: */ + float calibU[2]; /* 0x075: Calibration coefficients for humidity sensor */ + + float matrixU[7][6]; /* 0x07D: Matrix for humidity sensor RH calculation */ + float taylorTU[3]; /* 0x125: Coefficients for U sensor temperature calculation */ + float calTU; /* 0x131: Calibration factor for U temperature sensor */ + float polyTrh[6]; /* 0x135: */ + + uint8_t reserved14D; /* 0x14D: */ + uint32_t reserved14E; /* 0x14E: */ + + float f152; + uint8_t u156; + float f157; /* 0x157: ?? (Initialized by same value as calibU[0]) */ + uint8_t reserved15B; /* 0x15B: */ + uint32_t reserved15C; /* 0x15C: */ + float f160[35]; + uint8_t startIWDG; /* 0x1EC: If ==1 or ==2: Watchdog IWDG will not be started */ + uint8_t parameterSetupDone; /* 0x1ED: Set (!=0) if parameter setup was done */ + uint8_t enableTestMode; /* 0x1EE: Test mode (service menu) (0=disabled, 1=enabled) */ + uint8_t enableTX; /* 0x1EF: 0=TX disabled, 1=TX enabled (maybe this is autostart?) */ + float f1F0[8]; + float pressureLaunchSite[2]; /* 0x210: Pressure [hPa] at launch site */ + struct __attribute__((__packed__)){ + char variant[10]; /* 0x218: Sonde variant (e.g. "RS41-SG") */ + uint8_t mainboard[10]; /* 0x222: Name of mainboard (e.g. "RSM412") */ + } names; + struct __attribute__((__packed__)){ + uint8_t mainboard[9]; /* 0x22C: Serial number of mainboard (e.g. "L1123553") */ + uint8_t text235[12]; /* 0x235: "0000000000" */ + uint16_t reserved241; /* 0x241: */ + uint8_t pressureSensor[8]; /* 0x243: Serial number of pressure sensor (e.g. "N1310487") */ + uint16_t reserved24B; /* 0x24B: */ + } serials; + uint16_t reserved24D; /* 0x24D: */ + uint16_t reserved24F; /* 0x24F: */ + uint16_t reserved251; /* 0x251: (Init value = 0x21A = 538) */ + uint8_t xdataUartBaud; /* 0x253: 1=9k6, 2=19k2, 3=38k4, 4=57k6, 5=115k2 */ + uint8_t reserved254; + float cpuTempSensorVoltageAt25deg; /* 0x255: CPU temperature sensor voltage at 25°C */ + uint8_t reserved259; + uint8_t reserved25A[0x25E -0x25A]; + float matrixP[18]; /* 0x25E: Coefficients for pressure sensor polynomial */ + float vectorBp[3]; /* 0x2A6: */ + uint8_t reserved2B2[8]; /* 0x2B2: */ + float matrixBt[12]; /* 0x2BA: */ + uint8_t reserved2EA[0x2FA-0x2EA]; + uint16_t halfword2FA[9]; + float reserved30C; + float reserved310; /* 0x310: */ + uint8_t reserved314; /* 0x314: */ + uint8_t reserved315; /* 0x315: */ + int16_t burstKillFrames; /* 0x316: Number of active frames after burst kill */ + uint8_t reserved318[0x320-0x318]; + + /* This is fragment 50. It only uses 14 valid bytes! */ + int16_t killCountdown; /* 0x320: Counts frames remaining until kill (-1 = inactive) */ + uint8_t reserved322[6]; + int8_t intTemperatureCpu; /* 0x328: Temperature [°C] of CPU */ + int8_t intTemperatureRadio; /* 0x329: Temperature [°C] of radio chip */ + int8_t reserved32A; /* 0x32A: */ + uint8_t reserved32B; /* 0x32B: */ + uint8_t reserved32C; /* 0x32C: ? (the sum of two slow 8-bit counters) */ + uint8_t reserved32D; /* 0x32D: ? (the sum of two slow 8-bit counters) */ + } value; + }; +}; +// moved global variable "calibration" to sondeInfo->extra + +static uint16_t CRCTAB[256]; + +#define X2C_DIVR(a, b) ((b) != 0.0f ? (a)/(b) : (a)) +#define X2C_DIVL(a, b) ((a)/(b)) +static uint32_t X2C_LSH(uint32_t a, int32_t length, int32_t n) +{ + uint32_t m; + + m = 0; + m = (length == 32) ? 0xFFFFFFFFl : (1 << length) - 1; + if (n > 0) { + if (n >= (int32_t)length) + return 0; + return (a << n) & m; + } + + if (n <= (int32_t)-length) + return 0; + return (a >> -n) & m; +} + +double atang2(double x, double y) +{ + double w; + if (fabs(x)>fabs(y)) { + w = (double)atan(X2C_DIVL(y,x)); + if (x<0.0) { + if (y>0.0) w = 3.1415926535898+w; + else w = w-3.1415926535898; + } + } + else if (y!=0.0) { + w = (double)(1.5707963267949f-atan(X2C_DIVL(x, y))); + if (y<0.0) w = w-3.1415926535898; + } + else w = 0.0; + return w; +} /* end atang2() */ + + +static void Gencrctab(void) +{ + uint16_t j; + uint16_t i; + uint16_t crc; + for (i = 0U; i<=255U; i++) { + crc = (uint16_t)(i*256U); + for (j = 0U; j<=7U; j++) { + if ((0x8000U & crc)) crc = X2C_LSH(crc,16,1)^0x1021U; + else crc = X2C_LSH(crc,16,1); + } /* end for */ + CRCTAB[i] = X2C_LSH(crc,16,-8)|X2C_LSH(crc,16,8); + } /* end for */ +} /* end Gencrctab() */ + +decoderSetupCfg rs41SetupCfg = { + .bitrate = 4800, + .rx_cfg = 0x1E, // Enable auto-AFC, auto-AGC, RX Trigger by preamble + .sync_cfg = 0x57, // Set autostart_RX to 01, preamble 0, SYNC detect==on, syncsize=3 (==4 byte + .sync_len = 8, + .sync_data = (const uint8_t *)"\x08\x6D\x53\x88\x44\x69\x48\x1F", + .preamble_cfg = 0xA8, +}; + + +int RS41::setup(float frequency, int /*type*/) +{ + if(!initialized) { + Gencrctab(); + initrsc(); + initialized = true; + } + + if(sx1278.ON()!=0) { + RS41_DBG(Serial.println("Setting SX1278 power on FAILED")); + return 1; + } + if(DecoderBase::setup(rs41SetupCfg, sonde.config.rs41.agcbw, sonde.config.rs41.rxbw)!=0 ) { + return 1; + } +#if 0 + // all moved to DecoderBase now + if(sx1278.setFSK()!=0) { + RS41_DBG(Serial.println("Setting FSK mode FAILED")); + return 1; + } + if(sx1278.setBitrate(4800)!=0) { + RS41_DBG(Serial.println("Setting bitrate 4800bit/s FAILED")); + return 1; + } + + if(sx1278.setAFCBandwidth(sonde.config.rs41.agcbw)!=0) { + RS41_DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", sonde.config.rs41.agcbw)); + return 1; + } + if(sx1278.setRxBandwidth(sonde.config.rs41.rxbw)!=0) { + RS41_DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", sonde.config.rs41.rxbw)); + return 1; + } + // Enable auto-AFC, auto-AGC, RX Trigger by preamble + if(sx1278.setRxConf(0x1E)!=0) { + RS41_DBG(Serial.println("Setting RX Config FAILED")); + return 1; + } + // Set autostart_RX to 01, preamble 0, SYNC detect==on, syncsize=3 (==4 byte + //char header[] = "0110.0101 0110.0110 1010.0101 1010.1010"; + + //const char *SYNC="\x10\xB6\xCA\x11\x22\x96\x12\xF8"; + const char *SYNC="\x08\x6D\x53\x88\x44\x69\x48\x1F"; + if(sx1278.setSyncConf(0x57, 8, (const uint8_t *)SYNC)!=0) { + RS41_DBG(Serial.println("Setting SYNC Config FAILED")); + return 1; + } + if(sx1278.setPreambleDetect(0xA8)!=0) { + RS41_DBG(Serial.println("Setting PreambleDetect FAILED")); + return 1; + } +#endif + + // Packet config 1: fixed len, no mancecer, no crc, no address filter + // Packet config 2: packet mode, no home ctrl, no beackn, msb(packetlen)=0) + if(sx1278.setPacketConfig(0x08, 0x40)!=0) { + RS41_DBG(Serial.println("Setting Packet config FAILED")); + return 1; + } + int retval = sx1278.setFrequency(frequency); + dpos = 0; + + sx1278.clearIRQFlags(); + + return retval; +} + +uint32_t RS41::bits2val(const uint8_t *bits, int len) { + uint32_t val = 0; + for (int j = 0; j < len; j++) { + val |= (bits[j] << (len-1-j)); + } + return val; +} + +RS41::RS41() { +} + +/* RS41 reed solomon decoder, from dxlAPRS + */ +static int32_t reedsolomon41(byte buf[], uint32_t buf_len, uint32_t len2) +{ + uint32_t i; + int32_t res1; + /*tb1, */ + int32_t res; + char b1[256]; + char b[256]; + uint32_t eraspos[24]; + uint32_t tmp; + for (i = 0UL; i<=255UL; i++) { + b[i] = 0; + b1[i] = 0; + } /* end for */ + tmp = len2; + i = 0UL; + if (i<=tmp) for (;; i++) { + b[230UL-i] = buf[i*2UL+56UL]; + b1[230UL-i] = buf[i*2UL+57UL]; + if (i==tmp) break; + } /* end for */ + for (i = 0UL; i<=23UL; i++) { + b[254UL-i] = buf[i+8UL]; + b1[254UL-i] = buf[i+32UL]; + } /* end for */ + res = decodersc(b, eraspos, 0); + res1 = decodersc(b1, eraspos, 0); + if (res>0L && res<=12L) { + tmp = len2; + i = 0UL; + if (i<=tmp) for (;; i++) { + buf[i*2UL+56UL] = b[230UL-i]; + if (i==tmp) break; + } /* end for */ + for (i = 0UL; i<=23UL; i++) { + buf[i+8UL] = b[254UL-i]; + } /* end for */ + } + if (res1>0L && res1<=12L) { + tmp = len2; + i = 0UL; + if (i<=tmp) for (;; i++) { + buf[i*2UL+57UL] = b1[230UL-i]; + if (i==tmp) break; + } /* end for */ + for (i = 0UL; i<=23UL; i++) { + buf[i+32UL] = b1[254UL-i]; + } /* end for */ + } + if (res<0L || res1<0L) return -1L; + else return res+res1; + return 0; +} /* end reedsolomon41() */ + + + + +static char crcrs(const byte frame[], uint32_t frame_len, + int32_t from, int32_t to) +{ + uint16_t crc; + int32_t i; + int32_t tmp; + crc = 0xFFFFU; + tmp = to-3L; + i = from; + if (i<=tmp) for (;; i++) { + crc = X2C_LSH(crc,16,-8)^CRCTAB[(uint32_t)((crc^(uint16_t)(uint8_t)frame[i])&0xFFU)]; + if (i==tmp) break; + } /* end for */ + return frame[to-1L]==(char)crc && frame[to-2L]==(char)X2C_LSH(crc, + 16,-8); +} /* end crcrs() */ + +static int32_t getint32(const byte frame[], uint32_t frame_len, + uint32_t p) +{ + uint32_t n; + uint32_t i; + n = 0UL; + for (i = 3UL;; i--) { + n = n*256UL+(uint32_t)(uint8_t)frame[p+i]; + if (i==0UL) break; + } /* end for */ + return (int32_t)n; +} /* end getint32() */ + +static uint32_t getint24(const byte frame[], uint32_t frame_len, uint32_t p) { // 24bit unsigned int + uint32_t val24 = 0; + val24 = frame[p] | (frame[p+1]<<8) | (frame[p+2]<<16); + return val24; +} + +static uint32_t getcard16(const byte frame[], uint32_t frame_len, + uint32_t p) +{ + return (uint32_t)(uint8_t)frame[p]+256UL*(uint32_t)(uint8_t) + frame[p+1UL]; +} /* end getcard16() */ + + +static int32_t getint16(const byte frame[], uint32_t frame_len, + uint32_t p) +{ + uint32_t n; + n = (uint32_t)(uint8_t)frame[p]+256UL*(uint32_t)(uint8_t) + frame[p+1UL]; + if (n>=32768UL) return (int32_t)(n-65536UL); + return (int32_t)n; +} /* end getint16() */ + +// also used by MP3H.cpp +void wgs84r(double x, double y, double z, + double * lat, double * long0, + double * heig) +{ + double sl; + double ct; + double st; + double t; + double rh; + double xh; + double h; + h = x*x+y*y; + if (h>0.0) { + rh = sqrt(h); + xh = x+rh; + *long0 = atang2(xh, y)*2.0; + if (*long0>3.1415926535898) *long0 = *long0-6.2831853071796; + t = atan(X2C_DIVL(z*1.003364089821, rh)); + st = sin(t); + ct = cos(t); + *lat = atan((X2C_DIVL(z+4.2841311513312E+4*st*st*st, + rh-4.269767270718E+4*ct*ct*ct))); + sl = sin(*lat); + *heig = X2C_DIVL(rh,cos(*lat))-(X2C_DIVR(6.378137E+6f, + sqrt((1.0-6.6943799901413E-3*sl*sl)))); + } + else { + *lat = 0.0; + *long0 = 0.0; + *heig = 0.0; + } +/* lat:=atan(z/(rh*(1.0 - E2))); */ +/* heig:=sqrt(h + z*z) - EARTHA; */ +} /* end wgs84r() */ + +// returns: 0=ok, -1=error +static void posrs41(const byte b[], uint32_t b_len, uint32_t p) +{ + double dir; + double vu; + double ve; + double vn; + double vz; + double vy; + double vx; + double heig; + double long0; + double lat; + double z; + double y; + double x; + SondeData *si = &(sonde.si()->d); + x = (double)getint32(b, b_len, p)*0.01; + y = (double)getint32(b, b_len, p+4UL)*0.01; + z = (double)getint32(b, b_len, p+8UL)*0.01; + uint8_t sats = getcard16(b, b_len, p+18UL)&255UL; + Serial.printf("x:%g, y:%g, z:%g sats:%d\n", x, y, z, sats); + if( sats<4 || (x==0 && y==0 && z==0) ) { + // RS41 sometimes sends frame with all 0 + // or, if sats<4, data is simply garbage. do not use. + if(si->validPos) si->validPos |= 0x80; // flag as old + return; + } + si->sats = sats; + wgs84r(x, y, z, &lat, &long0, &heig); + Serial.print(" "); + si->lat = (float)(X2C_DIVL(lat,1.7453292519943E-2)); + Serial.print(si->lat); + Serial.print(" "); + si->lon = (float)(X2C_DIVL(long0,1.7453292519943E-2)); + Serial.print(si->lon); + if (heig<1.E+5 && heig>(-1.E+5)) { + Serial.print(" "); + Serial.print((uint32_t)heig); + Serial.print("m"); + } + /*speed */ + vx = (double)getint16(b, b_len, p+12UL)*0.01; + vy = (double)getint16(b, b_len, p+14UL)*0.01; + vz = (double)getint16(b, b_len, p+16UL)*0.01; + vn = (-(vx*sin(lat)*cos(long0))-vy*sin(lat)*sin(long0))+vz*cos(lat); + ve = -(vx*sin(long0))+vy*cos(long0); + vu = vx*cos(lat)*cos(long0)+vy*cos(lat)*sin(long0)+vz*sin(lat); + dir = X2C_DIVL(atang2(vn, ve),1.7453292519943E-2); + if (dir<0.0) dir = 360.0+dir; + si->dir = dir; + Serial.print(" "); + si->hs = sqrt(vn*vn+ve*ve); + Serial.print(si->hs*3.6); + Serial.print("km/h "); + Serial.print(dir); + Serial.print("deg "); + Serial.print((float)vu); + si->vs = vu; + Serial.print("m/s "); + si->alt = heig; + if( 0==(int)(lat*10000) && 0==(int)(long0*10000) ) { + if(si->validPos) { + // we have an old position, so keep previous position and mark it as old + si->validPos |= 0x80; + } + } + else + si->validPos = 0x7f; +} /* end posrs41() */ + +void ProcessSubframe( byte *subframeBytes, int subframeNumber ) { + // the total subframe consists of 51 rows, each row 16 bytes + // based on https://github.com/bazjo/RS41_Decoding/tree/master/RS41-SGP#Subframe + struct subframeBuffer *s = (struct subframeBuffer *)sonde.si()->extra; + // Allocate on demand + if(!s) { + s = (struct subframeBuffer *)malloc( sizeof(struct subframeBuffer) ); + if(!s) { Serial.println("ProcessSubframe: out of memory"); return; } + sonde.si()->extra = s; + s->valid = 0; + } + memcpy( s->rawData+16*subframeNumber, subframeBytes, 16); + s->valid |= (1ULL << subframeNumber); + Serial.printf("subframe %d; valid: %x%08x\n", subframeNumber, (uint32_t)(s->valid>>32), (uint32_t)s->valid); + for(int i=0; i<16; i++) { Serial.printf("%02x[%c]", subframeBytes[i],( subframeBytes[i]>20 && subframeBytes[i]<127)? subframeBytes[i] : '.'); } + Serial.println(""); + // subframeReceived[subframeNumber] = true; // mark this row of the total subframe as complete + + #if 0 + Serial.printf("subframe number: 0x%02X\n", subframeNumber ); + Serial.print("subframe values: "); + for ( int i = 0; i < 16; i++ ) { + Serial.printf( "%02X ", subframeBytes[i] ); + } + Serial.println(); + + Serial.println("Full subframe"); + for ( int j = 0; j<51; j++ ) { + Serial.printf("%03X ", j*16); + for ( int i = 0; i < 16; i++ ) { + Serial.printf( "%02X ", s.rawData[j*16+i] ); + } + Serial.println(); + } + Serial.println(); + #endif +} + +/* Find the water vapor saturation pressure for a given temperature. + * Uses the Hyland and Wexler equation with coefficients for T < 0°C. + */ +// taken from https://github.com/einergehtnochrein/ra-firmware +static float _RS41_waterVaporSaturationPressure (float Tcelsius) +{ + /* Convert to Kelvin */ + float T = Tcelsius + 273.15f; + + /* Apply some correction magic */ + T = 0 + - 0.4931358f + + (1.0f + 4.61e-3f) * T + - 1.3746454e-5f * T * T + + 1.2743214e-8f * T * T * T + ; + + /* Plug into H+W equation */ + float p = expf(-5800.2206f / T + + 1.3914993f + + 6.5459673f * logf(T) + - 4.8640239e-2f * T + + 4.1764768e-5f * T * T + - 1.4452093e-8f * T * T * T + ); + + /* Scale result to hPa */ + return p / 100.0f; +} + +#define PM(x) calibration->value.matrixP[x] +// CALIB_P: matrixP (frames 0x25..0x2A) and type (frame 0x21) +#define CALIB_P ((0x3Fll<<0x25)|(1ll<<0x21)) +float GetRAP( uint32_t m, uint32_t m1, uint32_t m2, int16_t ptraw) { + struct subframeBuffer *calibration = (struct subframeBuffer *)sonde.si()->extra; + float pt = (float)ptraw*0.01; + float pw[6]; + pw[0] = PM(0) + pt*PM(7) + pt*pt*PM(11) + pt*pt*pt*PM(15); + pw[1] = PM(1) + pt*PM(8) + pt*pt*PM(12) + pt*pt*pt*PM(16); + pw[2] = PM(2) + pt*PM(9) + pt*pt*PM(13) + pt*pt*pt*PM(17); + pw[3] = PM(3) + pt*PM(10)+ pt*pt*PM(14); + pw[4] = PM(4); + pw[5] = PM(5); + float f = (float)m; //meas[9]; + float f1 = (float)m1; //meas[10]; + float f2 = (float)m2; //meas[11]; + float r = f-f1; + if(r!=0.0) { + r = (f2-f1) * PM(6) / r; + float xx = 1.0; + float p = 0.0; + for(int i=0; i<=5; i++) { + p += pw[i] * xx; + xx = xx * r; + } + return p; + } + return NAN; +} + +// taken from https://github.com/einergehtnochrein/ra-firmware +float GetRATemp( uint32_t measuredCurrent, uint32_t refMin, uint32_t refMax, float calT, float taylorT[3], float polyT[6] ) { + struct subframeBuffer *calibration = (struct subframeBuffer *)sonde.si()->extra; + /* Reference values for temperature are two known resistors. + * From that we can derive the resistance of the sensor. + */ + float current = ( float(measuredCurrent) - float(refMin) ) / float(refMax - refMin); + float res = calibration->value.refResistorLow + + (calibration->value.refResistorHigh - calibration->value.refResistorLow) * current; + float x = res * calT; + + float Tuncal = 0 + + taylorT[0] + + taylorT[1] * x + + taylorT[2] * x * x; + + /* Apply calibration polynomial */ + float temperature = + Tuncal + polyT[0] + + polyT[1] * Tuncal + + polyT[2] * Tuncal * Tuncal + + polyT[3] * Tuncal * Tuncal * Tuncal + + polyT[4] * Tuncal * Tuncal * Tuncal * Tuncal + + polyT[5] * Tuncal * Tuncal * Tuncal * Tuncal * Tuncal; + + return temperature; +} + +// taken from https://github.com/einergehtnochrein/ra-firmware +float GetRAHumidity( uint32_t humCurrent, uint32_t humMin, uint32_t humMax, float sensorTemp, float externalTemp, float pressure ) { + struct subframeBuffer *calibration = (struct subframeBuffer *)sonde.si()->extra; + float current = float( humCurrent - humMin) / float( humMax - humMin ); + /* Compute absolute capacitance from the known references */ + float C = calibration->value.refCapLow + + (calibration->value.refCapHigh - calibration->value.refCapLow) * current; + + /* Apply calibration */ + float Cp = ( C / calibration->value.calibU[0] - 1.0f) * calibration->value.calibU[1]; + + /* Compensation for low temperature and pressure at altitude */ + if(isnan(pressure)) { + // if no pressure is available (non-SGP), estimate based on altitude + pressure = 1013.25f * expf(-1.18575919e-4f * sonde.si()->d.alt ); + } + + float Tp = (sensorTemp - 20.0f) / 180.0f; + float sum = 0; + float powc = 1.0f; + float p = pressure / 1000.0f; + for ( int i = 0; i < 3; i++) { + float l = 0; + float powt = 1.0f; + for ( int j = 0; j < 4; j++) { + l += calibration->value.matrixBt[4*i+j] * powt; + powt *= Tp; + } + float x = calibration->value.vectorBp[i]; + sum += l * (x * p / (1.0f + x * p) - x * powc / (1.0f + x)); + powc *= Cp; + } + Cp -= sum; + + float xj = 1.0f; + for ( int j = 0; j < 7; j++) { + float yk = 1.0f; + for ( int k = 0; k < 6; k++) { + sum += xj * yk * calibration->value.matrixU[j][k]; + yk *= Tp; + } + xj *= Cp; + } + + /* Since there is always a small difference between the temperature readings for + * the atmospheric (main) tempoerature sensor and the temperature sensor inside + * the humidity sensor device, transform the humidity value to the atmospheric conditions + * with its different water vapor saturation pressure. + */ + float RH = sum + * _RS41_waterVaporSaturationPressure(sensorTemp) + / _RS41_waterVaporSaturationPressure(externalTemp); + + return RH; +} + +// returns: 0: ok, -1: rs or crc error +int RS41::decode41(byte *data, int maxlen) +{ + char buf[128]; + int crcok = 1; + SondeData *si = &(sonde.si()->d); + + int32_t corr = reedsolomon41(data, 560, 131); // try short frame first + if(corr<0) { + corr = reedsolomon41(data, 560, 230); // try long frame + } +#if 0 + Serial.print("RS result:"); + Serial.print(corr); + Serial.println(); +#endif + int p = 57; // 8 byte header, 48 byte RS + while(pmaxlen) break; + +#if 0 + // DEBUG OUTPUT + Serial.print("@"); + Serial.print(p-2); + Serial.print(": ID:"); + Serial.print(typ, HEX); + Serial.print(", len="); + Serial.print(len); + Serial.print(": "); + for(int i=0; iid, (const char *)(data+p+2), 8)) { + // ID changed, i.e. new sonde on same frequency. clear calibration and all other data + sonde.clearAllData(sonde.si()); + struct subframeBuffer *sub = (struct subframeBuffer *)sonde.si()->extra; + if(sub) { sub->valid = 0; } + } + Serial.print("#"); + uint16_t fnr = data[p]+(data[p+1]<<8); + Serial.print(fnr); + si->vframe = si->frame = fnr; + Serial.print("; RS41 ID "); + snprintf(buf, 10, "%.8s ", data+p+2); + Serial.print(buf); + si->batteryVoltage = data[p+10] / 10.0f; + // not needed, if we end up here, the type has to be RS41.... si->type=STYPE_RS41; + strncpy(si->id, (const char *)(data+p+2), 8); + si->id[8]=0; + strncpy(si->ser, (const char *)(data+p+2), 8); + si->ser[8]=0; + si->validID=true; + int calnr = data[p+23]; + // not sure about this + if(calnr==0x31) { + uint16_t bt = data[p+30] + 256*data[p+31]; + si->burstKT = bt; + } + // this should be right... + if(calnr==0x02) { + uint16_t kt = data[p+31] + 256*data[p+32]; + si->launchKT = kt; + } + // and this seems fine as well... + if(calnr==0x32) { + uint16_t cntdown = data[p+24] + (data[p+25]<<8); + uint16_t min = cntdown - (cntdown/3600)*3600; + Serial.printf("Countdown value: %d\n [%2d:%02d:%02d]", cntdown, cntdown/3600, min/60, min-(min/60)*60); + si->countKT = cntdown; + si->crefKT = fnr; + } + ProcessSubframe( data+p+24, calnr ); + + } + // TODO: some more data + break; + case '|': // date + { + uint32_t gpstime = getint32(data, 560, p+2); + uint16_t gpsweek = getint16(data, 560, p); + // UTC is GPSTIME - 18s (24*60*60-18 = 86382) + // one week = 7*24*60*60 = 604800 seconds + // unix epoch starts jan 1st 1970 0:00 + // gps time starts jan 6, 1980 0:00. thats 315964800 epoch seconds. + // subtracting 86400 yields 315878400UL + si->time = (gpstime/1000) + 86382 + gpsweek*604800 + 315878400UL; + si->validTime = true; + } + break; + case '{': // pos + posrs41(data+p, len, 0); + break; + case 'z': // 0x7a is character z - 7A-MEAS temperature and humidity frame + { + uint32_t tempMeasMain = getint24(data, 560, p+0); + uint32_t tempMeasRef1 = getint24(data, 560, p+3); + uint32_t tempMeasRef2 = getint24(data, 560, p+6); + uint32_t humidityMain = getint24(data, 560, p+9); + uint32_t humidityRef1 = getint24(data, 560, p+12); + uint32_t humidityRef2 = getint24(data, 560, p+15); + uint32_t tempHumiMain = getint24(data, 560, p+18); + uint32_t tempHumiRef1 = getint24(data, 560, p+21); + uint32_t tempHumiRef2 = getint24(data, 560, p+24); + uint32_t pressureMain = getint24(data, 560, p+27); + uint32_t pressureRef1 = getint24(data, 560, p+30); + uint32_t pressureRef2 = getint24(data, 560, p+33); + int16_t ptraw = getint16(data, 560, p+38); + #if 0 + Serial.printf( "External temp: tempMeasMain = %ld, tempMeasRef1 = %ld, tempMeasRef2 = %ld\n", tempMeasMain, tempMeasRef1, tempMeasRef2 ); + Serial.printf( "Rel Humidity: humidityMain = %ld, humidityRef1 = %ld, humidityRef2 = %ld\n", humidityMain, humidityRef1, humidityRef2 ); + Serial.printf( "Humid sensor: tempHumiMain = %ld, tempHumiRef1 = %ld, tempHumiRef2 = %ld\n", tempHumiMain, tempHumiRef1, tempHumiRef2 ); + Serial.printf( "Pressure sens: pressureMain = %ld, pressureRef1 = %ld, pressureRef2 = %ld\n", pressureMain, pressureRef1, pressureRef2 ); + #endif + struct subframeBuffer *calibration = (struct subframeBuffer *)(sonde.si()->extra); + // temp: 0xF8==bits 3..7 : we need refResistorlow/high, taylorT, polyT + bool validExternalTemperature = calibration!=NULL && (calibration->valid & 0xF8) == 0xF8; + + // humidity: bits 3..20 and 37..46. and bit 33 (variant) + bool validHumidity = calibration!=NULL && (calibration->valid & 0x7FE2001FFFF8) == 0x7FE2001FFFF8; + + // pressure: bits 33 and 37..42 (variant; x25..x2a: matrixP) /// CALIB_P is 0x7E200000000) + bool validPressure = calibration!=NULL && (calibration->valid & CALIB_P)==CALIB_P && calibration->value.names.variant[7]=='P'; + + if ( validPressure ) { + si->pressure = GetRAP( pressureMain, pressureRef1, pressureRef2, ptraw ); + Serial.printf("Pressure sensor = %f\n", si->pressure); + } + + if ( validExternalTemperature ) { + si->temperature = GetRATemp( tempMeasMain, tempMeasRef1, tempMeasRef2, + calibration->value.calT, calibration->value.taylorT, calibration->value.polyT ); + Serial.printf("External temperature = %f\n", si->temperature ); + } + + if ( validHumidity && validExternalTemperature ) { + si->tempRHSensor = GetRATemp( tempHumiMain, tempHumiRef1, tempHumiRef2, + calibration->value.calTU, calibration->value.taylorTU, calibration->value.polyTrh ); + Serial.printf("Humidity Sensor temperature = %f\n", si->tempRHSensor ); + si->relativeHumidity = GetRAHumidity( humidityMain, humidityRef1, humidityRef2, si->tempRHSensor, si->temperature, si->pressure ); + Serial.printf("Relative humidity = %f\n", si->relativeHumidity ); + } + } + break; + + + + default: + break; + }} + p += len; + Serial.println(); + } + return crcok ? 0 : RX_ERROR; +} +void RS41::printRaw(uint8_t *data, int len) +{ + char buf[3]; + int i; + for(i=0; i>4]; +} + + +static uint8_t scramble[64] = {150U,131U,62U,81U,177U,73U,8U,152U,50U,5U,89U, + 14U,249U,68U,198U,38U,33U,96U,194U,234U,121U,93U,109U,161U, + 84U,105U,71U,12U,220U,232U,92U,241U,247U,118U,130U,127U,7U, + 153U,162U,44U,147U,124U,48U,99U,245U,16U,46U,97U,208U,188U, + 180U,182U,6U,170U,244U,35U,120U,110U,59U,174U,191U,123U,76U, + 193U}; + + +int RS41::receive() { + sx1278.setPayloadLength(RS41MAXLEN-8); + int e = sx1278.receivePacketTimeout(1000, data+8); +#if 1 + if(e) { /*Serial.println("TIMEOUT");*/ return RX_TIMEOUT; } + + for(int i=0; ilat = 48; + si->lon = -100; + si->alt = 30000; + si->vs = 3.4; + si->validPos = 0x7f; + si->validID = 1; + strcpy(si->id, "A1234"); + return 0; +#endif +} + +int RS41::waitRXcomplete() { + // Currently not used. can be used for additinoal post-processing + // (required for RS92 to avoid FIFO overrun in rx task) + return 0; +} + +// copy variant string to buf (max buflen chars; buflen should be 11 +// return 0 if subtype is available, -1 if not +int RS41::getSubtype(char *buf, int buflen, SondeInfo *si) { + struct subframeBuffer *sf = (struct subframeBuffer *)si->extra; + if(!sf) return -1; + if( ( (sf->valid>>0x21) &3) != 3 ) return -1; // or 1 instead of 3 for the first 8 chars only, as in autorx? + if(buflen>11) buflen=11; // then buflen should be capped at 9 (8+trailing \0) + strncpy(buf, sf->value.names.variant, buflen); + buf[buflen-1]=0; + if(*buf==0) return -1; + Serial.printf("subframe valid: %x%08x; subtype=%s\n", (uint32_t)(sf->valid>>32), (uint32_t)sf->valid, buf); + return 0; +} + +RS41 rs41 = RS41(); diff --git a/RX_FSK/src/RS41.h b/RX_FSK/src/RS41.h new file mode 100644 index 0000000..149a672 --- /dev/null +++ b/RX_FSK/src/RS41.h @@ -0,0 +1,73 @@ +/* + * RS41.h + * Functions for decoding RS41 sondes with SX127x chips + * Copyright (C) 2019 Hansi Reiser, dl9rdz + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef RS41_h +#define RS41_h + +#include +#include +#include +#ifndef inttypes_h + #include +#endif +#include "Sonde.h" +#include "DecoderBase.h" + +/* Main class */ +class RS41 : public DecoderBase +{ +private: + uint32_t bits2val(const uint8_t *bits, int len); + void printRaw(uint8_t *data, int len); + void bitsToBytes(uint8_t *bits, uint8_t *bytes, int len); + int decode41(byte *data, int maxlen); + +#if 0 +#define B 8 +#define S 4 + uint8_t hamming_conf[ 7*B]; // 7*8=56 + uint8_t hamming_dat1[13*B]; // 13*8=104 + uint8_t hamming_dat2[13*B]; + + uint8_t block_conf[ 7*S]; // 7*4=28 + uint8_t block_dat1[13*S]; // 13*4=52 + uint8_t block_dat2[13*S]; + + uint8_t H[4][8] = // extended Hamming(8,4) particy check matrix + {{ 0, 1, 1, 1, 1, 0, 0, 0}, + { 1, 0, 1, 1, 0, 1, 0, 0}, + { 1, 1, 0, 1, 0, 0, 1, 0}, + { 1, 1, 1, 0, 0, 0, 0, 1}}; + uint8_t He[8] = { 0x7, 0xB, 0xD, 0xE, 0x8, 0x4, 0x2, 0x1}; // Spalten von H: +#endif + // 1-bit-error-Syndrome + boolean initialized = false; + +public: + RS41(); + // New interface: + // setup() is called when channel is activated (sets mode and frequency and activates receiver) + int setup(float frequency, int type = 0); + // processRXbyte is called by background task for each received byte + // should be fast enough to not cause sx127x fifo buffer overflow + // void processRXbyte(uint8_t data); + // is called approx. 1x per second, may do some post-processing of received data + // and update information in sonde data structure + // returns infomration about sucess/error (for timers and for quality bar in display) + int receive(); + int waitRXcomplete(); + //int receiveFrame(); + + static int getSubtype(char *buf, int buflen, SondeInfo *si); + + int use_ecc = 1; +}; + +extern RS41 rs41; + +#endif diff --git a/RX_FSK/src/RS92.cpp b/RX_FSK/src/RS92.cpp new file mode 100644 index 0000000..f9f6e52 --- /dev/null +++ b/RX_FSK/src/RS92.cpp @@ -0,0 +1,589 @@ + +/* RS92 decoder functions */ +#include "RS92.h" +#include "SX1278FSK.h" +#include "rsc.h" +#include "Sonde.h" +#include + +// well... +#include "rs92gps.h" + +#define RS92_DEBUG 1 + +#if RS92_DEBUG +#define RS92_DBG(x) x +#else +#define RS92_DBG(x) +#endif + +uint16_t *CRCTAB = NULL; + +#define X2C_DIVR(a, b) ((b) != 0.0f ? (a)/(b) : (a)) +#define X2C_DIVL(a, b) ((a)/(b)) +static uint32_t X2C_LSH(uint32_t a, int32_t length, int32_t n) +{ + uint32_t m; + + m = 0; + m = (length == 32) ? 0xFFFFFFFFl : (1 << length) - 1; + if (n > 0) { + if (n >= (int32_t)length) + return 0; + return (a << n) & m; + } + + if (n <= (int32_t)-length) + return 0; + return (a >> -n) & m; +} + +static void Gencrctab(void) +{ + uint16_t j; + uint16_t i; + uint16_t crc; + if(!CRCTAB) { CRCTAB=(uint16_t *)malloc(256*sizeof(uint16_t)); } + for (i = 0U; i<=255U; i++) { + crc = (uint16_t)(i*256U); + for (j = 0U; j<=7U; j++) { + if ((0x8000U & crc)) crc = X2C_LSH(crc,16,1)^0x1021U; + else crc = X2C_LSH(crc,16,1); + } /* end for */ + CRCTAB[i] = X2C_LSH(crc,16,-8)|X2C_LSH(crc,16,8); + } /* end for */ +} /* end Gencrctab() */ + + +static byte data1[512]={0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x10}; +static byte data2[512]={0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x10}; +static byte *dataptr=data1; + +static uint8_t rxbitc; +static int32_t asynst[10]={0}; +static uint16_t rxbyte; +int rxp=0; + +static int haveNewFrame = 0; +static int lastFrame = 0; +static int headerDetected = 0; + +decoderSetupCfg rs92SetupCfg = { + .bitrate = 4800, + .rx_cfg = 0x1E, + .sync_cfg = 0x70, + .sync_len = 2, + .sync_data = (const uint8_t *)"\x66\x65", + .preamble_cfg = 0xA8, +}; + +int RS92::setup(float frequency, int /*type*/) +{ +#if RS92_DEBUG + Serial.println("Setup sx1278 for RS92 sonde"); +#endif + if(!initialized) { + Gencrctab(); + initrsc(); + // not here for now.... get_eph("/brdc.19n"); + initialized = true; + } + + if(sx1278.ON()!=0) { + RS92_DBG(Serial.println("Setting SX1278 power on FAILED")); + return 1; + } + if(DecoderBase::setup(rs92SetupCfg, sonde.config.rs92.rxbw, sonde.config.rs92.rxbw)!=0) { + return 1; + } +#if 0 + if(sx1278.setFSK()!=0) { + RS92_DBG(Serial.println("Setting FSJ mode FAILED")); + return 1; + } + if(sx1278.setBitrate(4800)!=0) { + RS92_DBG(Serial.println("Setting bitrate 4800bit/s FAILED")); + return 1; + } +#if RS92_DEBUG + float br = sx1278.getBitrate(); + Serial.print("Exact bitrate is "); + Serial.println(br); +#endif + if(sx1278.setAFCBandwidth(sonde.config.rs92.rxbw)!=0) { + RS92_DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", sonde.config.rs92.rxbw)); + return 1; + } + if(sx1278.setRxBandwidth(sonde.config.rs92.rxbw)!=0) { + RS92_DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", sonde.config.rs92.rxbw)); + return 1; + } + + // Enable auto-AFC, auto-AGC, RX Trigger by preamble + if(sx1278.setRxConf(0x1E)!=0) { + RS92_DBG(Serial.println("Setting RX Config FAILED")); + return 1; + } + // Set autostart_RX to 01, preamble 0, SYNC detect==on, syncsize=3 (==4 byte + //char header[] = "0110.0101 0110.0110 1010.0101 1010.1010"; + + //const char *SYNC="\x10\xB6\xCA\x11\x22\x96\x12\xF8"; + //const char *SYNC="\x08\x6D\x53\x88\x44\x69\x48\x1F"; + // was 0x57 + //const char *SYNC="\x99\x9A"; + // version 1, working with continuous RX + const char *SYNC="\x66\x65"; + if(sx1278.setSyncConf(0x70, 2, (const uint8_t *)SYNC)!=0) { + RS92_DBG(Serial.println("Setting SYNC Config FAILED")); + return 1; + } + if(sx1278.setPreambleDetect(0xA8)!=0) { + RS92_DBG(Serial.println("Setting PreambleDetect FAILED")); + return 1; + } +#endif + +#if 0 + // version 2, with per-packet rx start, untested + // header is 2a 10 65, i.e. with lsb first + // 0 0101 0100 1 0 0000 1000 1 0 1010 0110 1 + // 10 10011001 10011010 01 10 10101010 01101010 01 10 01100110 10010110 01 + // preamble 0x6A 0x66 0x6A + // i.e. preamble detector on (0x80), preamble detector size 1 (0x00), preample chip errors??? (0x0A) + // after 2a2a2a2a2a1065 + if(sx1278.setPreambleDetect(0xA8)!=0) { + RS92_DBG(Serial.println("Setting PreambleDetect FAILED")); + return 1; + } + // sync config: ato restart (01), preamble polarity AA (0), sync on (1), resevered (0), syncsize 2+1 (010) => 0x52 + const char *SYNC="\x6A\x66\x69"; + if(sx1278.setSyncConf(0x52, 3, (const uint8_t *)SYNC)!=0) { + RS92_DBG(Serial.println("Setting SYNC Config FAILED")); + return 1; + } + // payload length is ((240 - 7)*10 +6)/8 = 292 +#endif + + // Packet config 1: fixed len, no mancecer, no crc, no address filter + // Packet config 2: packet mode, no home ctrl, no beackn, msb(packetlen)=0) + if(sx1278.setPacketConfig(0x08, 0x40)!=0) { + RS92_DBG(Serial.println("Setting Packet config FAILED")); + return 1; + } + + Serial.print("RS92: setting RX frequency to "); + Serial.println(frequency); + int res = sx1278.setFrequency(frequency); + sx1278.clearIRQFlags(); + + // enable RX + sx1278.setPayloadLength(0); // infinite for now... + //sx1278.setPayloadLength(292); + sx1278.writeRegister(REG_OP_MODE, FSK_RX_MODE); + +#if RS92_DEBUG + RS92_DBG(Serial.println("Setting SX1278 config for RS92 finished\n"); Serial.println()); +#endif + return res; +} + +uint32_t RS92::bits2val(const uint8_t *bits, int len) { + uint32_t val = 0; + for (int j = 0; j < len; j++) { + val |= (bits[j] << (len-1-j)); + } + return val; +} + +RS92::RS92() { +} + +/* RS92 reed solomon decoder, from dxlAPRS + */ + + +#if 0 +static char crcrs(const byte frame[], uint32_t frame_len, + int32_t from, int32_t to) +{ + uint16_t crc; + int32_t i; + int32_t tmp; + crc = 0xFFFFU; + tmp = to-3L; + i = from; + if (i<=tmp) for (;; i++) { + crc = X2C_LSH(crc,16,-8)^CRCTAB[(uint32_t)((crc^(uint16_t)(uint8_t)frame[i])&0xFFU)]; + if (i==tmp) break; + } /* end for */ + return frame[to-1L]==(char)crc && frame[to-2L]==(char)X2C_LSH(crc, + 16,-8); +} /* end crcrs() */ + +static int32_t getint32(const byte frame[], uint32_t frame_len, + uint32_t p) +{ + uint32_t n; + uint32_t i; + n = 0UL; + for (i = 3UL;; i--) { + n = n*256UL+(uint32_t)(uint8_t)frame[p+i]; + if (i==0UL) break; + } /* end for */ + return (int32_t)n; +} /* end getint32() */ + + +static uint32_t getcard16(const byte frame[], uint32_t frame_len, + uint32_t p) +{ + return (uint32_t)(uint8_t)frame[p]+256UL*(uint32_t)(uint8_t) + frame[p+1UL]; +} /* end getcard16() */ + + +static int32_t getint16(const byte frame[], uint32_t frame_len, + uint32_t p) +{ + uint32_t n; + n = (uint32_t)(uint8_t)frame[p]+256UL*(uint32_t)(uint8_t) + frame[p+1UL]; + if (n>=32768UL) return (int32_t)(n-65536UL); + return (int32_t)n; +} /* end getint16() */ + +static void wgs84r(double x, double y, double z, + double * lat, double * long0, + double * heig) +{ + double sl; + double ct; + double st; + double t; + double rh; + double xh; + double h; + h = x*x+y*y; + if (h>0.0) { + rh = (double)sqrt((float)h); + xh = x+rh; + *long0 = atang2(xh, y)*2.0; + if (*long0>3.1415926535898) *long0 = *long0-6.2831853071796; + t = (double)atan((float)(X2C_DIVL(z*1.003364089821, + rh))); + st = (double)sin((float)t); + ct = (double)cos((float)t); + *lat = (double)atan((float) + (X2C_DIVL(z+4.2841311513312E+4*st*st*st, + rh-4.269767270718E+4*ct*ct*ct))); + sl = (double)sin((float)*lat); + *heig = X2C_DIVL(rh,(double)cos((float)*lat))-(double)(X2C_DIVR(6.378137E+6f, + sqrt((float)(1.0-6.6943799901413E-3*sl*sl)))); + } + else { + *lat = 0.0; + *long0 = 0.0; + *heig = 0.0; + } +/* lat:=atan(z/(rh*(1.0 - E2))); */ +/* heig:=sqrt(h + z*z) - EARTHA; */ +} /* end wgs84r() */ +#endif + + +static int32_t reedsolomon92(uint8_t *buf, uint32_t buf_len) +{ + uint32_t i; + int32_t res; + uint8_t b[256]; + uint32_t eraspos[24]; + for (i = 0UL; i<=255UL; i++) { + b[i] = 0; + } /* end for */ + for (i = 0UL; i<=209UL; i++) { + b[230UL-i] = buf[i+6UL]; + } /* end for */ + for (i = 0UL; i<=23UL; i++) { + b[254UL-i] = buf[i+216UL]; + } /* end for */ + res = decodersc((char *)b, eraspos, 0L); + if (res>0L && res<=12L) { + for (i = 0UL; i<=209UL; i++) { + buf[i+6UL] = b[230UL-i]; + } /* end for */ + for (i = 0UL; i<=23UL; i++) { + buf[i+216UL] = b[254UL-i]; + } /* end for */ + } + return res; +} /* end reedsolomon92() */ + +void printRaw(uint8_t *data, int len) +{ + char buf[3]; + int i; + for(i=0; i240) { + Serial.print("RS92 frame too long: "); + Serial.println(len); + break; + } + ++p; + j=0; + uint16_t crc = 0xFFFF; + while(j240) { + Serial.println("eof"); + return; + } + } + if ( (((uint8_t)(crc&0xff)) != data[p-2]) || (((uint8_t)(crc>>8)) != data[p-1])) { + Serial.printf("************ crc error: expected %04x\n",crc); + continue; + } + switch(typ) { + case 'e': + Serial.println("cal "); + //docalib(sf, 256, objname, 9, &contextr9, &mhz, &frameno); + // ... + break; + case 'i': + if(calok && calibok==0xffffffff) { + //domes(sf, 256, &hp, &hyg, &temp) + mesok = 1; + } + break; + case 'g': + Serial.println("gps "); + if(1||calok) { + //dogps(data+p-len, 256, &contextr9, &contextr9.timems, &gpstime); + } + break; + case 'h': + Serial.println("data "); break; + if(data[p+2]!=3) Serial.println("aux "); + // .. + break; + } + } +#endif +} /* end decodeframe92() */ + + + + + +void RS92::printRaw(uint8_t *data, int len) +{ + char buf[3]; + int i; + for(i=0; i=5 || b=='*') rxp++; else rxp=0; + if(rxp==6) { // header detected + headerDetected = 1; + } + if(rxp>=240) { // frame complete... (240 byte) + rxp=0; + //printRaw(data, 240); + decodeframe92(dataptr); + haveNewFrame = 1; + } +} /* end stobyte92() */ + + +uint32_t rxdata; +bool rxsearching=true; + +// search for +// 101001100110011010011010011001100110100110101010100110101001 +// 1010011001100110100110100110 0110.0110 1001.1010 1010.1001 1010.1001 => 0x669AA9A9 +void RS92::process8N1data(uint8_t dt) +{ + for(int i=0; i<8; i++) { + uint8_t d = (dt&0x80)?1:0; + rxdata = (rxdata<<1) | d; + if((rxbitc&1)==1) { rxbyte = (rxbyte>>1) + (d<<9); } // mancester decoded data + dt <<= 1; + // + if(rxsearching) { + if(rxdata == 0x669AA9A9) { + rxsearching = false; + rxbitc = 0; + rxp = 6; + int rssi=sx1278.getRSSI(); + int fei=sx1278.getFEI(); + int afc=sx1278.getAFC(); + Serial.print("Test: RSSI="); Serial.print(rssi); + Serial.print(" FEI="); Serial.print(fei); + Serial.print(" AFC="); Serial.println(afc); + sonde.si()->rssi = rssi; + sonde.si()->afc = afc; + } + } else { + rxbitc = (rxbitc+1)%20; + if(rxbitc == 0) { // got startbit, 8 data bit, stop bit + //Serial.printf("%03x ",rxbyte); + dataptr[rxp++] = (rxbyte>>1)&0xff; + if(rxp==7 && dataptr[6] != 0x65) { + Serial.printf("wrong start: %02x\n",dataptr[6]); + rxsearching = true; + } + if(rxp>=240) { + rxsearching = true; + decodeframe92(dataptr); + haveNewFrame = 1; + } + } + } + } +} + +void process8N1dataOrig(uint8_t data) +{ + // data contains 8 bits (after mancester encoding; 4 real bit), big endian + for(int i=0; i<4; i++) { + uint8_t d = (data&0x80)?1:0; + data = data << 2; + rxbyte = (rxbyte>>1) + (d<<8); + int maxk = 0; + int max0 = 0; + for(int k = 0; k< 10; k++) { + int n = asynst[k] - asynst[(k+1)%10]; + if(abs(n)>abs(max0)) { + max0 = n; + maxk = k; + } + } + //Serial.printf("<%d,%d,%d>",max0,maxk,rxbitc); + if(rxbitc == maxk) { + if(max0<0) { rxbyte = rxbyte ^ 0xFF; } + /////TODO stobyte92( rxbyte&0xff ); + } + //Serial.printf("%d:",asynst[rxbitc]); + if(d) { + asynst[rxbitc] += (32767-asynst[rxbitc])/16; + } else { + asynst[rxbitc] -= (32767+asynst[rxbitc])/16; + } + //Serial.printf("%d ",asynst[rxbitc]); + rxbitc = (rxbitc+1) % 10; + } +} + +int RS92::receive() { + unsigned long t0 = millis(); + Serial.printf("RS92::receive() start at %ld\n",t0); + while( millis() - t0 < 1000 ) { + uint8_t value = sx1278.readRegister(REG_IRQ_FLAGS2); + if ( bitRead(value, 7) ) { + Serial.println("FIFO full"); + } + if ( bitRead(value, 4) ) { + Serial.println("FIFO overflow"); + } + if ( bitRead(value, 2) == 1 ) { + Serial.println("FIFO: ready()"); + sx1278.clearIRQFlags(); + } + if(bitRead(value, 6) == 0) { // while FIFO not empty + byte data = sx1278.readRegister(REG_FIFO); + //Serial.printf("%02x",data); + process8N1data(data); + value = sx1278.readRegister(REG_IRQ_FLAGS2); + } else { + if(headerDetected) { + t0 = millis(); // restart timer... don't time out if header detected... + headerDetected = 0; + } + if(haveNewFrame) { + Serial.printf("RS92::receive(): new frame complete after %ldms\n", millis()-t0); + haveNewFrame = 0; + return RX_OK; + } + delay(2); + } + } + Serial.printf("RS92::receive() timed out\n"); + return RX_TIMEOUT; // TODO RX_OK; +} + +#define RS92MAXLEN (240) +int RS92::waitRXcomplete() { + // called after complete... + Serial.printf("decoding frame %d\n", lastFrame); + print_frame(lastFrame==1?data1:data2, 240); + + SondeData *si = &( (sonde.sondeList+rxtask.receiveSonde)->d ); + si->lat = gpx.lat; + si->lon = gpx.lon; + si->alt = gpx.alt; + si->vs = gpx.vU; + si->hs = gpx.vH; + si->dir = gpx.vD; + si->validPos = 0x3f; + memcpy(si->id, gpx.id, 9); + memcpy(si->ser, gpx.id, 9); + si->validID = true; + si->vframe = si->frame = gpx.frnr; + si->sats = gpx.k; + si->time = (gpx.gpssec/1000) + 86382 + gpx.week*604800 + 315878400UL; + si->validTime = true; + + return 0; +} + + + +RS92 rs92 = RS92(); diff --git a/RX_FSK/src/RS92.h b/RX_FSK/src/RS92.h new file mode 100644 index 0000000..8c88add --- /dev/null +++ b/RX_FSK/src/RS92.h @@ -0,0 +1,92 @@ +/* + * RS92.h + * Functions for decoding RS92 sondes with SX127x chips + * Copyright (C) 2019 Hansi Reiser, dl9rdz + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef RS92_h +#define RS92_h + +#include +#include +#include +#ifndef inttypes_h + #include +#endif +#include "DecoderBase.h" + + +struct CONTEXTR9 { + char calibdata[512]; + uint32_t calibok; + char mesok; + char posok; + char framesent; + double lat; + double lon; + double heig; + double speed; + double dir; + double climb; + double lastlat; + double laslong; + double lastalt; + double lastspeed; + double lastdir; + double lastclb; + float hrmsc; + float vrmsc; + double hp; + double hyg; + double temp; + double ozontemp; + double ozon; + uint32_t goodsats; + uint32_t timems; + uint32_t framenum; +}; + + +/* Main class */ +class RS92 : public DecoderBase +{ +private: + void process8N1data(uint8_t data); + void stobyte92(uint8_t byte); + void decodeframe92(uint8_t *data); + uint32_t bits2val(const uint8_t *bits, int len); + void printRaw(uint8_t *data, int len); + int bitsToBytes(uint8_t *bits, uint8_t *bytes, int len); + int decode92(byte *data, int maxlen); + + uint8_t hamming_conf[ 7*8]; // 7*8=56 + uint8_t hamming_dat1[13*8]; // 13*8=104 + uint8_t hamming_dat2[13*8]; + + uint8_t block_conf[ 7*4]; // 7*4=28 + uint8_t block_dat1[13*4]; // 13*4=52 + uint8_t block_dat2[13*4]; + + uint8_t H[4][8] = // extended Hamming(8,4) particy check matrix + {{ 0, 1, 1, 1, 1, 0, 0, 0}, + { 1, 0, 1, 1, 0, 1, 0, 0}, + { 1, 1, 0, 1, 0, 0, 1, 0}, + { 1, 1, 1, 0, 0, 0, 0, 1}}; + uint8_t He[8] = { 0x7, 0xB, 0xD, 0xE, 0x8, 0x4, 0x2, 0x1}; // Spalten von H: + // 1-bit-error-Syndrome + boolean initialized = false; + +public: + RS92(); + int setup(float frequency, int type = 0); + int receive(); + int waitRXcomplete(); + + int use_ecc = 1; +}; + +extern RS92 rs92; + +#endif diff --git a/RX_FSK/src/SX1278FSK.cpp b/RX_FSK/src/SX1278FSK.cpp new file mode 100644 index 0000000..f61e0ce --- /dev/null +++ b/RX_FSK/src/SX1278FSK.cpp @@ -0,0 +1,886 @@ +/* + * Functions for using SX127x in FSK mode (mainly receive) + * Copyright (C) 2019 Hansi Reiser, dl9rdz + * + * Partially based on the SX1278 libraray for managing Semtech modules + * Copyright (C) 2015 Wireless Open Source + * http://wirelessopensource.com + * + * SPDX-License-Identifier: LGPL-2.1+ + */ + +#include "SX1278FSK.h" +#include "SPI.h" +#include "Sonde.h" +#include "Display.h" + + +#define SPI_MUTEX_LOCK() \ + do \ + { \ + } while (xSemaphoreTake(_lock, portMAX_DELAY) != pdPASS) +#define SPI_MUTEX_UNLOCK() xSemaphoreGive(_lock) + +SX1278FSK::SX1278FSK() {} + +void SX1278FSK::setup(xSemaphoreHandle lock) +{ + _lock = lock; + Serial.println("Setup sx1278"); + if(_lock) SPI_MUTEX_LOCK(); + digitalWrite(sonde.config.sx1278_ss, HIGH); + pinMode(sonde.config.sx1278_ss, OUTPUT); + Serial.printf("Configuing SX1278FSK SPI with miso=%d, mosi=%d, sck=%d, ss=%d\n", sonde.config.sx1278_miso, + sonde.config.sx1278_mosi, sonde.config.sx1278_sck, sonde.config.sx1278_ss); + SPI.begin(sonde.config.sx1278_sck, sonde.config.sx1278_miso, sonde.config.sx1278_mosi, -1); // no hardware CS + // was: SPI.begin(); + + //Set most significant bit first + SPI.setBitOrder(MSBFIRST); + //Divide the clock frequency + SPI.setClockDivider(SPI_CLOCK_DIV2); + //Set data mode + SPI.setDataMode(SPI_MODE0); + if(_lock) SPI_MUTEX_UNLOCK(); +}; + + +static SPISettings spiset = SPISettings(10000000L, MSBFIRST, SPI_MODE0); + +/* +Function: Turns the module ON. +Returns: 0 on success, 1 otherwise +*/ +uint8_t SX1278FSK::ON() +{ + uint8_t state = 2; +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'ON'")); +#endif + + // Set Maximum Over Current Protection + state = setMaxCurrent(0x1B); + if( state == 0 ) + { +#if (SX1278FSK_debug_mode > 1) + Serial.println(F("## Setting ON with maximum current supply ##")); + Serial.println(); +#endif + } + else + { + return 1; + } + // set FSK mode + state = setFSK(); + return state; +} + +/* +Function: Turn the module OFF. +Returns: Nothing +*/ +void SX1278FSK::OFF() +{ +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'OFF'")); +#endif + + //SPI.end(); +#if 0 + // Powering the module + pinMode(SX1278_SS,OUTPUT); + digitalWrite(SX1278_SS,LOW); +#endif + +#if (SX1278FSK_debug_mode > 1) + Serial.println(F("## Setting OFF ##")); + Serial.println(); +#endif +} + +/* +Function: Reads the indicated register. +Returns: The content of the register +Parameters: + address: address register to read from +*/ +byte SX1278FSK::readRegister(byte address) +{ + byte value = 0x00; + + if(_lock) SPI_MUTEX_LOCK(); + digitalWrite(sonde.config.sx1278_ss,LOW); + SPI.beginTransaction(spiset); + + //delay(1); + bitClear(address, 7); // Bit 7 cleared to write in registers + SPI.transfer(address); + value = SPI.transfer(0x00); + SPI.endTransaction(); + digitalWrite(sonde.config.sx1278_ss,HIGH); + +#if (SX1278FSK_debug_mode > 1) + if(address!=0x3F) { + Serial.print(F("## Reading: ##\t")); + Serial.print(F("Register ")); + Serial.print(address, HEX); + Serial.print(F(": ")); + Serial.print(value, HEX); + Serial.println(); + } +#endif + if(_lock) SPI_MUTEX_UNLOCK(); + return value; +} + +/* +Function: Writes on the indicated register. +Returns: Nothing +Parameters: + address: address register to write in + data: value to write in the register +*/ +void SX1278FSK::writeRegister(byte address, byte data) +{ + if(_lock) SPI_MUTEX_LOCK(); + digitalWrite(sonde.config.sx1278_ss,LOW); + SPI.beginTransaction(spiset); + + //delay(1); + bitSet(address, 7); // Bit 7 set to read from registers + SPI.transfer(address); + SPI.transfer(data); + SPI.endTransaction(); + digitalWrite(sonde.config.sx1278_ss,HIGH); + +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("## Writing: ##\t")); + Serial.print(F("Register ")); + bitClear(address, 7); + Serial.print(address, HEX); + Serial.print(F(": ")); + Serial.print(data, HEX); + Serial.println(); +#endif + if(_lock) SPI_MUTEX_UNLOCK(); +} + +/* + * Function: Clears the IRQ flags + * + * Configuration registers are accessed through the SPI interface. + * Registers are readable in all device mode including Sleep. However, they + * should be written only in Sleep and Stand-by modes. + * + * Returns: Nothing + */ +void SX1278FSK::clearIRQFlags() +{ +#if 0 + byte st0; + // Save the previous status + st0 = readRegister(REG_OP_MODE); + // Stdby mode to write in registers + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); +#endif + // FSK mode flags1 register + writeRegister(REG_IRQ_FLAGS1, 0xFF); + // FSK mode flags2 register + writeRegister(REG_IRQ_FLAGS2, 0xFF); +#if 0 + // Getting back to previous status + if(st0 != FSK_STANDBY_MODE) { + writeRegister(REG_OP_MODE, st0); + } +#endif +#if (SX1278FSK_debug_mode > 1) + Serial.println(F("## FSK flags cleared ##")); +#endif +} + +/* +Function: Sets the module in FSK mode. +Returns: Integer that determines if there has been any error + state = 2 --> The command has not been executed + state = 1 --> There has been an error while executing the command + state = 0 --> The command has been executed with no errors +*/ +uint8_t SX1278FSK::setFSK() +{ + uint8_t state = 2; + byte st0; + //byte config1; + +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'setFSK'")); +#endif + + writeRegister(REG_OP_MODE, FSK_SLEEP_MODE); // Sleep mode (mandatory to change mode) + // If we are in LORA mode, above line activate Sleep mode, but does not change mode to FSK + // as mode change is only allowed in sleep mode. Next line changes to FSK + writeRegister(REG_OP_MODE, FSK_SLEEP_MODE); + + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); // FSK standby mode + + //writeRegister(REG_FIFO_THRESH, 0x80); // condition to start packet tx + //config1 = readRegister(REG_SYNC_CONFIG); + //config1 = config1 & B00111111; + //writeRegister(REG_SYNC_CONFIG,config1); + + delay(100); + + st0 = readRegister(REG_OP_MODE); // Reading config mode + if( st0 == FSK_STANDBY_MODE ) + { // FSK mode + state = 0; +#if (SX1278FSK_debug_mode > 1) + Serial.println(F("## FSK set with success ##")); + Serial.println(); +#endif + } else { // LoRa mode + state = 1; + Serial.println( st0 ); +#if (SX1278FSK_debug_mode > 1) + Serial.println(F("** There has been an error while setting FSK **")); + Serial.println(); +#endif + } + return state; +} + + +/* Function: Sets FSK bitrate + * Returns: 0 for success, >0 in case of error + * Parameters: bps: requested bitrate + * (raw data rate, for Mancester encoding, the effective bitrate is bps/2) +*/ + +uint8_t SX1278FSK::setBitrate(float bps) +{ + // TODO: Check if FSK mode is active + + // check if bitrate is allowed allowed bitrate + if((bps < 1200) || (bps > 300000)) { + return 1; + } + + // set mode to FSK STANDBY + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); + + // set bit rate + uint16_t bitRate = (SX127X_CRYSTAL_FREQ * 1.0) / bps; + writeRegister(REG_BITRATE_MSB, (bitRate & 0xFF00) >> 8); + writeRegister(REG_BITRATE_LSB, (bitRate & 0x00FF)); + + // also set fractional part + uint16_t fracRate = (SX127X_CRYSTAL_FREQ * 16.0) / bps - bitRate * 16 + 0.5; + writeRegister(REG_BIT_RATE_FRAC, fracRate&0x0F); + return 0; +} +/* Function: Gets configured bitrate + * Returns bitrate in bit/second + */ +float SX1278FSK::getBitrate() +{ + uint8_t fmsb = readRegister(REG_BITRATE_MSB); + uint8_t flsb = readRegister(REG_BITRATE_LSB); + uint8_t ffrac = readRegister(REG_BIT_RATE_FRAC) & 0x0F; + return SX127X_CRYSTAL_FREQ / ( (fmsb<<8) + flsb + ffrac / 16.0 ); +} + +//typedef struct rxbwset { float bw; uint8_t mant; uint8_t rxp; } st_rxbwsettings; + +uint8_t SX1278FSK::setRxBandwidth(float bw) +{ + // TODO: Check if in FSK mode + // + if(bw<2600 || bw>250000) { return 1; /* invalid */ } + + uint8_t rxbwexp = 1; + bw = SX127X_CRYSTAL_FREQ / bw / 8; + while(bw>31) { rxbwexp++; bw/=2.0; } + uint8_t rxbwmant = bw<17?0 : bw<21? 1:2; + + // set mode to FSK STANDBY + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); + + writeRegister(REG_RX_BW, rxbwexp | (rxbwmant<<3)); + return 0; +} + +float SX1278FSK::getRxBandwidth() +{ + uint8_t rxbw = readRegister(REG_RX_BW); + uint8_t rxbwexp = rxbw&0x07; + uint8_t rxbwmant = (rxbw>>3)&0x03; + rxbwmant = 16 + 4*rxbwmant; + return SX127X_CRYSTAL_FREQ / ( rxbwmant << (rxbwexp+2)); +} + +uint8_t SX1278FSK::setAFCBandwidth(float bw) +{ + // TODO: Check if in FSK mode + // + if(bw<2600 || bw>250000) { return 1; /* invalid */ } + + uint8_t rxbwexp = 1; + bw = SX127X_CRYSTAL_FREQ / bw / 8; + while(bw>31) { rxbwexp++; bw/=2.0; } + uint8_t rxbwmant = bw<17?0 : bw<21? 1:2; + + // set mode to FSK STANDBY + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); + + writeRegister(REG_AFC_BW, rxbwexp | (rxbwmant<<3)); + return 0; +} + +float SX1278FSK::getAFCBandwidth() +{ + uint8_t rxbw = readRegister(REG_AFC_BW); + uint8_t rxbwexp = rxbw&0x07; + uint8_t rxbwmant = (rxbw>>3)&0x03; + rxbwmant = 16 + 4*rxbwmant; + return SX127X_CRYSTAL_FREQ / ( rxbwmant << (rxbwexp+2)); +} + + +uint8_t SX1278FSK::setFrequency(float freq) { + + // set mode to FSK STANDBY + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); + freq += sonde.config.freqofs; // manual frequency correction + + uint32_t frf = freq * 1.0 * (1<<19) / SX127X_CRYSTAL_FREQ; + writeRegister(REG_FRF_MSB, (frf&0xff0000)>>16); + writeRegister(REG_FRF_MID, (frf&0x00ff00)>>8); + writeRegister(REG_FRF_LSB, (frf&0x0000ff)); + return 0; +} + +float SX1278FSK::getFrequency() { + uint8_t fmsb = readRegister(REG_FRF_MSB); + uint8_t fmid = readRegister(REG_FRF_MID); + uint8_t flsb = readRegister(REG_FRF_LSB); + return ((fmsb<<16)|(fmid<<8)|flsb) * 1.0 / (1<<19) * SX127X_CRYSTAL_FREQ; +} + + +static int gaintab[]={-999,0,-6,-12,-24,-36,-48,-999}; +int SX1278FSK::getLNAGain() { + int gain = (readRegister(REG_LNA)>>5)&0x07; + return gaintab[gain]; +} +uint8_t SX1278FSK::setLNAGain(int gain) { + uint8_t g=1; + while(gain8) return 1; + for(int i=0; i 1) + Serial.println(); + Serial.println(F("Starting 'getPreambleLength'")); +#endif + + p_length = readRegister(REG_PREAMBLE_MSB_FSK); + p_length = (p_length<<8) | readRegister(REG_PREAMBLE_LSB_FSK); +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("## Preamble length configured is ")); + Serial.print(p_length, HEX); + Serial.print(F(" ##")); + Serial.println(); +#endif + return p_length; +} + +/* +Function: Sets the preamble length in the module +Returns: Integer that determines if there has been any error +state = 2 --> The command has not been executed +state = 1 --> There has been an error while executing the command +state = 0 --> The command has been executed with no errors +Parameters: +l: length value to set as preamble length. +*/ +uint8_t SX1278FSK::setPreambleLength(uint16_t l) +{ + byte st0; + int8_t state = 2; + +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'setPreambleLength'")); +#endif + + st0 = readRegister(REG_OP_MODE); // Save the previous status + + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); // Set Standby mode to write in registers + // Storing MSB preamble length in FSK mode + writeRegister(REG_PREAMBLE_MSB_FSK, l>>8); + writeRegister(REG_PREAMBLE_LSB_FSK, l&0xFF); + + state = 0; +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("## Preamble length ")); + Serial.print(l, HEX); + Serial.println(F(" has been successfully set ##")); + Serial.println(); +#endif + + if(st0 != FSK_STANDBY_MODE) { + writeRegister(REG_OP_MODE, st0); // Getting back to previous status + } + return state; +} + +/* +Function: Gets the payload length from the module. +Returns: configured length; -1 on error +*/ +int SX1278FSK::getPayloadLength() +{ + int length; +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'getPayloadLength'")); +#endif + length = readRegister(REG_PAYLOAD_LENGTH_FSK); + +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("## Payload length configured is ")); + Serial.print(length); + Serial.println(F(" ##")); +#endif + return length; +} + +/* +Function: Sets the payload length from the module. +Returns: 0 for ok, otherwise error +// TODO: Larger than 255 bytes? +*/ +uint8_t SX1278FSK::setPayloadLength(int len) +{ +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("Starting 'setPayloadLength'")); + Serial.println(len); +#endif + uint8_t conf2 = readRegister(REG_PACKET_CONFIG2); + conf2 = (conf2 & 0xF8) | ( (len>>8)&0x7 ); + writeRegister(REG_PACKET_CONFIG2, conf2); + writeRegister(REG_PAYLOAD_LENGTH_FSK, len&0xFF); + return 0; +} + +/* +Function: Gets the current value of RSSI. +Returns: RSSI value +*/ +int16_t SX1278FSK::getRSSI() +{ + int16_t RSSI; + //int rssi_mean = 0; + int total = 1; + + /// FSK mode + // get mean value of RSSI + for(int i = 0; i < total; i++) + { + RSSI = readRegister(REG_RSSI_VALUE_FSK); + //rssi_mean += _RSSI; + } + //rssi_mean = rssi_mean / total; + //RSSI = rssi_mean; + +#if (SX1278FSK_debug_mode > 0) + Serial.print(F("## RSSI value is ")); + Serial.print(RSSI); + Serial.println(F(" ##")); +#endif + return RSSI; +} + +/* +Function: Gets the current value of FEI (frequency error indication) +Returns: FEI value in Hz +*/ +int32_t SX1278FSK::getFEI() +{ + int32_t FEI; + int16_t regval = (readRegister(REG_FEI_MSB)<<8) | readRegister(REG_FEI_LSB); + //Serial.printf("feireg: %04x\n", regval); + FEI = (int32_t)(regval * SX127X_FSTEP); + return FEI; +} +/* +Function: Gets the current value of AFC (automated frequency correction) +Returns: AFC value in Hz +*/ +int32_t SX1278FSK::getAFC() +{ + int32_t AFC; + int16_t regval = (readRegister(REG_AFC_MSB)<<8) | readRegister(REG_AFC_LSB); + //Serial.printf("afcreg: %04x\n", regval); + AFC = (int32_t)(regval * SX127X_FSTEP); + return AFC; +} +uint16_t SX1278FSK::getRawAFC() { + return (readRegister(REG_AFC_MSB)<<8) | readRegister(REG_AFC_LSB); +} +void SX1278FSK::setRawAFC(uint16_t afc) { + writeRegister(REG_AFC_MSB, afc>>8); + writeRegister(REG_AFC_LSB, afc&0xFF); +} + +/* +Function: Gets the current supply limit of the power amplifier, protecting battery chemistries. +Returns: Integer that determines if there has been any error +state = 2 --> The command has not been executed +state = 1 --> There has been an error while executing the command +state = 0 --> The command has been executed with no errors +Parameters: +rate: value to compute the maximum current supply. Maximum current is 45+5*'rate' [mA] +*/ +int SX1278FSK::getMaxCurrent() +{ + int value; + +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'getMaxCurrent'")); +#endif + + value = readRegister(REG_OCP); + + // extract only the OcpTrim value from the OCP register + value &= B00011111; + + if( value <= 15 ) { + value = (45 + (5 * value)); + } else if( value <= 27 ) { + value = (-30 + (10 * value)); + } else { + value = 240; + } +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("## Maximum current supply configured is ")); + Serial.print(value, DEC); + Serial.println(F(" mA ##")); + Serial.println(); +#endif + return value; +} + +/* +Function: Limits the current supply of the power amplifier, protecting battery chemistries. +Returns: Integer that determines if there has been any error +state = 2 --> The command has not been executed +state = 1 --> There has been an error while executing the command +state = 0 --> The command has been executed with no errors +state = -1 --> Forbidden parameter value for this function +Parameters: +rate: value to compute the maximum current supply. Range: 0x00 to 0x1B. The +Maximum current is: +Imax = 45+5*OcpTrim [mA] if OcpTrim <= 15 (120 mA) / +Imax = -30+10*OcpTrim [mA] if 15 < OcpTrim <= 27 (130 to 240 mA) +Imax = 240mA for higher settings +*/ +int8_t SX1278FSK::setMaxCurrent(uint8_t rate) +{ + int8_t state = 2; + byte st0; + +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'setMaxCurrent'")); +#endif + + // Maximum rate value = 0x1B, because maximum current supply = 240 mA + if (rate > 0x1B) + { + state = -1; +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("** Maximum current supply is 240 mA, ")); + Serial.println(F("so maximum parameter value must be 27 (DEC) or 0x1B (HEX) **")); + Serial.println(); +#endif + } + else + { + // Enable Over Current Protection + rate |= B00100000; + + //state = 1; + st0 = readRegister(REG_OP_MODE); // Save the previous status + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); // Set FSK Standby mode to write in registers + writeRegister(REG_OCP, rate); // Modifying maximum current supply + if(st0 != FSK_STANDBY_MODE) { + writeRegister(REG_OP_MODE, st0); // Getting back to previous status + } + state = 0; + } + return state; +} + + +/* +Function: Configures the module to receive information. +Returns: Integer that determines if there has been any error +state = 2 --> The command has not been executed +state = 1 --> There has been an error while executing the command +state = 0 --> The command has been executed with no errors +*/ +uint8_t SX1278FSK::receive() +{ + uint8_t state = 1; +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'receive'")); +#endif + // TODO: Is there anything else to be done? + // + writeRegister(REG_OP_MODE, FSK_RX_MODE); + state = 0; +#if (SX1278FSK_debug_mode > 1) + Serial.println(F("## Receiving FSK mode activated with success ##")); +#endif + return state; +} + +/* +Function: Configures the module to receive a packet +Returns: Integer that determines if there has been any error +state = 2 --> The command has not been executed +state = 1 --> There has been an error while executing the command +state = 0 --> The command has been executed with no errors +Parameters: + wait: timeout in ms + data: memory where to place received data +*/ +uint8_t SX1278FSK::receivePacketTimeout(uint32_t wait, byte *data) +{ + int di=0; + uint8_t state = 2; + unsigned long previous; + byte value = 0x00; +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'receivePacketTimeout'")); +#endif + // set RX mode + state = receive(); + if(state != 0) { return state; } + +#if (SX1278FSK_debug_mode > 0) + Serial.println(F("RX mode sucessfully activated")); +#endif + previous = millis(); + /// FSK mode + value = readRegister(REG_IRQ_FLAGS2); + byte ready=0; + // while not yet done or FIFO not yet empty + while( (!ready || bitRead(value,6)==0) && (millis() - previous < wait) ) + { + if( bitRead(value,2)==1 ) ready=1; + if( bitRead(value, 6) == 0 ) { // FIFO not empty + data[di++] = readRegister(REG_FIFO); + // It's a bit of a hack.... get RSSI and AFC (a) at beginning of packet and + // for RS41 after about 0.5 sec. It might be more logical to put this decoder-specific + // code into RS41.cpp instead of this file... (maybe TODO?) + if(di==1 || di==290 ) { + int rssi=getRSSI(); + int afc=getAFC(); +#if 0 + Serial.printf("Test(%d): RSSI=%d", rxtask.currentSonde, rssi/2); + Serial.print("Test: AFC="); Serial.println(afc); +#endif + sonde.sondeList[rxtask.currentSonde].rssi = rssi; + sonde.sondeList[rxtask.currentSonde].afc = afc; + if(rxtask.receiveResult==0xFFFF) + rxtask.receiveResult = RX_UPDATERSSI; + //sonde.si()->rssi = rssi; + //sonde.si()->afc = afc; + } + if(di>520) { + // TODO + Serial.println("TOO MUCH DATA"); + break; + } + previous = millis(); // reset timeout after receiving data + } else { + delay(10); + } + value = readRegister(REG_IRQ_FLAGS2); + } + if( !ready || bitRead(value, 6)==0) { +#if 1&&(SX1278FSK_debug_mode > 0) + Serial.println(F("** The timeout has expired **")); + Serial.println(); +#endif + sonde.si()->rssi = getRSSI(); + writeRegister(REG_OP_MODE, FSK_STANDBY_MODE); // Setting standby FSK mode + return 1; // TIMEOUT + } + +#if (SX1278FSK_debug_mode > 0) + Serial.println(F("## Packet received:")); + for(unsigned int i = 0; i < di; i++) + { + Serial.print(data[i], HEX); // Printing payload + Serial.print("|"); + } + Serial.println(F(" ##")); +#endif + state = 0; + // Initializing flags + clearIRQFlags(); + + return state; +} + + +#if 0 +/* +Function: It gets the temperature from the measurement block module. +Returns: Integer that determines if there has been any error +state = 2 --> The command has not been executed +state = 1 --> There has been an error while executing the command +state = 0 --> The command has been executed with no errors +*/ +uint8_t SX1278FSK::getTemp() +{ + byte st0; + uint8_t state = 2; + +#if (SX1278FSK_debug_mode > 1) + Serial.println(); + Serial.println(F("Starting 'getTemp'")); +#endif + + st0 = readRegister(REG_OP_MODE); // Save the previous status + + if( _modem == LORA ) + { // Allowing access to FSK registers while in LoRa standby mode + writeRegister(REG_OP_MODE, LORA_STANDBY_FSK_REGS_MODE); + } + + state = 1; + // Saving temperature value + _temp = readRegister(REG_TEMP); + if( _temp & 0x80 ) // The SNR sign bit is 1 + { + // Invert and divide by 4 + _temp = ( ( ~_temp + 1 ) & 0xFF ); + } + else + { + // Divide by 4 + _temp = ( _temp & 0xFF ); + } + + +#if (SX1278FSK_debug_mode > 1) + Serial.print(F("## Temperature is: ")); + Serial.print(_temp); + Serial.println(F(" ##")); + Serial.println(); +#endif + + if( _modem == LORA ) + { + writeRegister(REG_OP_MODE, st0); // Getting back to previous status + } + + state = 0; + return state; +} + +/* +Function: It prints the registers related to RX +Returns: Integer that determines if there has been any error +state = 2 --> The command has not been executed +state = 1 --> There has been an error while executing the command +state = 0 --> The command has been executed with no errors +*/ +void SX1278FSK::showRxRegisters() +{ + Serial.println(F("\n--- Show RX register ---")); + + // variable + byte reg; + + for(int i = 0x00; i < 0x80; i++) + { + reg = readRegister(i); + Serial.print(F("Reg 0x")); + Serial.print(i, HEX); + Serial.print(F(":")); + Serial.print(reg, HEX); + Serial.println(); + delay(100); + } + + Serial.println(F("------------------------")); + +} +#endif + +xSemaphoreHandle globalLock =xSemaphoreCreateMutex(); +SX1278FSK sx1278 = SX1278FSK(); diff --git a/RX_FSK/src/SX1278FSK.h b/RX_FSK/src/SX1278FSK.h new file mode 100644 index 0000000..ea95b69 --- /dev/null +++ b/RX_FSK/src/SX1278FSK.h @@ -0,0 +1,280 @@ +/* + * Functions for using SX127x in FSK mode (mainly receive) + * Copyright (C) 2019 Hansi Reiser, dl9rdz + * + * Partially based on the SX1278 libraray for managing Semtech modules + * Copyright (C) 2015 Wireless Open Source + * http://wirelessopensource.com + * + * SPDX-License-Identifier: LGPL-2.1+ + */ + +#ifndef SX1278FSK_h +#define SX1278FSK_h + +/****************************************************************************** + * Includes + ******************************************************************************/ + +#include +#include +#include +#include + +#ifndef inttypes_h + #include +#endif + + +/****************************************************************************** + * Definitions & Declarations + *****************************************************************************/ + +#define SX127X_CRYSTAL_FREQ 32000000 +#define SX127X_FSTEP (SX127X_CRYSTAL_FREQ*1.0/(1<<19)) + +#define SX1278FSK_debug_mode 0 + +//! MACROS // +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) // read a bit +#define bitSet(value, bit) ((value) |= (1UL << (bit))) // set bit to '1' +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) // set bit to '0' + + +//! REGISTERS // +// FSK Commun LORA +#define REG_FIFO 0x00 +#define REG_OP_MODE 0x01 +#define REG_BITRATE_MSB 0x02 +#define REG_BITRATE_LSB 0x03 +#define REG_FDEV_MSB 0x04 +#define REG_FDEV_LSB 0x05 +#define REG_FRF_MSB 0x06 +#define REG_FRF_MID 0x07 +#define REG_FRF_LSB 0x08 +#define REG_PA_CONFIG 0x09 +#define REG_PA_RAMP 0x0A +#define REG_OCP 0x0B +#define REG_LNA 0x0C +#define REG_RX_CONFIG 0x0D +#define REG_FIFO_ADDR_PTR 0x0D +#define REG_RSSI_CONFIG 0x0E +#define REG_FIFO_TX_BASE_ADDR 0x0E +#define REG_RSSI_COLLISION 0x0F +#define REG_FIFO_RX_BASE_ADDR 0x0F +#define REG_RSSI_THRESH 0x10 +#define REG_FIFO_RX_CURRENT_ADDR 0x10 +#define REG_RSSI_VALUE_FSK 0x11 +#define REG_IRQ_FLAGS_MASK 0x11 +#define REG_RX_BW 0x12 +#define REG_IRQ_FLAGS 0x12 +#define REG_AFC_BW 0x13 +#define REG_RX_NB_BYTES 0x13 +#define REG_OOK_PEAK 0x14 +#define REG_RX_HEADER_CNT_VALUE_MSB 0x14 +#define REG_OOK_FIX 0x15 +#define REG_RX_HEADER_CNT_VALUE_LSB 0x15 +#define REG_OOK_AVG 0x16 +#define REG_RX_PACKET_CNT_VALUE_MSB 0x16 +#define REG_RX_PACKET_CNT_VALUE_LSB 0x17 +#define REG_MODEM_STAT 0x18 +#define REG_PKT_SNR_VALUE 0x19 +#define REG_AFC_FEI 0x1A +#define REG_PKT_RSSI_VALUE 0x1A +#define REG_AFC_MSB 0x1B +#define REG_RSSI_VALUE_LORA 0x1B +#define REG_AFC_LSB 0x1C +#define REG_HOP_CHANNEL 0x1C +#define REG_FEI_MSB 0x1D +#define REG_MODEM_CONFIG1 0x1D +#define REG_FEI_LSB 0x1E +#define REG_MODEM_CONFIG2 0x1E +#define REG_PREAMBLE_DETECT 0x1F +#define REG_SYMB_TIMEOUT_LSB 0x1F +#define REG_RX_TIMEOUT1 0x20 +#define REG_PREAMBLE_MSB_LORA 0x20 +#define REG_RX_TIMEOUT2 0x21 +#define REG_PREAMBLE_LSB_LORA 0x21 +#define REG_RX_TIMEOUT3 0x22 +#define REG_PAYLOAD_LENGTH_LORA 0x22 +#define REG_RX_DELAY 0x23 +#define REG_MAX_PAYLOAD_LENGTH 0x23 +#define REG_OSC 0x24 +#define REG_HOP_PERIOD 0x24 +#define REG_PREAMBLE_MSB_FSK 0x25 +#define REG_FIFO_RX_BYTE_ADDR 0x25 +#define REG_PREAMBLE_LSB_FSK 0x26 +#define REG_MODEM_CONFIG3 0x26 +#define REG_SYNC_CONFIG 0x27 +#define REG_SYNC_VALUE1 0x28 +#define REG_LORA_FEI_MSB 0x28 +#define REG_SYNC_VALUE2 0x29 +#define REG_LORA_FEI_MID 0x29 +#define REG_SYNC_VALUE3 0x2A +#define REG_LORA_FEI_LSB 0x2A +#define REG_SYNC_VALUE4 0x2B +#define REG_SYNC_VALUE5 0x2C +#define REG_RSSI_WIDEBAND 0x2C +#define REG_SYNC_VALUE6 0x2D +#define REG_SYNC_VALUE7 0x2E +#define REG_SYNC_VALUE8 0x2F +#define REG_PACKET_CONFIG1 0x30 +#define REG_PACKET_CONFIG2 0x31 +#define REG_DETECT_OPTIMIZE 0x31 +#define REG_PAYLOAD_LENGTH_FSK 0x32 +#define REG_NODE_ADRS 0x33 +#define REG_INVERT_IQ 0x33 +#define REG_BROADCAST_ADRS 0x34 +#define REG_FIFO_THRESH 0x35 +#define REG_SEQ_CONFIG1 0x36 +#define REG_SEQ_CONFIG2 0x37 +#define REG_DETECTION_THRESHOLD 0x37 +#define REG_TIMER_RESOL 0x38 +#define REG_TIMER1_COEF 0x39 +#define REG_SYNC_WORD 0x39 +#define REG_TIMER2_COEF 0x3A +#define REG_IMAGE_CAL 0x3B +#define REG_TEMP 0x3C +#define REG_LOW_BAT 0x3D +#define REG_IRQ_FLAGS1 0x3E +#define REG_IRQ_FLAGS2 0x3F +#define REG_DIO_MAPPING1 0x40 +#define REG_DIO_MAPPING2 0x41 +#define REG_VERSION 0x42 +#define REG_PLL_HOP 0x44 +#define REG_TCXO 0x4B +#define REG_PA_DAC 0x4D +#define REG_FORMER_TEMP 0x5B +#define REG_BIT_RATE_FRAC 0x5D +#define REG_AGC_REF 0x61 +#define REG_AGC_THRESH1 0x62 +#define REG_AGC_THRESH2 0x63 +#define REG_AGC_THRESH3 0x64 +#define REG_PLL 0x70 + + +//FSK MODES: +const uint8_t FSK_SLEEP_MODE = 0x00; +const uint8_t FSK_STANDBY_MODE = 0x01; +const uint8_t FSK_TX_MODE = 0x03; +const uint8_t FSK_RX_MODE = 0x05; + + +/****************************************************************************** + * SX1278FSK Class + * Functions and variables for managing SX127x transceiver chips in FSK mode, + * mainly for receiving radiosonde transmissions + ******************************************************************************/ +class SX1278FSK +{ +public: + // class constructor + SX1278FSK(); + + void setup(xSemaphoreHandle lock); + + // Turn on SX1278 module (return 0 on sucess, 1 otherwise) + uint8_t ON(); + + // Turn off SX1278 module + void OFF(); + + // Read internal register + byte readRegister(byte address); + + // Write internal register + void writeRegister(byte address, byte data); + + // Clear IRQ flags + void clearIRQFlags(); + + // Activate FSK mode (return 0 on success, 1 otherwise) + uint8_t setFSK(); + + // Configures bitrate register (closest approximation to requested bitrate) + uint8_t setBitrate(float bps); + float getBitrate(); + + // Configures RX bandwidth (next largest supported bandwith if exact value not possible) + uint8_t setRxBandwidth(float bps); + float getRxBandwidth(); + + // Configures AFC bandwidth (next largest supported bandwith if exact value not possible) + uint8_t setAFCBandwidth(float bps); + float getAFCBandwidth(); + + // Configures RX frequency (closest approximation to requested frequency) + uint8_t setFrequency(float freq); + float getFrequency(); + + int getLNAGain(); + uint8_t setLNAGain(int gain); + + uint8_t getRxConf(); + uint8_t setRxConf(uint8_t conf); + + uint8_t setSyncConf(uint8_t conf, int len, const uint8_t *syncpattern); + uint8_t getSyncConf(); + + uint8_t setPreambleDetect(uint8_t conf); + uint8_t getPreambleDetect(); + + uint8_t setPacketConfig(uint8_t conf1, uint8_t conf2); + uint16_t getPacketConfig(); + + // Get configured preamble length (used for TX only?) + uint16_t getPreambleLength(); + + // Sets the preamble length. + uint8_t setPreambleLength(uint16_t l); + + // Gets the payload length (expected length for receive) + int getPayloadLength(); + uint8_t setPayloadLength(int len); + + // Get current RSSI value + int16_t getRSSI(); + + // Get current FEI (frequency error indication) value + int32_t getFEI(); + + // Get current AFC value + int32_t getAFC(); + uint16_t getRawAFC(); + void setRawAFC(uint16_t afc); + + // Get the maximum current supply by the module. + int getMaxCurrent(); + + // Set the maximum current supply by the module. + int8_t setMaxCurrent(uint8_t rate); + + // Put the module in reception mode. + //return '0' on success, '1' otherwise + uint8_t receive(); + + // Receive a packet + uint8_t receivePacketTimeout(uint32_t wait, byte *data); + + xSemaphoreHandle _lock = NULL; + +#if 0 + //! It gets the internal temperature of the module. + /*! + It stores in global '_temp' variable the module temperature. + \return '0' on success, '1' otherwise + */ + uint8_t getTemp(); + + //! It prints the registers related to RX via USB + /*! + * \return void + */ + void showRxRegisters(); +#endif + +}; + +extern SX1278FSK sx1278; + +#endif diff --git a/RX_FSK/src/Scanner.cpp b/RX_FSK/src/Scanner.cpp new file mode 100644 index 0000000..64039f9 --- /dev/null +++ b/RX_FSK/src/Scanner.cpp @@ -0,0 +1,207 @@ +#include "Scanner.h" + +#include + +#include "SX1278FSK.h" +#include "Sonde.h" +#include "Display.h" + + +double STARTF; + + +struct scancfg { + int PLOT_W; // Width of plot, in pixel + int PLOT_H8; // Height of plot, in 8 pixel units + int TICK1; // Pixel per MHz marker + int TICK2; // Pixel per sub-Mhz marker (250k or 200k) + double CHANSTEP; // Scanner frequenz steps + int SMPL_PIX; // Frequency steps per pixel + int NCHAN; // number of channels to scan, PLOT_W * SMPL_PIX + int SMOOTH; + int ADDWAIT; + int VSCALE; +}; + +//struct scancfg scanLCD={ 121, 7, 120/6, 120/6/4, 6000.0/120.0/20.0, 20, 120*20, 1 }; +struct scancfg scanLCD={ 121, 7, 120/6, 120/6/4, 6000.0/120.0/10.0, 10, 120*10, 2, 40, 1 }; +struct scancfg scanTFT={ 210, 16, 210/6, 210/6/5, 6000.0/210.0/10.0, 10, 210*10, 1, 0, 1 }; +struct scancfg scan934x={ 300, 22, 300/6, 300/6/5, 6000.0/300.0/7.0, 7, 300*5, 1, 10, 2 }; + +struct scancfg &scanconfig = scanTFT; + +#define CHANBW 12500 +//#define PIXSAMPL (50/CHANBW) +//#define STARTF 401000000 + +// max of 120*5 and 210*3 +//#define MAXN 210*10 +//#define MAXN 120*20 +#define MAXN 300*10 + +// max of 120 and 210 (ceil(210/8)*8)) -- now ceil(300/8)*8 +//#define MAXDISP 216 +#define MAXDISP 304 + +int scanresult[MAXN]; +int scandisp[MAXDISP]; +double peakf=0; + +//#define PLOT_MIN -250 +#define PLOT_MIN (sonde.config.noisefloor*2) +#define PLOT_SCALE(x) (x=8) { row[8*y]=255; continue; } + row[8*y] = tilepatterns[nbits]; + } +} +/* LCD: + * There are 16*8 columns to plot, NPLOT must be lower than that + * currently, we use 128 * 50kHz channels + * There are 8*8 values to plot; MIN is bottom end, + * TFT: + * There are 210 columns to plot + * Currently we use 210 * (6000/120)kHz channels, i.e. 28.5714kHz + */ +///// unused???? uint8_t tiles[16] = { 0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0, 1, 3, 7, 15, 31, 63, 127, 255}; + +// type 0: lcd, 1: tft(ILI9225), 2: lcd(sh1106) 3:TFT(ili9341), 4: TFT(ili9342) +#define ISTFT (sonde.config.disptype!=0 && sonde.config.disptype!=2) +void Scanner::plotResult() +{ + int yofs = 0; + char buf[30]; + if(ISTFT) { + yofs = 2; + if (sonde.config.marker != 0) { + itoa((sonde.config.startfreq), buf, 10); + disp.rdis->drawString(0, 1, buf); + disp.rdis->drawString(scanconfig.PLOT_W/2-10, 1, "MHz"); + itoa((sonde.config.startfreq + 6), buf, 10); + disp.rdis->drawString(scanconfig.PLOT_W-15, 1, buf); + } + } + else { + if (sonde.config.marker != 0) { + itoa((sonde.config.startfreq), buf, 10); + disp.rdis->drawString(0, 1, buf); + disp.rdis->drawString(7, 1, "MHz"); + itoa((sonde.config.startfreq + 6), buf, 10); + disp.rdis->drawString(13, 1, buf); + } + } + uint8_t row[scanconfig.PLOT_H8*8]; + for(int i=0; i=scanconfig.PLOT_W ) { for(int y=0; y=7*8&&i<10*8) || i>=13*8) continue; + } + disp.rdis->drawTile(i/8, y+yofs, 1, row+8*y); + } + } + if(ISTFT) { // large TFT + sprintf(buf, "Peak: %03.3f MHz", peakf*0.000001); + disp.rdis->drawString(0, (yofs+scanconfig.PLOT_H8+1)*8, buf); + } else { + sprintf(buf, "Peak: %03.3fMHz", peakf*0.000001); + disp.rdis->drawString(0, 7, buf); + } +} + +void Scanner::scan() +{ + if(!ISTFT) { // LCD small + scanconfig = scanLCD; + } else if (sonde.config.disptype==1) { + scanconfig = scanTFT; + } else { + scanconfig = scan934x; + } + // Configure + STARTF = (sonde.config.startfreq * 1000000); + sx1278.writeRegister(REG_PLL_HOP, 0x80); // FastHopOn + sx1278.setRxBandwidth((int)(scanconfig.CHANSTEP*1000)); + double bw = sx1278.getRxBandwidth(); + Serial.print("RX Bandwith for scan: "); Serial.println(bw); + sx1278.writeRegister(REG_RSSI_CONFIG, scanconfig.SMOOTH&0x07); + sx1278.setFrequency(STARTF); + Serial.print("Start freq = "); Serial.println(STARTF); + sx1278.writeRegister(REG_OP_MODE, FSK_RX_MODE); + + unsigned long start = millis(); + uint32_t lastfrf= STARTF * (1<<19) / SX127X_CRYSTAL_FREQ; + float freq = STARTF; + int wait = scanconfig.ADDWAIT + 20 + 1000*(1<<(scanconfig.SMOOTH+1))/4/(0.001*CHANBW); + Serial.print("wait time (us) is: "); Serial.println(wait); + for(int iter=0; iter<3; iter++) { // three interations, to catch all RS41 transmissions + delayMicroseconds(20000); yield(); + for(int i=0; i>16)!=(frf>>16) ) { + sx1278.writeRegister(REG_FRF_MSB, (frf&0xff0000)>>16); + } + if( ((lastfrf&0x00ff00)>>8) != ((frf&0x00ff00)>>8) ) { + sx1278.writeRegister(REG_FRF_MID, (frf&0x00ff00)>>8); + } + sx1278.writeRegister(REG_FRF_LSB, (frf&0x0000ff)); + lastfrf = frf; + // Wait TS_HOP (20us) + TS_RSSI ( 2^(scacconfig.SMOOTH+1) / 4 / CHANBW us) + delayMicroseconds(wait); + int rssi = -(int)sx1278.readRegister(REG_RSSI_VALUE_FSK); + if(iter==0) { scanresult[i] = rssi; } else { + if(rssi>scanresult[i]) scanresult[i]=rssi; + } + } + } + yield(); + unsigned long duration = millis()-start; + Serial.print("wait: "); + Serial.println(wait); + Serial.print("Scan time: "); + Serial.println(duration); + Serial.print("Final freq: "); + Serial.println(freq); + int peakidx=-1; + int peakres=-9999; + for(int i=0; ipeakres+1) { peakres=r; peakidx=i*scanconfig.SMPL_PIX; } + scandisp[i] = r; + for(int j=1; jpeakres+1) { peakres=r; peakidx=i*scanconfig.SMPL_PIX+j; } + } + //for(int j=1; jscandisp[i/PIXSAMPL]) scandisp[i/PIXSAMPL] = scanresult[i+j]; } + Serial.print(scanresult[i]); Serial.print(", "); + } + peakidx--; + double newpeakf = STARTF + scanconfig.CHANSTEP*1000.0*peakidx; + if(newpeakfpeakf+20000) peakf=newpeakf; // different frequency + else if (newpeakf < peakf) peakf = 0.75*newpeakf + 0.25*peakf; // averaging on frequency, some bias towards lower... + else peakf = 0.25*newpeakf + 0.75*peakf; + Serial.println("\n"); + for(int i=0; i +#include +#include +#ifndef inttypes_h + #include +#endif +class Scanner +{ +private: + void fillTiles(uint8_t *row, int value); + +public: + void plotResult(); + void scan(void); +}; + +extern Scanner scanner; +#endif diff --git a/RX_FSK/src/ShFreqImport.cpp b/RX_FSK/src/ShFreqImport.cpp new file mode 100644 index 0000000..407b7aa --- /dev/null +++ b/RX_FSK/src/ShFreqImport.cpp @@ -0,0 +1,247 @@ +#include +#include +#include +#include +#include +#include + +#include "ShFreqImport.h" +#include "Sonde.h" + +static int ppos; +static int quotes; +static char id[20]; +static int idpos; +static float lat, lon, freq; +static char type[20]; + +static uint8_t inuse[1+99/8]; // MAXSONDE is 99 + +static char keyword[40]; +static int keywordpos; +static char value[40]; +static int valuepos; + +static int importState; +static float homelat, homelon; + + +// Map SondeHub type string to Stype. -1 for not supported types. +int ShFreqImport::stringToStype(const char *type) { + if(type[2]=='4') return STYPE_RS41; + if(type[2]=='9') return STYPE_RS92; + if(type[1]=='1') return STYPE_M10M20; + if(type[1]=='2') return STYPE_M10M20; + if(type[0]=='D') return STYPE_DFM; + if(type[2]=='3') return STYPE_MP3H; // TODO: check if '3' is correct + return -1; // iMet is not supported +} + +// in Display.cpp +extern float calcLatLonDist(float lat1, float lon1, float lat2, float lon2); + +void ShFreqImport::setLabel(int idx, char *id, float lat, float lon) { + snprintf(sonde.sondeList[idx].launchsite, 18, "@%s/%d", id, (int)(calcLatLonDist(homelat, homelon, lat, lon)/1000)); + sonde.sondeList[idx].launchsite[17] = 0; +} + +void ShFreqImport::usekeyvalue() { + if(strcmp(keyword,"lat")==0) lat = atof(value); + if(strcmp(keyword,"lon")==0) lon = atof(value); + if(strcmp(keyword,"frequency")==0) { if(isnan(freq)) freq = atof(value); } // prefer tx_frequency if available + if(strcmp(keyword,"tx_frequency")==0) freq = atof(value); + if(strcmp(keyword,"type")==0) strcpy(type, value); +} + +/* populate qrg.txt with frequency of near sonde */ +void ShFreqImport::populate(char *id, float lat, float lon, float freq, const char *type) +{ + //printf(" ID %s: %.5f, %.5f f=%.3f, type=%s \n", id, lat, lon, freq, type); + // Skip if freq already exists + int stype = stringToStype(type); + if(stype<0) return; // unsupported type + + // check if frequency exists already + // don't do anything if its a static entry + // update label if its a dynamic SH entry + int i; + for(i=0; i= sonde.config.maxsonde) { + Serial.println("populate: out of free slots"); + return; + } // no more free slots + + sonde.clearAllData(&sonde.sondeList[ppos]); + sonde.sondeList[ppos].active = 1; + sonde.sondeList[ppos].freq = freq; + sonde.sondeList[ppos].type = (SondeType)stype; + setLabel(ppos, id, lat, lon); + inuse[ppos/8] |= (1<<(ppos&7)); + ppos++; +} + +// clears all remaining automatically filled slots (no longer in SH data) +void ShFreqImport::cleanup() { + //Serial.println("Cleanup called ********"); + for(int i=0; i>(i&7))&1) == 0) && *sonde.sondeList[i].launchsite=='@' ) { + // Don't remove the currently active entry + if(i==sonde.currentSonde) continue; + Serial.printf("removing #%d\n", i); + sonde.sondeList[i].launchsite[0] = 0; + sonde.sondeList[i].active = 0; + sonde.sondeList[i].freq = 400; + } + } +} + +#define BUFLEN 128 +#define VALLEN 20 +int ShFreqImport::handleChar(char c) { + Serial.print(c); + switch(importState) { + case START: + // wait for initial '{' + if(c=='{') { + Serial.println("{ found"); + importState++; + } + break; + case BEFOREID: + // what for first '"' in { "A1234567" : { ... } }; or detect end + if(c=='"') { idpos = 0; lat = NAN; lon = NAN; freq = NAN; *type = 0; importState++; } + if(c=='}') { + importState = ENDREACHED; + cleanup(); + return 1; + } + break; + case COPYID: + // copy ID "A1234567" until second '"' is earched + if(c=='"') { id[idpos] = 0; importState++; } + else id[idpos++] = c; + break; + case AFTERID: + // wait for '{' in '"A1234567": { ...' + if(c=='{') importState++; + break; + case BEFOREKEY: + if(c=='"') { keywordpos = 0; importState++; } + break; + case COPYKEY: + if(c=='"') { importState++; keyword[keywordpos] = 0; /* printf("Key: >%s<\n", keyword);*/ } + else keyword[keywordpos++] = c; + break; + case AFTERKEY: + if(c==':') { + valuepos = 0; + quotes = 0; + if(strcmp(keyword,"lat")==0 || strcmp(keyword, "lon")==0 || strcmp(keyword, "frequency")==0 || strcmp(keyword, "tx_frequency")==0) + importState = BEFORENUMVAL; + else { + if (strcmp(keyword, "type")==0) + importState = BEFORESTRINGVAL; + else + importState = SKIPVAL; + } + } + break; + case BEFORENUMVAL: + if( (c>='0'&&c<='9') || c=='-') { value[0] = c; valuepos=1; importState++; } + break; + case COPYNUMVAL: + if( !(c>='0'&&c<='9') && c!='-' && c!='.' ) { + value[valuepos]=0; importState=SKIPVAL; usekeyvalue(); + if(c!=',' && c!='}') break; + } + else { value[valuepos++] = c; break; } + // intenionall fall-through + case SKIPVAL: + // This is rather fragile, we *should* handle more escaping and so on but do not do so so far, only simple quotes + if(c=='"') quotes = !quotes; + if(quotes) break; + if(c==',') importState = BEFOREKEY; + if(c=='}') { + // we have an ID and all key/value pairs, check if its good.... + if( !isnan(lat) && !isnan(lon) && !isnan(freq) && type[0] ) { + printf("SondeHub import: populate %s %f %f %f %s\n", id, lat, lon, freq, type); + populate(id, lat, lon, freq, type); + } else { + printf("Skipping incomplete %s\n", id); + } + importState = ENDORNEXT; + } + break; + case BEFORESTRINGVAL: + if(c=='"') importState++; + break; + case COPYSTRINGVAL: + if(c=='"') { importState=SKIPVAL; value[valuepos]=0; usekeyvalue(); } + else value[valuepos++] = c; + break; + case ENDORNEXT: + // next we have to see either a final "}', or a comma before the next id + if(c==',') importState = BEFOREID; + else if (c=='}') { importState = ENDREACHED; cleanup(); return 1; } + break; + case ENDREACHED: + Serial.println("REPLY: END REACHED"); + return 1; + } + return 0; +} + +// lat lon in deg, dist in km, time in minutes +int ShFreqImport::shImportSendRequest(WiFiClient *client, float lat, float lon, int dist, int time) { + if(!client->connected()) { + if(!client->connect(sonde.config.sondehub.host, 80)) { + Serial.println("Connection FAILED"); + return 1; + } + } + Serial.println("Sending SondeHub import request"); + char req[300]; + snprintf(req, 200, "GET /sondes?lat=%f&lon=%f&distance=%d&last=%d HTTP/1.1\r\n" + "Host: %s\r\n" + "Accept: application/json\r\n" + "Cache-Control: no-cache\r\n\r\n", + lat, lon, dist*1000, time*60, sonde.config.sondehub.host); + client->print(req); + Serial.print(req); + importState = START; + homelat = lat; + homelon = lon; + memset(inuse, 0, sizeof(inuse)); + ppos = 0; + return 0; +} + +// return 0 if more data should be read (later), 1 if finished (close connection...) +int ShFreqImport::shImportHandleReply(WiFiClient *client) { + if(!client->connected()) return 1; + while(client->available()) { + int res = handleChar(client->read()); + if(res) return res; + } + return 0; +} diff --git a/RX_FSK/src/ShFreqImport.h b/RX_FSK/src/ShFreqImport.h new file mode 100644 index 0000000..7e6927a --- /dev/null +++ b/RX_FSK/src/ShFreqImport.h @@ -0,0 +1,30 @@ +#ifndef SH_FREQ_IMPORT_ +#define SH_FREQ_IMPORT_H +// Automated frequency import from SondeHub + +#include + +enum ImportState { START, BEFOREID, COPYID, AFTERID, BEFOREKEY, COPYKEY, AFTERKEY, SKIPVAL, BEFORENUMVAL, COPYNUMVAL, BEFORESTRINGVAL, COPYSTRINGVAL, AFTERPAYLOAD, ENDORNEXT, ENDREACHED }; + +class ShFreqImport { +public: + // Fetch data from sondehub and populate qrg.txt with result + // return: 0: ok; 1: failure + static int shImportSendRequest(WiFiClient *client, float lat, float lon, int dist, int time); + + // return 0: ok, need more data; 1: finished/failure, close connection + // Asynchronous I/O. Handle data if available + static int shImportHandleReply(WiFiClient *client); + +private: + static int stringToStype(const char *type); + static void setLabel(int idx, char *id, float lat, float lon); + static void usekeyvalue(); + static int handleChar(char c); + + // add one entry on available slot at or after ppos + static void populate(char *id, float lat, float lon, float freq, const char *type); + static void cleanup(); +}; + +#endif diff --git a/RX_FSK/src/Sonde.cpp b/RX_FSK/src/Sonde.cpp new file mode 100644 index 0000000..7b7a3be --- /dev/null +++ b/RX_FSK/src/Sonde.cpp @@ -0,0 +1,736 @@ +#include +#include + +#include "Sonde.h" +#include "RS41.h" +#include "RS92.h" +#include "DFM.h" +#include "M10M20.h" +#include "MP3H.h" +#include "SX1278FSK.h" +#include "Display.h" +#include + +uint8_t debug = 255-8-16; + +RXTask rxtask = { -1, -1, -1, 0xFFFF, 0 }; + +const char *evstring[]={"NONE", "KEY1S", "KEY1D", "KEY1M", "KEY1L", "KEY2S", "KEY2D", "KEY2M", "KEY2L", + "VIEWTO", "RXTO", "NORXTO", "(max)"}; + +const char *RXstr[]={"RX_OK", "RX_TIMEOUT", "RX_ERROR", "RX_UNKNOWN"}; + +// Dependency to enum SondeType +const char *sondeTypeStr[NSondeTypes] = { "DFM ", "RS41", "RS92", "Mxx ", "M10 ", "M20 ", "MP3H" }; +const char *sondeTypeLongStr[NSondeTypes] = { "DFM (all)", "RS41", "RS92", "M10/M20", "M10 ", "M20 ", "MP3-H1" }; +const char sondeTypeChar[NSondeTypes] = { 'D', '4', 'R', 'M', 'M', '2', '3' }; +const char *manufacturer_string[]={"Graw", "Vaisala", "Vaisala", "Meteomodem", "Meteomodem", "Meteomodem", "Meteo-Radiy"}; + +int fingerprintValue[]={ 17, 31, 64, 4, 55, 48, 23, 128+23, 119, 128+119, -1 }; +const char *fingerprintText[]={ + "TTGO T-Beam (new version 1.0), I2C not working after powerup, assuming 0.9\" OLED@21,22", + "TTGO LORA32 v2.1_1.6 (0.9\" OLED@21,22)", + "TTGO LORA v1.0 (0.9\" OLED@4,15)", + "Heltec v1/v2 (0.9\"OLED@4,15)", + "TTGO T-Beam (V0.7), 0.9\" OLED@21,22", + "TTGO T-Beam (V0.7), SPI TFT@4,21,22", + "TTGO T-Beam (V1.0), 0.9\" OLED@21,22", + "TTGO T-Beam (V1.0), SPI TFT@4,13,14", + "TTGO T-Beam (V1.1), 0.9\" OLED@21,22", + "TTGO T-Beam (V1.1), SPI TFT@4,13,14", +}; + +/* global variables from RX_FSK.ino */ +int getKeyPressEvent(); +int handlePMUirq(); +extern uint8_t pmu_irq; +extern SX1278FSK sx1278; + +/* Task model: + * There is a background task for all SX1278 interaction. + * - On startup and on each mode/frequency change (requested by setting requestNextSonde + * to an sonde index >=0) it calls Sonde::setup(), which will call the new decoder's + * setup function. Setup will update the value currentSonde. + * - Periodically it calls Sonde::receive(), which calls the current decoder's receive() + * function. It should return control to the SX1278 main loop at least once per second. + * It will also set the internal variable receiveResult. The decoder's receive function + * must make sure that there are no FIFO overflows in the SX1278. + * - the Arduino main loop will call the waitRXcomplete function, which should return as + * soon as there is some new data to display, or no later than after 1s, returning the + * value of receiveResult (or timeout, if receiveResult was not set within 1s). It + * should also return immediately if there is some keyboard input. + */ +int initlevels[40]; + +Sonde::Sonde() { + for (int i = 0; i < 39; i++) { + initlevels[i] = gpio_get_level((gpio_num_t)i); + } +} + +void Sonde::defaultConfig() { + fingerprint = initlevels[4]; + fingerprint = (fingerprint<<1) | initlevels[12]; + fingerprint = (fingerprint<<1) | initlevels[16]; + fingerprint = (fingerprint<<1) | initlevels[17]; + fingerprint = (fingerprint<<1) | initlevels[21]; + fingerprint = (fingerprint<<1) | initlevels[22]; + fingerprint = (fingerprint<<1) | initlevels[23]; + Serial.printf("Board fingerprint is %d\n", fingerprint); + + sondeList = (SondeInfo *)malloc((MAXSONDE+1)*sizeof(SondeInfo)); + // addSonde should initialize everything anyway, so this should not strictly be necessary, but does no harm either + memset(sondeList, 0, (MAXSONDE+1)*sizeof(SondeInfo)); + for(int i=0; i<(MAXSONDE+1); i++) { + sondeList[i].freq=400; + sondeList[i].type=STYPE_RS41; + clearAllData(&sondeList[i]); + } + config.touch_thresh = 70; + config.led_pout = -1; + config.power_pout = -1; + config.spectrum=10; + // Try autodetecting board type + config.type = TYPE_TTGO; + // Seems like on startup, GPIO4 is 1 on v1 boards, 0 on v2.1 boards? + config.gps_rxd = -1; + config.gps_txd = -1; + config.batt_adc = -1; + config.sx1278_ss = SS; // default SS pin, on all TTGOs + config.sx1278_miso = MISO; + config.sx1278_mosi = MOSI; + config.sx1278_sck = SCK; + config.oled_rst = 16; + config.disptype = 0; + config.dispcontrast = -1; + config.oled_orient = 1; + config.button2_axp = 0; + config.norx_timeout = 20; + config.screenfile = 1; + + if(initlevels[16]==0) { + config.oled_sda = 4; + config.oled_scl = 15; + config.button_pin = 0; + config.button2_pin = T4 + 128; // T4 == GPIO13 + config.power_pout = 21; // for Heltec v2 + config.led_pout = 2; + Serial.println("Autoconfig: looks like TTGO v1 / Heltec v1/V2 board"); + } else { + config.oled_sda = 21; + config.oled_scl = 22; + if(initlevels[17]==0) { // T-Beam or M5Stack Core2? + int tbeam=7; + if(initlevels[12]==0) { + tbeam = 10; + Serial.println("Autoconfig: looks like T-Beam 1.0 or M5Stack Core2 board"); + } else if ( initlevels[4]==1 && initlevels[12]==1 ) { + tbeam = 11; + Serial.println("Autoconfig: looks like T-Beam 1.1 board"); + } + if(tbeam == 10 || tbeam == 11) { // T-Beam v1.0 or T-Beam v1.1 + Wire.begin(21, 22); +#define BM8563_ADDRESS 0x51 + Wire.beginTransmission(BM8563_ADDRESS); + byte err = Wire.endTransmission(); + if(err) { // try again + delay(400); + Wire.beginTransmission(BM8563_ADDRESS); + err = Wire.endTransmission(); + } + if(err==0) { + Serial.println("M5stack Core2 board detected\n"); + config.type = TYPE_M5_CORE2; + config.button_pin = 255; + config.button2_pin = 255; + config.button2_axp = 1; + config.disptype = 4; // ILI9342 + config.oled_sda = 23; + config.oled_scl = 18; + config.oled_rst = -1; + config.screenfile = 4; + config.gps_rxd = 13; + config.gps_txd = -1; // 14 + config.sx1278_ss = 33; + config.sx1278_miso = 38; + config.sx1278_mosi = 23; //MOSI; + config.sx1278_sck = 18; // SCK; + } else { // some t-beam... + config.button_pin = 38; + config.button2_pin = 15 + 128; //T4 + 128; // T4 = GPIO13 + // Maybe in future use as default only PWR as button2? + //config.button2_pin = 255; + config.button2_axp = 1; + config.gps_rxd = 34; + config.gps_txd = 12; + // Check for I2C-Display@21,22 +#define SSD1306_ADDRESS 0x3c + Wire.beginTransmission(SSD1306_ADDRESS); + err = Wire.endTransmission(); + delay(100); // otherwise its too fast?! + Wire.beginTransmission(SSD1306_ADDRESS); + err = Wire.endTransmission(); + if(err!=0 && fingerprint!=17) { // hmm. 17 after powerup with oled commected and no i2c answer!?!? + fingerprint |= 128; + Serial.println("no I2C display found, assuming large TFT display\n"); + // CS=0, RST=14, RS=2, SDA=4, CLK=13 + Serial.println("... with large TFT display\n"); + config.disptype = 1; + config.oled_sda = 4; + config.oled_scl = 13; + config.oled_rst = 14; + + config.spectrum = -1; // no spectrum for now on large display + config.screenfile = 2; + } else { + // OLED display, pins 21,22 ok... + config.disptype = 0; + Serial.println("... with small OLED display\n"); + } + } + } else { + Serial.println("Autoconfig: looks like T-Beam v0.7 board"); + config.button_pin = 39; + config.button2_pin = T4 + 128; // T4 == GPIO13 + config.gps_rxd = 12; + // Check if we possibly have a large display + if(initlevels[21]==0) { + Serial.println("Autoconfig: looks like T-Beam v0.7 board with large TFT display"); + config.disptype = 1; + config.oled_sda = 4; + config.oled_scl = 21; + config.oled_rst = 22; + + config.spectrum = -1; // no spectrum for now on large display + config.screenfile = 2; + } + } + } else { + // Likely a TTGO V2.1_1.6 + config.button_pin = 2 + 128; // GPIO2 / T2 + config.button2_pin = 14 + 128; // GPIO14 / T6 + config.led_pout = 25; + config.batt_adc = 35; + } + } + // + config.noisefloor = -125; + strcpy(config.call,"NOCALL"); + config.passcode = -1; + strcpy(config.mdnsname, "radiosonde"); + config.maxsonde=15; + config.debug=0; + config.wifi=1; + config.buzzerOn=0; + config.buzzerFreq=700; + config.buzzerPort=12; + config.dbsmetre=0; + config.degdec=0; + config.display[0]=0; + config.display[1]=1; + config.display[2]=-1; + config.startfreq=400; + config.channelbw=10; + config.marker=0; + config.freqofs=0; + config.rs41.agcbw=12500; + config.rs41.rxbw=6300; + config.rs92.rxbw=12500; + config.rs92.alt2d=480; + config.dfm.agcbw=20800; + config.dfm.rxbw=10400; + config.m10m20.agcbw=20800; + config.m10m20.rxbw=12500; + config.mp3h.agcbw=12500; + config.mp3h.rxbw=12500; + config.udpfeed.active = 1; + config.udpfeed.type = 0; + strcpy(config.udpfeed.host, "192.168.42.20"); + strcpy(config.udpfeed.symbol, "/O"); + config.udpfeed.port = 9002; + config.udpfeed.highrate = 1; + config.tcpfeed.active = 0; + config.tcpfeed.type = 1; + strcpy(config.tcpfeed.host, "radiosondy.info"); + strcpy(config.tcpfeed.symbol, "/O"); + config.tcpfeed.port = 12345; + config.tcpfeed.highrate = 10; + config.kisstnc.active = 0; + strcpy(config.ephftp,"igs.bkg.bund.de/IGS/BRDC/"); + + config.mqtt.active = 0; + strcpy(config.mqtt.id, "rdz_sonde_server"); + config.mqtt.port = 1883; + strcpy(config.mqtt.username, "/0"); + strcpy(config.mqtt.password, "/0"); + strcpy(config.mqtt.prefix, "rdz_sonde_server/"); +} + +extern struct st_configitems config_list[]; +extern const int N_CONFIG; + +void Sonde::checkConfig() { + if(config.maxsonde > MAXSONDE) config.maxsonde = MAXSONDE; + if(config.sondehub.fiinterval<5) config.sondehub.fiinterval = 5; + if(config.sondehub.fimaxdist>700) config.sondehub.fimaxdist = 700; + if(config.sondehub.fimaxage>48) config.sondehub.fimaxage = 48; + if(config.sondehub.fimaxdist==0) config.sondehub.fimaxdist = 150; + if(config.sondehub.fimaxage==0) config.sondehub.fimaxage = 2; +} +void Sonde::setConfig(const char *cfg) { + while(*cfg==' '||*cfg=='\t') cfg++; + if(*cfg=='#') return; + char *s = strchr(cfg,'='); + if(!s) return; + char *val = s+1; + *s=0; s--; + while(s>cfg && (*s==' '||*s=='\t')) { *s=0; s--; } + Serial.printf("configuration option '%s'=%s \n", cfg, val); + + // new code: use config_list to find config entry... + int i; + for(i=0; i0) { // string with that length + strlcpy((char *)config_list[i].data, val, config_list[i].type+1); + break; + } + switch(config_list[i].type) { + case 0: // integer + case -4: // integer (with "touch button" checkbox in web form) + case -3: // integer (boolean on/off swith in web form) + case -2: // integer (ID type) + *(int *)config_list[i].data = atoi(val); + break; + case -7: // double + { + double d = atof(val); + if(*val == 0 || d==0) d = NAN; + *(double *)config_list[i].data = d; + break; + } + case -6: // display list + { + int idx = 0; + char *ptr; + while(val) { + ptr = strchr(val,','); + if(ptr) *ptr = 0; + config.display[idx++] = atoi(val); + val = ptr?ptr+1:NULL; + Serial.printf("appending value %d next is %s\n", config.display[idx-1], val?val:""); + } + config.display[idx] = -1; + break; + } + default: + // skipping non-supported types + break; + } + + break; + } + if(i==N_CONFIG) { + Serial.printf("Invalid config option '%s'=%s \n", cfg, val); + } +} + +void Sonde::setIP(String ip, bool AP) { + ipaddr = ip; + isAP = AP; +} + +void Sonde::clearSonde() { + nSonde = 0; +} +void Sonde::addSonde(float frequency, SondeType type, int active, char *launchsite) { + if(nSonde>=config.maxsonde) { + Serial.println("Cannot add another sonde, MAXSONDE reached"); + return; + } + Serial.printf("Adding %f - %d - %d - %s\n", frequency, type, active, launchsite); + // reset all data if type or frequency has changed + if(type != sondeList[nSonde].type || frequency != sondeList[nSonde].freq) { + //TODO: Check for potential race condition with decoders + // do not clear extra while decoder is potentiall still accessing it! + if(sondeList[nSonde].extra) free(sondeList[nSonde].extra); + memset(&sondeList[nSonde], 0, sizeof(SondeInfo)); + sondeList[nSonde].type = type; + sondeList[nSonde].d.typestr[0] = 0; + sondeList[nSonde].freq = frequency; + memcpy(sondeList[nSonde].rxStat, "\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3", 18); // unknown/undefined + clearAllData(sondeList+nSonde); + } + sondeList[nSonde].active = active; + strncpy(sondeList[nSonde].launchsite, launchsite, 17); + nSonde++; +} + +// called by updateState (only) +void Sonde::nextConfig() { + currentSonde++; + if(currentSonde>=config.maxsonde) { + currentSonde=0; + } + // Skip non-active entries (but don't loop forever if there are no active ones) + for(int i=0; i=config.maxsonde) currentSonde=0; + } + } +} +void Sonde::nextRxSonde() { + rxtask.currentSonde++; + if(rxtask.currentSonde>=config.maxsonde) { + rxtask.currentSonde=0; + } + for(int i=0; i=config.maxsonde) rxtask.currentSonde=0; + } + } + //Serial.printf("nextRxSonde: %d\n", rxtask.currentSonde); +} +void Sonde::nextRxFreq(int addkhz) { + // last entry is for the variable frequency + rxtask.currentSonde = nSonde - 1; + sondeList[rxtask.currentSonde].active = 1; + sondeList[rxtask.currentSonde].freq += addkhz*0.001; + if(sondeList[rxtask.currentSonde].freq>406) + sondeList[rxtask.currentSonde].freq = 400; + Serial.printf("nextRxFreq: %d\n", rxtask.currentSonde); +} +SondeInfo *Sonde::si() { + return &sondeList[currentSonde]; +} + +void Sonde::setup() { + if(rxtask.currentSonde<0 || rxtask.currentSonde>=config.maxsonde) { + Serial.print("Invalid rxtask.currentSonde: "); + Serial.println(rxtask.currentSonde); + rxtask.currentSonde = 0; + for(int i=0; i=config.maxsonde) rxtask.currentSonde=0; + } + } + sonde.currentSonde = rxtask.currentSonde; + } + + // update receiver config + Serial.print("Sonde::setup() start on index "); + Serial.println(rxtask.currentSonde); + switch(sondeList[rxtask.currentSonde].type) { + case STYPE_RS41: + rs41.setup(sondeList[rxtask.currentSonde].freq * 1000000); + break; + case STYPE_DFM: + dfm.setup( sondeList[rxtask.currentSonde].freq * 1000000, sondeList[rxtask.currentSonde].type ); + break; + case STYPE_RS92: + rs92.setup( sondeList[rxtask.currentSonde].freq * 1000000); + break; + case STYPE_M10: + case STYPE_M20: + case STYPE_M10M20: + m10m20.setup( sondeList[rxtask.currentSonde].freq * 1000000); + break; + case STYPE_MP3H: + mp3h.setup( sondeList[rxtask.currentSonde].freq * 1000000); + break; + } + // debug + int freq = (int)sx1278.getFrequency(); + int afcbw = (int)sx1278.getAFCBandwidth(); + int rxbw = (int)sx1278.getRxBandwidth(); + Serial.printf("Sonde::setup() done: Type %s Freq %f, AFC BW: %d, RX BW: %d\n", sondeTypeStr[sondeList[rxtask.currentSonde].type], 0.000001*freq, afcbw, rxbw); + + // reset rxtimer / norxtimer state + sonde.sondeList[sonde.currentSonde].lastState = -1; +} + +extern void flashLed(int ms); +extern void buzzerLed(int temps); + +void Sonde::receive() { + uint16_t res = 0; + SondeInfo *si = &sondeList[rxtask.currentSonde]; + switch(si->type) { + case STYPE_RS41: + res = rs41.receive(); + break; + case STYPE_RS92: + res = rs92.receive(); + break; + case STYPE_M10: + case STYPE_M20: + case STYPE_M10M20: + res = m10m20.receive(); + break; + case STYPE_DFM: + res = dfm.receive(); + break; + case STYPE_MP3H: + res = mp3h.receive(); + break; + } + + // state information for RX_TIMER / NORX_TIMER events + if(res==RX_OK || res==RX_ERROR) { // something was received... + + flashLed(700); + if(sonde.config.buzzerOn==1) { + buzzerLed(500); + } + if(si->lastState != 1) { + si->rxStart = millis(); + si->lastState = 1; + sonde.dispsavectlON(); + } + } else { // RX Timeout + flashLed( (res==RX_OK)?700:100); + ledcWriteTone(0, 0); + //Serial.printf("Sonde::receive(): result %d (%s), laststate was %d\n", res, (res<=3)?RXstr[res]:"?", si->lastState); + if(si->lastState != 0) { + si->norxStart = millis(); + si->lastState = 0; + } + } + // Serial.printf("debug: res was %d, now lastState is %d\n", res, si->lastState); + + + // we should handle timer events here, because after returning from receive, + // we'll directly enter setup + rxtask.receiveSonde = rxtask.currentSonde; // pass info about decoded sonde to main loop + + int event = getKeyPressEvent(); + if (!event) event = timeoutEvent(si); + else sonde.dispsavectlON(); + int action = (event==EVT_NONE) ? ACT_NONE : disp.layout->actions[event]; + //if(action!=ACT_NONE) { Serial.printf("event %x: action is %x\n", event, action); } + // If action is to move to a different sonde index, we do update things here, set activate + // to force the sx1278 task to call sonde.setup(), and pass information about sonde to + // main loop (display update...) + if(action == ACT_DISPLAY_SCANNER || action == ACT_NEXTSONDE || action==ACT_PREVSONDE || (action>64&&action<128) ) { + // handled here... + if(action==ACT_DISPLAY_SCANNER) { + // nothing to do here, be re-call setup() for M10/M20 for repeating AFC + } + else { + if(action==ACT_NEXTSONDE||action==ACT_PREVSONDE) + nextRxSonde(); + else + nextRxFreq( action-64 ); + action = ACT_SONDE(rxtask.currentSonde); + } + if(rxtask.activate==-1) { + // race condition here. maybe better use mutex. TODO + rxtask.activate = ACT_SONDE(rxtask.currentSonde); + } + } + Serial.printf("Sonde:receive(): result %d (%s), event %02x => action %02x\n", res, (res<=3)?RXstr[res]:"?", event, action); + res = (action<<8) | (res&0xff); + // let waitRXcomplete resume... + rxtask.receiveResult = res; +} + +// return (action<<8) | (rxresult) +uint16_t Sonde::waitRXcomplete() { + uint16_t res=0; + uint32_t t0 = millis(); +rxloop: + while( (pmu_irq!=1) && rxtask.receiveResult==0xFFFF && millis()-t0 < 3000) { delay(50); } + if( pmu_irq ) { + handlePMUirq(); + if(pmu_irq!=2) goto rxloop; + } + if( rxtask.receiveResult == RX_UPDATERSSI ) { + rxtask.receiveResult = 0xFFFF; + Serial.printf("RSSI update: %d/2\n", sonde.si()->rssi); + disp.updateDisplayRSSI(); + goto rxloop; + } + + if( rxtask.receiveResult==0xFFFF) { + Serial.println("TIMEOUT in waitRXcomplete. Should never happen!\n"); + res = RX_TIMEOUT; + } else { + res = rxtask.receiveResult; + } + rxtask.receiveResult = 0xFFFF; + /// TODO: THis has caused an exception when swithcing back to spectrumm... + Serial.printf("waitRXcomplete returning %04x (%s)\n", res, (res&0xff)<4?RXstr[res&0xff]:""); + // currently used only by RS92 + switch(sondeList[rxtask.receiveSonde].type) { + case STYPE_RS41: + rs41.waitRXcomplete(); + break; + case STYPE_RS92: + rs92.waitRXcomplete(); + break; + case STYPE_M10: + case STYPE_M20: + case STYPE_M10M20: + m10m20.waitRXcomplete(); + break; + case STYPE_DFM: + dfm.waitRXcomplete(); + break; + case STYPE_MP3H: + mp3h.waitRXcomplete(); + break; + } + memmove(sonde.si()->rxStat+1, sonde.si()->rxStat, 17); + sonde.si()->rxStat[0] = res; + return res; +} + +uint8_t Sonde::timeoutEvent(SondeInfo *si) { + uint32_t now = millis(); +#if 0 + Serial.printf("Timeout check: %d - %d vs %d; %d - %d vs %d; %d - %d vs %d; lastState: %d\n", + now, si->viewStart, disp.layout->timeouts[0], + now, si->rxStart, disp.layout->timeouts[1], + now, si->norxStart, disp.layout->timeouts[2], si->lastState); +#endif + if(disp.layout->timeouts[0]>=0 && now - si->viewStart >= disp.layout->timeouts[0]) { + Serial.println("Sonde::timeoutEvent: View"); + return EVT_VIEWTO; + } + if(si->lastState==1 && disp.layout->timeouts[1]>=0 && now - si->rxStart >= disp.layout->timeouts[1]) { + Serial.println("Sonde::timeoutEvent: RX"); + return EVT_RXTO; + } + if(si->lastState==0 && disp.layout->timeouts[2]>=0 && now - si->norxStart >= disp.layout->timeouts[2]) { + Serial.println("Sonde::timeoutEvent: NORX"); + return EVT_NORXTO; + } + return 0; +} + +uint8_t Sonde::updateState(uint8_t event) { + //Serial.printf("Sonde::updateState for event %02x\n", event); + // No change + if(event==ACT_NONE) return 0xFF; + + // In all cases (new display mode, new sonde) we reset the mode change timers + sonde.sondeList[sonde.currentSonde].viewStart = millis(); + sonde.sondeList[sonde.currentSonde].lastState = -1; + + // Moving to a different display mode + if (event==ACT_DISPLAY_SPECTRUM || event==ACT_DISPLAY_WIFI) { + // main loop will call setMode() and disable sx1278 background task + return event; + } + int n = event; + if(event==ACT_DISPLAY_DEFAULT) { + n = config.display[1]; + } else if(event==ACT_DISPLAY_SCANNER) { + n= config.display[0]; + } else if(event==ACT_DISPLAY_NEXT) { + int i; + for(i=0; config.display[i]!=-1; i++) { + if(config.display[i] == disp.layoutIdx) break; + } + if(config.display[i]==-1 || config.display[i+1]==-1) { + //unknown index, or end of list => loop to start + n = config.display[1]; + } else { + n = config.display[i+1]; + } + } + if(n>=0 && n=disp.nLayouts) { + Serial.println("WARNNG: next layout out of range"); + n = config.display[1]; + } + Serial.printf("Setting display mode %d\n", n); + disp.setLayout(n); + sonde.clearDisplay(); + return 0xFF; + } + + // Moving to a different value for currentSonde + // TODO: THis should be done in sx1278 task, not in main loop!!!!! + if(event==ACT_NEXTSONDE) { + sonde.nextConfig(); + Serial.printf("advancing to next sonde %d\n", sonde.currentSonde); + return event; + } + if (event==ACT_PREVSONDE) { + // TODO + Serial.printf("previous not supported, advancing to next sonde\n"); + sonde.nextConfig(); + return ACT_NEXTSONDE; + } + if(event&0x80) { + sonde.currentSonde = (event&0x7F); + return ACT_NEXTSONDE; + } + return 0xFF; +} + +void Sonde::clearAllData(SondeInfo *si) { + // set everything to 0 + memset(&(si->d), 0, sizeof(SondeData)); + // set floats to NaN + si->d.lat = si->d.lon = si->d.alt = si->d.vs = si->d.hs = si->d.dir = NAN; + si->d.temperature = si->d.tempRHSensor = si->d.relativeHumidity = si->d.pressure = si->d.batteryVoltage = NAN; +} + +void Sonde::updateDisplayPos() { + disp.updateDisplayPos(); +} + +void Sonde::updateDisplayPos2() { + disp.updateDisplayPos2(); +} + +void Sonde::updateDisplayID() { + disp.updateDisplayID(); +} + +void Sonde::updateDisplayRSSI() { + disp.updateDisplayRSSI(); +} + +void Sonde::updateStat() { + disp.updateStat(); +} + +void Sonde::updateDisplayRXConfig() { + disp.updateDisplayRXConfig(); +} + +void Sonde::updateDisplayIP() { + disp.updateDisplayIP(); +} + +void Sonde::updateDisplay() +{ + disp.updateDisplay(); +} + +void Sonde::clearDisplay() { + disp.rdis->clear(); +} + +void Sonde::dispsavectlON() { + disp.dispsavectlON(); +} + +void Sonde::dispsavectlOFF(int rxactive) { + disp.dispsavectlOFF(rxactive); +} + + +SondeType Sonde::realType(SondeInfo *si) { + if(TYPE_IS_METEO(si->type) && si->d.subtype>0 ) { return si->d.subtype==1 ? STYPE_M10:STYPE_M20; } + else return si->type; +} + +Sonde sonde = Sonde(); diff --git a/RX_FSK/src/Sonde.h b/RX_FSK/src/Sonde.h new file mode 100644 index 0000000..9c628e8 --- /dev/null +++ b/RX_FSK/src/Sonde.h @@ -0,0 +1,377 @@ + +#ifndef Sonde_h +#define Sonde_h + +#include +#include + +enum DbgLevel { DEBUG_OFF=0, DEBUG_INFO=1, DEBUG_SPARSER=16, DEBUG_DISPLAY=8 }; // to be extended for configuring serial debug output +extern uint8_t debug; + +#define DebugPrint(l,x) if(debug&l) { Serial.print(x); } +#define DebugPrintln(l,x) if(debug&l) { Serial.println(x); } +#define DebugPrintf(l,...) if(debug&l) { Serial.printf(__VA_ARGS__); } + +// RX_TIMEOUT: no header detected +// RX_ERROR: header detected, but data not decoded (crc error, etc.) +// RX_PARTIAL: header detected, some data ok, some with errors +// For RS41: Some blocks with CRC error, some blocks ok in a single frame +// For DFM: In +- 1s, some but not all DAT-subframes 1,2,3,4,5,6,7,8 received +// For RS92 ??? unclear +// For M10/M20 its always all or nothing, no PARTIAL data +// For MP3H its alway all or nothing, no PARTIAL data +// RX_OK: header and all data ok +enum RxResult { RX_OK, RX_TIMEOUT, RX_ERROR, RX_UNKNOWN, RX_NOPOS }; +#define RX_UPDATERSSI 0xFFFE + +// Events that change what is displayed (mode, sondenr) +// Keys: +// 1 Button (short) or Touch (short) +// 2 Button (double) or Touch (double) +// 3 Button (mid) or Touch (mid) +// 4 Button (long) or Touch (long) +// 5 Touch1/2 (short) +// 6 Touch1/2 (double) +// 7 Touch1/2 (mid) +// 8 Touch1/2 (long) + +/* Keypress => Sonde++ / Sonde-- / Display:=N*/ +enum Events { EVT_NONE, EVT_KEY1SHORT, EVT_KEY1DOUBLE, EVT_KEY1MID, EVT_KEY1LONG, + EVT_KEY2SHORT, EVT_KEY2DOUBLE, EVT_KEY2MID, EVT_KEY2LONG, + EVT_VIEWTO, EVT_RXTO, EVT_NORXTO, + EVT_MAX }; +extern const char *evstring[]; +extern const char *RXstr[]; +#define EVENTNAME(s) evstring[s] + +//int8_t actions[EVT_MAX]; +#define ACT_NONE 255 +#define ACT_DISPLAY(n) (n) +#define ACT_MAXDISPLAY 50 +#define ACT_DISPLAY_SCANNER 0 +#define ACT_DISPLAY_NEXT 64 +#define ACT_DISPLAY_DEFAULT 63 +#define ACT_DISPLAY_SPECTRUM 62 +#define ACT_DISPLAY_WIFI 61 +#define ACT_NEXTSONDE 65 +#define ACT_PREVSONDE 66 +#define ACT_ADDFREQ(n) ((n)+64) +#define ACT_SONDE(n) ((n)+128) + +// 0000nnnn => goto display nnnn +// 01000000 => goto sonde -1 +// 01000001 => goto sonde +1 + +#define NSondeTypes 7 +enum SondeType { STYPE_DFM, STYPE_RS41, STYPE_RS92, STYPE_M10M20, STYPE_M10, STYPE_M20, STYPE_MP3H }; +extern const char *sondeTypeStr[NSondeTypes]; +extern const char *sondeTypeLongStr[NSondeTypes]; +extern const char sondeTypeChar[NSondeTypes]; +extern const char *manufacturer_string[NSondeTypes]; + +#define ISOLED(cfg) ((cfg).disptype==0 || (cfg).disptype==2) + +#define TYPE_IS_DFM(t) ( (t)==STYPE_DFM ) +#define TYPE_IS_METEO(t) ( (t)==STYPE_M10M20 || (t)==STYPE_M10 || (t)==STYPE_M20 ) + +#define VALIDPOS(x) (((x)&0x03)==0x03) +#define VALIDALT(x) ((x)&0x04) +#define VALIDVS(x) ((x)&0x08) +#define VALIDHS(x) ((x)&0x10) +#define VALIDDIR(x) ((x)&0x20) +#define VALIDSATS(x) ((x)&0x40) + +typedef struct st_sondedata { + // decoded ID + char id[10]; + char ser[12]; + bool validID; + char typestr[5]; // decoded type (use type if *typestr==0) + int8_t subtype; /* 0 for none/unknown, hex type for dfm, 1/2 for M10/M20 */ + // decoded position + float lat; // latitude + float lon; // longitude + float alt; // altitude + float vs; // vertical speed in m/s + float hs; // horizontal speed in m/s + float dir; // 0..360 + uint8_t sats; // number of sats + uint8_t validPos; // bit pattern for validity of above 7 fields; 0x80: position is old + // decoded GPS time + uint32_t time; + uint32_t frame; + uint32_t vframe; // vframe==frame if frame is unique/continous, otherweise vframe is derived from gps time + bool validTime; + // shut down timers, currently only for RS41; -1=disabled + uint16_t launchKT, burstKT, countKT; + uint16_t crefKT; // frame number in which countKT was last sent + // sonde specific extra data, NULL if unused or not yet initialized, currently used for RS41 subframe data (calibration) + float temperature; // platinum resistor temperature + float tempRHSensor; // temperature of relative humidity sensor + float relativeHumidity; // relative humidity + float pressure; + float batteryVoltage = -1; +} SondeData; + +typedef struct st_sondeinfo { + // First part: static configuration, not decoded data. + // receiver configuration + bool active; + SondeType type; + float freq; + char launchsite[18]; + + // Second part: internal decoder state. no need to clear this on new sonde + // RSSI from receiver + int rssi; // signal strength + int32_t afc; // afc correction value + // statistics + uint8_t rxStat[20]; + uint32_t rxStart; // millis() timestamp of continuous rx start + uint32_t norxStart; // millis() timestamp of continuous no rx start + uint32_t viewStart; // millis() timestamp of viewinf this sonde with current display + int8_t lastState; // -1: disabled; 0: norx; 1: rx + // Third part: decoded data. Clear if reception of a new sonde has started + SondeData d; + + // Decoder-specific data, dynamically allocated (for RS41: calibration data) + void *extra; +} SondeInfo; +// rxStat: 3=undef[empty] 1=timeout[.] 2=errro[E] 0=ok[|] 4=no valid position[°] + +// Used for interacting with the RX background task +typedef struct st_RXTask { + // Variables set by Arduino main loop to value >=0 for requesting + // mode change to sonde reception for sonde now handled in JS + int type; // 0: numeric; i>0 string of length i; -1: separator; -2: type selector + void *data; +}; + +// defined in RX_FSK.ino +extern struct st_configitems config_list[]; +extern const int N_CONFIG; + + +#define MAXSONDE 50 + +extern int fingerprintValue[]; +extern const char *fingerprintText[]; + +class Sonde +{ +private: +public: + RDZConfig config; + int fingerprint = 0; + int currentSonde = 0; + int nSonde; + String ipaddr; + bool isAP; + // moved to heap, saving space in .bss + //SondeInfo sondeList[MAXSONDE+1]; + SondeInfo *sondeList; + // helper function for type string + static SondeType realType(SondeInfo *si); + + Sonde(); + void defaultConfig(); + void checkConfig(); + void setConfig(const char *str); + + void clearSonde(); + void addSonde(float frequency, SondeType type, int active, char *launchsite); + void nextConfig(); + void nextRxSonde(); + void nextRxFreq(int addkhz); + + /* new interface */ + void setup(); + void receive(); + uint16_t waitRXcomplete(); + + SondeInfo *si(); + void clearAllData(SondeInfo *si); + + uint8_t timeoutEvent(SondeInfo *si); + uint8_t updateState(uint8_t event); + + void updateDisplayPos(); + void updateDisplayPos2(); + void updateDisplayID(); + void updateDisplayRSSI(); + void updateDisplayRXConfig(); + void updateStat(); + void updateDisplayIP(); + void updateDisplay(); + void clearDisplay(); + void dispsavectlON(); + void dispsavectlOFF(int rxactive); + + void setIP(String ip, bool isAP); +}; + +extern Sonde sonde; + +#endif + diff --git a/RX_FSK/src/aprs.cpp b/RX_FSK/src/aprs.cpp new file mode 100644 index 0000000..ea6cfdb --- /dev/null +++ b/RX_FSK/src/aprs.cpp @@ -0,0 +1,391 @@ +/* Copyright (C) Hansi Reiser, dl9rdz + * + * partially based on dxlAPRS toolchain + * + * Copyright (C) Christian Rabler + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +//#include +//#include +#include +#include +#include +#include "aprs.h" + +extern const char *version_name; +extern const char *version_id; +#if 0 +int openudp(const char *ip, int port, struct sockaddr_in *si) { + int fd; + if((fd=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1) return -1; + memset((char *)&si, 0, sizeof(si)); + si->sin_family = AF_INET; + si->sin_port = htons(port); + if(inet_aton(ip, &(si->sin_addr))==0) { + return -1; + } + return fd; +} + +int sendudp(int fd, struct sockaddr_in *si, char *frame, int framelen) +{ + if(sendto(fd, frame, framelen, 0, (struct sockaddr *)si, sizeof(struct sockaddr_in))==-1) { + return -1; + } + return 0; +} +#endif + + + +void aprsstr_append(char *b, const char *data) +{ + int blen=strlen(b); + int len=strlen(data); + if(blen+len>APRS_MAXLEN) len=APRS_MAXLEN-blen; + strncat(b, data, len); +} + +uint32_t realcard(float x) { + if(x<0) return 0; + else return (uint32_t)x; +} + + +/* CRC for AXUDP frames */ + +#define APRSCRC_POLY 0x8408 +static uint8_t CRCL[256]; +static uint8_t CRCH[256]; + +void aprs_gencrctab(void) +{ + uint32_t c; + uint32_t crc; + uint32_t i; + for (c = 0UL; c<=255UL; c++) { + crc = 255UL-c; + for (i = 0UL; i<=7UL; i++) { + if ((crc&1)) crc = (uint32_t)((uint32_t)(crc>>1)^APRSCRC_POLY); + else crc = crc>>1; + } /* end for */ + CRCL[c] = (uint8_t)crc; + CRCH[c] = (uint8_t)(255UL-(crc>>8)); + } /* end for */ +} /* end Gencrctab() */ + +static void aprsstr_appcrc(char frame[], uint32_t frame_len, int32_t size) +{ + uint8_t h; + uint8_t l; + uint8_t b; + int32_t i; + int32_t tmp; + l = 0U; + h = 0U; + tmp = size-1L; + i = 0L; + if (i<=tmp) for (;; i++) { + b = (uint8_t)((uint8_t)(uint8_t)frame[i]^l); + l = CRCL[b]^h; + h = CRCH[b]; + if (i==tmp) break; + } /* end for */ + frame[size] = (char)l; + frame[size+1L] = (char)h; +} /* end aprsstr_appcrc() */ + + +static int mkaprscall(int32_t * p, char raw[], + uint32_t * i, const char mon[], + char sep1, char sep2, char sep3, + uint32_t sbase) +{ + uint32_t s; + uint32_t l; + l = 0UL; + while ((((mon[*i] && mon[*i]!=sep1) && mon[*i]!=sep2) && mon[*i]!=sep3) + && mon[*i]!='-') { + s = (uint32_t)(uint8_t)mon[*i]*2UL&255UL; + if (s<=64UL) return 0; + raw[*p] = (char)s; + ++*p; + ++*i; + ++l; + if (l>=7UL) return 0; + } + while (l<6UL) { + raw[*p] = '@'; + ++*p; + ++l; + } + s = 0UL; + if (mon[*i]=='-') { + ++*i; + while ((uint8_t)mon[*i]>='0' && (uint8_t)mon[*i]<='9') { + s = (s*10UL+(uint32_t)(uint8_t)mon[*i])-48UL; + ++*i; + } + if (s>15UL) return 0; + } + raw[*p] = (char)((s+sbase)*2UL); + ++*p; + return 1; +} /* end call() */ + + + +// returns raw len, 0 in case of error +extern int aprsstr_mon2raw(const char *mon, char raw[], int raw_len) +{ + uint32_t r; + uint32_t n; + uint32_t i; + uint32_t tmp; + int p = 7L; + i = 0UL; + fprintf(stderr,"mon2raw for %s\n", mon); + if (!mkaprscall(&p, raw, &i, mon, '>', 0, 0, 48UL)) { + return 0; + } + p = 0L; + if (mon[i]!='>') return 0; + /* ">" */ + ++i; + if (!mkaprscall(&p, raw, &i, mon, ':', ',', 0, 112UL)) { + return 0; + } + p = 14L; + n = 0UL; + while (mon[i]==',') { + ++i; + if (!mkaprscall(&p, raw, &i, mon, ':', ',', '*', 48UL)) { + return 0; + } + ++n; + if (n>8UL) { + return 0; + } + if (mon[i]=='*') { + /* "*" has repeatet sign */ + ++i; + r = (uint32_t)p; + if (r>=21UL) for (tmp = (uint32_t)(r-21UL)/7UL;;) { + raw[r-1UL] = (char)((uint32_t)(uint8_t)raw[r-1UL]+128UL); + /* set "has repeated" flags */ + if (!tmp) break; + --tmp; + r -= 7UL; + } /* end for */ + } + } + if (p==0L || mon[i]!=':') { + return 0; + } + raw[p-1L] = (char)((uint32_t)(uint8_t)raw[p-1L]+1UL); + /* end address field mark */ + raw[p] = '\003'; + ++p; + raw[p] = '\360'; + ++p; + ++i; + n = 256UL; + while (mon[i]) { + /* copy info part */ + if (p>=(int32_t)(raw_len-1)-2L || n==0UL) { + return 0; + } + raw[p] = mon[i]; + ++p; + ++i; + --n; + } + aprsstr_appcrc(raw, raw_len, p); + //fprintf(stderr,"results in %s\n",raw); + return p+2; +} /* end mon2raw() */ + +extern int aprsstr_mon2kiss(const char *mon, char raw[], int raw_len) +{ + char tmp[201]; + int len = aprsstr_mon2raw(mon, tmp, 201); + if(len==0) return 0; + int idx=0; + raw[idx++] = '\xC0'; + raw[idx++] = 0; // channel 0 + for(int i=0; i=raw_len) + return 0; + } + return idx; +} + +#define FEET (1.0/0.3048) +#define KNOTS (1.851984) + +static uint32_t truncc(double r) +{ + if (r<=0.0) return 0UL; + else if (r>=2.E+9) return 2000000000UL; + else return (uint32_t)r; + return 0; +} /* end truncc() */ + + + +static uint32_t dao91(double x) +/* radix91(xx/1.1) of dddmm.mmxx */ +{ + double a; + a = fabs(x); + return ((truncc((a-(double)(float)truncc(a))*6.E+5)%100UL) + *20UL+11UL)/22UL; +} /* end dao91() */ + + +char b[251]; +//char raw[201]; +const char *destcall="APRRDZ"; + +char *aprs_send_beacon(const char *usercall, float lat, float lon, const char *sym, const char *comment) { + *b = 0; + aprsstr_append(b, usercall); + aprsstr_append(b, ">"); + aprsstr_append(b, destcall); +#if 0 + aprsstr_append(b, ":/"); // / is report with timestamp + int i = strlen(b); + int sec = 0; // TODO: NOW!!! + snprintf(b+i, APRS_MAXLEN, "%02d%02d%02dh", sec/(60*60), (sec%(60*60))/60, sec%60); +#else + // report without timestamp + aprsstr_append(b, ":!"); // ! is report w/p timestamp +#endif + // lat + int i = strlen(b); + int lati = abs((int)lat); + int latm = (fabs(lat)-lati)*6000; + snprintf(b+i, APRS_MAXLEN-i, "%02d%02d.%02d%c%c", lati, latm/100, latm%100, lat<0?'S':'N', sym[0]); + // lon + i = strlen(b); + int loni = abs((int)lon); + int lonm = (fabs(lon)-loni)*6000; + snprintf(b+i, APRS_MAXLEN-i, "%03d%02d.%02d%c%c", loni, lonm/100, lonm%100, lon<0?'W':'E', sym[1]); + // maybe add alt + // maybe add DAO? + i = strlen(b); + snprintf(b+i, APRS_MAXLEN-i, "%s", comment); + + i = strlen(b); + snprintf(b+i, APRS_MAXLEN-i, " %s-%s", version_name, version_id); + //sprintf(b + strlen(b), "%s", version_name); + return b; +} + +char *aprs_senddata(SondeInfo *si, const char *usercall, const char *objcall, const char *sym) { + SondeData *s = &(si->d); + *b=0; + aprsstr_append(b, *objcall ? objcall : usercall); + aprsstr_append(b, ">"); +// const char *destcall="APRARX,SONDEGATE,TCPIP,qAR,oh3bsg"; + aprsstr_append(b, destcall); +// if(*objcall) { aprsstr_append(b, ","); aprsstr_append(b, usercall); } + // uncompressed + aprsstr_append(b, ":;"); + char tmp[10]; + snprintf(tmp,10,"%s ",s->id); + aprsstr_append(b, tmp); + aprsstr_append(b, "*"); + // time + int i = strlen(b); + int sec = s->time % 86400; + snprintf(b+i, APRS_MAXLEN-1, "%02d%02d%02dh", sec/(60*60), (sec%(60*60))/60, sec%60); + i = strlen(b); + //aprsstr_append_data(time, ds); + int lati = abs((int)s->lat); + int latm = (fabs(s->lat)-lati)*6000; + snprintf(b+i, APRS_MAXLEN-i, "%02d%02d.%02d%c%c", lati, latm/100, latm%100, s->lat<0?'S':'N', sym[0]); + i = strlen(b); + int loni = abs((int)s->lon); + int lonm = (fabs(s->lon)-loni)*6000; + snprintf(b+i, APRS_MAXLEN-i, "%03d%02d.%02d%c%c", loni, lonm/100, lonm%100, s->lon<0?'W':'E', sym[1]); + if(s->hs>0.5) { + i=strlen(b); + snprintf(b+i, APRS_MAXLEN-i, "%03d/%03d", realcard(s->dir+1.5), realcard(s->hs*3.6/KNOTS+0.5)); + } + if(s->alt>0.5) { + i=strlen(b); + snprintf(b+i, APRS_MAXLEN-i, "/A=%06d", realcard(s->alt*FEET+0.5)); + } + // always use DAO + i=strlen(b); + snprintf(b+i, APRS_MAXLEN-i, "!w%c%c!", 33+dao91(s->lat), 33+dao91(s->lon)); + + // ??? strcat(b, "&"); + i=strlen(b); + i += snprintf(b+i, APRS_MAXLEN-i, "Clb=%.1fm/s ", s->vs ); + if( !isnan(s->pressure) ) { + sprintf(b+strlen(b), "p=%.1fhPa ", s->pressure); + } + if( !isnan(s->temperature) ) { + sprintf(b+strlen(b), "t=%.1fC ", s->temperature); + } + if( !isnan(s->relativeHumidity) ) { + sprintf(b+strlen(b), "h=%.1f%% ", s->relativeHumidity); + } + char type[12]; + if ( si->type == STYPE_RS41 && RS41::getSubtype(type, 11, si) == 0 ) { + // type was copied to type + } else { + strncpy(type, sondeTypeStr[sonde.realType(si)], 11); type[11]=0; + } + + sprintf(b+strlen(b), "%.3fMHz Type=%s ", si->freq, type /* sondeTypeStr[sonde.realType(si)] */ ); + if( s->countKT != 0xffff && s->vframe - s->crefKT < 51 ) { + sprintf(b+strlen(b), "TxOff=%dh%dm ", s->countKT/3600, (s->countKT-s->countKT/3600*3600)/60); + } + if( TYPE_IS_DFM(si->type) || TYPE_IS_METEO(si->type) ) { + sprintf(b + strlen(b), "ser=%s ", s->ser); + } + sprintf(b + strlen(b), "%s", version_name); + return b; +} + + +#if 0 +int main(int argc, char *argv[]) +{ + Gencrctab(); + + struct sockaddr_in si; + int fd = openudp("127.0.0.1",9002,&si); + if(fd<0) { fprintf(stderr,"open failed\n"); return 1; } + + float lat=48, lon=10; + while(1) { + const char *str = aprs_senddata(lat, lon, 543, 5, 180, 1.5, "RS41", "TE0ST", "TE1ST", "EO"); + int rawlen = aprsstr_mon2raw(str, raw, APRS_MAXLEN); + sendudp(fd, raw, rawlen); + + str = "OE3XKC>APMI06,qAR,OE3XLR:;ER-341109*111111z4803.61NE01532.39E0145.650MHz R15k OE3XPA"; + rawlen = aprsstr_mon2raw(str, raw, APRS_MAXLEN); + sendudp(fd, &si, raw, rawlen); + lat += 0.002; lon += 0.01; + sleep(5); + } +} +#endif diff --git a/RX_FSK/src/aprs.h b/RX_FSK/src/aprs.h new file mode 100644 index 0000000..d2e50c5 --- /dev/null +++ b/RX_FSK/src/aprs.h @@ -0,0 +1,16 @@ + +#ifndef _aprs_h +#define _aprs_h +#include "Sonde.h" +#include "RS41.h" + + +#define APRS_MAXLEN 201 +void aprs_gencrctab(void); +int aprsstr_mon2raw(const char *mon, char raw[], int raw_len); +int aprsstr_mon2kiss(const char *mon, char raw[], int raw_len); +char *aprs_send_beacon(const char *call, float lat, float lon, const char *sym, const char *comment); +char *aprs_senddata(SondeInfo *s, const char *usercall, const char *objcall, const char *sym); + + +#endif diff --git a/RX_FSK/src/autodetect-infos b/RX_FSK/src/autodetect-infos new file mode 100644 index 0000000..d93da7f --- /dev/null +++ b/RX_FSK/src/autodetect-infos @@ -0,0 +1,87 @@ +Heltec board v1 => fingerprint 0000100 => 4 +(sda,scl: 4,15) (same as LORA v1.0) +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:0 16:0 17:0 18:0 19:0 20:0 21:1 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 + +Heltec board v2 +(sda,scl: 4,15) (similar to v1.0, but GPIO21 switches 3V3) => fingerprint 4 +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:0 16:0 17:0 18:0 19:0 20:0 21:1 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:1 1:1 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:0 16:0 17:0 18:0 19:0 20:0 21:1 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup + +TTGO LORA32 v2.1_1.6 (button1: touch gpio 2 => 130; button2: touch gpio14 => 142) fingerprint 0011111 => 31 +(sda,scl: 21,22) +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:1 17:1 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:0 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:0 13:0 14:4 15:4 16:4 17:4 18:0 19:0 20:0 21:4 22:4 23:4 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (in Sonde()) + +TTGO LORA v1.0 => fingerprint 1000000 => 64 +(sda,scl: 4,15) (button1: 0) (button2: touch gpio13 = 141) +0:1 1:0 2:0 3:1 4:1 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:0 17:0 18:0 19:0 20:0 21:0 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:4 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:0 13:0 14:4 15:4 16:0 17:0 18:0 19:0 20:0 21:0 22:0 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (in Sonde()) + +TTGO T-Beam => fingerprint 0110111 => 55 +(sda,scl: 21,22) (button1: 39) (button2: touch gpio13 = 141) (gps rx: 12) +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:1 13:0 14:1 15:1 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:0 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:4 13:0 14:4 15:4 16:4 17:0 18:0 19:0 20:0 21:4 22:4 23:4 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup) + +TTGO T-Beam with extern 2" ILI9225 Display => fingerprint 0110000 => 48 +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:1 13:0 14:1 15:1 16:1 17:0 18:0 19:0 20:0 21:0 22:0 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:0 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:4 13:0 14:4 15:4 16:4 17:0 18:0 19:0 20:0 21:0 22:0 23:4 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup) + +TTGO T-Beam 1.0 with OLED display => fingerprint 0010111 => 23 +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:4 1:4 2:0 3:4 4:0 5:4 6:0 7:4 8:0 9:4 10:4 11:4 12:0 13:0 14:4 15:4 16:4 17:0 18:0 19:0 20:0 21:4 22:4 23:4 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup) + +TTGO T-Team 1.0 with IL9225 TFT => fingerprint 23 +0:1 1:0 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:1 1:1 2:0 3:1 4:0 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:1 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup) + +M5Stack Core2 +0:1 1:0 2:0 3:1 4:1 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:1 14:1 15:1 16:1 17:0 18:1 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:1 1:1 2:0 3:1 4:1 5:1 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:1 14:1 15:1 16:1 17:0 18:1 19:0 20:0 21:1 22:1 23:1 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup) +Board fingerprint is 87 (nach power on) +0:1 1:0 2:0 3:1 4:0 5:0 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:0 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 +0:1 1:1 2:0 3:1 4:0 5:0 6:0 7:1 8:0 9:1 10:1 11:1 12:0 13:0 14:1 15:0 16:1 17:0 18:0 19:0 20:0 21:1 22:1 23:0 24:0 25:0 26:0 27:0 28:0 29:0 30:0 31:0 32:0 33:0 34:0 35:0 36:0 37:0 38:0 (before setup) +Board fingerprint is 22 (nach reset) +Autoconfig: looks like T-Beam 1.0 board + + + vs 0010111 +T-Beam 1.1 seems to be different: 1110111 +GPIO4 = 1 (additional pullup) => +64 +GPIO12 = 1 (maybe additional pullup) => +32 + +1 + +Fingerprint GPIOs: 4, 12, 16, 17, 21, 22, 23, + +Current autodetect strategy: +RST always set to 16 + +GPIO16=0 (GPio22,23 would also work): + ==Heltec or TTGO LORA v1.0== + SDA,SCL set to (4,15) + Button 1 set to GPIO 0 + Button 2 set to Touch in GPIO 13 (141) + + +otherwise + ==LORA32 v2.1 or T-Beam== + GPIO17=0: + == T-BEAM = + GPIO12==0: v1 (or check PMU via I2C?) + GPS RX set to 34 + Button 1 set to GPIO28 + BUtton 2 set to Touch GPIO13 + else: + GPS RX set to 12 + Button 1 set to GPIO39 + Button 2 set to Touch GPIO13 (141) + GPIO21=0: + large display connected (use ILI9225 contig: SDA4 CLK21 RS2 RST22 CS0) + else: + small display connected, set SDA,SCL to (21,22) + otherweise: + SDA,SCL set to (21,22) + GPS disabled + Button 1 set to Touch GPIO2 (130) + Button 2 set to Touch GPIO14 (142) + diff --git a/RX_FSK/src/fonts/FreeMono12pt7b.h b/RX_FSK/src/fonts/FreeMono12pt7b.h new file mode 100644 index 0000000..94ecb88 --- /dev/null +++ b/RX_FSK/src/fonts/FreeMono12pt7b.h @@ -0,0 +1,227 @@ +const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { + 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, + 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, + 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, + 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, + 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, + 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, + 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, + 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, + 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, + 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, + 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, + 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, + 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, + 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, + 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, + 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, + 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, + 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, + 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, + 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, + 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, + 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, + 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, + 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, + 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, + 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, + 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, + 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, + 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, + 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, + 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, + 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, + 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, + 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, + 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, + 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, + 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, + 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, + 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, + 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, + 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, + 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, + 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, + 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, + 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, + 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, + 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, + 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, + 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, + 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, + 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, + 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, + 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, + 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, + 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, + 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, + 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, + 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, + 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, + 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, + 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, + 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, + 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, + 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, + 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, + 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, + 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, + 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, + 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, + 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, + 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, + 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, + 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, + 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, + 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, + 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, + 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, + 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, + 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, + 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, + 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, + 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, + 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, + 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, + 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, + 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, + 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, + 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, + 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, + 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, + 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, + 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, + 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, + 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, + 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, + 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38 }; + +const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 3, 15, 14, 6, -14 }, // 0x21 '!' + { 6, 8, 7, 14, 3, -14 }, // 0x22 '"' + { 13, 10, 16, 14, 2, -14 }, // 0x23 '#' + { 33, 10, 17, 14, 2, -14 }, // 0x24 '$' + { 55, 10, 15, 14, 2, -14 }, // 0x25 '%' + { 74, 9, 12, 14, 3, -11 }, // 0x26 '&' + { 88, 3, 7, 14, 5, -14 }, // 0x27 ''' + { 91, 3, 18, 14, 7, -14 }, // 0x28 '(' + { 98, 3, 18, 14, 4, -14 }, // 0x29 ')' + { 105, 9, 9, 14, 3, -14 }, // 0x2A '*' + { 116, 9, 11, 14, 3, -11 }, // 0x2B '+' + { 129, 5, 7, 14, 3, -3 }, // 0x2C ',' + { 134, 11, 1, 14, 2, -6 }, // 0x2D '-' + { 136, 3, 3, 14, 5, -2 }, // 0x2E '.' + { 138, 9, 18, 14, 3, -15 }, // 0x2F '/' + { 159, 9, 15, 14, 3, -14 }, // 0x30 '0' + { 176, 7, 14, 14, 4, -13 }, // 0x31 '1' + { 189, 9, 15, 14, 2, -14 }, // 0x32 '2' + { 206, 10, 15, 14, 2, -14 }, // 0x33 '3' + { 225, 8, 15, 14, 3, -14 }, // 0x34 '4' + { 240, 9, 15, 14, 3, -14 }, // 0x35 '5' + { 257, 9, 15, 14, 3, -14 }, // 0x36 '6' + { 274, 8, 15, 14, 3, -14 }, // 0x37 '7' + { 289, 9, 15, 14, 3, -14 }, // 0x38 '8' + { 306, 9, 15, 14, 3, -14 }, // 0x39 '9' + { 323, 3, 10, 14, 5, -9 }, // 0x3A ':' + { 327, 5, 13, 14, 3, -9 }, // 0x3B ';' + { 336, 11, 11, 14, 2, -11 }, // 0x3C '<' + { 352, 12, 4, 14, 1, -8 }, // 0x3D '=' + { 358, 11, 11, 14, 2, -11 }, // 0x3E '>' + { 374, 9, 14, 14, 3, -13 }, // 0x3F '?' + { 390, 9, 16, 14, 3, -14 }, // 0x40 '@' + { 408, 14, 14, 14, 0, -13 }, // 0x41 'A' + { 433, 11, 14, 14, 2, -13 }, // 0x42 'B' + { 453, 10, 14, 14, 2, -13 }, // 0x43 'C' + { 471, 10, 14, 14, 2, -13 }, // 0x44 'D' + { 489, 11, 14, 14, 2, -13 }, // 0x45 'E' + { 509, 11, 14, 14, 2, -13 }, // 0x46 'F' + { 529, 11, 14, 14, 2, -13 }, // 0x47 'G' + { 549, 10, 14, 14, 2, -13 }, // 0x48 'H' + { 567, 7, 14, 14, 4, -13 }, // 0x49 'I' + { 580, 11, 14, 14, 2, -13 }, // 0x4A 'J' + { 600, 12, 14, 14, 2, -13 }, // 0x4B 'K' + { 621, 11, 14, 14, 2, -13 }, // 0x4C 'L' + { 641, 13, 14, 14, 1, -13 }, // 0x4D 'M' + { 664, 12, 14, 14, 1, -13 }, // 0x4E 'N' + { 685, 12, 14, 14, 1, -13 }, // 0x4F 'O' + { 706, 10, 14, 14, 2, -13 }, // 0x50 'P' + { 724, 12, 17, 14, 1, -13 }, // 0x51 'Q' + { 750, 12, 14, 14, 2, -13 }, // 0x52 'R' + { 771, 10, 14, 14, 2, -13 }, // 0x53 'S' + { 789, 11, 14, 14, 2, -13 }, // 0x54 'T' + { 809, 12, 14, 14, 1, -13 }, // 0x55 'U' + { 830, 14, 14, 14, 0, -13 }, // 0x56 'V' + { 855, 14, 14, 14, 0, -13 }, // 0x57 'W' + { 880, 12, 14, 14, 1, -13 }, // 0x58 'X' + { 901, 12, 14, 14, 1, -13 }, // 0x59 'Y' + { 922, 9, 14, 14, 3, -13 }, // 0x5A 'Z' + { 938, 3, 18, 14, 7, -14 }, // 0x5B '[' + { 945, 9, 18, 14, 3, -15 }, // 0x5C '\' + { 966, 3, 18, 14, 5, -14 }, // 0x5D ']' + { 973, 9, 6, 14, 3, -14 }, // 0x5E '^' + { 980, 14, 1, 14, 0, 3 }, // 0x5F '_' + { 982, 4, 4, 14, 4, -15 }, // 0x60 '`' + { 984, 10, 10, 14, 2, -9 }, // 0x61 'a' + { 997, 13, 15, 14, 0, -14 }, // 0x62 'b' + { 1022, 11, 10, 14, 2, -9 }, // 0x63 'c' + { 1036, 11, 15, 14, 2, -14 }, // 0x64 'd' + { 1057, 10, 10, 14, 2, -9 }, // 0x65 'e' + { 1070, 9, 15, 14, 4, -14 }, // 0x66 'f' + { 1087, 11, 14, 14, 2, -9 }, // 0x67 'g' + { 1107, 10, 15, 14, 2, -14 }, // 0x68 'h' + { 1126, 9, 15, 14, 3, -14 }, // 0x69 'i' + { 1143, 7, 19, 14, 3, -14 }, // 0x6A 'j' + { 1160, 12, 15, 14, 1, -14 }, // 0x6B 'k' + { 1183, 9, 15, 14, 3, -14 }, // 0x6C 'l' + { 1200, 13, 10, 14, 1, -9 }, // 0x6D 'm' + { 1217, 12, 10, 14, 1, -9 }, // 0x6E 'n' + { 1232, 11, 10, 14, 2, -9 }, // 0x6F 'o' + { 1246, 12, 14, 14, 1, -9 }, // 0x70 'p' + { 1267, 11, 14, 14, 2, -9 }, // 0x71 'q' + { 1287, 10, 10, 14, 3, -9 }, // 0x72 'r' + { 1300, 10, 10, 14, 2, -9 }, // 0x73 's' + { 1313, 11, 14, 14, 1, -13 }, // 0x74 't' + { 1333, 11, 10, 14, 2, -9 }, // 0x75 'u' + { 1347, 13, 10, 14, 1, -9 }, // 0x76 'v' + { 1364, 13, 10, 14, 1, -9 }, // 0x77 'w' + { 1381, 12, 10, 14, 1, -9 }, // 0x78 'x' + { 1396, 12, 14, 14, 1, -9 }, // 0x79 'y' + { 1417, 9, 10, 14, 3, -9 }, // 0x7A 'z' + { 1429, 5, 18, 14, 5, -14 }, // 0x7B '{' + { 1441, 1, 18, 14, 7, -14 }, // 0x7C '|' + { 1444, 5, 18, 14, 5, -14 }, // 0x7D '}' + { 1456, 10, 3, 14, 2, -7 } }; // 0x7E '~' + +const GFXfont FreeMono12pt7b PROGMEM = { + (uint8_t *)FreeMono12pt7bBitmaps, + (GFXglyph *)FreeMono12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2132 bytes diff --git a/RX_FSK/src/fonts/FreeMono12pt8b.h b/RX_FSK/src/fonts/FreeMono12pt8b.h new file mode 100644 index 0000000..0703e63 --- /dev/null +++ b/RX_FSK/src/fonts/FreeMono12pt8b.h @@ -0,0 +1,495 @@ +const uint8_t FreeMono12pt8bBitmaps[] PROGMEM = { + 0x00, 0xDB, 0x6D, 0x92, 0x48, 0x01, 0xB8, 0xF7, 0x67, 0x67, 0x67, 0x66, + 0x66, 0x62, 0x00, 0x02, 0x40, 0x90, 0x44, 0x11, 0x04, 0x87, 0xFC, 0x48, + 0x12, 0x04, 0x87, 0xF8, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x12, 0x00, + 0x08, 0x04, 0x0F, 0x0C, 0x6C, 0x14, 0x02, 0x00, 0xC0, 0x1E, 0x00, 0x80, + 0x30, 0x18, 0x17, 0x18, 0x70, 0x10, 0x08, 0x04, 0x00, 0x18, 0x19, 0x04, + 0x21, 0x08, 0x44, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x20, 0xC0, 0xC8, 0x22, + 0x08, 0x42, 0x20, 0x78, 0x3E, 0x40, 0x40, 0x40, 0x20, 0x60, 0x91, 0x8A, + 0x8A, 0x86, 0x86, 0x7B, 0xFF, 0x6D, 0xB0, 0x01, 0x26, 0x44, 0xCC, 0xCC, + 0xCC, 0x44, 0x62, 0x31, 0x13, 0x24, 0xC9, 0x24, 0x92, 0xD6, 0x90, 0x00, + 0x04, 0x02, 0x11, 0x17, 0xF0, 0xC0, 0x50, 0x4C, 0x42, 0x00, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x3F, 0xF8, 0x20, 0x04, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x3B, 0x9C, 0xC4, 0x60, 0xFF, 0xE0, 0x6F, 0x70, 0x00, + 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x06, + 0x02, 0x01, 0x01, 0x00, 0x80, 0x80, 0x40, 0x00, 0x1C, 0x33, 0x10, 0x50, + 0x28, 0x14, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x2C, 0x12, 0x18, + 0xF8, 0x18, 0x1C, 0x1A, 0x19, 0x08, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, + 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x1E, 0x11, 0x90, 0x38, 0x10, 0x08, + 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x07, 0xFE, 0x1E, + 0x08, 0x64, 0x08, 0x02, 0x00, 0x80, 0x20, 0x70, 0x1C, 0x00, 0x80, 0x10, + 0x04, 0x01, 0x00, 0x70, 0x23, 0xF0, 0x06, 0x0A, 0x0A, 0x12, 0x12, 0x22, + 0x62, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, 0x3F, 0x08, 0x22, + 0x00, 0x80, 0x20, 0x08, 0x03, 0xF0, 0x02, 0x00, 0x40, 0x10, 0x04, 0x01, + 0x00, 0xD0, 0x23, 0xF0, 0x07, 0x8E, 0x0C, 0x0C, 0x04, 0x02, 0x02, 0x31, + 0x66, 0xA0, 0xE0, 0x60, 0x28, 0x14, 0x09, 0x08, 0x7C, 0xFF, 0x81, 0x81, + 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, + 0x1C, 0x31, 0x20, 0x50, 0x28, 0x14, 0x09, 0x08, 0x78, 0x43, 0x40, 0xA0, + 0x30, 0x18, 0x16, 0x09, 0xF8, 0x1C, 0x31, 0x10, 0x50, 0x18, 0x0C, 0x05, + 0x06, 0x87, 0x3E, 0x80, 0x40, 0x20, 0x20, 0x30, 0x33, 0xF0, 0x7F, 0x70, + 0x00, 0x06, 0xF7, 0x39, 0xCE, 0x00, 0x00, 0x07, 0x73, 0x98, 0xCC, 0x00, + 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xC0, 0x06, + 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, + 0x00, 0x00, 0x3C, 0x61, 0xA0, 0x40, 0x10, 0x08, 0x08, 0x08, 0x18, 0x08, + 0x04, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x3C, 0x62, 0xC1, 0x81, 0x81, 0x87, + 0x99, 0x91, 0x91, 0x91, 0x8F, 0x81, 0x80, 0x80, 0x40, 0x3F, 0x1F, 0x00, + 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x80, 0x21, 0x00, 0x84, 0x02, 0x08, + 0x1F, 0xE0, 0x40, 0x81, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, 0xF0, 0x7E, + 0x02, 0x1C, 0x20, 0x62, 0x02, 0x20, 0x22, 0x06, 0x3F, 0x82, 0x1C, 0x20, + 0x22, 0x01, 0x20, 0x12, 0x01, 0x20, 0x2F, 0xFC, 0x1E, 0x06, 0x39, 0x01, + 0x40, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x20, + 0x16, 0x04, 0x3F, 0x00, 0x7C, 0x08, 0x71, 0x01, 0x20, 0x14, 0x02, 0x80, + 0x50, 0x0A, 0x01, 0x40, 0x28, 0x05, 0x00, 0xA0, 0x24, 0x0D, 0xFE, 0x00, + 0x7F, 0xE4, 0x04, 0x80, 0x90, 0x12, 0x00, 0x44, 0x0F, 0x81, 0x10, 0x22, + 0x04, 0x00, 0x80, 0x90, 0x12, 0x03, 0xFF, 0xC0, 0x7F, 0xE4, 0x04, 0x80, + 0x90, 0x12, 0x00, 0x44, 0x0F, 0x81, 0x10, 0x22, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x01, 0xFC, 0x00, 0x0F, 0x06, 0x39, 0x01, 0x40, 0x08, 0x01, 0x00, + 0x20, 0x04, 0x00, 0x83, 0xF0, 0x0A, 0x01, 0x60, 0x26, 0x04, 0x7F, 0x80, + 0x70, 0xE2, 0x04, 0x20, 0x42, 0x04, 0x20, 0x42, 0x04, 0x3F, 0xC2, 0x04, + 0x20, 0x42, 0x04, 0x20, 0x42, 0x04, 0x20, 0x4F, 0x8F, 0xFF, 0x04, 0x02, + 0x01, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x87, + 0xFC, 0x0F, 0xE0, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, + 0x08, 0x80, 0x88, 0x08, 0x80, 0x88, 0x08, 0xC1, 0x03, 0xE0, 0x78, 0xF1, + 0x01, 0x08, 0x10, 0x43, 0x02, 0x30, 0x13, 0x00, 0xB0, 0x06, 0x60, 0x21, + 0x81, 0x04, 0x08, 0x10, 0x40, 0x82, 0x06, 0x7C, 0x1C, 0xFC, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, + 0x90, 0x12, 0x03, 0xFF, 0xC0, 0x70, 0x18, 0xC0, 0x73, 0x02, 0x8A, 0x0A, + 0x28, 0x48, 0x91, 0x22, 0x48, 0x88, 0xA2, 0x23, 0x08, 0x84, 0x22, 0x00, + 0x88, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x82, + 0x48, 0x24, 0x42, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, + 0x40, 0x6F, 0x86, 0x0F, 0x01, 0x8C, 0x20, 0x64, 0x02, 0x40, 0x18, 0x01, + 0x80, 0x18, 0x01, 0x80, 0x1C, 0x01, 0x40, 0x36, 0x02, 0x30, 0x41, 0xF8, + 0x7E, 0x04, 0x38, 0x81, 0x10, 0x12, 0x02, 0x40, 0x48, 0x11, 0xFC, 0x20, + 0x04, 0x00, 0x80, 0x10, 0x02, 0x01, 0xFC, 0x00, 0x0F, 0x01, 0x8C, 0x20, + 0x64, 0x02, 0x40, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, + 0x36, 0x02, 0x30, 0x41, 0xF8, 0x04, 0x01, 0xF9, 0x10, 0xE0, 0x7E, 0x01, + 0x0E, 0x08, 0x10, 0x40, 0x42, 0x02, 0x10, 0x30, 0x83, 0x07, 0xE0, 0x21, + 0x81, 0x06, 0x08, 0x10, 0x40, 0x42, 0x02, 0x7C, 0x0C, 0x1E, 0x0C, 0x74, + 0x0D, 0x01, 0x40, 0x18, 0x03, 0x80, 0x1E, 0x00, 0xC0, 0x18, 0x06, 0x01, + 0xC0, 0xEF, 0xC0, 0xFF, 0xF0, 0x86, 0x10, 0xC2, 0x10, 0x40, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, + 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x60, 0x22, 0x06, 0x30, 0x41, 0xF8, 0x78, 0x3C, 0x80, 0x22, + 0x01, 0x08, 0x04, 0x10, 0x10, 0x40, 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, + 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, 0x00, 0x0C, 0x00, 0x78, 0x39, 0x00, + 0x22, 0x00, 0x88, 0xC2, 0x23, 0x08, 0x8A, 0x42, 0x29, 0x09, 0x24, 0x24, + 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, 0x18, 0x50, 0x60, 0xC0, 0x70, 0x76, + 0x02, 0x20, 0x41, 0x0C, 0x08, 0x80, 0xD0, 0x06, 0x00, 0x60, 0x0D, 0x00, + 0x98, 0x10, 0x82, 0x04, 0x60, 0x2F, 0x0F, 0x70, 0x76, 0x02, 0x20, 0x41, + 0x0C, 0x18, 0x80, 0x90, 0x05, 0x00, 0x60, 0x02, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x02, 0x01, 0xFC, 0x7F, 0x90, 0x24, 0x09, 0x04, 0x42, 0x00, 0x80, + 0x40, 0x20, 0x18, 0x04, 0x12, 0x05, 0x01, 0x40, 0x7F, 0xF0, 0xE8, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8F, 0x80, 0x40, 0x10, 0x08, 0x02, + 0x01, 0x00, 0x40, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, + 0x02, 0x01, 0x00, 0x40, 0xF1, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, + 0x1F, 0x00, 0x0C, 0x0D, 0x04, 0x44, 0x34, 0x08, 0x00, 0xFF, 0xFC, 0x84, + 0x30, 0x7F, 0x00, 0x10, 0x02, 0x00, 0x43, 0xF9, 0x81, 0x20, 0x24, 0x04, + 0x81, 0x8F, 0xDC, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x04, 0xFC, + 0x50, 0x66, 0x02, 0x60, 0x14, 0x01, 0x40, 0x16, 0x01, 0x60, 0x25, 0x06, + 0xCF, 0xC0, 0x3F, 0xCC, 0x19, 0x01, 0x40, 0x08, 0x01, 0x00, 0x20, 0x02, + 0x01, 0x60, 0x47, 0xF0, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x43, + 0xE4, 0x41, 0xC8, 0x0C, 0x80, 0x48, 0x04, 0x80, 0x48, 0x04, 0x80, 0xC4, + 0x1C, 0x3E, 0x70, 0x3F, 0x10, 0x28, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x02, + 0x00, 0x40, 0x4F, 0xE0, 0x00, 0x07, 0xF1, 0x00, 0x40, 0x10, 0x3F, 0xE1, + 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x0F, 0xF0, 0x3E, + 0x68, 0x2A, 0x03, 0x40, 0x68, 0x05, 0x01, 0xA0, 0x36, 0x0E, 0x63, 0x43, + 0x88, 0x01, 0x00, 0x40, 0x08, 0x3E, 0x00, 0x60, 0x02, 0x00, 0x20, 0x02, + 0x00, 0x20, 0x02, 0xF8, 0x30, 0x42, 0x04, 0x20, 0x42, 0x04, 0x20, 0x42, + 0x04, 0x20, 0x42, 0x04, 0xF8, 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x00, + 0x1F, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x0F, + 0xFC, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, 0x08, 0x10, + 0x20, 0x40, 0x81, 0x02, 0x0F, 0xF0, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, + 0x00, 0x8F, 0x90, 0x82, 0x20, 0x48, 0x0F, 0x01, 0xB0, 0x23, 0x04, 0x30, + 0x83, 0x30, 0x78, 0x3C, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, + 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0xFE, 0xF0, + 0xC6, 0x22, 0x10, 0x88, 0x42, 0x21, 0x08, 0x84, 0x22, 0x10, 0x88, 0x42, + 0x21, 0x0B, 0xC6, 0x30, 0x6F, 0x83, 0x04, 0x20, 0x42, 0x02, 0x20, 0x22, + 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x8F, 0x3F, 0x0C, 0x13, 0x01, 0x40, + 0x28, 0x03, 0x00, 0x60, 0x14, 0x02, 0x40, 0x87, 0xE0, 0xCF, 0xC5, 0x06, + 0x60, 0x26, 0x01, 0x40, 0x16, 0x01, 0x60, 0x17, 0x02, 0x58, 0xC4, 0x70, + 0x40, 0x04, 0x00, 0x40, 0x0F, 0x80, 0x3F, 0x74, 0x1C, 0x80, 0xC8, 0x04, + 0x80, 0x48, 0x04, 0x80, 0x4C, 0x0C, 0x63, 0x41, 0xC4, 0x00, 0x40, 0x04, + 0x00, 0x40, 0x1E, 0x73, 0xC2, 0xC4, 0x60, 0x08, 0x01, 0x00, 0x20, 0x04, + 0x00, 0x80, 0x10, 0x1F, 0xF0, 0x3F, 0x90, 0x24, 0x09, 0x80, 0x1E, 0x00, + 0x60, 0x06, 0x01, 0xC0, 0xEF, 0xE0, 0x00, 0x04, 0x00, 0x80, 0x10, 0x0F, + 0xF8, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x01, 0x02, + 0x3F, 0x80, 0xE1, 0xE2, 0x02, 0x20, 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x06, 0x20, 0xA1, 0xF3, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, + 0x0C, 0x08, 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, + 0x01, 0x10, 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, + 0xC0, 0x86, 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, + 0x09, 0x81, 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, + 0x10, 0x80, 0x88, 0x09, 0x00, 0x50, 0x05, 0x00, 0x20, 0x02, 0x00, 0x40, + 0x04, 0x07, 0xE0, 0xFF, 0x41, 0xA0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, + 0xC0, 0xFF, 0xC0, 0x00, 0x61, 0x04, 0x10, 0x41, 0x04, 0x63, 0x02, 0x04, + 0x10, 0x41, 0x04, 0x10, 0x30, 0x7F, 0xFF, 0xC0, 0x03, 0x02, 0x08, 0x20, + 0x82, 0x08, 0x30, 0x72, 0x08, 0x20, 0x82, 0x08, 0x43, 0x00, 0x78, 0x71, + 0x30, 0x30, 0xFF, 0xFE, 0x00, 0x18, 0x00, 0x61, 0xE1, 0x98, 0x66, 0x40, + 0x98, 0x01, 0x60, 0x05, 0x80, 0x26, 0x01, 0x18, 0x18, 0x60, 0x41, 0x81, + 0x06, 0x00, 0x18, 0x00, 0x60, 0xE1, 0x83, 0x86, 0x00, 0x1F, 0xFF, 0xC0, + 0x00, 0xFC, 0x00, 0x92, 0x4B, 0x6D, 0xB0, 0x08, 0x08, 0x08, 0x3E, 0x63, + 0x81, 0x80, 0x80, 0x80, 0x80, 0x41, 0x3E, 0x08, 0x08, 0x08, 0x0E, 0x0C, + 0xC2, 0x00, 0x80, 0x20, 0x08, 0x0F, 0xC0, 0x40, 0x10, 0x04, 0x01, 0x00, + 0x80, 0x20, 0x7F, 0xF0, 0x07, 0x81, 0x87, 0x30, 0x32, 0x02, 0x40, 0x04, + 0x00, 0xFF, 0x84, 0x00, 0xFF, 0x84, 0x00, 0x60, 0x02, 0x00, 0x10, 0x30, + 0xFC, 0x70, 0x76, 0x02, 0x20, 0x41, 0x0C, 0x18, 0x80, 0x90, 0x07, 0x03, + 0xFC, 0x02, 0x00, 0x20, 0x3F, 0xC0, 0x20, 0x02, 0x01, 0xF8, 0x20, 0x84, + 0xC0, 0xE0, 0x10, 0x1E, 0x0C, 0x74, 0x0D, 0x01, 0x40, 0x18, 0x03, 0x80, + 0x1E, 0x00, 0xC0, 0x18, 0x06, 0x01, 0xC0, 0xEF, 0xC0, 0x1F, 0xC4, 0x08, + 0x81, 0x10, 0x0D, 0x81, 0x18, 0x20, 0xC3, 0x06, 0x30, 0x61, 0x84, 0x0B, + 0x80, 0xC0, 0x08, 0x83, 0x1F, 0xC0, 0x31, 0x86, 0x80, 0xC0, 0x00, 0x00, + 0x0F, 0xE4, 0x09, 0x02, 0x60, 0x07, 0x80, 0x18, 0x01, 0x80, 0x70, 0x3B, + 0xF8, 0x07, 0x80, 0x61, 0x82, 0x01, 0x10, 0xD2, 0x4C, 0xC6, 0x21, 0x18, + 0x80, 0x62, 0x01, 0x88, 0x06, 0x21, 0x14, 0x7C, 0xD8, 0x02, 0x30, 0x30, + 0x3F, 0x80, 0x30, 0x90, 0x13, 0xE8, 0x50, 0xBF, 0x80, 0x08, 0x23, 0x08, + 0xC2, 0x30, 0xCC, 0x31, 0x86, 0x18, 0x61, 0x84, 0x18, 0x41, 0x04, 0xFF, + 0xE0, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0xFF, 0xE0, 0x07, + 0x80, 0x61, 0x82, 0x01, 0x13, 0xC2, 0x44, 0xC6, 0x11, 0x18, 0x44, 0x61, + 0xE1, 0x84, 0x86, 0x11, 0x14, 0xE6, 0xD8, 0x02, 0x30, 0x30, 0x3F, 0x80, + 0xFE, 0x79, 0x0A, 0x0C, 0x18, 0x49, 0x8C, 0x00, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x00, 0x00, + 0x0F, 0xFE, 0x31, 0x28, 0x41, 0x08, 0x42, 0x30, 0xFC, 0x31, 0x20, 0x42, + 0x18, 0x10, 0x61, 0x78, 0x21, 0x84, 0xC0, 0xC0, 0x00, 0x7F, 0x90, 0x24, + 0x09, 0x04, 0x42, 0x00, 0x80, 0x40, 0x20, 0x18, 0x04, 0x12, 0x05, 0x01, + 0x40, 0x7F, 0xF0, 0xE1, 0xE2, 0x02, 0x20, 0x22, 0x02, 0x20, 0x22, 0x02, + 0x20, 0x22, 0x06, 0x20, 0xE3, 0xF3, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x00, 0x07, 0xCF, 0xA3, 0x14, 0x62, 0x8C, 0x51, 0x8A, 0x31, 0x43, + 0xA8, 0x1D, 0x00, 0xA0, 0x14, 0x02, 0x80, 0x50, 0x0A, 0x01, 0x41, 0xE6, + 0x74, 0x42, 0x1A, 0x06, 0x00, 0x00, 0x07, 0xFA, 0x0D, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x0E, 0x07, 0xFE, 0x27, 0x08, 0x42, 0x10, 0x84, 0xF8, + 0x39, 0x8A, 0x0C, 0x18, 0x30, 0x9E, 0x00, 0x84, 0x18, 0x41, 0x84, 0x18, + 0xC1, 0x8C, 0x31, 0x8C, 0x63, 0x08, 0xC2, 0x10, 0x80, 0x03, 0xFC, 0x74, + 0x12, 0x10, 0x50, 0x41, 0x41, 0x06, 0x04, 0x88, 0x1E, 0x20, 0x48, 0x81, + 0x23, 0x04, 0x04, 0x10, 0x58, 0x41, 0x31, 0x04, 0x3F, 0xF0, 0x3C, 0xF1, + 0x0A, 0x24, 0x30, 0xE0, 0x41, 0x81, 0xFE, 0x04, 0x08, 0x10, 0x10, 0xC0, + 0x42, 0x84, 0xF1, 0xE0, 0x38, 0xC1, 0x8C, 0x00, 0x07, 0x07, 0x60, 0x22, + 0x04, 0x10, 0xC1, 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x02, 0x00, 0x20, 0x1F, 0xC0, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x08, + 0x18, 0x60, 0xC0, 0x80, 0x80, 0x81, 0xC1, 0x7E, 0x08, 0x00, 0x30, 0x00, + 0x20, 0x00, 0x40, 0x00, 0x00, 0x7C, 0x00, 0x30, 0x01, 0x20, 0x04, 0x80, + 0x12, 0x00, 0x84, 0x02, 0x10, 0x08, 0x20, 0x7F, 0x81, 0x02, 0x04, 0x04, + 0x20, 0x10, 0x80, 0x4F, 0x87, 0xC0, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, + 0x80, 0x00, 0x00, 0x7C, 0x00, 0x30, 0x01, 0x20, 0x04, 0x80, 0x12, 0x00, + 0x84, 0x02, 0x10, 0x08, 0x20, 0x7F, 0x81, 0x02, 0x04, 0x04, 0x20, 0x10, + 0x80, 0x4F, 0x87, 0xC0, 0x03, 0x00, 0x1A, 0x00, 0x84, 0x00, 0x00, 0x1F, + 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x80, 0x21, 0x00, 0x84, 0x02, + 0x08, 0x1F, 0xE0, 0x40, 0x81, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, 0xF0, + 0x06, 0x20, 0x27, 0x00, 0x00, 0x07, 0xC0, 0x03, 0x00, 0x12, 0x00, 0x48, + 0x01, 0x20, 0x08, 0x40, 0x21, 0x00, 0x82, 0x07, 0xF8, 0x10, 0x20, 0x40, + 0x42, 0x01, 0x08, 0x04, 0xF8, 0x7C, 0x08, 0x60, 0x71, 0x80, 0x00, 0x07, + 0xC0, 0x03, 0x00, 0x12, 0x00, 0x48, 0x01, 0x20, 0x08, 0x40, 0x21, 0x00, + 0x82, 0x07, 0xF8, 0x10, 0x20, 0x40, 0x42, 0x01, 0x08, 0x04, 0xF8, 0x7C, + 0x03, 0x80, 0x12, 0x00, 0x48, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x30, + 0x01, 0x20, 0x04, 0x80, 0x12, 0x00, 0x84, 0x02, 0x10, 0x08, 0x20, 0x7F, + 0x81, 0x02, 0x04, 0x04, 0x20, 0x10, 0x80, 0x4F, 0x87, 0xC0, 0x1F, 0xFC, + 0x14, 0x10, 0x50, 0x42, 0x41, 0x09, 0x04, 0x24, 0x80, 0x9E, 0x04, 0x48, + 0x1F, 0x20, 0x44, 0x02, 0x10, 0x48, 0x41, 0x21, 0x07, 0xDF, 0xF0, 0x1E, + 0x06, 0x39, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x20, 0x16, 0x04, 0x3F, 0x01, 0x00, 0x30, 0x02, 0x03, 0xC0, + 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x00, 0xFF, 0xC8, 0x09, 0x01, 0x20, + 0x24, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x44, 0x08, 0x01, 0x01, 0x20, 0x24, + 0x07, 0xFF, 0x80, 0x00, 0x00, 0x60, 0x18, 0x06, 0x00, 0x00, 0xFF, 0xC8, + 0x09, 0x01, 0x20, 0x24, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x44, 0x08, 0x01, + 0x01, 0x20, 0x24, 0x07, 0xFF, 0x80, 0x06, 0x01, 0xE0, 0x42, 0x00, 0x07, + 0xFE, 0x40, 0x48, 0x09, 0x01, 0x20, 0x04, 0x40, 0xF8, 0x11, 0x02, 0x20, + 0x40, 0x08, 0x09, 0x01, 0x20, 0x3F, 0xFC, 0x30, 0xC6, 0x38, 0x00, 0x3F, + 0xF2, 0x02, 0x40, 0x48, 0x09, 0x00, 0x22, 0x07, 0xC0, 0x88, 0x11, 0x02, + 0x00, 0x40, 0x48, 0x09, 0x01, 0xFF, 0xE0, 0x00, 0x18, 0x06, 0x01, 0x80, + 0x07, 0xF8, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x3F, 0xE0, 0x00, 0x01, 0x03, 0x03, 0x00, 0x07, 0xF8, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, + 0x04, 0x3F, 0xE0, 0x18, 0x1A, 0x10, 0xC0, 0x0F, 0xF0, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x7F, 0xC0, + 0x43, 0x71, 0x80, 0x1F, 0xE0, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, + 0x01, 0x00, 0x80, 0x40, 0x20, 0x10, 0xFF, 0x80, 0x3E, 0x02, 0x1C, 0x20, + 0x22, 0x01, 0x20, 0x12, 0x01, 0x7E, 0x1A, 0x11, 0x20, 0x12, 0x01, 0x20, + 0x12, 0x02, 0x20, 0x67, 0xF8, 0x1C, 0x43, 0x38, 0x00, 0x0E, 0x0F, 0x60, + 0x25, 0x02, 0x58, 0x24, 0x82, 0x44, 0x24, 0x42, 0x42, 0x24, 0x32, 0x41, + 0x24, 0x0A, 0x40, 0xA4, 0x06, 0xF8, 0x60, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x20, 0x00, 0x00, 0xF0, 0x18, 0xC2, 0x06, 0x40, 0x24, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0xC0, 0x14, 0x03, 0x60, 0x23, 0x04, 0x1F, 0x80, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x00, 0x00, 0xF0, 0x18, 0xC2, 0x06, + 0x40, 0x24, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0xC0, 0x14, 0x03, + 0x60, 0x23, 0x04, 0x1F, 0x80, 0x06, 0x00, 0xD0, 0x10, 0x80, 0x00, 0x0F, + 0x01, 0x8C, 0x20, 0x64, 0x02, 0x40, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x1C, 0x01, 0x40, 0x36, 0x02, 0x30, 0x41, 0xF8, 0x0C, 0x41, 0x38, 0x00, + 0x00, 0xF0, 0x18, 0xC2, 0x06, 0x40, 0x24, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x01, 0xC0, 0x14, 0x03, 0x60, 0x23, 0x04, 0x1F, 0x80, 0x10, 0xC3, + 0x8C, 0x00, 0x00, 0xF0, 0x18, 0xC2, 0x06, 0x40, 0x24, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0xC0, 0x14, 0x03, 0x60, 0x23, 0x04, 0x1F, 0x80, + 0x81, 0xA1, 0x89, 0x83, 0x81, 0x81, 0xA1, 0x89, 0x82, 0x80, 0x00, 0x00, + 0x00, 0xF1, 0x18, 0xE2, 0x06, 0x40, 0x64, 0x09, 0x81, 0x18, 0x21, 0x86, + 0x18, 0x41, 0xC8, 0x15, 0x03, 0x60, 0x27, 0x04, 0x5F, 0x88, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0x20, 0x00, 0x0F, 0x0F, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x26, 0x02, 0x20, + 0x63, 0x04, 0x1F, 0x80, 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x00, 0x0F, + 0x0F, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, + 0x02, 0x40, 0x26, 0x02, 0x20, 0x63, 0x04, 0x1F, 0x80, 0x06, 0x00, 0xD0, + 0x10, 0x80, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, + 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x60, 0x22, 0x06, 0x30, 0x41, 0xF8, + 0x10, 0xC3, 0x8C, 0x00, 0x0F, 0x0F, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, + 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x26, 0x02, 0x20, 0x63, 0x04, + 0x1F, 0x80, 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x00, 0x07, 0x07, 0x60, + 0x22, 0x04, 0x10, 0xC1, 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x02, + 0x00, 0x20, 0x02, 0x00, 0x20, 0x1F, 0xC0, 0x7E, 0x04, 0x00, 0x80, 0x1F, + 0x02, 0x1C, 0x40, 0x88, 0x09, 0x01, 0x20, 0x24, 0x08, 0xFE, 0x10, 0x02, + 0x01, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x84, 0x30, 0x44, 0x08, 0x82, 0x11, + 0xC2, 0x0C, 0x40, 0x48, 0x05, 0x00, 0xA0, 0x14, 0x42, 0x88, 0xF8, 0xF0, + 0x30, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x04, 0x00, + 0x87, 0xF3, 0x02, 0x40, 0x48, 0x09, 0x03, 0x1F, 0xB8, 0x02, 0x00, 0x80, + 0x20, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x04, 0x00, 0x87, 0xF3, 0x02, + 0x40, 0x48, 0x09, 0x03, 0x1F, 0xB8, 0x0C, 0x03, 0xC0, 0x8C, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x20, 0x04, 0x00, 0x87, 0xF3, 0x02, 0x40, 0x48, 0x09, + 0x03, 0x1F, 0xB8, 0x18, 0x84, 0xE0, 0x00, 0x00, 0x07, 0xF0, 0x01, 0x00, + 0x20, 0x04, 0x3F, 0x98, 0x12, 0x02, 0x40, 0x48, 0x18, 0xFD, 0xC0, 0x63, + 0x8C, 0x70, 0x00, 0x00, 0x07, 0xF0, 0x01, 0x00, 0x20, 0x04, 0x3F, 0x98, + 0x12, 0x02, 0x40, 0x48, 0x18, 0xFD, 0xC0, 0x0E, 0x02, 0x40, 0x48, 0x07, + 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x04, 0x00, 0x80, 0x10, 0xFE, 0x60, 0x48, + 0x09, 0x01, 0x20, 0x63, 0xF7, 0x3E, 0xF0, 0x0A, 0x20, 0x10, 0x80, 0x41, + 0x3F, 0xFD, 0x04, 0x08, 0x10, 0x20, 0x40, 0x43, 0x85, 0xF7, 0xE0, 0x3F, + 0xCC, 0x19, 0x01, 0x40, 0x08, 0x01, 0x00, 0x20, 0x02, 0x01, 0x60, 0x47, + 0xF0, 0x10, 0x03, 0x00, 0x20, 0x3C, 0x00, 0x10, 0x02, 0x00, 0x40, 0x00, + 0x00, 0x0F, 0xC4, 0x0A, 0x01, 0x80, 0x7F, 0xF8, 0x02, 0x00, 0x80, 0x10, + 0x13, 0xF8, 0x03, 0x01, 0x00, 0x80, 0x00, 0x00, 0x0F, 0xC4, 0x0A, 0x01, + 0x80, 0x7F, 0xF8, 0x02, 0x00, 0x80, 0x10, 0x13, 0xF8, 0x04, 0x06, 0x83, + 0x10, 0x82, 0x00, 0x0F, 0xC4, 0x0A, 0x01, 0x80, 0x7F, 0xF8, 0x02, 0x00, + 0x80, 0x10, 0x13, 0xF8, 0x31, 0x8C, 0x60, 0x00, 0x00, 0x3F, 0x10, 0x28, + 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x02, 0x00, 0x40, 0x4F, 0xE0, 0x30, 0x02, + 0x00, 0x40, 0x00, 0x00, 0x1F, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, + 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x02, 0x01, 0x00, 0x80, 0x00, 0x00, 0x1F, + 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x0F, 0xFC, + 0x08, 0x05, 0x82, 0x30, 0x00, 0x00, 0x1F, 0x00, 0x40, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x63, 0x98, 0xE0, 0x00, 0x00, + 0x7C, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x3F, + 0xF0, 0x30, 0x81, 0xE0, 0x78, 0x00, 0x80, 0x08, 0x7F, 0x98, 0x36, 0x02, + 0x80, 0x70, 0x06, 0x00, 0xC0, 0x2C, 0x04, 0xC1, 0x0F, 0xC0, 0x1C, 0x43, + 0x38, 0x00, 0x00, 0x00, 0x6F, 0x83, 0x04, 0x20, 0x42, 0x02, 0x20, 0x22, + 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x8F, 0x10, 0x01, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x7E, 0x18, 0x26, 0x02, 0x80, 0x50, 0x06, 0x00, 0xC0, 0x28, + 0x04, 0x81, 0x0F, 0xC0, 0x02, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x7E, + 0x18, 0x26, 0x02, 0x80, 0x50, 0x06, 0x00, 0xC0, 0x28, 0x04, 0x81, 0x0F, + 0xC0, 0x0C, 0x03, 0x40, 0xC4, 0x00, 0x00, 0x00, 0x7E, 0x18, 0x26, 0x02, + 0x80, 0x50, 0x06, 0x00, 0xC0, 0x28, 0x04, 0x81, 0x0F, 0xC0, 0x18, 0x84, + 0xE0, 0x00, 0x00, 0x03, 0xF0, 0xC1, 0x30, 0x14, 0x02, 0x80, 0x30, 0x06, + 0x01, 0x40, 0x24, 0x08, 0x7E, 0x00, 0x71, 0x8E, 0x30, 0x00, 0x00, 0x03, + 0xF0, 0xC1, 0x30, 0x14, 0x02, 0x80, 0x30, 0x06, 0x01, 0x40, 0x24, 0x08, + 0x7E, 0x00, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x11, 0xFA, 0x30, 0x46, + 0x0A, 0x41, 0x24, 0x21, 0x44, 0x14, 0x82, 0x70, 0x22, 0x04, 0x5F, 0x88, + 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x0E, 0x1E, 0x20, 0x22, + 0x02, 0x20, 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x62, 0x0A, 0x1F, 0x30, + 0x01, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x0E, 0x1E, 0x20, 0x22, 0x02, + 0x20, 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x62, 0x0A, 0x1F, 0x30, 0x06, + 0x00, 0xF0, 0x18, 0x80, 0x00, 0x00, 0x0E, 0x1E, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x62, 0x0A, 0x1F, 0x30, 0x30, 0xC3, + 0x0C, 0x00, 0x00, 0x00, 0xE1, 0xE2, 0x02, 0x20, 0x22, 0x02, 0x20, 0x22, + 0x02, 0x20, 0x22, 0x06, 0x20, 0xA1, 0xF3, 0x00, 0x80, 0x10, 0x02, 0x00, + 0x00, 0x00, 0x0F, 0x0F, 0x20, 0x22, 0x04, 0x10, 0x41, 0x08, 0x08, 0x80, + 0x90, 0x05, 0x00, 0x50, 0x02, 0x00, 0x20, 0x04, 0x00, 0x40, 0x7E, 0x00, + 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x4F, 0xC5, 0x06, 0x60, 0x26, 0x01, + 0x40, 0x16, 0x01, 0x60, 0x17, 0x02, 0x58, 0xC4, 0x70, 0x40, 0x04, 0x00, + 0x40, 0x0F, 0x80, 0x38, 0xC3, 0x8C, 0x00, 0x00, 0x00, 0xF0, 0xF2, 0x02, + 0x20, 0x41, 0x04, 0x10, 0x80, 0x88, 0x09, 0x00, 0x50, 0x05, 0x00, 0x20, + 0x02, 0x00, 0x40, 0x04, 0x07, 0xE0 }; + +const GFXglyph FreeMono12pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 14, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 3, 15, 14, 6, -14 }, // 0x21 '!' U+0021 + { 7, 8, 7, 14, 3, -14 }, // 0x22 '"' U+0022 + { 14, 10, 17, 14, 2, -15 }, // 0x23 '#' U+0023 + { 36, 9, 18, 14, 3, -15 }, // 0x24 '$' U+0024 + { 57, 10, 15, 14, 2, -14 }, // 0x25 '%' U+0025 + { 76, 8, 12, 14, 3, -11 }, // 0x26 '&' U+0026 + { 88, 3, 7, 14, 6, -14 }, // 0x27 ''' U+0027 + { 91, 4, 18, 14, 7, -14 }, // 0x28 '(' U+0028 + { 100, 3, 18, 14, 4, -14 }, // 0x29 ')' U+0029 + { 107, 9, 9, 14, 3, -14 }, // 0x2a '*' U+002A + { 118, 11, 12, 14, 2, -12 }, // 0x2b '+' U+002B + { 135, 5, 6, 14, 3, -2 }, // 0x2c ',' U+002C + { 139, 11, 1, 14, 2, -6 }, // 0x2d '-' U+002D + { 141, 4, 3, 14, 5, -2 }, // 0x2e '.' U+002E + { 143, 9, 18, 14, 3, -15 }, // 0x2f '/' U+002F + { 164, 9, 15, 14, 3, -14 }, // 0x30 '0' U+0030 + { 181, 9, 15, 14, 3, -14 }, // 0x31 '1' U+0031 + { 198, 9, 15, 14, 2, -14 }, // 0x32 '2' U+0032 + { 215, 10, 15, 14, 2, -14 }, // 0x33 '3' U+0033 + { 234, 8, 15, 14, 3, -14 }, // 0x34 '4' U+0034 + { 249, 10, 15, 14, 2, -14 }, // 0x35 '5' U+0035 + { 268, 9, 15, 14, 3, -14 }, // 0x36 '6' U+0036 + { 285, 8, 15, 14, 3, -14 }, // 0x37 '7' U+0037 + { 300, 9, 15, 14, 3, -14 }, // 0x38 '8' U+0038 + { 317, 9, 15, 14, 3, -14 }, // 0x39 '9' U+0039 + { 334, 4, 10, 14, 5, -9 }, // 0x3a ':' U+003A + { 339, 5, 13, 14, 3, -9 }, // 0x3b ';' U+003B + { 348, 11, 11, 14, 2, -11 }, // 0x3c '<' U+003C + { 364, 12, 4, 14, 1, -8 }, // 0x3d '=' U+003D + { 370, 11, 11, 14, 2, -11 }, // 0x3e '>' U+003E + { 386, 9, 14, 14, 3, -13 }, // 0x3f '?' U+003F + { 402, 8, 16, 14, 3, -14 }, // 0x40 '@' U+0040 + { 418, 14, 14, 14, 0, -13 }, // 0x41 'A' U+0041 + { 443, 12, 14, 14, 1, -13 }, // 0x42 'B' U+0042 + { 464, 11, 14, 14, 2, -13 }, // 0x43 'C' U+0043 + { 484, 11, 14, 14, 1, -13 }, // 0x44 'D' U+0044 + { 504, 11, 14, 14, 1, -13 }, // 0x45 'E' U+0045 + { 524, 11, 14, 14, 1, -13 }, // 0x46 'F' U+0046 + { 544, 11, 14, 14, 2, -13 }, // 0x47 'G' U+0047 + { 564, 12, 14, 14, 1, -13 }, // 0x48 'H' U+0048 + { 585, 9, 14, 14, 3, -13 }, // 0x49 'I' U+0049 + { 601, 12, 14, 14, 2, -13 }, // 0x4a 'J' U+004A + { 622, 13, 14, 14, 1, -13 }, // 0x4b 'K' U+004B + { 645, 11, 14, 14, 2, -13 }, // 0x4c 'L' U+004C + { 665, 14, 14, 14, 0, -13 }, // 0x4d 'M' U+004D + { 690, 12, 14, 14, 1, -13 }, // 0x4e 'N' U+004E + { 711, 12, 14, 14, 1, -13 }, // 0x4f 'O' U+004F + { 732, 11, 14, 14, 1, -13 }, // 0x50 'P' U+0050 + { 752, 12, 17, 14, 1, -13 }, // 0x51 'Q' U+0051 + { 778, 13, 14, 14, 1, -13 }, // 0x52 'R' U+0052 + { 801, 10, 14, 14, 2, -13 }, // 0x53 'S' U+0053 + { 819, 11, 14, 14, 2, -13 }, // 0x54 'T' U+0054 + { 839, 12, 14, 14, 1, -13 }, // 0x55 'U' U+0055 + { 860, 14, 14, 14, 0, -13 }, // 0x56 'V' U+0056 + { 885, 14, 14, 14, 0, -13 }, // 0x57 'W' U+0057 + { 910, 12, 14, 14, 1, -13 }, // 0x58 'X' U+0058 + { 931, 12, 14, 14, 1, -13 }, // 0x59 'Y' U+0059 + { 952, 10, 14, 14, 2, -13 }, // 0x5a 'Z' U+005A + { 970, 4, 18, 14, 7, -14 }, // 0x5b '[' U+005B + { 979, 9, 18, 14, 3, -15 }, // 0x5c '\' U+005C + { 1000, 4, 18, 14, 4, -14 }, // 0x5d ']' U+005D + { 1009, 9, 7, 14, 3, -14 }, // 0x5e '^' U+005E + { 1017, 14, 1, 14, 0, 3 }, // 0x5f '_' U+005F + { 1019, 4, 3, 14, 4, -14 }, // 0x60 '`' U+0060 + { 1021, 11, 10, 14, 2, -9 }, // 0x61 'a' U+0061 + { 1035, 12, 15, 14, 1, -14 }, // 0x62 'b' U+0062 + { 1058, 11, 10, 14, 2, -9 }, // 0x63 'c' U+0063 + { 1072, 12, 15, 14, 2, -14 }, // 0x64 'd' U+0064 + { 1095, 10, 10, 14, 2, -9 }, // 0x65 'e' U+0065 + { 1108, 10, 15, 14, 3, -14 }, // 0x66 'f' U+0066 + { 1127, 11, 14, 14, 2, -9 }, // 0x67 'g' U+0067 + { 1147, 12, 15, 14, 1, -14 }, // 0x68 'h' U+0068 + { 1170, 10, 15, 14, 2, -14 }, // 0x69 'i' U+0069 + { 1189, 7, 19, 14, 4, -14 }, // 0x6a 'j' U+006A + { 1206, 11, 15, 14, 2, -14 }, // 0x6b 'k' U+006B + { 1227, 10, 15, 14, 2, -14 }, // 0x6c 'l' U+006C + { 1246, 14, 10, 14, 0, -9 }, // 0x6d 'm' U+006D + { 1264, 12, 10, 14, 1, -9 }, // 0x6e 'n' U+006E + { 1279, 11, 10, 14, 2, -9 }, // 0x6f 'o' U+006F + { 1293, 12, 14, 14, 1, -9 }, // 0x70 'p' U+0070 + { 1314, 12, 14, 14, 2, -9 }, // 0x71 'q' U+0071 + { 1335, 11, 10, 14, 2, -9 }, // 0x72 'r' U+0072 + { 1349, 10, 10, 14, 2, -9 }, // 0x73 's' U+0073 + { 1362, 11, 14, 14, 1, -13 }, // 0x74 't' U+0074 + { 1382, 12, 10, 14, 1, -9 }, // 0x75 'u' U+0075 + { 1397, 13, 10, 14, 1, -9 }, // 0x76 'v' U+0076 + { 1414, 13, 10, 14, 1, -9 }, // 0x77 'w' U+0077 + { 1431, 12, 10, 14, 1, -9 }, // 0x78 'x' U+0078 + { 1446, 12, 14, 14, 1, -9 }, // 0x79 'y' U+0079 + { 1467, 9, 10, 14, 3, -9 }, // 0x7a 'z' U+007A + { 1479, 6, 18, 14, 4, -14 }, // 0x7b '{' U+007B + { 1493, 1, 18, 14, 7, -14 }, // 0x7c '|' U+007C + { 1496, 6, 18, 14, 5, -14 }, // 0x7d '}' U+007D + { 1510, 10, 3, 14, 2, -7 }, // 0x7e '~' U+007E + { 1514, 14, 19, 14, 0, -16 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 1548, 1, 1, 14, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 1549, 3, 15, 14, 6, -10 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 1555, 8, 15, 14, 3, -14 }, // 0x82 'CENT SIGN' U+00A2 + { 1570, 10, 14, 14, 2, -13 }, // 0x83 'POUND SIGN' U+00A3 + { 1588, 12, 14, 14, 1, -13 }, // 0x84 'EURO SIGN *' U+20AC + { 1609, 12, 14, 14, 1, -13 }, // 0x85 'YEN SIGN' U+00A5 + { 1630, 10, 18, 14, 2, -17 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 1653, 11, 15, 14, 2, -13 }, // 0x87 'SECTION SIGN' U+00A7 + { 1674, 10, 15, 14, 2, -14 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 1693, 14, 14, 14, 0, -13 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 1718, 7, 7, 14, 4, -13 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 1725, 11, 10, 14, 2, -9 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 1739, 11, 7, 14, 2, -10 }, // 0x8c 'NOT SIGN' U+00AC + { 1749, 11, 1, 14, 2, -6 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 1751, 14, 14, 14, 0, -13 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 1776, 7, 1, 14, 4, -13 }, // 0x8f 'MACRON' U+00AF + { 1777, 7, 7, 14, 4, -14 }, // 0x90 'DEGREE SIGN' U+00B0 + { 1784, 11, 13, 14, 2, -12 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 1802, 6, 9, 14, 4, -14 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 1809, 6, 9, 14, 4, -14 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 1816, 10, 18, 14, 2, -17 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 1839, 12, 15, 14, 1, -9 }, // 0x95 'MICRO SIGN' U+00B5 + { 1862, 11, 16, 14, 2, -14 }, // 0x96 'PILCROW SIGN' U+00B6 + { 1884, 2, 3, 14, 6, -6 }, // 0x97 'MIDDLE DOT' U+00B7 + { 1885, 9, 15, 14, 3, -14 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 1902, 5, 9, 14, 5, -14 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 1908, 7, 7, 14, 4, -13 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 1915, 11, 10, 14, 2, -9 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 1929, 14, 14, 14, 0, -13 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 1954, 14, 10, 14, 0, -9 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 1972, 12, 17, 14, 1, -16 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 1998, 8, 14, 14, 3, -9 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 2012, 14, 19, 14, 0, -18 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 2046, 14, 19, 14, 0, -18 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 2080, 14, 18, 14, 0, -17 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 2112, 14, 17, 14, 0, -16 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 2142, 14, 17, 14, 0, -16 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 2172, 14, 19, 14, 0, -18 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 2206, 14, 14, 14, 0, -13 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 2231, 11, 18, 14, 2, -13 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 2256, 11, 19, 14, 1, -18 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 2283, 11, 19, 14, 1, -18 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 2310, 11, 18, 14, 1, -17 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 2335, 11, 17, 14, 1, -16 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 2359, 9, 19, 14, 3, -18 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 2381, 9, 19, 14, 3, -18 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 2403, 9, 18, 14, 3, -17 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 2424, 9, 17, 14, 3, -16 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 2444, 12, 14, 14, 0, -13 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 2465, 12, 17, 14, 1, -16 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 2491, 12, 19, 14, 1, -18 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 2520, 12, 19, 14, 1, -18 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 2549, 12, 18, 14, 1, -17 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 2576, 12, 17, 14, 1, -16 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 2602, 12, 17, 14, 1, -16 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 2628, 9, 9, 14, 3, -10 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 2639, 12, 16, 14, 1, -14 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 2663, 12, 19, 14, 1, -18 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 2692, 12, 19, 14, 1, -18 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 2721, 12, 18, 14, 1, -17 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 2748, 12, 17, 14, 1, -16 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 2774, 12, 19, 14, 1, -18 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 2803, 11, 14, 14, 1, -13 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 2823, 11, 15, 14, 1, -14 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 2844, 11, 15, 14, 2, -14 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 2865, 11, 15, 14, 2, -14 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 2886, 11, 15, 14, 2, -14 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 2907, 11, 14, 14, 2, -13 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 2927, 11, 14, 14, 2, -13 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 2947, 11, 16, 14, 2, -15 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 2969, 14, 10, 14, 0, -9 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 2987, 11, 14, 14, 2, -9 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 3007, 10, 15, 14, 2, -14 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 3026, 10, 15, 14, 2, -14 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 3045, 10, 15, 14, 2, -14 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 3064, 10, 14, 14, 2, -13 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 3082, 10, 15, 14, 2, -14 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 3101, 10, 15, 14, 2, -14 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 3120, 10, 15, 14, 2, -14 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 3139, 10, 14, 14, 2, -13 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 3157, 11, 15, 14, 2, -14 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 3178, 12, 14, 14, 1, -13 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 3199, 11, 15, 14, 2, -14 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 3220, 11, 15, 14, 2, -14 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 3241, 11, 15, 14, 2, -14 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 3262, 11, 14, 14, 2, -13 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 3282, 11, 14, 14, 2, -13 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 3302, 11, 12, 14, 2, -12 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 3319, 12, 12, 14, 1, -10 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 3337, 12, 15, 14, 1, -14 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 3360, 12, 15, 14, 1, -14 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 3383, 12, 15, 14, 1, -14 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 3406, 12, 14, 14, 1, -13 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 3427, 12, 19, 14, 1, -14 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 3456, 12, 18, 14, 1, -13 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 3483, 12, 18, 14, 1, -13 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeMono12pt8b PROGMEM = { + (uint8_t *)FreeMono12pt8bBitmaps, + (GFXglyph *)FreeMono12pt8bGlyphs, + 0x20, 0xDF, 26 }; + +// Approx. 4861 bytes diff --git a/RX_FSK/src/fonts/FreeMono9pt7b.h b/RX_FSK/src/fonts/FreeMono9pt7b.h new file mode 100644 index 0000000..c82d786 --- /dev/null +++ b/RX_FSK/src/fonts/FreeMono9pt7b.h @@ -0,0 +1,176 @@ +const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { + 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, + 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, + 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, + 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, + 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, + 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, + 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, + 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, + 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, + 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, + 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, + 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, + 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, + 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, + 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, + 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, + 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, + 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, + 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, + 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, + 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, + 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, + 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, + 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, + 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, + 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, + 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, + 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, + 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, + 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, + 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, + 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, + 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, + 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, + 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, + 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, + 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, + 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, + 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, + 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, + 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, + 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, + 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, + 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, + 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, + 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, + 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, + 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, + 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, + 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, + 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, + 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, + 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, + 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, + 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, + 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, + 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, + 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, + 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, + 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, + 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, + 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, + 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, + 0x2C, 0x61, 0x24, 0x30 }; + +const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 2, 11, 11, 4, -10 }, // 0x21 '!' + { 3, 6, 5, 11, 2, -10 }, // 0x22 '"' + { 7, 7, 12, 11, 2, -10 }, // 0x23 '#' + { 18, 8, 12, 11, 1, -10 }, // 0x24 '$' + { 30, 7, 11, 11, 2, -10 }, // 0x25 '%' + { 40, 7, 10, 11, 2, -9 }, // 0x26 '&' + { 49, 3, 5, 11, 4, -10 }, // 0x27 ''' + { 51, 2, 13, 11, 5, -10 }, // 0x28 '(' + { 55, 2, 13, 11, 4, -10 }, // 0x29 ')' + { 59, 7, 7, 11, 2, -10 }, // 0x2A '*' + { 66, 7, 7, 11, 2, -8 }, // 0x2B '+' + { 73, 3, 5, 11, 2, -1 }, // 0x2C ',' + { 75, 9, 1, 11, 1, -5 }, // 0x2D '-' + { 77, 2, 2, 11, 4, -1 }, // 0x2E '.' + { 78, 7, 13, 11, 2, -11 }, // 0x2F '/' + { 90, 7, 11, 11, 2, -10 }, // 0x30 '0' + { 100, 5, 11, 11, 3, -10 }, // 0x31 '1' + { 107, 7, 11, 11, 2, -10 }, // 0x32 '2' + { 117, 8, 11, 11, 1, -10 }, // 0x33 '3' + { 128, 6, 11, 11, 3, -10 }, // 0x34 '4' + { 137, 7, 11, 11, 2, -10 }, // 0x35 '5' + { 147, 7, 11, 11, 2, -10 }, // 0x36 '6' + { 157, 7, 11, 11, 2, -10 }, // 0x37 '7' + { 167, 7, 11, 11, 2, -10 }, // 0x38 '8' + { 177, 7, 11, 11, 2, -10 }, // 0x39 '9' + { 187, 2, 8, 11, 4, -7 }, // 0x3A ':' + { 189, 3, 11, 11, 3, -7 }, // 0x3B ';' + { 194, 8, 8, 11, 1, -8 }, // 0x3C '<' + { 202, 9, 4, 11, 1, -6 }, // 0x3D '=' + { 207, 9, 8, 11, 1, -8 }, // 0x3E '>' + { 216, 7, 10, 11, 2, -9 }, // 0x3F '?' + { 225, 8, 12, 11, 2, -10 }, // 0x40 '@' + { 237, 11, 10, 11, 0, -9 }, // 0x41 'A' + { 251, 9, 10, 11, 1, -9 }, // 0x42 'B' + { 263, 9, 10, 11, 1, -9 }, // 0x43 'C' + { 275, 9, 10, 11, 1, -9 }, // 0x44 'D' + { 287, 9, 10, 11, 1, -9 }, // 0x45 'E' + { 299, 9, 10, 11, 1, -9 }, // 0x46 'F' + { 311, 10, 10, 11, 1, -9 }, // 0x47 'G' + { 324, 9, 10, 11, 1, -9 }, // 0x48 'H' + { 336, 5, 10, 11, 3, -9 }, // 0x49 'I' + { 343, 8, 10, 11, 2, -9 }, // 0x4A 'J' + { 353, 9, 10, 11, 1, -9 }, // 0x4B 'K' + { 365, 8, 10, 11, 2, -9 }, // 0x4C 'L' + { 375, 11, 10, 11, 0, -9 }, // 0x4D 'M' + { 389, 9, 10, 11, 1, -9 }, // 0x4E 'N' + { 401, 9, 10, 11, 1, -9 }, // 0x4F 'O' + { 413, 8, 10, 11, 1, -9 }, // 0x50 'P' + { 423, 9, 13, 11, 1, -9 }, // 0x51 'Q' + { 438, 9, 10, 11, 1, -9 }, // 0x52 'R' + { 450, 7, 10, 11, 2, -9 }, // 0x53 'S' + { 459, 9, 10, 11, 1, -9 }, // 0x54 'T' + { 471, 9, 10, 11, 1, -9 }, // 0x55 'U' + { 483, 11, 10, 11, 0, -9 }, // 0x56 'V' + { 497, 11, 10, 11, 0, -9 }, // 0x57 'W' + { 511, 9, 10, 11, 1, -9 }, // 0x58 'X' + { 523, 9, 10, 11, 1, -9 }, // 0x59 'Y' + { 535, 7, 10, 11, 2, -9 }, // 0x5A 'Z' + { 544, 2, 13, 11, 5, -10 }, // 0x5B '[' + { 548, 7, 13, 11, 2, -11 }, // 0x5C '\' + { 560, 2, 13, 11, 4, -10 }, // 0x5D ']' + { 564, 7, 5, 11, 2, -10 }, // 0x5E '^' + { 569, 11, 1, 11, 0, 2 }, // 0x5F '_' + { 571, 3, 3, 11, 3, -11 }, // 0x60 '`' + { 573, 9, 8, 11, 1, -7 }, // 0x61 'a' + { 582, 9, 11, 11, 1, -10 }, // 0x62 'b' + { 595, 7, 8, 11, 2, -7 }, // 0x63 'c' + { 602, 9, 11, 11, 1, -10 }, // 0x64 'd' + { 615, 8, 8, 11, 1, -7 }, // 0x65 'e' + { 623, 6, 11, 11, 3, -10 }, // 0x66 'f' + { 632, 9, 11, 11, 1, -7 }, // 0x67 'g' + { 645, 9, 11, 11, 1, -10 }, // 0x68 'h' + { 658, 7, 10, 11, 2, -9 }, // 0x69 'i' + { 667, 5, 13, 11, 3, -9 }, // 0x6A 'j' + { 676, 8, 11, 11, 2, -10 }, // 0x6B 'k' + { 687, 7, 11, 11, 2, -10 }, // 0x6C 'l' + { 697, 9, 8, 11, 1, -7 }, // 0x6D 'm' + { 706, 9, 8, 11, 1, -7 }, // 0x6E 'n' + { 715, 9, 8, 11, 1, -7 }, // 0x6F 'o' + { 724, 9, 11, 11, 1, -7 }, // 0x70 'p' + { 737, 9, 11, 11, 1, -7 }, // 0x71 'q' + { 750, 7, 8, 11, 3, -7 }, // 0x72 'r' + { 757, 7, 8, 11, 2, -7 }, // 0x73 's' + { 764, 8, 10, 11, 2, -9 }, // 0x74 't' + { 774, 8, 8, 11, 1, -7 }, // 0x75 'u' + { 782, 9, 8, 11, 1, -7 }, // 0x76 'v' + { 791, 9, 8, 11, 1, -7 }, // 0x77 'w' + { 800, 9, 8, 11, 1, -7 }, // 0x78 'x' + { 809, 9, 11, 11, 1, -7 }, // 0x79 'y' + { 822, 7, 8, 11, 2, -7 }, // 0x7A 'z' + { 829, 3, 13, 11, 4, -10 }, // 0x7B '{' + { 834, 1, 13, 11, 5, -10 }, // 0x7C '|' + { 836, 3, 13, 11, 4, -10 }, // 0x7D '}' + { 841, 7, 3, 11, 2, -6 } }; // 0x7E '~' + +const GFXfont FreeMono9pt7b PROGMEM = { + (uint8_t *)FreeMono9pt7bBitmaps, + (GFXglyph *)FreeMono9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1516 bytes diff --git a/RX_FSK/src/fonts/FreeMono9pt8b.h b/RX_FSK/src/fonts/FreeMono9pt8b.h new file mode 100644 index 0000000..870cc1c --- /dev/null +++ b/RX_FSK/src/fonts/FreeMono9pt8b.h @@ -0,0 +1,374 @@ +const uint8_t FreeMono9pt8bBitmaps[] PROGMEM = { + 0x00, 0x55, 0x54, 0x1C, 0xDE, 0xF7, 0x39, 0x80, 0x20, 0x50, 0xA1, 0x42, + 0x9F, 0xCA, 0x14, 0xFE, 0x91, 0x22, 0x44, 0x80, 0x10, 0x21, 0xB4, 0x08, + 0x08, 0x0F, 0x01, 0x83, 0x0B, 0xE0, 0x81, 0x02, 0x00, 0x71, 0x22, 0x44, + 0x86, 0x23, 0xB8, 0x0E, 0x22, 0x44, 0x70, 0x78, 0x81, 0x02, 0x06, 0x12, + 0xA6, 0x44, 0x76, 0xD9, 0x24, 0x25, 0x25, 0x24, 0x49, 0x12, 0x91, 0x24, + 0x9B, 0x49, 0x48, 0x10, 0x22, 0x4B, 0xE2, 0x89, 0x00, 0x00, 0x08, 0x04, + 0x02, 0x01, 0x00, 0x83, 0xF8, 0x20, 0x10, 0x08, 0x00, 0x37, 0x64, 0x40, + 0x7F, 0x00, 0xFC, 0x02, 0x08, 0x10, 0x40, 0x82, 0x04, 0x10, 0x20, 0x41, + 0x02, 0x08, 0x00, 0x38, 0x8A, 0x14, 0x18, 0x30, 0x60, 0xC1, 0x82, 0x89, + 0xE0, 0x30, 0xA2, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, 0xF8, 0x79, + 0x0A, 0x10, 0x20, 0x41, 0x04, 0x10, 0x41, 0x07, 0xF8, 0x79, 0x08, 0x08, + 0x20, 0xC3, 0x80, 0x81, 0x02, 0x07, 0xF0, 0x0C, 0x28, 0x91, 0x24, 0x48, + 0xA1, 0x7F, 0x04, 0x08, 0x78, 0x7D, 0x02, 0x04, 0x07, 0xC0, 0x40, 0x81, + 0x03, 0x09, 0xF0, 0x1E, 0x41, 0x02, 0x08, 0x96, 0xB0, 0xC1, 0x42, 0x84, + 0xF0, 0xFF, 0x04, 0x10, 0x20, 0x41, 0x02, 0x04, 0x10, 0x20, 0x40, 0x79, + 0x0A, 0x0C, 0x14, 0x47, 0x31, 0x41, 0x83, 0x09, 0xF0, 0x38, 0x8A, 0x0C, + 0x18, 0x28, 0xCE, 0x81, 0x04, 0x09, 0xE0, 0x1F, 0x00, 0x3F, 0x03, 0x30, + 0x03, 0x76, 0x44, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, + 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, + 0xC0, 0x80, 0xFD, 0x04, 0x08, 0x10, 0xC2, 0x04, 0x00, 0x10, 0x70, 0x78, + 0x8A, 0x14, 0x29, 0xD4, 0xA9, 0x4A, 0x89, 0x01, 0x01, 0xE0, 0x3C, 0x01, + 0x40, 0x48, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, + 0xFE, 0x20, 0x90, 0x48, 0x27, 0xE2, 0x09, 0x02, 0x81, 0x41, 0x7F, 0x00, + 0x3F, 0x20, 0xA0, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x41, 0x1F, 0x00, + 0xFC, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0xFC, 0xFF, 0x41, + 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0xFF, 0x41, 0x40, 0x40, + 0x78, 0x48, 0x40, 0x40, 0x40, 0xF8, 0x3F, 0x20, 0xA0, 0x10, 0x08, 0x04, + 0x3E, 0x05, 0x02, 0x41, 0x1F, 0x80, 0xE3, 0x20, 0x90, 0x48, 0x27, 0xF2, + 0x09, 0x04, 0x82, 0x41, 0x73, 0xC0, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, + 0x08, 0x11, 0xFC, 0x3F, 0x02, 0x01, 0x00, 0x80, 0x40, 0x22, 0x11, 0x08, + 0x84, 0x3C, 0x00, 0xF3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, 0x08, 0x84, + 0x42, 0x78, 0xC0, 0xF8, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x82, 0x41, + 0x20, 0xFF, 0xC0, 0xE0, 0xCC, 0x29, 0x45, 0x29, 0x24, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5E, 0x3C, 0x61, 0xCC, 0x23, 0x08, 0xA2, 0x24, 0x89, + 0x22, 0x28, 0x8A, 0x21, 0x9C, 0x20, 0x3E, 0x20, 0xA0, 0x50, 0x18, 0x0C, + 0x06, 0x03, 0x02, 0x41, 0x1F, 0x00, 0xFE, 0x41, 0x41, 0x41, 0x42, 0x7C, + 0x40, 0x40, 0x40, 0xF8, 0x3E, 0x20, 0xA0, 0x50, 0x18, 0x0C, 0x06, 0x03, + 0x02, 0x41, 0x1B, 0x06, 0x07, 0xF0, 0xFE, 0x10, 0x44, 0x11, 0x04, 0x42, + 0x1F, 0x04, 0x21, 0x08, 0x41, 0x3C, 0x30, 0x7F, 0x06, 0x0C, 0x07, 0x01, + 0x80, 0x81, 0x83, 0xF8, 0xFF, 0xC4, 0x42, 0x01, 0x00, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, + 0x82, 0x41, 0x1F, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x82, 0x10, 0x22, + 0x04, 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xD0, 0x14, 0x49, 0x32, 0x4A, + 0x92, 0xA3, 0x28, 0xCA, 0x31, 0x88, 0x60, 0xE3, 0xA1, 0x08, 0x82, 0x80, + 0x80, 0xC0, 0x50, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA1, 0x08, 0x82, 0x81, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x41, 0x04, + 0x10, 0xA1, 0x83, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x4E, 0x81, 0x01, 0x02, + 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xE4, 0x92, 0x49, + 0x24, 0x9E, 0x10, 0x51, 0x24, 0x28, 0x20, 0xFF, 0xE0, 0x11, 0x80, 0x1C, + 0x31, 0x00, 0x83, 0xC6, 0x24, 0x12, 0x08, 0xFB, 0xE0, 0x08, 0x02, 0x00, + 0xB8, 0x31, 0x88, 0x22, 0x04, 0x81, 0x20, 0x48, 0x2F, 0xF0, 0x38, 0x46, + 0x82, 0x80, 0x80, 0x80, 0x81, 0x7E, 0x03, 0x00, 0x40, 0x10, 0x64, 0x67, + 0x20, 0x48, 0x12, 0x04, 0x81, 0x10, 0xC3, 0xD8, 0x1C, 0x62, 0x81, 0x81, + 0xFE, 0x80, 0x40, 0x3F, 0x1F, 0x20, 0x20, 0x7C, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0xFE, 0x39, 0xA3, 0xA0, 0x50, 0x28, 0x14, 0x09, 0x0C, 0x7A, + 0x01, 0x01, 0x07, 0x80, 0xC0, 0x20, 0x10, 0x0B, 0x86, 0x22, 0x09, 0x04, + 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x20, 0x03, 0x81, 0x02, 0x04, 0x08, + 0x10, 0x23, 0xF8, 0x10, 0x81, 0xF0, 0x84, 0x21, 0x08, 0x42, 0x10, 0xFC, + 0xC0, 0x20, 0x10, 0x08, 0xC4, 0x42, 0x41, 0x40, 0x50, 0x44, 0x21, 0x31, + 0xE0, 0xF0, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, 0xF8, 0x59, + 0x8C, 0xD1, 0x11, 0x22, 0x24, 0x44, 0x88, 0x91, 0x17, 0x33, 0x5C, 0x31, + 0x10, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x1C, 0x31, 0x10, 0x50, 0x28, + 0x14, 0x09, 0x04, 0x7C, 0x6E, 0x0C, 0x62, 0x08, 0x81, 0x20, 0x48, 0x23, + 0x08, 0xBC, 0x20, 0x08, 0x07, 0x00, 0x1D, 0x98, 0xC8, 0x12, 0x04, 0x81, + 0x20, 0x44, 0x30, 0xF4, 0x01, 0x00, 0x40, 0x38, 0xC6, 0x59, 0x20, 0x40, + 0x40, 0x40, 0x40, 0xFC, 0x39, 0x8E, 0x03, 0x01, 0xC0, 0x60, 0xFE, 0x40, + 0x40, 0xFC, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x3F, 0xC3, 0x20, 0x90, + 0x48, 0x24, 0x12, 0x09, 0x0C, 0x7B, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x21, + 0x20, 0x50, 0x10, 0xC1, 0xC0, 0xA2, 0x49, 0x25, 0x52, 0xB1, 0x98, 0x44, + 0x63, 0x20, 0x88, 0x83, 0x81, 0x81, 0x21, 0x09, 0xC7, 0xC3, 0x20, 0x90, + 0x44, 0x42, 0x20, 0xA0, 0x50, 0x10, 0x08, 0x08, 0x1E, 0x00, 0xFF, 0x0A, + 0x20, 0x81, 0x04, 0x10, 0xFF, 0x12, 0x22, 0x22, 0xC2, 0x22, 0x22, 0x30, + 0xFF, 0xF8, 0xC1, 0x08, 0x42, 0x10, 0x64, 0x21, 0x08, 0x44, 0x00, 0xE2, + 0x38, 0xFF, 0xF0, 0x06, 0xFC, 0xD0, 0x58, 0x0B, 0x01, 0x60, 0xCC, 0x21, + 0x84, 0x30, 0x06, 0x10, 0xC7, 0x18, 0x03, 0xFF, 0xC0, 0x00, 0xC0, 0x55, + 0x54, 0x10, 0x43, 0x91, 0x82, 0x08, 0x11, 0x38, 0x41, 0x00, 0x3C, 0x20, + 0x20, 0x20, 0xF8, 0x20, 0x20, 0x20, 0x21, 0x7F, 0x3F, 0xA0, 0x90, 0x10, + 0x0F, 0xE7, 0xE2, 0x00, 0x80, 0x20, 0x8F, 0x80, 0xE3, 0xA1, 0x08, 0x82, + 0x81, 0x83, 0xF8, 0x20, 0x7C, 0x08, 0x1F, 0x00, 0x6C, 0x20, 0x03, 0xF8, + 0x30, 0x60, 0x38, 0x0C, 0x04, 0x0C, 0x1F, 0xC0, 0x1F, 0x10, 0x88, 0x4C, + 0x09, 0x82, 0x30, 0x84, 0x31, 0x07, 0x01, 0x10, 0x8F, 0x80, 0x00, 0xD8, + 0x40, 0x03, 0x98, 0xE0, 0x30, 0x1C, 0x06, 0x0F, 0xE0, 0x3F, 0x08, 0x12, + 0x3D, 0x48, 0x9A, 0x03, 0x40, 0x64, 0x4A, 0x72, 0x40, 0x87, 0xE0, 0xF0, + 0xBD, 0x2F, 0x80, 0x00, 0x08, 0x88, 0x88, 0xCC, 0x43, 0x10, 0x44, 0x11, + 0xFF, 0x80, 0x40, 0x20, 0x10, 0x00, 0x7F, 0x00, 0x3F, 0x08, 0x12, 0x79, + 0x49, 0x19, 0x23, 0x3C, 0x64, 0x8A, 0xCA, 0x40, 0x87, 0xE0, 0xF8, 0xF4, + 0x63, 0x17, 0x00, 0x00, 0x04, 0x02, 0x01, 0x0F, 0xF0, 0x40, 0x20, 0x10, + 0x00, 0x7F, 0x80, 0x79, 0x12, 0x4F, 0x71, 0x13, 0x1F, 0x04, 0xD0, 0x40, + 0x0F, 0xD0, 0xA2, 0x04, 0x10, 0x41, 0x0A, 0x18, 0x3F, 0xC0, 0xC3, 0x20, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x0C, 0xDB, 0x50, 0x20, 0x10, 0x08, 0x00, + 0x3F, 0x6A, 0xCA, 0xCA, 0x4A, 0x7A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x3B, + 0x50, 0x00, 0xD8, 0x40, 0x0F, 0xF0, 0xA2, 0x08, 0x10, 0x41, 0x0F, 0xF0, + 0x62, 0x22, 0x27, 0xF4, 0x63, 0x17, 0x00, 0x00, 0x22, 0x18, 0x86, 0x61, + 0x11, 0x11, 0x11, 0x10, 0x3F, 0xC8, 0x8A, 0x11, 0x42, 0x08, 0x71, 0x0A, + 0x21, 0x02, 0x21, 0x44, 0x27, 0xFC, 0x31, 0x92, 0x98, 0x46, 0x11, 0x87, + 0xA1, 0x04, 0xC1, 0xEF, 0x22, 0x11, 0x00, 0x1C, 0x74, 0x21, 0x10, 0x50, + 0x30, 0x08, 0x04, 0x02, 0x01, 0x03, 0xE0, 0x10, 0xE0, 0x00, 0x10, 0xC4, + 0x20, 0x82, 0x17, 0xC0, 0x10, 0x01, 0x00, 0x10, 0x00, 0x03, 0xC0, 0x14, + 0x04, 0x80, 0x90, 0x11, 0x04, 0x20, 0xFC, 0x10, 0x44, 0x09, 0xE3, 0xC0, + 0x02, 0x00, 0x80, 0x20, 0x00, 0x03, 0xC0, 0x14, 0x04, 0x80, 0x90, 0x11, + 0x04, 0x20, 0xFC, 0x10, 0x44, 0x09, 0xE3, 0xC0, 0x04, 0x01, 0x40, 0x44, + 0x00, 0x03, 0xC0, 0x14, 0x04, 0x80, 0x90, 0x11, 0x04, 0x20, 0xFC, 0x10, + 0x44, 0x09, 0xE3, 0xC0, 0x08, 0x02, 0xE0, 0x00, 0x1E, 0x00, 0xA0, 0x24, + 0x04, 0x80, 0x88, 0x21, 0x07, 0xE0, 0x82, 0x20, 0x4F, 0x1E, 0x11, 0x02, + 0x20, 0x00, 0x1E, 0x00, 0xA0, 0x24, 0x04, 0x80, 0x88, 0x21, 0x07, 0xE0, + 0x82, 0x20, 0x4F, 0x1E, 0x0E, 0x02, 0x40, 0x30, 0x00, 0x03, 0xC0, 0x14, + 0x04, 0x80, 0x90, 0x11, 0x04, 0x20, 0xFC, 0x10, 0x44, 0x09, 0xE3, 0xC0, + 0x3F, 0xC2, 0x88, 0x51, 0x0A, 0x02, 0x70, 0x4A, 0x0F, 0x01, 0x21, 0x44, + 0x3D, 0xFC, 0x3F, 0x20, 0xA0, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x41, + 0x1B, 0x02, 0x00, 0x81, 0xC0, 0x20, 0x10, 0x08, 0x00, 0xFF, 0x41, 0x41, + 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0x04, 0x08, 0x10, 0x00, 0xFF, + 0x41, 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0x00, 0x1C, 0x22, + 0x00, 0xFF, 0x41, 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, 0x22, + 0x66, 0x00, 0xFF, 0x41, 0x41, 0x40, 0x78, 0x48, 0x40, 0x41, 0x41, 0xFF, + 0x20, 0x20, 0x00, 0x0F, 0xE2, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, + 0xC0, 0x04, 0x10, 0x40, 0x0F, 0xE2, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, + 0x1F, 0xC0, 0x10, 0x51, 0x10, 0x0F, 0xE2, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x81, 0x1F, 0xC0, 0x44, 0x88, 0x07, 0xF1, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x8F, 0xE0, 0x7E, 0x10, 0x88, 0x24, 0x1F, 0xC9, 0x04, 0x82, 0x41, + 0x21, 0x3F, 0x00, 0x19, 0x09, 0x80, 0x01, 0x87, 0x30, 0x8C, 0x22, 0x88, + 0x92, 0x24, 0x88, 0xA2, 0x28, 0x86, 0x70, 0x80, 0x20, 0x0C, 0x00, 0x00, + 0x03, 0xE2, 0x0A, 0x05, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x24, 0x11, 0xF0, + 0x04, 0x04, 0x04, 0x00, 0x03, 0xE2, 0x0A, 0x05, 0x01, 0x80, 0xC0, 0x60, + 0x30, 0x24, 0x11, 0xF0, 0x08, 0x0A, 0x08, 0x80, 0x03, 0xE2, 0x0A, 0x05, + 0x01, 0x80, 0xC0, 0x60, 0x30, 0x24, 0x11, 0xF0, 0x10, 0x17, 0x00, 0x07, + 0xC4, 0x14, 0x0A, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x48, 0x23, 0xE0, 0x22, + 0x11, 0x00, 0x07, 0xC4, 0x14, 0x0A, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x48, + 0x23, 0xE0, 0x84, 0x90, 0xC1, 0x84, 0x90, 0x80, 0x00, 0x9F, 0x90, 0x50, + 0x68, 0x4C, 0x46, 0x43, 0x21, 0xA1, 0x20, 0xAD, 0x81, 0x00, 0x20, 0x0C, + 0x00, 0x00, 0x0E, 0x3A, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0x48, 0x24, + 0x11, 0xF0, 0x04, 0x04, 0x04, 0x00, 0x0E, 0x3A, 0x09, 0x04, 0x82, 0x41, + 0x20, 0x90, 0x48, 0x24, 0x11, 0xF0, 0x08, 0x0A, 0x08, 0x80, 0x0E, 0x3A, + 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0x48, 0x24, 0x11, 0xF0, 0x22, 0x11, + 0x00, 0x1C, 0x74, 0x12, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0x48, 0x23, + 0xE0, 0x04, 0x04, 0x04, 0x00, 0x0E, 0x3A, 0x10, 0x88, 0x28, 0x18, 0x04, + 0x02, 0x01, 0x00, 0x81, 0xF0, 0xF8, 0x40, 0x7C, 0x43, 0x41, 0x41, 0x41, + 0x7E, 0x40, 0xF8, 0x1C, 0x11, 0x08, 0x84, 0x42, 0xC1, 0x18, 0x82, 0x41, + 0x20, 0x94, 0x79, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x01, 0xC3, 0x10, 0x08, + 0x3C, 0x62, 0x41, 0x20, 0x8F, 0xB0, 0x00, 0x06, 0x04, 0x00, 0x01, 0xC3, + 0x10, 0x08, 0x3C, 0x62, 0x41, 0x20, 0x8F, 0xB0, 0x18, 0x12, 0x00, 0x03, + 0x86, 0x20, 0x10, 0x78, 0xC4, 0x82, 0x41, 0x1F, 0x60, 0x3E, 0x00, 0x07, + 0x0C, 0x40, 0x20, 0xF1, 0x89, 0x04, 0x82, 0x3E, 0xC0, 0x22, 0x33, 0x00, + 0x03, 0x86, 0x20, 0x10, 0x78, 0xC4, 0x82, 0x41, 0x1F, 0x60, 0x1C, 0x12, + 0x05, 0x01, 0x01, 0xC3, 0x10, 0x08, 0x3C, 0x62, 0x41, 0x20, 0x8F, 0xB0, + 0x39, 0x91, 0x90, 0x44, 0xF1, 0x47, 0xA1, 0x08, 0x41, 0xFF, 0x38, 0x46, + 0x82, 0x80, 0x80, 0x80, 0x81, 0x6E, 0x10, 0x08, 0x38, 0x00, 0x10, 0x08, + 0x00, 0x1C, 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x00, 0x04, 0x18, + 0x00, 0x1C, 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x08, 0x36, 0x00, + 0x1C, 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x22, 0x22, 0x00, 0x1C, + 0x62, 0x81, 0x81, 0xFE, 0x80, 0x40, 0x3F, 0x40, 0x40, 0x40, 0x07, 0x02, + 0x04, 0x08, 0x10, 0x20, 0x47, 0xF0, 0x00, 0x30, 0x80, 0x07, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x47, 0xF0, 0x30, 0x90, 0x03, 0x81, 0x02, 0x04, 0x08, + 0x10, 0x23, 0xF8, 0x45, 0x98, 0x03, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0x36, 0x0E, 0x00, 0x83, 0xC6, 0x32, 0x0A, 0x05, 0x02, 0x81, 0x20, + 0x8F, 0x80, 0x3E, 0x00, 0x17, 0x0C, 0x44, 0x12, 0x09, 0x04, 0x82, 0x41, + 0x71, 0xC0, 0x00, 0x08, 0x02, 0x00, 0x01, 0xC3, 0x11, 0x05, 0x02, 0x81, + 0x40, 0x90, 0x47, 0xC0, 0x00, 0x02, 0x06, 0x00, 0x01, 0xC3, 0x11, 0x05, + 0x02, 0x81, 0x40, 0x90, 0x47, 0xC0, 0x18, 0x13, 0x00, 0x03, 0x86, 0x22, + 0x0A, 0x05, 0x02, 0x81, 0x20, 0x8F, 0x80, 0x3E, 0x00, 0x07, 0x0C, 0x44, + 0x14, 0x0A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x22, 0x11, 0x00, 0x03, 0x86, + 0x22, 0x0A, 0x05, 0x02, 0x81, 0x20, 0x8F, 0x80, 0x08, 0x04, 0x00, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x08, 0x04, 0x00, 0x1D, 0x31, 0x10, 0xD0, + 0xA8, 0x94, 0x89, 0x84, 0xEC, 0x88, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0C, + 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0xC7, 0xB0, 0x04, 0x04, 0x04, + 0x00, 0x0C, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0x90, 0xC7, 0xB0, 0x18, + 0x12, 0x00, 0x18, 0x64, 0x12, 0x09, 0x04, 0x82, 0x41, 0x21, 0x8F, 0x60, + 0x22, 0x33, 0x00, 0x18, 0x64, 0x12, 0x09, 0x04, 0x82, 0x41, 0x21, 0x8F, + 0x60, 0x02, 0x02, 0x02, 0x00, 0x0C, 0x32, 0x09, 0x04, 0x44, 0x22, 0x0A, + 0x05, 0x01, 0x00, 0x80, 0x81, 0xE0, 0xE0, 0x08, 0x02, 0x00, 0xB8, 0x31, + 0x88, 0x22, 0x04, 0x81, 0x20, 0x8C, 0x22, 0xF0, 0x80, 0x20, 0x1C, 0x00, + 0x22, 0x11, 0x00, 0x18, 0x64, 0x12, 0x08, 0x88, 0x44, 0x14, 0x0A, 0x02, + 0x01, 0x01, 0x03, 0xC0 }; + +const GFXglyph FreeMono9pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 11, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 2, 11, 11, 4, -10 }, // 0x21 '!' U+0021 + { 4, 5, 5, 11, 3, -10 }, // 0x22 '"' U+0022 + { 8, 7, 13, 11, 2, -11 }, // 0x23 '#' U+0023 + { 20, 7, 14, 11, 2, -11 }, // 0x24 '$' U+0024 + { 33, 7, 11, 11, 2, -10 }, // 0x25 '%' U+0025 + { 43, 7, 9, 11, 2, -8 }, // 0x26 '&' U+0026 + { 51, 3, 5, 11, 4, -10 }, // 0x27 ''' U+0027 + { 53, 3, 13, 11, 5, -10 }, // 0x28 '(' U+0028 + { 58, 3, 13, 11, 3, -10 }, // 0x29 ')' U+0029 + { 63, 7, 7, 11, 2, -10 }, // 0x2a '*' U+002A + { 70, 9, 9, 11, 1, -9 }, // 0x2b '+' U+002B + { 81, 4, 6, 11, 2, -2 }, // 0x2c ',' U+002C + { 84, 9, 1, 11, 1, -5 }, // 0x2d '-' U+002D + { 86, 3, 2, 11, 4, -1 }, // 0x2e '.' U+002E + { 87, 7, 13, 11, 2, -11 }, // 0x2f '/' U+002F + { 99, 7, 11, 11, 2, -10 }, // 0x30 '0' U+0030 + { 109, 7, 11, 11, 2, -10 }, // 0x31 '1' U+0031 + { 119, 7, 11, 11, 2, -10 }, // 0x32 '2' U+0032 + { 129, 7, 11, 11, 2, -10 }, // 0x33 '3' U+0033 + { 139, 7, 11, 11, 2, -10 }, // 0x34 '4' U+0034 + { 149, 7, 11, 11, 2, -10 }, // 0x35 '5' U+0035 + { 159, 7, 11, 11, 2, -10 }, // 0x36 '6' U+0036 + { 169, 7, 11, 11, 2, -10 }, // 0x37 '7' U+0037 + { 179, 7, 11, 11, 2, -10 }, // 0x38 '8' U+0038 + { 189, 7, 11, 11, 2, -10 }, // 0x39 '9' U+0039 + { 199, 3, 8, 11, 4, -7 }, // 0x3a ':' U+003A + { 202, 4, 11, 11, 2, -7 }, // 0x3b ';' U+003B + { 208, 8, 8, 11, 1, -8 }, // 0x3c '<' U+003C + { 216, 9, 4, 11, 1, -6 }, // 0x3d '=' U+003D + { 221, 9, 8, 11, 1, -8 }, // 0x3e '>' U+003E + { 230, 7, 10, 11, 2, -9 }, // 0x3f '?' U+003F + { 239, 7, 12, 11, 2, -10 }, // 0x40 '@' U+0040 + { 250, 11, 10, 11, 0, -9 }, // 0x41 'A' U+0041 + { 264, 9, 10, 11, 1, -9 }, // 0x42 'B' U+0042 + { 276, 9, 10, 11, 1, -9 }, // 0x43 'C' U+0043 + { 288, 8, 10, 11, 1, -9 }, // 0x44 'D' U+0044 + { 298, 8, 10, 11, 1, -9 }, // 0x45 'E' U+0045 + { 308, 8, 10, 11, 1, -9 }, // 0x46 'F' U+0046 + { 318, 9, 10, 11, 1, -9 }, // 0x47 'G' U+0047 + { 330, 9, 10, 11, 1, -9 }, // 0x48 'H' U+0048 + { 342, 7, 10, 11, 2, -9 }, // 0x49 'I' U+0049 + { 351, 9, 10, 11, 2, -9 }, // 0x4a 'J' U+004A + { 363, 9, 10, 11, 1, -9 }, // 0x4b 'K' U+004B + { 375, 9, 10, 11, 1, -9 }, // 0x4c 'L' U+004C + { 387, 11, 10, 11, 0, -9 }, // 0x4d 'M' U+004D + { 401, 10, 10, 11, 0, -9 }, // 0x4e 'N' U+004E + { 414, 9, 10, 11, 1, -9 }, // 0x4f 'O' U+004F + { 426, 8, 10, 11, 1, -9 }, // 0x50 'P' U+0050 + { 436, 9, 12, 11, 1, -9 }, // 0x51 'Q' U+0051 + { 450, 10, 10, 11, 1, -9 }, // 0x52 'R' U+0052 + { 463, 7, 10, 11, 2, -9 }, // 0x53 'S' U+0053 + { 472, 9, 10, 11, 1, -9 }, // 0x54 'T' U+0054 + { 484, 9, 10, 11, 1, -9 }, // 0x55 'U' U+0055 + { 496, 11, 10, 11, 0, -9 }, // 0x56 'V' U+0056 + { 510, 10, 10, 11, 0, -9 }, // 0x57 'W' U+0057 + { 523, 9, 10, 11, 1, -9 }, // 0x58 'X' U+0058 + { 535, 9, 10, 11, 1, -9 }, // 0x59 'Y' U+0059 + { 547, 7, 10, 11, 2, -9 }, // 0x5a 'Z' U+005A + { 556, 3, 13, 11, 5, -10 }, // 0x5b '[' U+005B + { 561, 7, 13, 11, 2, -11 }, // 0x5c '\' U+005C + { 573, 3, 13, 11, 3, -10 }, // 0x5d ']' U+005D + { 578, 7, 5, 11, 2, -10 }, // 0x5e '^' U+005E + { 583, 11, 1, 11, 0, 2 }, // 0x5f '_' U+005F + { 585, 3, 3, 11, 3, -11 }, // 0x60 '`' U+0060 + { 587, 9, 8, 11, 1, -7 }, // 0x61 'a' U+0061 + { 596, 10, 11, 11, 0, -10 }, // 0x62 'b' U+0062 + { 610, 8, 8, 11, 2, -7 }, // 0x63 'c' U+0063 + { 618, 10, 11, 11, 1, -10 }, // 0x64 'd' U+0064 + { 632, 8, 8, 11, 1, -7 }, // 0x65 'e' U+0065 + { 640, 8, 11, 11, 2, -10 }, // 0x66 'f' U+0066 + { 651, 9, 11, 11, 1, -7 }, // 0x67 'g' U+0067 + { 664, 9, 11, 11, 1, -10 }, // 0x68 'h' U+0068 + { 677, 7, 11, 11, 2, -10 }, // 0x69 'i' U+0069 + { 687, 5, 14, 11, 3, -10 }, // 0x6a 'j' U+006A + { 696, 9, 11, 11, 1, -10 }, // 0x6b 'k' U+006B + { 709, 7, 11, 11, 2, -10 }, // 0x6c 'l' U+006C + { 719, 11, 8, 11, 0, -7 }, // 0x6d 'm' U+006D + { 730, 9, 8, 11, 1, -7 }, // 0x6e 'n' U+006E + { 739, 9, 8, 11, 1, -7 }, // 0x6f 'o' U+006F + { 748, 10, 11, 11, 0, -7 }, // 0x70 'p' U+0070 + { 762, 10, 11, 11, 1, -7 }, // 0x71 'q' U+0071 + { 776, 8, 8, 11, 2, -7 }, // 0x72 'r' U+0072 + { 784, 7, 8, 11, 2, -7 }, // 0x73 's' U+0073 + { 791, 8, 10, 11, 1, -9 }, // 0x74 't' U+0074 + { 801, 9, 8, 11, 1, -7 }, // 0x75 'u' U+0075 + { 810, 9, 8, 11, 1, -7 }, // 0x76 'v' U+0076 + { 819, 9, 8, 11, 1, -7 }, // 0x77 'w' U+0077 + { 828, 9, 8, 11, 1, -7 }, // 0x78 'x' U+0078 + { 837, 9, 11, 11, 1, -7 }, // 0x79 'y' U+0079 + { 850, 7, 8, 11, 2, -7 }, // 0x7a 'z' U+007A + { 857, 4, 13, 11, 3, -10 }, // 0x7b '{' U+007B + { 864, 1, 13, 11, 5, -10 }, // 0x7c '|' U+007C + { 866, 5, 13, 11, 3, -10 }, // 0x7d '}' U+007D + { 875, 7, 2, 11, 2, -5 }, // 0x7e '~' U+007E + { 877, 11, 14, 11, 0, -11 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 897, 1, 1, 11, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 898, 2, 11, 11, 4, -7 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 901, 6, 11, 11, 2, -10 }, // 0x82 'CENT SIGN' U+00A2 + { 910, 8, 10, 11, 1, -9 }, // 0x83 'POUND SIGN' U+00A3 + { 920, 9, 10, 11, 1, -9 }, // 0x84 'EURO SIGN *' U+20AC + { 932, 9, 10, 11, 1, -9 }, // 0x85 'YEN SIGN' U+00A5 + { 944, 7, 13, 11, 2, -12 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 956, 9, 12, 11, 1, -10 }, // 0x87 'SECTION SIGN' U+00A7 + { 970, 7, 12, 11, 2, -11 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 981, 11, 10, 11, 0, -9 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 995, 5, 5, 11, 3, -9 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 999, 9, 8, 11, 1, -7 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 1008, 9, 5, 11, 1, -7 }, // 0x8c 'NOT SIGN' U+00AC + { 1014, 9, 1, 11, 1, -5 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 1016, 11, 10, 11, 0, -9 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 1030, 5, 1, 11, 3, -10 }, // 0x8f 'MACRON' U+00AF + { 1031, 5, 5, 11, 3, -10 }, // 0x90 'DEGREE SIGN' U+00B0 + { 1035, 9, 10, 11, 1, -9 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 1047, 4, 6, 11, 3, -10 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 1050, 4, 6, 11, 3, -10 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 1053, 7, 14, 11, 2, -13 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 1066, 9, 12, 11, 1, -7 }, // 0x95 'MICRO SIGN' U+00B5 + { 1080, 8, 12, 11, 1, -10 }, // 0x96 'PILCROW SIGN' U+00B6 + { 1092, 2, 2, 11, 4, -4 }, // 0x97 'MIDDLE DOT' U+00B7 + { 1093, 7, 12, 11, 2, -11 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 1104, 4, 6, 11, 3, -10 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 1107, 5, 5, 11, 3, -9 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 1111, 9, 8, 11, 1, -7 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 1120, 11, 10, 11, 0, -9 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 1134, 10, 8, 11, 0, -7 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 1144, 9, 13, 11, 1, -12 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 1159, 6, 11, 11, 2, -7 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 1168, 11, 14, 11, 0, -13 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 1188, 11, 14, 11, 0, -13 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 1208, 11, 14, 11, 0, -13 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 1228, 11, 13, 11, 0, -12 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 1246, 11, 13, 11, 0, -12 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 1264, 11, 14, 11, 0, -13 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 1284, 11, 10, 11, 0, -9 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 1298, 9, 13, 11, 1, -9 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 1313, 8, 14, 11, 1, -13 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 1327, 8, 14, 11, 1, -13 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 1341, 8, 14, 11, 1, -13 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 1355, 8, 13, 11, 1, -12 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 1368, 7, 14, 11, 2, -13 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 1381, 7, 14, 11, 2, -13 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 1394, 7, 14, 11, 2, -13 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 1407, 7, 13, 11, 2, -12 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 1419, 9, 10, 11, 0, -9 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 1431, 10, 13, 11, 0, -12 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 1448, 9, 14, 11, 1, -13 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 1464, 9, 14, 11, 1, -13 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 1480, 9, 14, 11, 1, -13 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 1496, 9, 13, 11, 1, -12 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 1511, 9, 13, 11, 1, -12 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 1526, 7, 6, 11, 2, -7 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 1532, 9, 12, 11, 1, -10 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 1546, 9, 14, 11, 1, -13 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 1562, 9, 14, 11, 1, -13 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 1578, 9, 14, 11, 1, -13 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 1594, 9, 13, 11, 1, -12 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 1609, 9, 14, 11, 1, -13 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 1625, 8, 10, 11, 1, -9 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 1635, 9, 11, 11, 0, -10 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 1648, 9, 12, 11, 1, -11 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 1662, 9, 12, 11, 1, -11 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 1676, 9, 11, 11, 1, -10 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 1689, 9, 10, 11, 1, -9 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 1701, 9, 11, 11, 1, -10 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 1714, 9, 12, 11, 1, -11 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 1728, 10, 8, 11, 0, -7 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 1738, 8, 11, 11, 2, -7 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 1749, 8, 12, 11, 1, -11 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 1761, 8, 12, 11, 1, -11 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 1773, 8, 11, 11, 1, -10 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 1784, 8, 11, 11, 1, -10 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 1795, 7, 12, 11, 2, -11 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 1806, 7, 12, 11, 2, -11 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 1817, 7, 11, 11, 2, -10 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 1827, 7, 11, 11, 2, -10 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 1837, 9, 11, 11, 1, -10 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 1850, 9, 10, 11, 1, -9 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 1862, 9, 12, 11, 1, -11 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 1876, 9, 12, 11, 1, -11 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 1890, 9, 11, 11, 1, -10 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 1903, 9, 10, 11, 1, -9 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 1915, 9, 11, 11, 1, -10 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 1928, 9, 10, 11, 1, -9 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 1940, 9, 9, 11, 1, -7 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 1951, 9, 12, 11, 1, -11 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 1965, 9, 12, 11, 1, -11 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 1979, 9, 11, 11, 1, -10 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 1992, 9, 11, 11, 1, -10 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 2005, 9, 15, 11, 1, -11 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 2022, 10, 14, 11, 0, -10 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 2040, 9, 14, 11, 1, -10 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeMono9pt8b PROGMEM = { + (uint8_t *)FreeMono9pt8bBitmaps, + (GFXglyph *)FreeMono9pt8bGlyphs, + 0x20, 0xDF, 19 }; + +// Approx. 3407 bytes diff --git a/RX_FSK/src/fonts/FreeSans12pt7b.h b/RX_FSK/src/fonts/FreeSans12pt7b.h new file mode 100644 index 0000000..9ecbb8f --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans12pt7b.h @@ -0,0 +1,270 @@ +const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, + 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, + 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, + 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, + 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, + 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, + 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, + 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, + 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, + 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, + 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, + 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, + 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, + 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, + 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, + 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, + 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, + 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, + 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, + 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, + 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, + 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, + 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, + 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, + 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, + 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, + 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, + 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, + 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, + 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, + 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, + 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, + 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, + 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, + 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, + 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, + 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, + 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, + 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, + 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, + 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, + 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, + 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, + 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, + 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, + 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, + 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, + 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, + 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, + 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, + 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, + 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, + 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, + 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, + 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, + 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, + 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, + 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, + 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, + 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, + 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, + 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, + 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, + 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, + 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, + 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, + 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, + 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, + 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, + 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, + 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, + 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, + 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, + 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, + 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, + 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, + 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, + 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, + 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, + 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, + 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, + 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, + 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, + 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, + 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, + 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, + 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, + 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, + 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, + 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, + 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, + 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, + 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, + 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, + 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, + 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, + 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, + 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, + 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, + 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, + 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, + 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, + 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, + 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, + 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, + 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, + 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, + 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, + 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, + 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, + 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, + 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, + 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, + 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, + 0x80 }; + +const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 2, 18, 8, 3, -17 }, // 0x21 '!' + { 5, 6, 6, 8, 1, -16 }, // 0x22 '"' + { 10, 13, 16, 13, 0, -15 }, // 0x23 '#' + { 36, 11, 20, 13, 1, -17 }, // 0x24 '$' + { 64, 20, 17, 21, 1, -16 }, // 0x25 '%' + { 107, 14, 17, 16, 1, -16 }, // 0x26 '&' + { 137, 2, 6, 5, 1, -16 }, // 0x27 ''' + { 139, 5, 23, 8, 2, -17 }, // 0x28 '(' + { 154, 5, 23, 8, 1, -17 }, // 0x29 ')' + { 169, 7, 7, 9, 1, -17 }, // 0x2A '*' + { 176, 10, 11, 14, 2, -10 }, // 0x2B '+' + { 190, 2, 6, 7, 2, -1 }, // 0x2C ',' + { 192, 6, 2, 8, 1, -7 }, // 0x2D '-' + { 194, 2, 2, 6, 2, -1 }, // 0x2E '.' + { 195, 7, 18, 7, 0, -17 }, // 0x2F '/' + { 211, 11, 17, 13, 1, -16 }, // 0x30 '0' + { 235, 5, 17, 13, 3, -16 }, // 0x31 '1' + { 246, 11, 17, 13, 1, -16 }, // 0x32 '2' + { 270, 11, 17, 13, 1, -16 }, // 0x33 '3' + { 294, 11, 17, 13, 1, -16 }, // 0x34 '4' + { 318, 11, 17, 13, 1, -16 }, // 0x35 '5' + { 342, 11, 17, 13, 1, -16 }, // 0x36 '6' + { 366, 11, 17, 13, 1, -16 }, // 0x37 '7' + { 390, 11, 17, 13, 1, -16 }, // 0x38 '8' + { 414, 11, 17, 13, 1, -16 }, // 0x39 '9' + { 438, 2, 13, 6, 2, -12 }, // 0x3A ':' + { 442, 2, 16, 6, 2, -11 }, // 0x3B ';' + { 446, 12, 12, 14, 1, -11 }, // 0x3C '<' + { 464, 12, 6, 14, 1, -8 }, // 0x3D '=' + { 473, 12, 12, 14, 1, -11 }, // 0x3E '>' + { 491, 10, 18, 13, 2, -17 }, // 0x3F '?' + { 514, 22, 21, 24, 1, -17 }, // 0x40 '@' + { 572, 16, 18, 16, 0, -17 }, // 0x41 'A' + { 608, 13, 18, 16, 2, -17 }, // 0x42 'B' + { 638, 15, 18, 17, 1, -17 }, // 0x43 'C' + { 672, 14, 18, 17, 2, -17 }, // 0x44 'D' + { 704, 12, 18, 15, 2, -17 }, // 0x45 'E' + { 731, 11, 18, 14, 2, -17 }, // 0x46 'F' + { 756, 16, 18, 18, 1, -17 }, // 0x47 'G' + { 792, 13, 18, 17, 2, -17 }, // 0x48 'H' + { 822, 2, 18, 7, 2, -17 }, // 0x49 'I' + { 827, 9, 18, 13, 1, -17 }, // 0x4A 'J' + { 848, 14, 18, 16, 2, -17 }, // 0x4B 'K' + { 880, 10, 18, 14, 2, -17 }, // 0x4C 'L' + { 903, 16, 18, 20, 2, -17 }, // 0x4D 'M' + { 939, 13, 18, 18, 2, -17 }, // 0x4E 'N' + { 969, 17, 18, 19, 1, -17 }, // 0x4F 'O' + { 1008, 12, 18, 16, 2, -17 }, // 0x50 'P' + { 1035, 17, 19, 19, 1, -17 }, // 0x51 'Q' + { 1076, 14, 18, 17, 2, -17 }, // 0x52 'R' + { 1108, 14, 18, 16, 1, -17 }, // 0x53 'S' + { 1140, 12, 18, 15, 1, -17 }, // 0x54 'T' + { 1167, 13, 18, 17, 2, -17 }, // 0x55 'U' + { 1197, 15, 18, 15, 0, -17 }, // 0x56 'V' + { 1231, 22, 18, 22, 0, -17 }, // 0x57 'W' + { 1281, 15, 18, 16, 0, -17 }, // 0x58 'X' + { 1315, 16, 18, 16, 0, -17 }, // 0x59 'Y' + { 1351, 13, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1381, 4, 23, 7, 2, -17 }, // 0x5B '[' + { 1393, 7, 18, 7, 0, -17 }, // 0x5C '\' + { 1409, 4, 23, 7, 1, -17 }, // 0x5D ']' + { 1421, 9, 9, 11, 1, -16 }, // 0x5E '^' + { 1432, 15, 1, 13, -1, 4 }, // 0x5F '_' + { 1434, 5, 4, 6, 1, -17 }, // 0x60 '`' + { 1437, 12, 13, 13, 1, -12 }, // 0x61 'a' + { 1457, 12, 18, 13, 1, -17 }, // 0x62 'b' + { 1484, 10, 13, 12, 1, -12 }, // 0x63 'c' + { 1501, 11, 18, 13, 1, -17 }, // 0x64 'd' + { 1526, 11, 13, 13, 1, -12 }, // 0x65 'e' + { 1544, 5, 18, 7, 1, -17 }, // 0x66 'f' + { 1556, 11, 18, 13, 1, -12 }, // 0x67 'g' + { 1581, 10, 18, 13, 1, -17 }, // 0x68 'h' + { 1604, 2, 18, 5, 2, -17 }, // 0x69 'i' + { 1609, 4, 23, 6, 0, -17 }, // 0x6A 'j' + { 1621, 11, 18, 12, 1, -17 }, // 0x6B 'k' + { 1646, 2, 18, 5, 1, -17 }, // 0x6C 'l' + { 1651, 17, 13, 19, 1, -12 }, // 0x6D 'm' + { 1679, 10, 13, 13, 1, -12 }, // 0x6E 'n' + { 1696, 11, 13, 13, 1, -12 }, // 0x6F 'o' + { 1714, 12, 17, 13, 1, -12 }, // 0x70 'p' + { 1740, 11, 17, 13, 1, -12 }, // 0x71 'q' + { 1764, 6, 13, 8, 1, -12 }, // 0x72 'r' + { 1774, 10, 13, 12, 1, -12 }, // 0x73 's' + { 1791, 5, 16, 7, 1, -15 }, // 0x74 't' + { 1801, 10, 13, 13, 1, -12 }, // 0x75 'u' + { 1818, 12, 13, 12, 0, -12 }, // 0x76 'v' + { 1838, 17, 13, 17, 0, -12 }, // 0x77 'w' + { 1866, 11, 13, 11, 0, -12 }, // 0x78 'x' + { 1884, 11, 18, 11, 0, -12 }, // 0x79 'y' + { 1909, 10, 13, 12, 1, -12 }, // 0x7A 'z' + { 1926, 5, 23, 8, 1, -17 }, // 0x7B '{' + { 1941, 2, 23, 6, 2, -17 }, // 0x7C '|' + { 1947, 5, 23, 8, 2, -17 }, // 0x7D '}' + { 1962, 10, 5, 12, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSans12pt7b PROGMEM = { + (uint8_t *)FreeSans12pt7bBitmaps, + (GFXglyph *)FreeSans12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2641 bytes diff --git a/RX_FSK/src/fonts/FreeSans12pt8b.h b/RX_FSK/src/fonts/FreeSans12pt8b.h new file mode 100644 index 0000000..4411f8c --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans12pt8b.h @@ -0,0 +1,596 @@ +const uint8_t FreeSans12pt8bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0xFF, 0xF3, 0xF0, 0xCF, 0x3C, 0xF3, 0x4D, 0x10, 0x06, + 0x30, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x3F, 0xFD, 0xFF, 0xE1, 0x98, + 0x18, 0xC0, 0xC6, 0x06, 0x31, 0xFF, 0xE1, 0x88, 0x08, 0xC0, 0xC6, 0x06, + 0x30, 0x31, 0x80, 0x04, 0x03, 0xF1, 0xFF, 0x32, 0x7C, 0x47, 0x88, 0xF1, + 0x07, 0x20, 0x7C, 0x07, 0xF0, 0x1F, 0x02, 0x70, 0x47, 0x88, 0xF1, 0x1E, + 0x23, 0x64, 0xE7, 0xF8, 0x10, 0x02, 0x00, 0x40, 0x00, 0x06, 0x07, 0xC0, + 0x40, 0xE6, 0x0C, 0x0C, 0x30, 0x80, 0x83, 0x18, 0x0C, 0x31, 0x00, 0xC6, + 0x30, 0x07, 0xE2, 0x00, 0x38, 0x60, 0x00, 0x0C, 0x38, 0x00, 0xC7, 0xC0, + 0x18, 0xC6, 0x01, 0x18, 0x30, 0x31, 0x83, 0x02, 0x08, 0x20, 0x60, 0xC6, + 0x04, 0x07, 0xC0, 0x0F, 0x00, 0x7E, 0x03, 0x8C, 0x0C, 0x30, 0x30, 0xC0, + 0x67, 0x01, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0xCC, 0x66, 0x39, 0xB0, 0x7C, + 0xC0, 0xF3, 0x01, 0x8E, 0x0F, 0x1C, 0xFE, 0x3F, 0x9C, 0x10, 0x00, 0xFF, + 0x50, 0x08, 0x8C, 0x46, 0x31, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC2, + 0x18, 0x43, 0x08, 0x60, 0x86, 0x18, 0xC3, 0x18, 0x43, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x11, 0x8C, 0x46, 0x23, 0x00, 0x10, 0x22, 0x4F, 0xF3, 0x85, + 0x1B, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0x06, + 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0x97, 0xA0, 0xFC, 0xFF, + 0x80, 0x06, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, + 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x6E, 0x0F, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3E, 0x06, 0xC1, + 0xD8, 0x31, 0xCE, 0x3F, 0x80, 0x80, 0x04, 0x30, 0xFF, 0xFC, 0x30, 0xC3, + 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x1F, 0x07, 0xF9, 0xC3, 0xB0, + 0x3C, 0x07, 0x80, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x07, + 0x01, 0xC0, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x1F, 0x0F, 0xF9, 0x83, 0x70, + 0x7C, 0x0E, 0x01, 0xC0, 0x30, 0x7C, 0x0F, 0x80, 0x38, 0x01, 0x80, 0x3C, + 0x07, 0x80, 0xF8, 0x3B, 0x8E, 0x3F, 0x80, 0x80, 0x01, 0x80, 0x70, 0x0E, + 0x03, 0xC0, 0xD8, 0x33, 0x06, 0x61, 0x8C, 0x61, 0x8C, 0x33, 0x06, 0x7F, + 0xFF, 0xFE, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, + 0x30, 0x06, 0x00, 0xC0, 0x1F, 0xE3, 0xFE, 0xE0, 0xE0, 0x0C, 0x01, 0x80, + 0x30, 0x07, 0x80, 0xF8, 0x3B, 0x8E, 0x3F, 0x80, 0x80, 0x0F, 0x07, 0xF9, + 0xC3, 0x30, 0x36, 0x01, 0x80, 0x30, 0x86, 0xFC, 0xF9, 0xDC, 0x1F, 0x81, + 0xE0, 0x3C, 0x06, 0xC0, 0xD8, 0x3B, 0xCE, 0x3F, 0x80, 0x80, 0xFF, 0xFF, + 0xFC, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0xC0, + 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x38, 0x00, 0x1F, 0x07, + 0xF9, 0xC3, 0x30, 0x7E, 0x06, 0xC1, 0xD8, 0x31, 0xFC, 0x3F, 0x8E, 0x1B, + 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8E, 0x3F, 0x80, 0x80, 0x1F, + 0x07, 0xF1, 0x87, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x60, 0xEF, + 0xFC, 0x7D, 0x80, 0x30, 0x07, 0x81, 0x98, 0x33, 0x9C, 0x3F, 0x00, 0x80, + 0xFC, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xD7, 0x00, 0x00, 0x30, 0x1F, + 0x07, 0x81, 0xE0, 0xF8, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0xC0, 0x0F, + 0x00, 0x30, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0xC0, 0x0F, + 0x80, 0x1E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0x01, 0xE0, 0x78, 0x3E, 0x0F, + 0x00, 0xC0, 0x00, 0x1E, 0x1F, 0xE6, 0x1F, 0x03, 0xC0, 0xF0, 0x30, 0x0C, + 0x06, 0x03, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x30, 0x0C, + 0x03, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xFE, 0x00, 0x70, 0x3C, 0x07, 0x00, + 0x38, 0x38, 0x00, 0x70, 0xC0, 0x40, 0xE6, 0x0F, 0xD9, 0x98, 0x71, 0xC7, + 0xC3, 0x87, 0x0F, 0x0C, 0x0C, 0x3C, 0x30, 0x70, 0xF1, 0xC1, 0x86, 0xC7, + 0x06, 0x1B, 0x1C, 0x38, 0xEC, 0x39, 0xE7, 0x18, 0x7D, 0xF8, 0x70, 0x01, + 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF3, 0xC0, 0x03, 0xFF, 0x00, + 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, + 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, + 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, + 0xFE, 0x07, 0xFF, 0x30, 0x79, 0x80, 0xEC, 0x03, 0x60, 0x1B, 0x00, 0xD8, + 0x0C, 0xFF, 0xC7, 0xFF, 0x30, 0x1D, 0x80, 0x7C, 0x01, 0xE0, 0x0F, 0x00, + 0xF8, 0x0E, 0xFF, 0xF7, 0xFE, 0x00, 0x03, 0xC0, 0x1F, 0xF0, 0xF0, 0xE1, + 0x80, 0xE7, 0x00, 0xEC, 0x01, 0xF8, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, + 0x03, 0x00, 0x07, 0x00, 0x06, 0x00, 0x6C, 0x01, 0xDC, 0x03, 0x9C, 0x0E, + 0x1F, 0x78, 0x1F, 0xE0, 0x04, 0x00, 0xFE, 0x03, 0xFF, 0x8C, 0x1F, 0x30, + 0x0E, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, + 0xFF, 0x00, 0xFF, 0xF7, 0xFF, 0xB0, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x18, 0x00, 0xFF, 0xF7, 0xFF, 0xB0, 0x01, 0x80, 0x0C, 0x00, 0x60, + 0x03, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x03, + 0xE0, 0x0F, 0xF8, 0x1E, 0x3C, 0x38, 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, + 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xE0, 0x03, 0xE0, + 0x03, 0x60, 0x03, 0x70, 0x07, 0x38, 0x0F, 0x1F, 0x7B, 0x0F, 0xF3, 0x00, + 0x80, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, + 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xE0, 0xF8, 0x3E, 0x0D, 0x87, 0x73, 0x8F, + 0xE0, 0x40, 0xC0, 0x1F, 0x00, 0xEC, 0x07, 0x30, 0x38, 0xC1, 0xC3, 0x0E, + 0x0C, 0x70, 0x33, 0x80, 0xDE, 0x03, 0xFC, 0x0F, 0x38, 0x38, 0x60, 0xC1, + 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xFF, 0xFC, 0xE0, + 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xD8, 0x1B, 0xD8, + 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xC6, 0x63, 0xC6, + 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0x83, 0xC0, + 0x1F, 0x80, 0x7F, 0x01, 0xFC, 0x07, 0xF8, 0x1F, 0x60, 0x7C, 0xC1, 0xF3, + 0x87, 0xC6, 0x1F, 0x0C, 0x7C, 0x39, 0xF0, 0x67, 0xC1, 0xDF, 0x03, 0xFC, + 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0x00, 0x70, 0x03, 0xE0, 0x07, 0xFC, 0x0F, + 0x8F, 0x07, 0x01, 0xC7, 0x00, 0x73, 0x00, 0x1B, 0x80, 0x0D, 0x80, 0x07, + 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x7E, 0x00, 0x33, 0x00, + 0x19, 0xC0, 0x1C, 0x70, 0x1C, 0x1F, 0x7C, 0x07, 0xFC, 0x00, 0x20, 0x00, + 0xFE, 0x07, 0xFF, 0x30, 0x7D, 0x80, 0x6C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, + 0x07, 0xC0, 0xF7, 0xFF, 0x3F, 0xC1, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, + 0x18, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x03, 0xE0, 0x07, 0xFC, 0x0F, 0x8F, + 0x07, 0x01, 0xC7, 0x00, 0x73, 0x00, 0x1B, 0x80, 0x0D, 0x80, 0x07, 0xC0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x7E, 0x00, 0x33, 0x01, 0x19, + 0xC0, 0xDC, 0x70, 0x3C, 0x1F, 0x7E, 0x07, 0xFF, 0x80, 0x20, 0xC0, 0xFF, + 0x03, 0xFF, 0xCC, 0x0F, 0xB0, 0x06, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xB0, + 0x06, 0xC0, 0xF3, 0xFF, 0x8C, 0x0F, 0x30, 0x06, 0xC0, 0x1B, 0x00, 0x6C, + 0x01, 0xB0, 0x06, 0xC0, 0x1F, 0x00, 0x70, 0x07, 0x80, 0xFF, 0x87, 0x87, + 0x18, 0x0E, 0x60, 0x19, 0x80, 0x66, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, + 0xC0, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x01, 0xDC, 0x06, 0x7E, + 0xF8, 0x7F, 0x80, 0x20, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x38, 0x00, 0xE0, + 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, + 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x0E, + 0x00, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, + 0x80, 0x6C, 0x07, 0x7D, 0xF1, 0xFF, 0x00, 0x80, 0xC0, 0x0F, 0x00, 0x3E, + 0x01, 0xD8, 0x06, 0x70, 0x18, 0xC0, 0xE3, 0x03, 0x0E, 0x0C, 0x18, 0x70, + 0x61, 0x81, 0xC6, 0x03, 0x38, 0x0C, 0xC0, 0x3B, 0x00, 0x6C, 0x01, 0xE0, + 0x07, 0x80, 0x0E, 0x00, 0xC0, 0x70, 0x1E, 0x03, 0x80, 0xF0, 0x1C, 0x0F, + 0xC1, 0xE0, 0x76, 0x0D, 0x83, 0x30, 0x6C, 0x19, 0x83, 0x61, 0xCE, 0x33, + 0x8E, 0x31, 0x8C, 0x61, 0x8C, 0x63, 0x0C, 0xE3, 0x18, 0x76, 0x0D, 0xC1, + 0xB0, 0x6C, 0x0D, 0x83, 0x60, 0x78, 0x1F, 0x03, 0xC0, 0x78, 0x0E, 0x03, + 0x80, 0x70, 0x1C, 0x00, 0xE0, 0x0C, 0xC0, 0x39, 0xC0, 0xE1, 0xC1, 0x81, + 0x87, 0x03, 0x9C, 0x03, 0xB0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x76, 0x01, 0xCE, 0x03, 0x0C, 0x0E, 0x0C, 0x38, 0x1C, 0x60, 0x1D, + 0xC0, 0x38, 0xE0, 0x07, 0x70, 0x06, 0x30, 0x0E, 0x38, 0x1C, 0x18, 0x18, + 0x1C, 0x38, 0x0E, 0x30, 0x06, 0x70, 0x07, 0x60, 0x03, 0xC0, 0x01, 0xC0, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, + 0x07, 0x00, 0x70, 0x07, 0x00, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xF0, 0x81, 0x03, 0x02, 0x04, + 0x0C, 0x08, 0x10, 0x30, 0x20, 0x40, 0xC0, 0x81, 0x03, 0x02, 0x04, 0x0C, + 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0xF0, + 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, 0x8C, 0x83, 0xC1, 0x80, 0xFF, + 0xFE, 0xC3, 0x0C, 0x20, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, + 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, + 0x02, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0xF0, 0xDF, 0xCF, + 0x0E, 0xE0, 0x6E, 0x06, 0xC0, 0x6C, 0x07, 0xC0, 0x7C, 0x06, 0xE0, 0x6E, + 0x0E, 0xF9, 0xCD, 0xF8, 0x00, 0x00, 0x1F, 0x0F, 0xE6, 0x1F, 0x83, 0xC0, + 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x3E, 0x0D, 0xC7, 0x3F, 0x81, 0x00, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xDF, 0xDB, 0x8F, 0xE0, + 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3F, 0x07, 0x7B, 0xE7, + 0xEC, 0x10, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x3C, 0x07, 0x80, 0xFF, + 0xFE, 0x00, 0xC0, 0x18, 0x0D, 0x83, 0xBC, 0xE3, 0xF8, 0x08, 0x00, 0x04, + 0x73, 0x0C, 0x33, 0xFF, 0xCC, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, + 0xC0, 0x1E, 0x67, 0xED, 0x87, 0xF0, 0x7C, 0x0F, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x1F, 0x83, 0xB9, 0xF3, 0xF6, 0x00, 0xF0, 0x37, 0x06, 0x7F, + 0xC7, 0xE0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x33, 0xCF, 0xFB, 0x87, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, + 0x30, 0xFC, 0x3F, 0xFF, 0xFF, 0xF0, 0x33, 0x30, 0x03, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x3F, 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x81, 0xB0, 0x66, 0x18, 0xC6, 0x19, 0x83, 0x70, 0x7B, 0x0E, 0x71, + 0x86, 0x30, 0xE6, 0x0C, 0xC0, 0xD8, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xDE, 0x1E, 0xFF, 0x7F, 0xE3, 0xC3, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, + 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, + 0xC1, 0x83, 0xCF, 0x3F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, + 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0D, 0x83, 0xBD, 0xE3, + 0xF8, 0x08, 0x00, 0xCF, 0x0D, 0xFC, 0xF0, 0xCE, 0x06, 0xE0, 0x6C, 0x06, + 0xC0, 0x7C, 0x07, 0xC0, 0x6E, 0x06, 0xE0, 0xEF, 0x9C, 0xDF, 0x8C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x1E, 0x6F, 0xFD, 0xC7, 0xF0, 0x7C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x83, 0xBD, 0xF3, 0xF6, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0xDF, 0xFF, 0x30, 0xC3, 0x0C, + 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x1E, 0x1F, 0xEE, 0x1B, 0x06, 0xC0, 0x3C, + 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3C, 0x0F, 0xCE, 0x7F, 0x82, 0x00, 0x30, + 0xC3, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0x08, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC1, 0xF0, + 0x7C, 0x1F, 0x8F, 0x7E, 0xC4, 0x00, 0xE0, 0x76, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xB0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xF0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x38, 0xCD, 0x98, 0x64, 0x6C, 0x36, 0x36, 0x0F, 0x1E, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0x80, 0x60, 0x6E, 0x1C, 0xC3, 0x0C, 0xC1, + 0xF0, 0x1E, 0x01, 0x80, 0x78, 0x0F, 0x03, 0x30, 0xC7, 0x38, 0x66, 0x06, + 0x60, 0x6C, 0x0D, 0x81, 0x98, 0x63, 0x0C, 0x63, 0x86, 0x60, 0xCC, 0x1B, + 0x81, 0xE0, 0x3C, 0x07, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x78, 0x0F, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0E, 0x07, 0x03, 0x80, 0xC0, 0x60, 0x30, + 0x1C, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x04, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0xC6, 0x30, 0xE1, 0x83, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xE1, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x87, 0x18, 0x42, 0x10, 0x84, 0x21, + 0x8C, 0x31, 0x98, 0xC4, 0x21, 0x08, 0x42, 0x73, 0x80, 0x00, 0x3E, 0x1D, + 0xC6, 0x1F, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, + 0xFF, 0xFF, 0xFF, 0xF0, 0x04, 0x00, 0x80, 0x3C, 0x1F, 0xE7, 0x4E, 0xC8, + 0xD9, 0x1E, 0x20, 0xC4, 0x18, 0x83, 0x10, 0x32, 0x36, 0x46, 0x7B, 0x87, + 0xE0, 0x30, 0x04, 0x00, 0x80, 0x00, 0x01, 0xF8, 0x79, 0xC6, 0x0E, 0xE0, + 0x6E, 0x06, 0xE0, 0x06, 0x00, 0x70, 0x0F, 0xF0, 0x38, 0x01, 0x80, 0x18, + 0x01, 0x00, 0x30, 0x06, 0x00, 0xFF, 0xEE, 0xFF, 0x00, 0x80, 0x01, 0xF0, + 0x1F, 0xF0, 0xE0, 0x87, 0x00, 0x18, 0x00, 0xC0, 0x0F, 0xFF, 0x3F, 0xFC, + 0x30, 0x03, 0xFF, 0x8F, 0xFC, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, + 0x03, 0xC6, 0x07, 0xF8, 0x00, 0x00, 0x60, 0x1B, 0x01, 0x8C, 0x0C, 0x60, + 0xC1, 0x86, 0x0C, 0x60, 0x36, 0x00, 0xF0, 0x07, 0xF1, 0xFF, 0x80, 0xC0, + 0x06, 0x03, 0xFF, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x0C, 0xC0, + 0x16, 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0xFF, 0x87, 0x87, 0x18, 0x0E, + 0x60, 0x19, 0x80, 0x66, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, + 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x01, 0xDC, 0x06, 0x7E, 0xF8, 0x7F, + 0x80, 0x20, 0x00, 0x00, 0x03, 0xF0, 0xE7, 0x18, 0x63, 0x0C, 0x60, 0x0E, + 0x01, 0xF0, 0x67, 0x98, 0x7B, 0x03, 0xE0, 0x37, 0x06, 0xF0, 0xC7, 0x18, + 0x7E, 0x07, 0x80, 0x31, 0x87, 0x30, 0x67, 0x1C, 0x7F, 0x07, 0xC0, 0x21, + 0x0C, 0xC1, 0xE0, 0x70, 0x00, 0x07, 0x87, 0xFB, 0x86, 0xC1, 0xB0, 0x0F, + 0x01, 0xFC, 0x0F, 0x80, 0x7C, 0x0F, 0x03, 0xF3, 0x9F, 0xE0, 0x80, 0x03, + 0xE0, 0x03, 0xFF, 0x01, 0x80, 0xE0, 0xC0, 0x0C, 0x61, 0xE1, 0xB0, 0xCC, + 0x6C, 0x61, 0x8F, 0x10, 0x63, 0x8C, 0x00, 0xE3, 0x00, 0x38, 0xC0, 0x0F, + 0x10, 0x63, 0xC6, 0x18, 0x90, 0xFC, 0x66, 0x1E, 0x30, 0xC0, 0x1C, 0x1C, + 0x0E, 0x01, 0xFE, 0x00, 0x08, 0x00, 0x39, 0xDB, 0x10, 0x67, 0x50, 0xA3, + 0x7F, 0x01, 0xFF, 0xF8, 0x00, 0x18, 0xDC, 0xF8, 0xC8, 0x47, 0x31, 0xCE, + 0x23, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, + 0xFC, 0x03, 0xE0, 0x03, 0xFF, 0x01, 0x80, 0xE0, 0xC0, 0x0C, 0x67, 0xF1, + 0xB1, 0x8E, 0x6C, 0x61, 0x8F, 0x18, 0x63, 0x86, 0x38, 0xE1, 0xFC, 0x38, + 0x61, 0x8F, 0x18, 0x63, 0xC6, 0x18, 0x91, 0x86, 0x66, 0x60, 0xF0, 0xC0, + 0x1C, 0x1C, 0x0E, 0x01, 0xFE, 0x00, 0x08, 0x00, 0xFF, 0xF0, 0x7D, 0x8A, + 0x1C, 0x38, 0x7F, 0x8E, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x00, + 0x00, 0x00, 0xFF, 0xF0, 0x3C, 0x66, 0x43, 0x43, 0x02, 0x0E, 0x38, 0x60, + 0x40, 0xFF, 0x3C, 0x66, 0x42, 0x02, 0x1E, 0x1E, 0x03, 0xC3, 0x43, 0x7E, + 0x00, 0x08, 0xC0, 0x6C, 0x01, 0xC0, 0x00, 0x0F, 0xFF, 0xFF, 0xFC, 0x00, + 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x03, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x01, 0x80, 0x1C, 0x01, 0xC0, 0x0F, 0xFF, 0xFF, + 0xFC, 0xC0, 0xD8, 0x1B, 0x03, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x36, 0x06, + 0xC1, 0xD8, 0x3B, 0x07, 0x71, 0xEF, 0xEF, 0xA0, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x00, 0x03, 0xF3, 0xFF, 0x7E, 0x47, 0xE4, 0xFE, 0x4F, 0xE4, 0xFE, + 0x4F, 0xE4, 0x7E, 0x47, 0xE4, 0x3E, 0x40, 0xE4, 0x06, 0x40, 0x64, 0x06, + 0x40, 0x64, 0x06, 0x40, 0x64, 0x06, 0x40, 0x64, 0x06, 0x40, 0x64, 0xFF, + 0x80, 0x21, 0x0C, 0xC1, 0xE0, 0x30, 0x00, 0x3F, 0xFF, 0xFC, 0x06, 0x03, + 0x81, 0xC0, 0xE0, 0x30, 0x18, 0x0C, 0x07, 0x03, 0x80, 0xFF, 0xFF, 0xF0, + 0x33, 0xF3, 0x33, 0x33, 0x33, 0x38, 0xDB, 0x1C, 0x38, 0x70, 0xF1, 0x3E, + 0x01, 0xFF, 0xF8, 0xC4, 0x73, 0x8C, 0xE2, 0x13, 0x1F, 0x3B, 0x18, 0x00, + 0x07, 0x8F, 0xFC, 0x7F, 0xBF, 0xF3, 0x87, 0xC0, 0x1C, 0x0F, 0x00, 0x60, + 0x1C, 0x01, 0x80, 0x30, 0x0E, 0x00, 0xC0, 0x30, 0x03, 0x00, 0xC0, 0x0F, + 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0xC0, 0x30, 0x03, 0x00, 0xE0, 0x0C, 0x01, + 0x80, 0x30, 0x06, 0x01, 0xC0, 0x1C, 0x0F, 0x00, 0x3F, 0xEF, 0xFC, 0x3F, + 0x3F, 0xF0, 0x1F, 0x07, 0x83, 0xF9, 0xFE, 0x71, 0xF8, 0x7E, 0x0F, 0x03, + 0xC0, 0x60, 0x3C, 0x06, 0x03, 0xC0, 0x7F, 0xFC, 0x06, 0x00, 0xC0, 0x60, + 0x0C, 0x07, 0x03, 0x60, 0xF0, 0x77, 0xBF, 0xCE, 0x3F, 0x9F, 0xC0, 0x40, + 0x20, 0x06, 0x60, 0x06, 0x60, 0x00, 0x00, 0xE0, 0x07, 0x70, 0x06, 0x30, + 0x0E, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, 0x0E, 0x30, 0x06, 0x70, 0x07, + 0x60, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x03, 0x00, 0xC0, 0x00, + 0x00, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0xC0, 0xF0, + 0x3C, 0x0F, 0x86, 0x7F, 0x87, 0x80, 0x07, 0x00, 0x03, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, + 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, + 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, + 0x60, 0x07, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x01, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, + 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, + 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, 0x03, 0xC0, + 0x03, 0xC0, 0x06, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, + 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, + 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, 0x07, 0xB0, 0x0D, 0xE0, 0x00, 0x00, + 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, + 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, + 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, + 0x06, 0x60, 0x06, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, + 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, + 0x70, 0x0E, 0x60, 0x06, 0x60, 0x07, 0x03, 0xC0, 0x03, 0x40, 0x06, 0x60, + 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xE0, + 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, 0x0C, 0x30, 0x1C, 0x38, + 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x70, 0x0E, + 0x60, 0x06, 0x60, 0x07, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x06, 0x60, + 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0xE3, 0x00, 0x01, 0x86, 0x00, + 0x03, 0x0C, 0x00, 0x0C, 0x1F, 0xFC, 0x18, 0x3F, 0xF8, 0x70, 0x60, 0x00, + 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x0C, 0x06, 0x00, 0x38, + 0x0C, 0x00, 0x60, 0x1F, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xC0, 0x1F, 0xF0, + 0xF0, 0xE1, 0x80, 0xE7, 0x00, 0xEC, 0x01, 0xF8, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, 0x00, 0x6C, 0x01, 0xDC, 0x03, + 0x9C, 0x0E, 0x1F, 0x78, 0x1F, 0xE0, 0x04, 0x00, 0x0C, 0x00, 0x0C, 0x00, + 0x18, 0x01, 0xF0, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x80, 0x00, 0x0F, 0xFF, + 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, + 0xFF, 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0F, 0xFF, 0xFF, 0xFC, 0x03, 0x80, 0x18, 0x01, 0x80, 0x00, 0x0F, 0xFF, + 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, + 0xFF, 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0F, 0xFF, 0xFF, 0xFC, 0x07, 0x00, 0x6C, 0x06, 0x60, 0x00, 0x0F, 0xFF, + 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, + 0xFF, 0x7F, 0xFB, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0F, 0xFF, 0xFF, 0xFC, 0x1D, 0xC0, 0xEE, 0x00, 0x01, 0xFF, 0xEF, 0xFF, + 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xFF, 0xEF, + 0xFF, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xFF, + 0xFF, 0xFF, 0x80, 0xE1, 0x84, 0x13, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, + 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0x33, 0x30, 0x0E, 0x73, 0x9C, 0xE7, 0x39, + 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x70, 0x38, 0xD9, 0x14, 0x03, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x00, 0xEF, 0xDC, 0x01, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, + 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x80, 0x3F, 0x80, + 0x3F, 0xF8, 0x30, 0x7C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x06, 0x30, 0x07, + 0x30, 0x03, 0xFF, 0x03, 0xFF, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, + 0x30, 0x06, 0x30, 0x0E, 0x30, 0x1C, 0x3F, 0xF8, 0x3F, 0xF0, 0x0C, 0x40, + 0x7F, 0x01, 0x08, 0x30, 0x07, 0xE0, 0x1F, 0xC0, 0x7F, 0x01, 0xFE, 0x07, + 0xD8, 0x1F, 0x30, 0x7C, 0xE1, 0xF1, 0x87, 0xC3, 0x1F, 0x0E, 0x7C, 0x19, + 0xF0, 0x77, 0xC0, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xC0, 0x1C, 0x07, + 0x00, 0x00, 0xC0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xC0, + 0xF8, 0xF0, 0x70, 0x1C, 0x70, 0x07, 0x30, 0x01, 0xB8, 0x00, 0xD8, 0x00, + 0x7C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0x30, + 0x01, 0x9C, 0x01, 0xC7, 0x01, 0xC1, 0xF7, 0xC0, 0x7F, 0xC0, 0x02, 0x00, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7F, + 0xC0, 0xF8, 0xF0, 0x70, 0x1C, 0x70, 0x07, 0x30, 0x01, 0xB8, 0x00, 0xD8, + 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, + 0x30, 0x01, 0x9C, 0x01, 0xC7, 0x01, 0xC1, 0xF7, 0xC0, 0x7F, 0xC0, 0x02, + 0x00, 0x01, 0xC0, 0x01, 0xB0, 0x01, 0x88, 0x00, 0x00, 0x00, 0x3E, 0x00, + 0x7F, 0xC0, 0xF8, 0xF0, 0x70, 0x1C, 0x70, 0x07, 0x30, 0x01, 0xB8, 0x00, + 0xD8, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0xE0, + 0x03, 0x30, 0x01, 0x9C, 0x01, 0xC7, 0x01, 0xC1, 0xF7, 0xC0, 0x7F, 0xC0, + 0x02, 0x00, 0x07, 0xB0, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, + 0x81, 0xF1, 0xE0, 0xE0, 0x38, 0xE0, 0x0E, 0x60, 0x03, 0x70, 0x01, 0xB0, + 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0xC0, 0x06, + 0x60, 0x03, 0x38, 0x03, 0x8E, 0x03, 0x83, 0xEF, 0x80, 0xFF, 0x80, 0x04, + 0x00, 0x07, 0x70, 0x03, 0xB8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, 0x81, + 0xF1, 0xE0, 0xE0, 0x38, 0xE0, 0x0E, 0x60, 0x03, 0x70, 0x01, 0xB0, 0x00, + 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0xC0, 0x06, 0x60, + 0x03, 0x38, 0x03, 0x8E, 0x03, 0x83, 0xEF, 0x80, 0xFF, 0x80, 0x04, 0x00, + 0x40, 0x98, 0x63, 0x30, 0x78, 0x0C, 0x07, 0x83, 0x31, 0x86, 0x40, 0x80, + 0x03, 0xC1, 0x87, 0xFD, 0x8F, 0x8F, 0x86, 0x01, 0xC7, 0x00, 0xF7, 0x00, + 0xDB, 0x00, 0xCD, 0x80, 0xC7, 0xC0, 0xC3, 0xE0, 0xC1, 0xF0, 0xC0, 0xF8, + 0xC0, 0x7E, 0xC0, 0x33, 0xC0, 0x19, 0xC0, 0x18, 0x70, 0x1C, 0x5F, 0x7C, + 0x67, 0xFC, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x0C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF8, 0x06, + 0xC0, 0x77, 0xDF, 0x1F, 0xF0, 0x08, 0x00, 0x01, 0xC0, 0x18, 0x00, 0x80, + 0x08, 0x0C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, + 0xF8, 0x06, 0xC0, 0x77, 0xDF, 0x1F, 0xF0, 0x08, 0x00, 0x07, 0x00, 0x2C, + 0x03, 0x30, 0x00, 0x0C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x1E, 0x00, 0xF8, 0x06, 0xC0, 0x77, 0xDF, 0x1F, 0xF0, 0x08, 0x00, 0x0C, + 0xC0, 0x66, 0x00, 0x01, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xC0, 0x1F, 0x00, 0xD8, 0x0E, 0xFB, 0xE3, 0xFE, 0x01, 0x00, 0x00, + 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x07, 0x70, 0x06, 0x30, + 0x0E, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, 0x0E, 0x30, 0x06, 0x70, 0x07, + 0x60, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xC0, 0x06, 0x00, 0x30, 0x01, + 0xFE, 0x0F, 0xFE, 0x60, 0x7B, 0x00, 0xD8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, + 0x0D, 0x83, 0xEF, 0xFE, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x00, 0x7F, 0x8F, 0x3C, 0xC0, 0xEC, 0x06, 0xC0, 0x6C, 0x0E, 0xC1, 0xCC, + 0x78, 0xC7, 0xEC, 0x06, 0xC0, 0x7C, 0x07, 0xC0, 0x7C, 0x06, 0xC0, 0x6C, + 0xFC, 0xCF, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x1F, 0x07, 0xFC, + 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, + 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, 0x03, 0x00, 0x60, 0x0C, 0x00, 0x00, + 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, + 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, 0x0E, 0x01, 0xB0, + 0x11, 0x80, 0x00, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, + 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, + 0x1C, 0x83, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, + 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, + 0x7E, 0x70, 0x02, 0x3B, 0x83, 0xB8, 0x00, 0x00, 0x00, 0x1F, 0x07, 0xFC, + 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, + 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, 0x04, 0x00, 0xF0, 0x19, 0x01, 0xB0, + 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xFC, 0x60, 0xC6, 0x0C, 0x00, 0xC0, 0x1C, + 0x3F, 0xC7, 0x8C, 0xE0, 0xCC, 0x0C, 0xC0, 0xCE, 0x3E, 0x7E, 0x70, 0x02, + 0x1F, 0x0F, 0x0F, 0xF7, 0xF9, 0x83, 0xC3, 0xB0, 0x70, 0x30, 0x0C, 0x06, + 0x03, 0x80, 0xCF, 0xFF, 0xFB, 0xC6, 0x00, 0xE0, 0xC0, 0x18, 0x1C, 0x0F, + 0x03, 0x83, 0xF1, 0xDC, 0xE7, 0xE3, 0xF8, 0x00, 0x08, 0x00, 0x1F, 0x0F, + 0xE6, 0x1F, 0x83, 0xC0, 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x3E, 0x0D, + 0xC7, 0x3F, 0x83, 0x00, 0xC0, 0x0C, 0x03, 0x0F, 0x80, 0x38, 0x03, 0x80, + 0x30, 0x03, 0x00, 0x00, 0x1E, 0x0F, 0xF3, 0x86, 0x60, 0x78, 0x0F, 0x01, + 0xFF, 0xFC, 0x01, 0x80, 0x30, 0x1B, 0x07, 0x79, 0xC7, 0xF0, 0x10, 0x00, + 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0x1E, 0x0F, 0xF3, 0x86, 0x60, + 0x78, 0x0F, 0x01, 0xFF, 0xFC, 0x01, 0x80, 0x30, 0x1B, 0x07, 0x79, 0xC7, + 0xF0, 0x10, 0x00, 0x0F, 0x03, 0x60, 0x66, 0x00, 0x00, 0xF0, 0x7F, 0x9C, + 0x33, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xE0, 0x0C, 0x01, 0x80, 0xD8, 0x3B, + 0xCE, 0x3F, 0x80, 0x80, 0x19, 0x83, 0x30, 0x00, 0x00, 0x00, 0xF0, 0x7F, + 0x9C, 0x33, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xE0, 0x0C, 0x01, 0x80, 0xD8, + 0x3B, 0xCE, 0x3F, 0x80, 0x80, 0xE3, 0x0C, 0x30, 0x18, 0xC6, 0x31, 0x8C, + 0x63, 0x18, 0xC6, 0x31, 0x80, 0x39, 0x99, 0x80, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x30, 0xF1, 0xB6, 0x20, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xCF, 0x30, 0x00, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x20, 0x07, + 0xE0, 0x70, 0x3F, 0x00, 0x30, 0x3F, 0x0F, 0xF3, 0x8E, 0xE0, 0xF8, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, 0x10, + 0x00, 0x39, 0x1F, 0xC4, 0x20, 0x00, 0xCF, 0x3F, 0xEE, 0x1F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xC0, 0x38, + 0x03, 0x00, 0x30, 0x03, 0x00, 0x00, 0x3E, 0x0F, 0xE3, 0x8E, 0xE0, 0xF8, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, + 0x10, 0x00, 0x03, 0x80, 0xE0, 0x18, 0x06, 0x00, 0x00, 0x3E, 0x0F, 0xE3, + 0x8E, 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, + 0x7B, 0xC7, 0xF0, 0x10, 0x00, 0x0E, 0x01, 0xC0, 0x6C, 0x18, 0xC0, 0x00, + 0x3E, 0x0F, 0xE3, 0x8E, 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, 0x10, 0x00, 0x1C, 0x87, 0xF0, 0x00, + 0x00, 0x01, 0xF0, 0x7F, 0x1C, 0x77, 0x07, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x3C, 0x07, 0x80, 0xD8, 0x3B, 0xDE, 0x3F, 0x80, 0x80, 0x3B, 0x87, 0x70, + 0xEE, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0xE3, 0x8E, 0xE0, 0xF8, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1B, 0x07, 0x7B, 0xC7, 0xF0, 0x10, 0x00, + 0x06, 0x00, 0x60, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x0F, 0x80, 0xFE, 0x8E, 0x38, 0xE0, 0xE6, + 0x0B, 0x30, 0x99, 0x8C, 0xCC, 0xC6, 0x6C, 0x33, 0x41, 0x8C, 0x1C, 0x79, + 0xC5, 0xFC, 0x01, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x07, 0x03, 0x80, 0xC0, 0x60, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x1C, 0x07, 0x03, 0x60, 0x8C, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x77, 0x1D, 0xC7, 0x70, 0x00, 0x00, 0x30, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1F, 0x07, + 0xE3, 0xDF, 0xB1, 0x00, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0xC0, + 0xD8, 0x1B, 0x03, 0x30, 0xC6, 0x18, 0xC7, 0x0C, 0xC1, 0x98, 0x37, 0x03, + 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x18, 0x06, 0x00, 0xC0, 0xF0, 0x1E, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xCF, 0x0D, 0xFC, 0xF0, 0xCE, 0x06, + 0xE0, 0x6C, 0x06, 0xC0, 0x7C, 0x07, 0xC0, 0x6E, 0x06, 0xE0, 0xEF, 0x9C, + 0xDF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x19, 0x83, 0x30, + 0x66, 0x00, 0x00, 0x00, 0xC0, 0xD8, 0x1B, 0x03, 0x30, 0xC6, 0x18, 0xC7, + 0x0C, 0xC1, 0x98, 0x37, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x18, 0x06, + 0x00, 0xC0, 0xF0, 0x1E, 0x00 }; + +const GFXglyph FreeSans12pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 7, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 2, 18, 7, 3, -17 }, // 0x21 '!' U+0021 + { 6, 6, 6, 9, 1, -16 }, // 0x22 '"' U+0022 + { 11, 13, 17, 13, 0, -16 }, // 0x23 '#' U+0023 + { 39, 11, 21, 13, 1, -17 }, // 0x24 '$' U+0024 + { 68, 20, 17, 21, 1, -16 }, // 0x25 '%' U+0025 + { 111, 14, 18, 16, 1, -16 }, // 0x26 '&' U+0026 + { 143, 2, 6, 5, 1, -16 }, // 0x27 ''' U+0027 + { 145, 5, 23, 8, 2, -17 }, // 0x28 '(' U+0028 + { 160, 5, 23, 8, 1, -17 }, // 0x29 ')' U+0029 + { 175, 7, 7, 9, 1, -17 }, // 0x2a '*' U+002A + { 182, 12, 11, 14, 1, -10 }, // 0x2b '+' U+002B + { 199, 3, 7, 7, 2, -2 }, // 0x2c ',' U+002C + { 202, 6, 1, 8, 1, -6 }, // 0x2d '-' U+002D + { 203, 3, 3, 7, 2, -2 }, // 0x2e '.' U+002E + { 205, 7, 18, 7, 0, -17 }, // 0x2f '/' U+002F + { 221, 11, 18, 13, 1, -16 }, // 0x30 '0' U+0030 + { 246, 6, 17, 13, 2, -16 }, // 0x31 '1' U+0031 + { 259, 11, 17, 13, 1, -16 }, // 0x32 '2' U+0032 + { 283, 11, 18, 13, 1, -16 }, // 0x33 '3' U+0033 + { 308, 11, 17, 13, 1, -16 }, // 0x34 '4' U+0034 + { 332, 11, 18, 13, 1, -16 }, // 0x35 '5' U+0035 + { 357, 11, 18, 13, 1, -16 }, // 0x36 '6' U+0036 + { 382, 11, 17, 13, 1, -16 }, // 0x37 '7' U+0037 + { 406, 11, 18, 13, 1, -16 }, // 0x38 '8' U+0038 + { 431, 11, 18, 13, 1, -16 }, // 0x39 '9' U+0039 + { 456, 2, 13, 7, 3, -12 }, // 0x3a ':' U+003A + { 460, 2, 17, 7, 3, -12 }, // 0x3b ';' U+003B + { 465, 12, 11, 14, 1, -10 }, // 0x3c '<' U+003C + { 482, 12, 5, 14, 1, -7 }, // 0x3d '=' U+003D + { 490, 12, 11, 14, 1, -10 }, // 0x3e '>' U+003E + { 507, 10, 18, 13, 2, -17 }, // 0x3f '?' U+003F + { 530, 22, 21, 24, 1, -17 }, // 0x40 '@' U+0040 + { 588, 16, 18, 16, 0, -17 }, // 0x41 'A' U+0041 + { 624, 13, 18, 16, 2, -17 }, // 0x42 'B' U+0042 + { 654, 15, 19, 17, 1, -17 }, // 0x43 'C' U+0043 + { 690, 14, 18, 17, 2, -17 }, // 0x44 'D' U+0044 + { 722, 13, 18, 16, 2, -17 }, // 0x45 'E' U+0045 + { 752, 12, 18, 15, 2, -17 }, // 0x46 'F' U+0046 + { 779, 16, 19, 19, 1, -17 }, // 0x47 'G' U+0047 + { 817, 13, 18, 17, 2, -17 }, // 0x48 'H' U+0048 + { 847, 3, 18, 7, 2, -17 }, // 0x49 'I' U+0049 + { 854, 10, 19, 12, 0, -17 }, // 0x4a 'J' U+004A + { 878, 14, 18, 16, 2, -17 }, // 0x4b 'K' U+004B + { 910, 11, 18, 13, 2, -17 }, // 0x4c 'L' U+004C + { 935, 16, 18, 20, 2, -17 }, // 0x4d 'M' U+004D + { 971, 14, 18, 17, 2, -17 }, // 0x4e 'N' U+004E + { 1003, 17, 19, 19, 1, -17 }, // 0x4f 'O' U+004F + { 1044, 13, 18, 16, 2, -17 }, // 0x50 'P' U+0050 + { 1074, 17, 19, 19, 1, -17 }, // 0x51 'Q' U+0051 + { 1115, 14, 18, 17, 2, -17 }, // 0x52 'R' U+0052 + { 1147, 14, 19, 16, 1, -17 }, // 0x53 'S' U+0053 + { 1181, 14, 18, 15, 0, -17 }, // 0x54 'T' U+0054 + { 1213, 13, 19, 17, 2, -17 }, // 0x55 'U' U+0055 + { 1244, 14, 18, 16, 1, -17 }, // 0x56 'V' U+0056 + { 1276, 21, 18, 23, 1, -17 }, // 0x57 'W' U+0057 + { 1324, 15, 18, 16, 1, -17 }, // 0x58 'X' U+0058 + { 1358, 16, 18, 16, 0, -17 }, // 0x59 'Y' U+0059 + { 1394, 13, 18, 15, 1, -17 }, // 0x5a 'Z' U+005A + { 1424, 4, 23, 7, 2, -17 }, // 0x5b '[' U+005B + { 1436, 7, 18, 7, 0, -17 }, // 0x5c '\' U+005C + { 1452, 4, 23, 7, 1, -17 }, // 0x5d ']' U+005D + { 1464, 9, 9, 11, 1, -16 }, // 0x5e '^' U+005E + { 1475, 15, 1, 13, -1, 4 }, // 0x5f '_' U+005F + { 1477, 5, 4, 8, 1, -17 }, // 0x60 '`' U+0060 + { 1480, 12, 14, 13, 1, -12 }, // 0x61 'a' U+0061 + { 1501, 12, 19, 13, 1, -17 }, // 0x62 'b' U+0062 + { 1530, 10, 14, 12, 1, -12 }, // 0x63 'c' U+0063 + { 1548, 11, 19, 13, 1, -17 }, // 0x64 'd' U+0064 + { 1575, 11, 14, 13, 1, -12 }, // 0x65 'e' U+0065 + { 1595, 6, 18, 7, 0, -17 }, // 0x66 'f' U+0066 + { 1609, 11, 18, 13, 1, -12 }, // 0x67 'g' U+0067 + { 1634, 10, 18, 13, 2, -17 }, // 0x68 'h' U+0068 + { 1657, 2, 18, 5, 2, -17 }, // 0x69 'i' U+0069 + { 1662, 4, 23, 5, 0, -17 }, // 0x6a 'j' U+006A + { 1674, 11, 18, 12, 1, -17 }, // 0x6b 'k' U+006B + { 1699, 2, 18, 5, 2, -17 }, // 0x6c 'l' U+006C + { 1704, 16, 13, 20, 2, -12 }, // 0x6d 'm' U+006D + { 1730, 10, 13, 13, 2, -12 }, // 0x6e 'n' U+006E + { 1747, 11, 14, 13, 1, -12 }, // 0x6f 'o' U+006F + { 1767, 12, 18, 13, 1, -12 }, // 0x70 'p' U+0070 + { 1794, 11, 18, 13, 1, -12 }, // 0x71 'q' U+0071 + { 1819, 6, 13, 8, 2, -12 }, // 0x72 'r' U+0072 + { 1829, 10, 14, 12, 1, -12 }, // 0x73 's' U+0073 + { 1847, 6, 17, 7, 0, -15 }, // 0x74 't' U+0074 + { 1860, 10, 14, 13, 2, -12 }, // 0x75 'u' U+0075 + { 1878, 12, 13, 12, 0, -12 }, // 0x76 'v' U+0076 + { 1898, 17, 13, 17, 0, -12 }, // 0x77 'w' U+0077 + { 1926, 11, 13, 12, 0, -12 }, // 0x78 'x' U+0078 + { 1944, 11, 18, 12, 0, -12 }, // 0x79 'y' U+0079 + { 1969, 10, 13, 12, 1, -12 }, // 0x7a 'z' U+007A + { 1986, 6, 23, 8, 1, -17 }, // 0x7b '{' U+007B + { 2004, 2, 23, 6, 2, -17 }, // 0x7c '|' U+007C + { 2010, 5, 23, 8, 1, -17 }, // 0x7d '}' U+007D + { 2025, 10, 5, 14, 2, -10 }, // 0x7e '~' U+007E + { 2032, 13, 18, 17, 2, -17 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 2062, 1, 1, 7, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 2063, 2, 18, 7, 3, -12 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 2068, 11, 18, 13, 1, -14 }, // 0x82 'CENT SIGN' U+00A2 + { 2093, 12, 19, 13, 1, -17 }, // 0x83 'POUND SIGN' U+00A3 + { 2122, 14, 18, 16, 1, -16 }, // 0x84 'EURO SIGN *' U+20AC + { 2154, 13, 17, 13, 0, -16 }, // 0x85 'YEN SIGN' U+00A5 + { 2182, 14, 23, 16, 1, -21 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 2223, 11, 23, 13, 1, -17 }, // 0x87 'SECTION SIGN' U+00A7 + { 2255, 10, 19, 12, 1, -17 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 2279, 18, 19, 18, 0, -17 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 2322, 7, 11, 9, 1, -17 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 2332, 9, 8, 11, 1, -10 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 2341, 12, 7, 14, 1, -8 }, // 0x8c 'NOT SIGN' U+00AC + { 2352, 6, 1, 8, 1, -6 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 2353, 18, 19, 18, 0, -17 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 2396, 6, 2, 8, 1, -16 }, // 0x8f 'MACRON' U+00AF + { 2398, 7, 7, 15, 4, -15 }, // 0x90 'DEGREE SIGN' U+00B0 + { 2405, 12, 15, 14, 1, -14 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 2428, 8, 10, 8, 0, -16 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 2438, 8, 11, 8, 0, -16 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 2449, 13, 22, 15, 1, -21 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 2485, 11, 18, 13, 2, -12 }, // 0x95 'MICRO SIGN' U+00B5 + { 2510, 12, 22, 13, 1, -17 }, // 0x96 'PILCROW SIGN' U+00B6 + { 2543, 3, 3, 7, 2, -7 }, // 0x97 'MIDDLE DOT' U+00B7 + { 2545, 10, 18, 12, 1, -17 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 2568, 4, 10, 8, 2, -16 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 2573, 7, 11, 9, 1, -17 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 2583, 9, 8, 11, 1, -9 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 2592, 22, 18, 24, 1, -17 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 2642, 20, 14, 23, 1, -12 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 2677, 16, 21, 16, 0, -20 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 2719, 10, 18, 13, 3, -12 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 2742, 16, 22, 16, 0, -21 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 2786, 16, 22, 16, 0, -21 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 2830, 16, 22, 16, 0, -21 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 2874, 16, 21, 16, 0, -20 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 2916, 16, 21, 16, 0, -20 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 2958, 16, 23, 16, 0, -22 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 3004, 23, 18, 24, 0, -17 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 3056, 15, 23, 17, 1, -17 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 3100, 13, 22, 16, 2, -21 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 3136, 13, 22, 16, 2, -21 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 3172, 13, 22, 16, 2, -21 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 3208, 13, 21, 16, 2, -20 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 3243, 5, 22, 7, 0, -21 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 3257, 5, 22, 7, 2, -21 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 3271, 7, 22, 7, 0, -21 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 3291, 7, 21, 7, 0, -20 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 3310, 16, 18, 17, 0, -17 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 3346, 14, 21, 17, 2, -20 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 3383, 17, 23, 19, 1, -21 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 3432, 17, 23, 19, 1, -21 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 3481, 17, 23, 19, 1, -21 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 3530, 17, 22, 19, 1, -20 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 3577, 17, 22, 19, 1, -20 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 3624, 10, 9, 14, 2, -9 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 3636, 17, 19, 19, 1, -17 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 3677, 13, 23, 17, 2, -21 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 3715, 13, 23, 17, 2, -21 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 3753, 13, 23, 17, 2, -21 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 3791, 13, 22, 17, 2, -20 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 3827, 16, 22, 16, 0, -21 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 3871, 13, 18, 16, 2, -17 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 3901, 12, 17, 15, 2, -16 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 3927, 12, 18, 13, 1, -16 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 3954, 12, 18, 13, 1, -16 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 3981, 12, 18, 13, 1, -16 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 4008, 12, 18, 13, 1, -16 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 4035, 12, 18, 13, 1, -16 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 4062, 12, 20, 13, 1, -18 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 4092, 19, 14, 22, 1, -12 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 4126, 10, 18, 12, 1, -12 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 4149, 11, 19, 13, 1, -17 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 4176, 11, 19, 13, 1, -17 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 4203, 11, 18, 13, 1, -16 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 4228, 11, 18, 13, 1, -16 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 4253, 5, 18, 6, 0, -17 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 4265, 5, 18, 6, 1, -17 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 4277, 7, 18, 6, 0, -17 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 4293, 6, 17, 6, 0, -16 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 4306, 11, 19, 13, 1, -17 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 4333, 10, 17, 13, 2, -16 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 4355, 11, 19, 13, 1, -17 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 4382, 11, 19, 13, 1, -17 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 4409, 11, 19, 13, 1, -17 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 4436, 11, 18, 13, 1, -16 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 4461, 11, 19, 13, 1, -17 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 4488, 12, 11, 14, 1, -10 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 4505, 13, 14, 15, 0, -12 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 4528, 10, 19, 13, 2, -17 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 4552, 10, 19, 13, 2, -17 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 4576, 10, 19, 13, 2, -17 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 4600, 10, 19, 13, 2, -17 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 4624, 11, 23, 12, 0, -17 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 4656, 12, 22, 13, 1, -16 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 4689, 11, 23, 12, 0, -17 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeSans12pt8b PROGMEM = { + (uint8_t *)FreeSans12pt8bBitmaps, + (GFXglyph *)FreeSans12pt8bGlyphs, + 0x20, 0xDF, 33 }; + +// Approx. 6072 bytes diff --git a/RX_FSK/src/fonts/FreeSans18pt7b.h b/RX_FSK/src/fonts/FreeSans18pt7b.h new file mode 100644 index 0000000..82ac479 --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans18pt7b.h @@ -0,0 +1,451 @@ +const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, + 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, + 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, + 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, + 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, + 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, + 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, + 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, + 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, + 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, + 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, + 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, + 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, + 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, + 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, + 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, + 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, + 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, + 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, + 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, + 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, + 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, + 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, + 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, + 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, + 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, + 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, + 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, + 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, + 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, + 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, + 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, + 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, + 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, + 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, + 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, + 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, + 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, + 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, + 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, + 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, + 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, + 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, + 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, + 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, + 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, + 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, + 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, + 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, + 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, + 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, + 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, + 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, + 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, + 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, + 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, + 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, + 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, + 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, + 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, + 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, + 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, + 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, + 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, + 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, + 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, + 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, + 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, + 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, + 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, + 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, + 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, + 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, + 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, + 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, + 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, + 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, + 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, + 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, + 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, + 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, + 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, + 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, + 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, + 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, + 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, + 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, + 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, + 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, + 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, + 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, + 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, + 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, + 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, + 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, + 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, + 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, + 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, + 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, + 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, + 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, + 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, + 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, + 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, + 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, + 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, + 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, + 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, + 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, + 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, + 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, + 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, + 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, + 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, + 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, + 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, + 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, + 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, + 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, + 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, + 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, + 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, + 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, + 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, + 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, + 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, + 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, + 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, + 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, + 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, + 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, + 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, + 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, + 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, + 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, + 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, + 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, + 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, + 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, + 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, + 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, + 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, + 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, + 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, + 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, + 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, + 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, + 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, + 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, + 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, + 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, + 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, + 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, + 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, + 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, + 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, + 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, + 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, + 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, + 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, + 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, + 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, + 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, + 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, + 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, + 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, + 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, + 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, + 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, + 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, + 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, + 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, + 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, + 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, + 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, + 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, + 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, + 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, + 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, + 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, + 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, + 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, + 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00}; + +const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 3, 26, 12, 4, -25}, // 0x21 '!' + {10, 9, 9, 12, 1, -24}, // 0x22 '"' + {21, 19, 24, 19, 0, -23}, // 0x23 '#' + {78, 16, 30, 19, 2, -26}, // 0x24 '$' + {138, 29, 25, 31, 1, -24}, // 0x25 '%' + {229, 20, 25, 23, 2, -24}, // 0x26 '&' + {292, 3, 9, 7, 2, -24}, // 0x27 ''' + {296, 8, 33, 12, 3, -25}, // 0x28 '(' + {329, 8, 33, 12, 1, -25}, // 0x29 ')' + {362, 10, 10, 14, 2, -25}, // 0x2A '*' + {375, 16, 16, 20, 2, -15}, // 0x2B '+' + {407, 3, 9, 10, 3, -3}, // 0x2C ',' + {411, 8, 3, 12, 2, -10}, // 0x2D '-' + {414, 3, 4, 9, 3, -3}, // 0x2E '.' + {416, 10, 26, 10, 0, -25}, // 0x2F '/' + {449, 16, 25, 19, 2, -24}, // 0x30 '0' + {499, 8, 25, 19, 4, -24}, // 0x31 '1' + {524, 16, 25, 19, 2, -24}, // 0x32 '2' + {574, 17, 25, 19, 1, -24}, // 0x33 '3' + {628, 16, 25, 19, 1, -24}, // 0x34 '4' + {678, 17, 25, 19, 1, -24}, // 0x35 '5' + {732, 16, 25, 19, 2, -24}, // 0x36 '6' + {782, 16, 25, 19, 2, -24}, // 0x37 '7' + {832, 17, 25, 19, 1, -24}, // 0x38 '8' + {886, 16, 25, 19, 1, -24}, // 0x39 '9' + {936, 3, 19, 9, 3, -18}, // 0x3A ':' + {944, 3, 24, 9, 3, -18}, // 0x3B ';' + {953, 17, 17, 20, 2, -16}, // 0x3C '<' + {990, 17, 9, 20, 2, -12}, // 0x3D '=' + {1010, 17, 17, 20, 2, -16}, // 0x3E '>' + {1047, 15, 26, 19, 3, -25}, // 0x3F '?' + {1096, 32, 31, 36, 1, -25}, // 0x40 '@' + {1220, 22, 26, 23, 1, -25}, // 0x41 'A' + {1292, 19, 26, 23, 3, -25}, // 0x42 'B' + {1354, 22, 26, 25, 1, -25}, // 0x43 'C' + {1426, 20, 26, 24, 3, -25}, // 0x44 'D' + {1491, 18, 26, 22, 3, -25}, // 0x45 'E' + {1550, 17, 26, 21, 3, -25}, // 0x46 'F' + {1606, 24, 26, 27, 1, -25}, // 0x47 'G' + {1684, 19, 26, 25, 3, -25}, // 0x48 'H' + {1746, 3, 26, 10, 4, -25}, // 0x49 'I' + {1756, 14, 26, 18, 1, -25}, // 0x4A 'J' + {1802, 20, 26, 24, 3, -25}, // 0x4B 'K' + {1867, 15, 26, 20, 3, -25}, // 0x4C 'L' + {1916, 24, 26, 30, 3, -25}, // 0x4D 'M' + {1994, 20, 26, 26, 3, -25}, // 0x4E 'N' + {2059, 25, 26, 27, 1, -25}, // 0x4F 'O' + {2141, 18, 26, 23, 3, -25}, // 0x50 'P' + {2200, 25, 28, 27, 1, -25}, // 0x51 'Q' + {2288, 20, 26, 25, 3, -25}, // 0x52 'R' + {2353, 20, 26, 23, 1, -25}, // 0x53 'S' + {2418, 19, 26, 22, 1, -25}, // 0x54 'T' + {2480, 19, 26, 25, 3, -25}, // 0x55 'U' + {2542, 21, 26, 23, 1, -25}, // 0x56 'V' + {2611, 32, 26, 33, 0, -25}, // 0x57 'W' + {2715, 21, 26, 23, 1, -25}, // 0x58 'X' + {2784, 23, 26, 24, 0, -25}, // 0x59 'Y' + {2859, 19, 26, 22, 1, -25}, // 0x5A 'Z' + {2921, 6, 33, 10, 2, -25}, // 0x5B '[' + {2946, 10, 26, 10, 0, -25}, // 0x5C '\' + {2979, 6, 33, 10, 1, -25}, // 0x5D ']' + {3004, 13, 13, 16, 2, -24}, // 0x5E '^' + {3026, 21, 2, 19, -1, 5}, // 0x5F '_' + {3032, 7, 5, 9, 1, -25}, // 0x60 '`' + {3037, 17, 19, 19, 1, -18}, // 0x61 'a' + {3078, 16, 26, 20, 2, -25}, // 0x62 'b' + {3130, 16, 19, 18, 1, -18}, // 0x63 'c' + {3168, 17, 26, 20, 1, -25}, // 0x64 'd' + {3224, 16, 19, 19, 1, -18}, // 0x65 'e' + {3262, 7, 26, 10, 1, -25}, // 0x66 'f' + {3285, 16, 27, 19, 1, -18}, // 0x67 'g' + {3339, 15, 26, 19, 2, -25}, // 0x68 'h' + {3388, 3, 26, 8, 2, -25}, // 0x69 'i' + {3398, 6, 34, 9, 0, -25}, // 0x6A 'j' + {3424, 16, 26, 18, 2, -25}, // 0x6B 'k' + {3476, 3, 26, 7, 2, -25}, // 0x6C 'l' + {3486, 24, 19, 28, 2, -18}, // 0x6D 'm' + {3543, 15, 19, 19, 2, -18}, // 0x6E 'n' + {3579, 17, 19, 19, 1, -18}, // 0x6F 'o' + {3620, 16, 25, 20, 2, -18}, // 0x70 'p' + {3670, 17, 25, 20, 1, -18}, // 0x71 'q' + {3724, 9, 19, 12, 2, -18}, // 0x72 'r' + {3746, 14, 19, 17, 2, -18}, // 0x73 's' + {3780, 7, 23, 10, 1, -22}, // 0x74 't' + {3801, 15, 19, 19, 2, -18}, // 0x75 'u' + {3837, 17, 19, 17, 0, -18}, // 0x76 'v' + {3878, 25, 19, 25, 0, -18}, // 0x77 'w' + {3938, 16, 19, 17, 0, -18}, // 0x78 'x' + {3976, 17, 27, 17, 0, -18}, // 0x79 'y' + {4034, 15, 19, 17, 1, -18}, // 0x7A 'z' + {4070, 8, 33, 12, 1, -25}, // 0x7B '{' + {4103, 2, 33, 9, 3, -25}, // 0x7C '|' + {4112, 8, 33, 12, 3, -25}, // 0x7D '}' + {4145, 15, 7, 18, 1, -15}}; // 0x7E '~' + +const GFXfont FreeSans18pt7b PROGMEM = {(uint8_t *)FreeSans18pt7bBitmaps, + (GFXglyph *)FreeSans18pt7bGlyphs, 0x20, + 0x7E, 42}; + +// Approx. 4831 bytes diff --git a/RX_FSK/src/fonts/FreeSans18pt8b.h b/RX_FSK/src/fonts/FreeSans18pt8b.h new file mode 100644 index 0000000..53ec130 --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans18pt8b.h @@ -0,0 +1,1030 @@ +const uint8_t FreeSans18pt8bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x6D, 0xB0, 0x3F, 0xFC, 0xE7, + 0xF3, 0xF9, 0xFC, 0xFE, 0x3F, 0x1B, 0x8C, 0x86, 0x43, 0x00, 0x01, 0xC3, + 0x80, 0x38, 0x70, 0x06, 0x0C, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, + 0x0F, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, + 0x03, 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x01, 0x83, 0x07, 0xFF, 0xFE, + 0xFF, 0xFF, 0xC1, 0xC3, 0x80, 0x38, 0x70, 0x06, 0x0C, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x07, 0x0E, 0x00, 0xE1, 0xC0, 0x18, 0x30, 0x00, 0x01, 0xC0, + 0x00, 0xE0, 0x01, 0xFC, 0x03, 0xFF, 0x83, 0xFF, 0xE3, 0xCE, 0x79, 0xC7, + 0x1C, 0xE3, 0x8E, 0x61, 0xC3, 0x38, 0xE0, 0x1C, 0x70, 0x0F, 0x38, 0x03, + 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xF0, 0x07, 0xFC, 0x01, 0xFF, 0x00, 0xE3, + 0xC0, 0x70, 0xE0, 0x38, 0x7E, 0x1C, 0x3F, 0x0E, 0x1F, 0x87, 0x0E, 0xE3, + 0x8F, 0x79, 0xCF, 0x1F, 0xFF, 0x07, 0xFF, 0x00, 0x7E, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, 0x60, 0x0F, + 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x30, 0x07, 0x0E, 0x03, 0x00, 0x70, 0x38, + 0x38, 0x03, 0x01, 0xC1, 0x80, 0x18, 0x0E, 0x1C, 0x00, 0xE0, 0x70, 0xC0, + 0x03, 0x07, 0x0E, 0x00, 0x1F, 0xF8, 0x60, 0x00, 0x7F, 0x87, 0x00, 0x00, + 0xF0, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x3F, 0x00, 0x01, + 0x83, 0xFC, 0x00, 0x1C, 0x3C, 0x70, 0x00, 0xC1, 0x81, 0xC0, 0x0E, 0x1C, + 0x0E, 0x00, 0x60, 0xE0, 0x30, 0x07, 0x07, 0x01, 0x80, 0x30, 0x38, 0x1C, + 0x03, 0x80, 0xE1, 0xC0, 0x18, 0x07, 0xFE, 0x01, 0x80, 0x0F, 0xE0, 0x0C, + 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xC1, + 0xC0, 0x1C, 0x1C, 0x01, 0xC0, 0xC0, 0x1C, 0x1C, 0x01, 0xC1, 0xC0, 0x1E, + 0x3C, 0x00, 0xF7, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x03, + 0xFE, 0x1C, 0x78, 0xF1, 0xC7, 0x07, 0x9C, 0xE0, 0x39, 0xCE, 0x03, 0xF8, + 0xE0, 0x1F, 0x8E, 0x00, 0xF0, 0xE0, 0x0F, 0x8F, 0x01, 0xF8, 0x78, 0x3D, + 0xC7, 0xFF, 0x9E, 0x3F, 0xF0, 0xF0, 0x78, 0x00, 0xFF, 0xFF, 0xF6, 0x40, + 0x06, 0x0C, 0x30, 0xE1, 0x87, 0x0C, 0x38, 0x70, 0xC3, 0x87, 0x0E, 0x1C, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, + 0x83, 0x83, 0x07, 0x06, 0x06, 0xC0, 0x60, 0x70, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0C, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, 0x38, 0x30, + 0x70, 0x60, 0x06, 0x00, 0xC0, 0x18, 0x23, 0x27, 0xFE, 0x7F, 0x83, 0x80, + 0xF8, 0x39, 0x86, 0x30, 0x40, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFF, 0x33, 0x36, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0x30, 0x18, 0x06, 0x01, 0x80, + 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, + 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, 0x01, 0x80, 0xC0, + 0x30, 0x0C, 0x00, 0x03, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x03, 0xC3, 0xC3, + 0x80, 0xE1, 0xC0, 0x79, 0xC0, 0x1C, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, + 0xDC, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1D, 0xC0, 0x0E, 0xE0, + 0x0F, 0x70, 0x07, 0xB8, 0x03, 0x9C, 0x01, 0xCE, 0x00, 0xE3, 0x80, 0xF1, + 0xC0, 0x70, 0x70, 0x78, 0x3F, 0xF8, 0x0F, 0xF8, 0x01, 0xF0, 0x00, 0x03, + 0x03, 0x07, 0x07, 0x1F, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x03, 0xE0, 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xE3, 0x80, 0x73, 0xC0, + 0x3D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0x80, 0x03, 0xC0, 0x01, 0xC0, + 0x01, 0xE0, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x0F, 0xC0, 0x0F, 0x80, + 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, + 0x07, 0x83, 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x0F, 0xF0, + 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x01, 0xF8, 0x00, 0xFC, 0x00, + 0xF7, 0x00, 0x73, 0x80, 0x79, 0xF0, 0x78, 0x7F, 0xFC, 0x1F, 0xF8, 0x01, + 0xF0, 0x00, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x0F, + 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0x78, 0x07, 0x3C, 0x03, 0x9E, 0x03, + 0x8F, 0x03, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xE1, 0xC0, 0xF1, 0xC0, 0x78, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x80, 0x03, 0xC0, 0x01, + 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1F, 0xFF, 0x0F, 0xFF, + 0x87, 0xFF, 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1B, 0xFC, 0x1F, 0xFF, 0x0F, 0xCF, 0xC7, 0x80, 0xF3, + 0x80, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, + 0xFC, 0x00, 0xF7, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, + 0xF8, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x03, 0xFE, 0x03, 0xFF, 0x83, 0xC3, + 0xC3, 0xC0, 0xF1, 0xC0, 0x39, 0xE0, 0x1C, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1C, 0xFE, 0x0F, 0xFF, 0xC7, 0xF3, 0xE7, 0xE0, 0x79, 0xE0, 0x1C, + 0xE0, 0x0F, 0x70, 0x03, 0xB8, 0x01, 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x80, + 0x71, 0xC0, 0x78, 0xF8, 0x78, 0x3F, 0xFC, 0x0F, 0xF8, 0x01, 0xF0, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x01, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0x83, 0xC3, 0x80, + 0xF3, 0xC0, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x07, 0x1C, 0x07, 0x07, + 0x8F, 0x81, 0xFF, 0x01, 0xFF, 0xC1, 0xF1, 0xF1, 0xE0, 0x3C, 0xE0, 0x0E, + 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x7B, 0xC0, + 0x38, 0xF0, 0x7C, 0x7F, 0xFC, 0x0F, 0xFC, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x07, 0xFC, 0x07, 0xFF, 0x07, 0x83, 0xC7, 0x80, 0xE3, 0x80, 0x39, 0xC0, + 0x1D, 0xE0, 0x0E, 0xE0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xF7, + 0x80, 0xF9, 0xF3, 0xFC, 0x7F, 0xEE, 0x1F, 0xC7, 0x00, 0x07, 0x80, 0x03, + 0x80, 0x01, 0xCE, 0x00, 0xE7, 0x00, 0xE3, 0xC0, 0x70, 0xF0, 0xF0, 0x3F, + 0xF8, 0x0F, 0xF0, 0x01, 0xE0, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, + 0xFC, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x32, 0x26, + 0xC0, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xE0, 0x0F, 0xE0, 0x1F, 0x80, + 0x3F, 0x00, 0xFE, 0x01, 0xF8, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0x00, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x00, 0x3E, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x7E, + 0x00, 0x07, 0x80, 0x07, 0xC0, 0x0F, 0xC0, 0x3F, 0x00, 0x7E, 0x01, 0xFC, + 0x03, 0xF0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, + 0xFF, 0xE3, 0x81, 0xEE, 0x01, 0xDC, 0x03, 0xF8, 0x03, 0xF0, 0x07, 0x00, + 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, + 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x01, 0xF8, 0x07, + 0xE0, 0x03, 0xC0, 0x00, 0xF8, 0x07, 0x80, 0x00, 0x78, 0x0F, 0x00, 0x00, + 0x3C, 0x1E, 0x00, 0x00, 0x1E, 0x1C, 0x03, 0xF3, 0x8E, 0x38, 0x0F, 0xFB, + 0x8F, 0x38, 0x1E, 0x1B, 0x87, 0x70, 0x3C, 0x0F, 0x07, 0x70, 0x38, 0x0F, + 0x07, 0x60, 0x70, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xF0, 0x0E, + 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, + 0x0E, 0xF0, 0xF0, 0x3C, 0x1C, 0x70, 0x78, 0x7C, 0x3C, 0x70, 0x7D, 0xFE, + 0xF8, 0x78, 0x3F, 0xDF, 0xF0, 0x3C, 0x0F, 0x0F, 0xC0, 0x1E, 0x00, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x02, + 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x78, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, + 0x01, 0xFC, 0x00, 0x07, 0x78, 0x00, 0x1C, 0xE0, 0x00, 0xF3, 0x80, 0x03, + 0x8F, 0x00, 0x1E, 0x1C, 0x00, 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0F, 0x03, + 0x80, 0x38, 0x0E, 0x00, 0xE0, 0x3C, 0x07, 0x80, 0x70, 0x1F, 0xFF, 0xE0, + 0x7F, 0xFF, 0x83, 0xC0, 0x0E, 0x0E, 0x00, 0x3C, 0x38, 0x00, 0xF1, 0xE0, + 0x01, 0xC7, 0x00, 0x07, 0xBC, 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, + 0xF0, 0xFF, 0xC0, 0x1F, 0xFF, 0xC3, 0xFF, 0xFC, 0x70, 0x1F, 0xCE, 0x00, + 0x79, 0xC0, 0x07, 0xB8, 0x00, 0xF7, 0x00, 0x1E, 0xE0, 0x03, 0xDC, 0x00, + 0x73, 0x80, 0x1E, 0x7F, 0xFF, 0x8F, 0xFF, 0xC1, 0xFF, 0xFE, 0x38, 0x03, + 0xE7, 0x00, 0x1E, 0xE0, 0x01, 0xDC, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, + 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xB8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, + 0x1F, 0xFF, 0x80, 0x00, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, + 0xC0, 0xF8, 0x3C, 0x00, 0xF0, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x9C, 0x00, + 0x0E, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, + 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, + 0x00, 0x03, 0x80, 0x00, 0xFF, 0x00, 0x03, 0x9C, 0x00, 0x0E, 0x78, 0x00, + 0x78, 0xE0, 0x01, 0xC3, 0xE0, 0x0F, 0x07, 0xC0, 0xF8, 0x0F, 0xFF, 0xC0, + 0x0F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0xFF, + 0xFF, 0x0E, 0x01, 0xF8, 0xE0, 0x03, 0xCE, 0x00, 0x1E, 0xE0, 0x00, 0xEE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, + 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0E, 0xE0, 0x01, 0xEE, 0x00, + 0x3C, 0xE0, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0F, + 0xFF, 0xF7, 0xFF, 0xFB, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, + 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x80, + 0x3F, 0xFF, 0x80, 0xF8, 0x0F, 0x83, 0xE0, 0x07, 0x87, 0x00, 0x07, 0x9E, + 0x00, 0x0F, 0x38, 0x00, 0x0E, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x01, 0xFF, 0xF8, 0x03, + 0xFF, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, + 0x3B, 0x80, 0x00, 0xF7, 0x80, 0x01, 0xE7, 0x80, 0x07, 0xCF, 0x80, 0x1F, + 0x8F, 0xC0, 0xF7, 0x0F, 0xFF, 0xCE, 0x07, 0xFF, 0x0C, 0x03, 0xF0, 0x00, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, + 0x00, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x3F, 0x80, 0xFF, 0x03, 0xBE, 0x1E, + 0x7F, 0xF0, 0xFF, 0x80, 0x78, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x1E, 0xE0, + 0x03, 0xCE, 0x00, 0x78, 0xE0, 0x0F, 0x0E, 0x01, 0xE0, 0xE0, 0x3C, 0x0E, + 0x07, 0x80, 0xE0, 0xF0, 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, + 0xEF, 0xE0, 0x0F, 0xEE, 0x00, 0xFC, 0xF0, 0x0F, 0x87, 0x80, 0xF0, 0x38, + 0x0E, 0x03, 0xC0, 0xE0, 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, + 0x78, 0xE0, 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x3F, + 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x77, 0xFC, 0x00, 0x77, + 0xEE, 0x00, 0x77, 0xEE, 0x00, 0xE7, 0xEE, 0x00, 0xE7, 0xE7, 0x00, 0xE7, + 0xE7, 0x01, 0xC7, 0xE7, 0x01, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x83, 0x87, + 0xE3, 0x83, 0x87, 0xE1, 0xC3, 0x87, 0xE1, 0xC7, 0x07, 0xE1, 0xC7, 0x07, + 0xE0, 0xE7, 0x07, 0xE0, 0xEE, 0x07, 0xE0, 0xEE, 0x07, 0xE0, 0x7E, 0x07, + 0xE0, 0x7C, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0x3C, 0x07, 0xE0, 0x00, 0x7F, + 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xFC, 0x00, 0x7F, 0xC0, 0x07, + 0xFE, 0x00, 0x7E, 0xF0, 0x07, 0xE7, 0x00, 0x7E, 0x78, 0x07, 0xE3, 0xC0, + 0x7E, 0x1C, 0x07, 0xE1, 0xE0, 0x7E, 0x0F, 0x07, 0xE0, 0x70, 0x7E, 0x07, + 0x87, 0xE0, 0x38, 0x7E, 0x01, 0xC7, 0xE0, 0x1E, 0x7E, 0x00, 0xE7, 0xE0, + 0x0F, 0x7E, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x3F, 0xE0, 0x01, 0xFE, + 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x01, + 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF0, 0xF0, 0x00, 0x38, + 0xF0, 0x00, 0x1E, 0x70, 0x00, 0x07, 0x38, 0x00, 0x03, 0xDC, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, + 0x0F, 0xE0, 0x00, 0x07, 0x70, 0x00, 0x07, 0xB8, 0x00, 0x03, 0xDE, 0x00, + 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0xE1, 0xF0, 0x00, 0xF0, 0x7C, + 0x00, 0xF0, 0x1F, 0x81, 0xF0, 0x07, 0xFF, 0xF0, 0x00, 0xFF, 0xE0, 0x00, + 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0xC3, 0xFF, 0xFE, 0x70, 0x0F, + 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, 0x77, 0x00, 0x0F, 0xE0, 0x01, + 0xFC, 0x00, 0x3B, 0x80, 0x0F, 0x70, 0x03, 0xEF, 0xFF, 0xF9, 0xFF, 0xFE, + 0x3F, 0xFF, 0x87, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, + 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF0, 0x01, + 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x03, 0xC1, 0xE0, 0x00, 0xF0, + 0xF0, 0x00, 0x38, 0xF0, 0x00, 0x1E, 0x70, 0x00, 0x07, 0x38, 0x00, 0x03, + 0xDC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x70, 0x00, 0x07, 0xB8, 0x00, + 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x31, 0xE3, 0xC0, 0x3C, 0xE1, 0xE0, + 0x0F, 0xF0, 0x7C, 0x03, 0xF0, 0x1F, 0x83, 0xF8, 0x07, 0xFF, 0xFE, 0x00, + 0xFF, 0xE7, 0x80, 0x0F, 0x81, 0xC0, 0x00, 0x00, 0x40, 0xFF, 0xF0, 0x07, + 0xFF, 0xFC, 0x3F, 0xFF, 0xF1, 0xE0, 0x0F, 0xCF, 0x00, 0x1E, 0x78, 0x00, + 0x7B, 0xC0, 0x03, 0xDE, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0x80, 0x07, 0x3C, + 0x00, 0x39, 0xE0, 0x03, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xFF, + 0x1E, 0x00, 0x78, 0xF0, 0x01, 0xE7, 0x80, 0x07, 0x3C, 0x00, 0x39, 0xE0, + 0x01, 0xCF, 0x00, 0x0E, 0x78, 0x00, 0x73, 0xC0, 0x03, 0x9E, 0x00, 0x1E, + 0xF0, 0x00, 0xF7, 0x80, 0x03, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x3F, + 0xFF, 0x83, 0xC0, 0x7C, 0x78, 0x03, 0xC7, 0x00, 0x1E, 0xF0, 0x00, 0xEF, + 0x00, 0x0E, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xFC, 0x00, + 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0x7E, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, + 0x0E, 0x78, 0x01, 0xE7, 0xE0, 0x7C, 0x3F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, + 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, + 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0xEF, + 0x00, 0x1E, 0x78, 0x01, 0xE3, 0xE0, 0x7C, 0x1F, 0xFF, 0x80, 0xFF, 0xE0, + 0x01, 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xE7, 0x00, 0x07, 0x9E, + 0x00, 0x1E, 0x78, 0x00, 0x70, 0xE0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, + 0x38, 0x1C, 0x01, 0xE0, 0x78, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0xF0, + 0x0F, 0x03, 0x80, 0x1C, 0x0E, 0x00, 0x70, 0x38, 0x01, 0xE1, 0xC0, 0x03, + 0x87, 0x00, 0x0E, 0x1C, 0x00, 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0xF0, 0x03, 0xC0, 0x0E, 0xF0, + 0x07, 0xC0, 0x1E, 0x70, 0x07, 0xC0, 0x1E, 0x70, 0x07, 0xC0, 0x1E, 0x78, + 0x0E, 0xE0, 0x1C, 0x78, 0x0E, 0xE0, 0x3C, 0x38, 0x0E, 0xE0, 0x3C, 0x38, + 0x0E, 0x70, 0x3C, 0x38, 0x1C, 0x70, 0x38, 0x3C, 0x1C, 0x70, 0x38, 0x1C, + 0x1C, 0x70, 0x78, 0x1C, 0x1C, 0x38, 0x70, 0x1C, 0x38, 0x38, 0x70, 0x1E, + 0x38, 0x38, 0x70, 0x0E, 0x38, 0x1C, 0xF0, 0x0E, 0x70, 0x1C, 0xE0, 0x0E, + 0x70, 0x1C, 0xE0, 0x0F, 0x70, 0x1C, 0xE0, 0x07, 0x70, 0x0E, 0xE0, 0x07, + 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x0F, 0xC0, 0x03, + 0xE0, 0x07, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x03, 0xC0, 0x07, 0x80, 0xF0, + 0x00, 0x79, 0xE0, 0x01, 0xE3, 0xC0, 0x0F, 0x0F, 0x00, 0x78, 0x1E, 0x01, + 0xE0, 0x3C, 0x0F, 0x00, 0xF0, 0x78, 0x01, 0xE1, 0xC0, 0x03, 0xCF, 0x00, + 0x0F, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, + 0x00, 0x78, 0x78, 0x03, 0xC1, 0xE0, 0x0E, 0x03, 0xC0, 0x78, 0x07, 0x83, + 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x7B, 0xC0, 0x01, 0xE0, 0xF8, + 0x00, 0x1E, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xE0, + 0x07, 0x81, 0xE0, 0x1E, 0x03, 0xC0, 0x38, 0x03, 0xC0, 0xF0, 0x03, 0x81, + 0xC0, 0x07, 0x87, 0x80, 0x07, 0x9E, 0x00, 0x0F, 0x38, 0x00, 0x0F, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, + 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0xF0, + 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x0E, 0x1C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, + 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x7F, 0xFE, 0xC0, 0x30, 0x0C, + 0x01, 0x80, 0x60, 0x18, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0x80, 0x60, + 0x08, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, + 0xC0, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, + 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, + 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, + 0xC0, 0x1F, 0x01, 0xD8, 0x0C, 0xE0, 0xE3, 0x06, 0x18, 0x30, 0xE3, 0x83, + 0x18, 0x1D, 0xC0, 0x6C, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0x03, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xE0, + 0xF0, 0x78, 0x78, 0x0E, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, + 0x7F, 0x03, 0xFF, 0xC3, 0xFE, 0x71, 0xF0, 0x1C, 0x70, 0x07, 0x1C, 0x01, + 0xCF, 0x00, 0xF1, 0xC0, 0x3C, 0x70, 0x3F, 0x1F, 0xFD, 0xF3, 0xFE, 0x7C, + 0x3E, 0x0F, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, 0xFC, 0x3E, + 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x1E, + 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x0F, 0xF8, + 0x1F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x07, + 0x70, 0x0E, 0x78, 0x0E, 0x3C, 0x1E, 0x1F, 0xFC, 0x0F, 0xF8, 0x03, 0xC0, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x07, 0x07, 0xC7, 0x1F, 0xF7, 0x3F, 0xFF, 0x3C, 0x1F, 0x78, 0x0F, + 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x07, 0x70, 0x0F, 0x78, 0x0F, 0x3C, 0x1F, + 0x3F, 0xFB, 0x1F, 0xF3, 0x07, 0xC0, 0x03, 0xE0, 0x07, 0xFC, 0x07, 0xFF, + 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x0E, 0xE0, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x07, 0x00, 0x03, 0x80, 0x1D, + 0xC0, 0x1C, 0xF0, 0x0E, 0x3C, 0x1E, 0x0F, 0xFF, 0x03, 0xFE, 0x00, 0x7C, + 0x00, 0x02, 0x1F, 0x3F, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x03, 0xC0, 0x0F, 0xF7, 0x3F, 0xFF, 0x3C, 0x1F, 0x78, + 0x0F, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x07, 0x70, 0x0F, 0x78, 0x0F, 0x3C, + 0x3F, 0x3F, 0xF7, 0x0F, 0xE7, 0x07, 0xC7, 0x00, 0x07, 0x70, 0x07, 0x70, + 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x01, 0x80, 0xE0, 0x01, 0xC0, + 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0xF8, + 0xE7, 0xF9, 0xDF, 0xFB, 0xF0, 0x7F, 0xC0, 0x7F, 0x00, 0xFE, 0x01, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, + 0x00, 0x00, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xFF, 0xFB, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, 0xE1, 0xE0, 0xE3, 0xC0, + 0xE7, 0x80, 0xEF, 0x00, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xC0, 0xE1, 0xE0, + 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, 0xE0, 0x38, 0xE0, 0x3C, 0xE0, 0x1E, + 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x01, 0xE0, 0x7C, 0x73, 0xFC, 0xFF, 0x3B, 0xFE, 0xFF, 0xDF, 0x07, 0xE0, + 0xEF, 0x01, 0xE0, 0x7F, 0x80, 0xE0, 0x1F, 0x80, 0x70, 0x0F, 0xC0, 0x38, + 0x07, 0xE0, 0x1C, 0x03, 0xF0, 0x0E, 0x01, 0xF8, 0x07, 0x00, 0xFC, 0x03, + 0x80, 0x7E, 0x01, 0xC0, 0x3F, 0x00, 0xE0, 0x1F, 0x80, 0x70, 0x0F, 0xC0, + 0x38, 0x07, 0xE0, 0x1C, 0x03, 0xF0, 0x0E, 0x01, 0xF8, 0x07, 0x00, 0xE0, + 0x01, 0xF1, 0xCF, 0xF3, 0xBF, 0xF7, 0xE0, 0xFF, 0x80, 0xFE, 0x01, 0xFC, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x38, + 0x03, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0x83, 0xC7, 0x80, 0xF3, 0x80, + 0x39, 0xC0, 0x1D, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, + 0x00, 0x7F, 0x00, 0x3B, 0x80, 0x39, 0xC0, 0x1C, 0xF0, 0x1E, 0x3C, 0x1E, + 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0xEF, 0xF8, 0xFF, + 0xFC, 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, + 0x0F, 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0x07, 0xC0, 0x1F, 0xF3, 0x3F, 0xFB, 0x3C, 0x1F, 0x78, 0x0F, 0x70, + 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xF0, 0x07, 0x70, 0x0F, 0x78, 0x0F, 0x7C, 0x1F, 0x3F, + 0xFF, 0x1F, 0xF7, 0x03, 0xC7, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x03, 0xF3, 0xFB, 0xFF, 0xCF, + 0x87, 0x83, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xC1, + 0xE7, 0x01, 0xCE, 0x03, 0x9C, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xE0, + 0x1F, 0xF0, 0x07, 0xE0, 0x01, 0xE0, 0x01, 0xF8, 0x03, 0xF8, 0x07, 0x78, + 0x1C, 0xFF, 0xF8, 0xFF, 0xE0, 0x3E, 0x00, 0x1C, 0x0E, 0x07, 0x03, 0x81, + 0xC7, 0xFF, 0xFE, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xFC, 0x7E, 0x0F, 0xE0, 0x0F, + 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, + 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, + 0xFC, 0x07, 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x70, 0x07, + 0xB8, 0x03, 0x9E, 0x01, 0xC7, 0x01, 0xE3, 0x80, 0xE1, 0xE0, 0x70, 0x70, + 0x70, 0x38, 0x38, 0x1E, 0x1C, 0x07, 0x1C, 0x03, 0x8E, 0x00, 0xE6, 0x00, + 0x77, 0x00, 0x3B, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xE0, + 0x00, 0xF0, 0x3C, 0x07, 0xB8, 0x1F, 0x03, 0x9C, 0x0F, 0x81, 0xCE, 0x07, + 0xC1, 0xE3, 0x87, 0x60, 0xE1, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, 0x70, + 0xCE, 0x38, 0x1C, 0xE3, 0x1C, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, 0x01, + 0xD8, 0x77, 0x00, 0xEC, 0x1B, 0x80, 0x7E, 0x0F, 0xC0, 0x1F, 0x07, 0xC0, + 0x0F, 0x03, 0xE0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x0E, + 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x70, 0x0E, 0xE0, 0x07, 0xE0, + 0x07, 0xC0, 0x03, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0E, 0xE0, 0x1E, 0x70, + 0x1C, 0x78, 0x38, 0x38, 0x78, 0x1C, 0x70, 0x1E, 0xE0, 0x0E, 0xE0, 0x0E, + 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x70, 0x1C, 0x38, 0x3C, 0x38, 0x38, + 0x38, 0x38, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x0E, 0xE0, 0x0E, 0xE0, + 0x0E, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, 0x03, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0x7C, 0x00, + 0x30, 0x00, 0x7F, 0xFE, 0xFF, 0xFC, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x80, + 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x01, 0x87, 0xC3, 0xE3, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0xC0, 0xE0, 0x70, 0xF0, 0xF0, 0x78, 0x1E, 0x03, 0x01, 0xC0, + 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x1F, + 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0xC0, 0xF0, 0xF8, 0x18, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x0E, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x18, 0x38, 0xF8, 0xF0, + 0x7C, 0x01, 0xFC, 0x0F, 0x1E, 0x1E, 0x1F, 0xEC, 0x0F, 0xC0, 0x06, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, + 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0xFF, 0xF0, 0x36, 0xDB, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x03, 0xE0, 0x0F, 0xF8, 0x3F, 0xFC, 0x3D, 0x9E, + 0x71, 0x8E, 0x71, 0x8E, 0xE1, 0x87, 0xE1, 0x80, 0xE1, 0x80, 0xE1, 0x80, + 0xE1, 0x80, 0xE1, 0x80, 0xE1, 0x80, 0xE1, 0x87, 0xF1, 0x8F, 0x79, 0x8E, + 0x3D, 0x9E, 0x3F, 0xFC, 0x0F, 0xF8, 0x03, 0xE0, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFF, 0xE0, 0xF8, 0x7C, 0x38, + 0x0F, 0x1E, 0x01, 0xC7, 0x00, 0x39, 0xC0, 0x0E, 0x70, 0x03, 0x9C, 0x00, + 0x07, 0x80, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x0F, 0xFF, 0x00, + 0x38, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0C, + 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xFF, 0xEE, 0xFF, 0xFF, 0xDC, 0x3F, + 0xE0, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x00, 0x7F, 0xFE, 0x07, + 0xC0, 0xE0, 0x78, 0x01, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, + 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xC0, + 0x00, 0x0E, 0x00, 0x01, 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x1C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xE0, + 0x08, 0x0F, 0x81, 0xC0, 0x3F, 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xF8, 0x00, + 0x70, 0x00, 0xEE, 0x00, 0x38, 0xE0, 0x07, 0x1C, 0x01, 0xC1, 0xC0, 0x38, + 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x38, 0x70, 0x07, 0x1C, 0x00, 0x73, 0x80, + 0x0E, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0x00, 0x38, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xF0, 0xFF, 0xFE, 0x00, 0x70, 0x00, + 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x07, 0x0C, 0x00, 0x31, 0x80, 0x03, 0xB8, 0x00, 0x1F, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xC0, + 0x7C, 0x78, 0x03, 0xC7, 0x00, 0x1E, 0xF0, 0x00, 0xEF, 0x00, 0x0E, 0xF0, + 0x00, 0x07, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xFC, 0x00, 0x1F, 0xFC, 0x00, + 0x7F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0E, 0x78, 0x01, + 0xE7, 0xE0, 0x7C, 0x3F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xF8, 0x00, 0x00, + 0x00, 0x03, 0xFC, 0x03, 0xFF, 0x03, 0xC7, 0x81, 0xC0, 0xE0, 0xE0, 0x70, + 0x70, 0x38, 0x38, 0x1C, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF0, 0x07, 0x3E, + 0x07, 0x0F, 0x83, 0x03, 0xF1, 0x80, 0x7D, 0xC0, 0x1E, 0x70, 0x07, 0xBC, + 0x01, 0xCF, 0x00, 0xE7, 0xE0, 0x70, 0xF8, 0x70, 0x3E, 0x38, 0x07, 0xF8, + 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x0E, 0x0E, 0x07, 0x87, 0x01, 0xC3, 0x81, + 0xE1, 0xC0, 0xE0, 0x78, 0xF0, 0x3F, 0xF0, 0x0F, 0xF0, 0x00, 0x18, 0x38, + 0x38, 0xE0, 0x39, 0x80, 0x37, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x00, 0x03, + 0xE0, 0x1F, 0xF0, 0x7F, 0xF1, 0xE0, 0xF3, 0x80, 0xE7, 0x01, 0xCE, 0x00, + 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x0F, 0xF8, 0x03, 0xF0, 0x00, 0xF0, + 0x00, 0xFC, 0x01, 0xFC, 0x03, 0xBC, 0x0E, 0x7F, 0xFC, 0x7F, 0xF0, 0x1F, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3C, + 0x00, 0xF0, 0x1C, 0x00, 0x0E, 0x0E, 0x03, 0x81, 0xC7, 0x07, 0xF8, 0x31, + 0xC3, 0xFF, 0x0E, 0xE0, 0xC0, 0xC1, 0xB8, 0x70, 0x38, 0x7C, 0x18, 0x0E, + 0x0F, 0x0E, 0x00, 0x03, 0xC3, 0x80, 0x00, 0xF0, 0xE0, 0x00, 0x3C, 0x38, + 0x00, 0x0F, 0x0E, 0x01, 0x83, 0xC1, 0x80, 0xE1, 0xF8, 0x70, 0x38, 0x76, + 0x0E, 0x1C, 0x19, 0xC3, 0xFF, 0x0E, 0x30, 0x7F, 0x87, 0x0E, 0x03, 0x03, + 0xC1, 0xC0, 0x01, 0xE0, 0x3C, 0x00, 0xF0, 0x07, 0xF3, 0xF0, 0x00, 0x7F, + 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x0F, 0xF1, 0x86, 0x30, 0xE0, 0x1C, + 0x3F, 0x9F, 0x77, 0x0E, 0xC1, 0xDC, 0x39, 0xFF, 0x9E, 0x70, 0x00, 0x00, + 0x3F, 0xF0, 0x08, 0x11, 0x83, 0x78, 0x7F, 0x1E, 0xC1, 0xC8, 0x10, 0xC1, + 0xCF, 0x1E, 0x78, 0x71, 0x83, 0x08, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0x80, + 0x00, 0x7F, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3C, 0x00, 0xF0, 0x1C, 0x00, + 0x0E, 0x0E, 0x00, 0x01, 0xC7, 0x1F, 0xFC, 0x31, 0xC7, 0xFF, 0x8E, 0xE1, + 0xC0, 0xE1, 0xB8, 0x70, 0x18, 0x7C, 0x1C, 0x06, 0x0F, 0x07, 0x03, 0x83, + 0xC1, 0xFF, 0xC0, 0xF0, 0x7F, 0xE0, 0x3C, 0x1F, 0xFC, 0x0F, 0x07, 0x03, + 0x83, 0xC1, 0xC0, 0xE1, 0xF8, 0x70, 0x38, 0x76, 0x1C, 0x0E, 0x19, 0xC7, + 0x03, 0x8E, 0x31, 0xC0, 0x77, 0x0E, 0x00, 0x03, 0xC1, 0xC0, 0x01, 0xE0, + 0x3C, 0x00, 0xF0, 0x07, 0xF3, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xF0, + 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x7C, 0x07, + 0x80, 0xF0, 0x1B, 0x06, 0x7B, 0xC7, 0xF0, 0x10, 0x00, 0x01, 0x80, 0x00, + 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x06, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x60, 0x00, 0x30, 0x00, 0x18, + 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFC, 0x1E, 0x1F, 0xE6, 0x1F, + 0x83, 0xC0, 0xF0, 0x30, 0x1C, 0x0E, 0x0F, 0x0F, 0x07, 0x03, 0x80, 0xC0, + 0x3F, 0xFF, 0xFC, 0x1E, 0x1F, 0xEE, 0x1B, 0x07, 0xC0, 0xC0, 0x70, 0xF8, + 0x3C, 0x03, 0xC0, 0x30, 0x0F, 0x03, 0xC0, 0xFC, 0xE7, 0xF0, 0x00, 0x03, + 0x0E, 0x00, 0x73, 0x80, 0x07, 0x60, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x1F, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0x3C, 0x00, + 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xCE, + 0x00, 0xE7, 0x00, 0x73, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x70, 0x07, + 0x38, 0x03, 0x9C, 0x01, 0xCE, 0x00, 0xE7, 0x00, 0xF3, 0xC0, 0x79, 0xE0, + 0x7C, 0xFF, 0xFF, 0xFF, 0xE7, 0xFB, 0xC1, 0xFC, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x01, + 0xFF, 0x0F, 0xFF, 0x3F, 0xFF, 0x7F, 0x8C, 0x7F, 0x8C, 0xFF, 0x8C, 0xFF, + 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, 0x8C, 0xFF, + 0x8C, 0x7F, 0x8C, 0x3F, 0x8C, 0x1F, 0x8C, 0x07, 0x8C, 0x01, 0x8C, 0x01, + 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, + 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, + 0x8C, 0x01, 0x8C, 0xFF, 0xFF, 0x18, 0x38, 0x38, 0x60, 0x39, 0x80, 0x3F, + 0x00, 0x7C, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0xFF, 0xFC, + 0x00, 0x70, 0x01, 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, + 0x80, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0C, 0x31, 0xFF, 0xFC, 0x30, 0xC3, + 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x1F, 0x0F, 0xE7, 0x1D, 0x83, 0xE0, + 0xF0, 0x3C, 0x0F, 0x83, 0x60, 0xDC, 0x73, 0xF8, 0x7C, 0x00, 0x00, 0x07, + 0xFC, 0x81, 0x0C, 0x18, 0xE1, 0xE7, 0x8F, 0x38, 0x30, 0x81, 0x38, 0x37, + 0x8F, 0xE1, 0xEC, 0x18, 0x81, 0x00, 0x00, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, + 0xBF, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0xC3, 0xE0, 0x7F, 0x00, 0x01, 0xE0, + 0x1F, 0x80, 0x01, 0xE0, 0x07, 0xC0, 0x00, 0xE0, 0x01, 0xE0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0xFF, 0xF7, + 0x80, 0x03, 0xFF, 0xF9, 0xC0, 0x01, 0xFF, 0xFC, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x78, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x07, 0x80, 0x01, 0xE0, 0x07, 0xC0, + 0x00, 0x78, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0xFF, 0xFF, 0x07, 0xFF, 0x7F, + 0xFF, 0x81, 0xFF, 0x3F, 0xFF, 0xC0, 0x1E, 0x00, 0x00, 0x00, 0x03, 0xE0, + 0x0F, 0x80, 0x3F, 0xE0, 0xFF, 0x81, 0xFF, 0xCF, 0xFF, 0x0F, 0x07, 0xBC, + 0x1E, 0x78, 0x0F, 0xC0, 0x39, 0xC0, 0x1F, 0x00, 0x77, 0x00, 0x78, 0x01, + 0xFC, 0x00, 0xE0, 0x07, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, + 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0xE0, 0x00, 0xF0, 0x03, 0x80, 0x01, 0xC0, + 0x1E, 0x00, 0x77, 0x00, 0x7C, 0x01, 0xDE, 0x03, 0xF0, 0x0E, 0x3C, 0x1E, + 0xF0, 0x78, 0x7F, 0xF3, 0xFF, 0xC0, 0xFF, 0x87, 0xFE, 0x00, 0xF8, 0x03, + 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9E, 0x00, 0x0F, 0x3C, + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x1E, + 0x3C, 0x00, 0x78, 0x3C, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x00, + 0x78, 0x1E, 0x00, 0x70, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xF3, 0xC0, 0x01, + 0xE7, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, + 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x03, 0xC0, + 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x3F, 0x00, 0x7F, 0x00, 0xEE, 0x03, + 0xDE, 0x07, 0x1F, 0xFE, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xC0, 0x00, 0x07, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0xC0, 0x00, 0x77, 0x80, 0x01, 0xCE, 0x00, 0x0F, 0x38, 0x00, 0x38, + 0xF0, 0x01, 0xE1, 0xC0, 0x07, 0x07, 0x00, 0x1C, 0x1E, 0x00, 0xF0, 0x38, + 0x03, 0x80, 0xE0, 0x0E, 0x03, 0xC0, 0x78, 0x07, 0x01, 0xFF, 0xFE, 0x07, + 0xFF, 0xF8, 0x3C, 0x00, 0xE0, 0xE0, 0x03, 0xC3, 0x80, 0x0F, 0x1E, 0x00, + 0x1C, 0x70, 0x00, 0x7B, 0xC0, 0x01, 0xEF, 0x00, 0x03, 0xB8, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x77, 0x80, 0x01, 0xCE, 0x00, + 0x0F, 0x38, 0x00, 0x38, 0xF0, 0x01, 0xE1, 0xC0, 0x07, 0x07, 0x00, 0x1C, + 0x1E, 0x00, 0xF0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x03, 0xC0, 0x78, 0x07, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xE0, 0xE0, 0x03, 0xC3, + 0x80, 0x0F, 0x1E, 0x00, 0x1C, 0x70, 0x00, 0x7B, 0xC0, 0x01, 0xEF, 0x00, + 0x03, 0xB8, 0x00, 0x0F, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1C, 0xC0, + 0x00, 0x63, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x77, + 0x80, 0x01, 0xCE, 0x00, 0x0F, 0x38, 0x00, 0x38, 0xF0, 0x01, 0xE1, 0xC0, + 0x07, 0x07, 0x00, 0x1C, 0x1E, 0x00, 0xF0, 0x38, 0x03, 0x80, 0xE0, 0x0E, + 0x03, 0xC0, 0x78, 0x07, 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, + 0xE0, 0xE0, 0x03, 0xC3, 0x80, 0x0F, 0x1E, 0x00, 0x1C, 0x70, 0x00, 0x7B, + 0xC0, 0x01, 0xEF, 0x00, 0x03, 0xB8, 0x00, 0x0F, 0x01, 0xC3, 0x00, 0x0F, + 0xFC, 0x00, 0x37, 0xE0, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x1D, 0xE0, 0x00, 0x73, 0x80, 0x03, 0xCE, 0x00, 0x0E, 0x3C, 0x00, 0x78, + 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x3C, 0x0E, 0x00, 0xE0, 0x38, + 0x03, 0x80, 0xF0, 0x1E, 0x01, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFE, 0x0F, + 0x00, 0x38, 0x38, 0x00, 0xF0, 0xE0, 0x03, 0xC7, 0x80, 0x07, 0x1C, 0x00, + 0x1E, 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xEE, 0x00, 0x03, 0xC0, 0x03, 0xCF, + 0x00, 0x0F, 0x3C, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x00, 0x00, 0x00, + 0x01, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x73, 0x80, 0x03, 0x8E, 0x00, 0x0E, 0x3C, + 0x00, 0x78, 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x3C, 0x0E, 0x00, + 0xE0, 0x38, 0x03, 0x80, 0xF0, 0x1E, 0x01, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, + 0xFE, 0x0F, 0x00, 0x38, 0x38, 0x00, 0xF0, 0xE0, 0x03, 0xC7, 0x80, 0x07, + 0x1C, 0x00, 0x1E, 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xEE, 0x00, 0x03, 0xC0, + 0x00, 0x70, 0x00, 0x03, 0xF0, 0x00, 0x1D, 0xC0, 0x00, 0x63, 0x00, 0x01, + 0x8C, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, + 0x07, 0x78, 0x00, 0x1C, 0xE0, 0x00, 0xF3, 0x80, 0x03, 0x8F, 0x00, 0x1E, + 0x1C, 0x00, 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0F, 0x03, 0x80, 0x38, 0x0E, + 0x00, 0xE0, 0x3C, 0x07, 0x80, 0x70, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0x83, + 0xC0, 0x0E, 0x0E, 0x00, 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, + 0x07, 0xBC, 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0x00, 0x1F, + 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, + 0x1E, 0x00, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x03, 0x87, 0x80, 0x00, 0x03, + 0xC3, 0xC0, 0x00, 0x01, 0xC1, 0xE0, 0x00, 0x00, 0xE0, 0xF0, 0x00, 0x00, + 0xE0, 0x78, 0x00, 0x00, 0x70, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, + 0x38, 0x0F, 0xFF, 0xF0, 0x3C, 0x07, 0xFF, 0xF8, 0x1E, 0x03, 0xC0, 0x00, + 0x0E, 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x07, 0xFF, 0xFC, 0x00, 0x03, 0xC0, 0x1E, 0x00, 0x01, 0xC0, 0x0F, 0x00, + 0x01, 0xE0, 0x07, 0x80, 0x00, 0xE0, 0x03, 0xC0, 0x00, 0xF0, 0x01, 0xFF, + 0xFF, 0x78, 0x00, 0xFF, 0xFF, 0xB8, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0xFE, + 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xC0, 0xF8, 0x3C, 0x00, 0xF0, + 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x9C, 0x00, 0x0E, 0xF0, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0xFF, + 0x00, 0x03, 0x9C, 0x00, 0x0E, 0x78, 0x00, 0x78, 0xE0, 0x01, 0xC3, 0xE0, + 0x0F, 0x07, 0xC0, 0xF8, 0x0F, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x0F, 0xC0, + 0x00, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, + 0xC7, 0x00, 0x03, 0xFC, 0x00, 0x07, 0x80, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0x00, 0x60, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0xFC, 0x00, 0x33, 0x80, + 0x18, 0x60, 0x0E, 0x0C, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x3C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, + 0x3C, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x3F, 0xFF, 0xEF, 0xFF, 0xFB, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xF8, 0x70, 0x70, 0x60, 0x60, 0x07, 0x8F, 0x1E, 0x3C, + 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, + 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1C, 0x38, 0x70, 0x60, + 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x1E, 0x0F, 0xC7, 0x31, 0x86, 0xE1, 0xC0, 0x01, 0xE0, + 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, + 0x00, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, + 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, + 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x3F, 0xF0, + 0x00, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x0E, 0x01, 0xF8, 0x38, 0x00, 0xF0, + 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x8E, 0x00, 0x0F, 0x38, 0x00, 0x3C, 0xE0, + 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, + 0x73, 0x80, 0x01, 0xCE, 0x00, 0x07, 0x38, 0x00, 0x1C, 0xE0, 0x00, 0x73, + 0x80, 0x03, 0xCE, 0x00, 0x0E, 0x38, 0x00, 0x78, 0xE0, 0x03, 0xC3, 0x80, + 0x1F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xC6, + 0x00, 0x7F, 0xE0, 0x0C, 0x7C, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xFC, 0x00, 0x7F, 0xC0, 0x07, 0xFE, + 0x00, 0x7E, 0xF0, 0x07, 0xE7, 0x00, 0x7E, 0x78, 0x07, 0xE3, 0xC0, 0x7E, + 0x1C, 0x07, 0xE1, 0xE0, 0x7E, 0x0F, 0x07, 0xE0, 0x70, 0x7E, 0x07, 0x87, + 0xE0, 0x38, 0x7E, 0x01, 0xC7, 0xE0, 0x1E, 0x7E, 0x00, 0xE7, 0xE0, 0x0F, + 0x7E, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x3F, 0xE0, 0x01, 0xFE, 0x00, + 0x0F, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, + 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xFF, 0xC0, 0x07, 0xFF, 0xF0, 0x07, 0xC0, 0x7C, 0x07, 0x80, 0x0F, 0x07, + 0x80, 0x03, 0xC3, 0xC0, 0x00, 0xE3, 0xC0, 0x00, 0x79, 0xC0, 0x00, 0x1C, + 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1D, 0xC0, 0x00, + 0x1E, 0xE0, 0x00, 0x0F, 0x78, 0x00, 0x07, 0x3C, 0x00, 0x07, 0x8F, 0x00, + 0x03, 0x87, 0xC0, 0x03, 0xC1, 0xF0, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, + 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x07, 0x80, 0x00, 0x03, 0x80, 0x00, 0x03, 0x80, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFF, 0xC0, 0x07, 0xFF, + 0xF0, 0x07, 0xC0, 0x7C, 0x07, 0x80, 0x0F, 0x07, 0x80, 0x03, 0xC3, 0xC0, + 0x00, 0xE3, 0xC0, 0x00, 0x79, 0xC0, 0x00, 0x1C, 0xE0, 0x00, 0x0F, 0x70, + 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1D, 0xC0, 0x00, 0x1E, 0xE0, 0x00, 0x0F, + 0x78, 0x00, 0x07, 0x3C, 0x00, 0x07, 0x8F, 0x00, 0x03, 0x87, 0xC0, 0x03, + 0xC1, 0xF0, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, 0x03, 0xFF, + 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x1C, 0xC0, 0x00, 0x1C, 0x70, 0x00, 0x0C, 0x1C, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFC, 0x00, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0xF0, 0x07, 0xC0, 0x7C, + 0x07, 0x80, 0x0F, 0x07, 0x80, 0x03, 0xC3, 0xC0, 0x00, 0xE3, 0xC0, 0x00, + 0x79, 0xC0, 0x00, 0x1C, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x1D, 0xC0, 0x00, 0x1E, 0xE0, 0x00, 0x0F, 0x78, 0x00, 0x07, 0x3C, + 0x00, 0x07, 0x8F, 0x00, 0x03, 0x87, 0xC0, 0x03, 0xC1, 0xF0, 0x03, 0xC0, + 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x3F, 0x00, + 0x00, 0x00, 0x70, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x77, 0xE0, 0x00, 0x30, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x0F, + 0xFF, 0xE0, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x87, + 0x80, 0x01, 0xC7, 0x80, 0x00, 0xF3, 0x80, 0x00, 0x39, 0xC0, 0x00, 0x1E, + 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3B, 0x80, 0x00, 0x3D, 0xC0, 0x00, + 0x1E, 0xF0, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x0F, 0x80, + 0x07, 0x83, 0xE0, 0x07, 0x80, 0xFC, 0x0F, 0x80, 0x3F, 0xFF, 0x80, 0x07, + 0xFF, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, + 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0x1E, + 0x0F, 0x00, 0x07, 0x87, 0x80, 0x01, 0xC7, 0x80, 0x00, 0xF3, 0x80, 0x00, + 0x39, 0xC0, 0x00, 0x1E, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3B, 0x80, + 0x00, 0x3D, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x1E, + 0x00, 0x07, 0x0F, 0x80, 0x07, 0x83, 0xE0, 0x07, 0x80, 0xFC, 0x0F, 0x80, + 0x3F, 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x09, 0x80, + 0x77, 0x03, 0x8F, 0x1C, 0x1E, 0xE0, 0x3F, 0x00, 0x78, 0x01, 0xF0, 0x0F, + 0xE0, 0x73, 0xC3, 0x87, 0x9C, 0x0F, 0x60, 0x1C, 0x00, 0x20, 0x00, 0x7F, + 0x01, 0x80, 0xFF, 0xF1, 0x81, 0xFF, 0xFD, 0xC1, 0xF0, 0x1F, 0xC1, 0xE0, + 0x03, 0xC1, 0xE0, 0x01, 0xF0, 0xE0, 0x01, 0xF8, 0xF0, 0x01, 0xDE, 0x70, + 0x01, 0xC7, 0x38, 0x00, 0xC3, 0xBC, 0x00, 0xC1, 0xFE, 0x00, 0xC0, 0xFF, + 0x00, 0xC0, 0x3F, 0x00, 0xC0, 0x1F, 0xC0, 0xE0, 0x0F, 0xE0, 0xE0, 0x0F, + 0xF0, 0xE0, 0x07, 0xB8, 0xE0, 0x03, 0x9C, 0xE0, 0x01, 0xCF, 0xE0, 0x01, + 0xE3, 0xE0, 0x00, 0xE1, 0xE0, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7F, 0x83, + 0xF0, 0x67, 0xFF, 0xF0, 0x60, 0xFF, 0xE0, 0x10, 0x0F, 0x80, 0x00, 0x07, + 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0xEF, 0x00, 0x1E, 0x78, 0x01, 0xE3, + 0xE0, 0x7C, 0x1F, 0xFF, 0x80, 0xFF, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x00, + 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0xEF, 0x00, 0x1E, 0x78, 0x01, 0xE3, 0xE0, + 0x7C, 0x1F, 0xFF, 0x80, 0xFF, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0xF0, 0x00, + 0x1F, 0x80, 0x03, 0x98, 0x00, 0x31, 0xC0, 0x06, 0x0E, 0x00, 0x00, 0x00, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xF0, 0x00, 0xEF, 0x00, 0x1E, 0x78, 0x01, 0xE3, 0xE0, 0x7C, + 0x1F, 0xFF, 0x80, 0xFF, 0xE0, 0x01, 0xF8, 0x00, 0x07, 0x9E, 0x00, 0x79, + 0xE0, 0x07, 0x9E, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x0E, 0x00, 0x0F, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, + 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, + 0x0E, 0xF0, 0x01, 0xE7, 0x80, 0x1E, 0x3E, 0x07, 0xC1, 0xFF, 0xF8, 0x0F, + 0xFE, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x07, + 0xBC, 0x00, 0x0F, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, + 0x78, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xF0, 0x3C, 0x00, 0xE0, 0x70, 0x01, + 0xE1, 0xE0, 0x01, 0xE7, 0x80, 0x03, 0xCE, 0x00, 0x03, 0xFC, 0x00, 0x03, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, + 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xFF, 0xFC, 0xE0, 0x07, 0xDC, 0x00, 0x7B, + 0x80, 0x07, 0x70, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xB8, 0x00, 0xF7, + 0x00, 0x1E, 0xE0, 0x3F, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x00, 0x0F, 0xF8, 0x0F, 0xFF, 0x87, 0xC1, 0xF1, 0xC0, 0x1C, 0x70, + 0x07, 0xBC, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x1E, 0xE0, 0x07, 0x38, 0x03, + 0xCE, 0x0F, 0xE3, 0x83, 0xF8, 0xE0, 0xFF, 0x38, 0x01, 0xEE, 0x00, 0x3B, + 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x03, 0xB8, 0x01, 0xEE, 0x01, 0xF3, 0x87, 0xF8, 0xE1, 0xFC, 0x00, 0x10, + 0x00, 0x0F, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, + 0x80, 0xE1, 0xC0, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, + 0xFC, 0x3F, 0xE7, 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, + 0x1C, 0x03, 0xC7, 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, + 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, + 0xE1, 0xC0, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, + 0x3F, 0xE7, 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, + 0x03, 0xC7, 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x03, + 0xE0, 0x00, 0xFC, 0x00, 0x73, 0x00, 0x38, 0xE0, 0x0C, 0x18, 0x00, 0x00, + 0x00, 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, 0xE1, + 0xC0, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, 0x3F, + 0xE7, 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, 0x03, + 0xC7, 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x07, 0x0C, + 0x03, 0xFF, 0x01, 0xFF, 0x80, 0x61, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, 0xE1, 0xC0, + 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, 0x3F, 0xE7, + 0x1F, 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, 0x03, 0xC7, + 0x03, 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x0F, 0x3C, 0x03, + 0xCF, 0x00, 0xF3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x00, 0x7F, 0xF0, 0x3F, 0xFE, 0x0F, 0x07, 0x87, 0x80, 0xE1, 0xC0, 0x1C, + 0x00, 0x07, 0x00, 0x03, 0xC0, 0x07, 0xF0, 0x3F, 0xFC, 0x3F, 0xE7, 0x1F, + 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0xF0, 0x0F, 0x1C, 0x03, 0xC7, 0x03, + 0xF1, 0xFF, 0xDF, 0x3F, 0xE7, 0xC3, 0xE0, 0xF0, 0x01, 0xE0, 0x00, 0xFC, + 0x00, 0x77, 0x00, 0x18, 0xC0, 0x06, 0x30, 0x01, 0xFC, 0x00, 0x3E, 0x00, + 0x00, 0x00, 0x03, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xE0, 0xF0, 0x78, 0x78, + 0x0E, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x7F, 0x03, 0xFF, + 0xC3, 0xFE, 0x71, 0xF0, 0x1C, 0x70, 0x07, 0x1C, 0x01, 0xCF, 0x00, 0xF1, + 0xC0, 0x3C, 0x70, 0x3F, 0x1F, 0xFD, 0xF3, 0xFE, 0x7C, 0x3E, 0x0F, 0x03, + 0xE0, 0x3E, 0x00, 0xFF, 0xC7, 0xFC, 0x0F, 0xFF, 0x7F, 0xF8, 0x78, 0x1F, + 0x83, 0xC7, 0x80, 0xF8, 0x0F, 0x38, 0x03, 0x80, 0x38, 0x00, 0x1C, 0x01, + 0xE0, 0x01, 0xE0, 0x07, 0x00, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xCF, + 0xF9, 0xFF, 0xFE, 0xF8, 0x0C, 0x00, 0x07, 0x00, 0x70, 0x00, 0x78, 0x03, + 0x80, 0x1B, 0xC0, 0x3C, 0x01, 0xCE, 0x03, 0xF0, 0x1E, 0x78, 0x3B, 0xC1, + 0xE3, 0xFF, 0x8F, 0xFF, 0x0F, 0xF8, 0x3F, 0xE0, 0x1F, 0x00, 0x7C, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x0E, + 0xF0, 0x0E, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xF0, 0x07, 0x70, 0x0E, 0x78, 0x0E, 0x3C, 0x1E, 0x1F, 0xFC, + 0x0F, 0xF8, 0x03, 0xC0, 0x01, 0x00, 0x03, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x18, 0xE0, 0x1F, 0xE0, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, + 0xFF, 0x0F, 0x07, 0x87, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x1D, 0xC0, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x3B, 0x80, 0x39, 0xE0, 0x1C, 0x78, 0x3C, 0x1F, 0xFE, 0x07, 0xFC, 0x00, + 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, 0xFF, 0x0F, + 0x07, 0x87, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x1D, 0xC0, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x3B, 0x80, + 0x39, 0xE0, 0x1C, 0x78, 0x3C, 0x1F, 0xFE, 0x07, 0xFC, 0x00, 0xF8, 0x00, + 0x01, 0xE0, 0x01, 0xF8, 0x01, 0xCE, 0x00, 0xC3, 0x00, 0xE0, 0xC0, 0x00, + 0x00, 0x0F, 0x80, 0x1F, 0xF0, 0x1F, 0xFE, 0x1E, 0x0F, 0x0E, 0x03, 0xCE, + 0x00, 0xE7, 0x00, 0x3B, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x38, 0xF0, + 0x78, 0x3F, 0xFC, 0x0F, 0xF8, 0x01, 0xF0, 0x00, 0x0F, 0x3C, 0x07, 0x9E, + 0x03, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x1F, + 0xF0, 0x1F, 0xFE, 0x1E, 0x0F, 0x0E, 0x03, 0xCE, 0x00, 0xE7, 0x00, 0x3B, + 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x38, 0xF0, 0x78, 0x3F, 0xFC, 0x0F, + 0xF8, 0x01, 0xF0, 0x00, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x00, 0x00, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x0F, 0x83, 0xF1, 0xCC, 0x61, 0xB0, + 0x70, 0x00, 0x00, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, + 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, + 0x07, 0x00, 0xE3, 0xF1, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x00, 0x18, 0x00, 0x1E, 0x38, 0x03, + 0xF8, 0x00, 0xF0, 0x01, 0xFE, 0x00, 0xC7, 0x80, 0x01, 0xE0, 0x07, 0x78, + 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, + 0x3B, 0xC0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, + 0x00, 0x77, 0x00, 0x73, 0x80, 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, + 0x07, 0xFC, 0x00, 0xF8, 0x00, 0x0C, 0x18, 0x3F, 0x70, 0x7F, 0xE1, 0x87, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x73, 0xFC, 0xEF, 0xFD, 0xF8, 0x3F, + 0xE0, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, + 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, + 0xF0, 0x07, 0xE0, 0x0E, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, + 0xFE, 0x0F, 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, 0xC0, 0x0F, + 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, + 0x73, 0x80, 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, 0xFC, 0x00, + 0xF8, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, 0xFE, 0x0F, + 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, 0xC0, 0x0F, 0xC0, 0x07, + 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0x80, + 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, 0xFC, 0x00, 0xF8, 0x00, + 0x01, 0xC0, 0x01, 0xF0, 0x00, 0xDC, 0x00, 0xE6, 0x00, 0xE3, 0x80, 0x60, + 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x0F, 0xF8, 0x0F, 0xFE, 0x0F, 0x07, 0x8F, + 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, 0xC0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0x80, 0x39, 0xE0, + 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, 0xFC, 0x00, 0xF8, 0x00, 0x06, 0x0C, + 0x07, 0xFE, 0x07, 0xFE, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, + 0x80, 0x1F, 0xF0, 0x1F, 0xFC, 0x1E, 0x0F, 0x1E, 0x03, 0xCE, 0x00, 0xE7, + 0x00, 0x77, 0x80, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xFC, 0x00, 0xEE, 0x00, 0xE7, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x3F, + 0xF8, 0x0F, 0xF8, 0x01, 0xF0, 0x00, 0x0E, 0x38, 0x07, 0x1C, 0x03, 0x8E, + 0x01, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x0F, + 0xF8, 0x0F, 0xFE, 0x0F, 0x07, 0x8F, 0x01, 0xE7, 0x00, 0x73, 0x80, 0x3B, + 0xC0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, + 0x77, 0x00, 0x73, 0x80, 0x39, 0xE0, 0x3C, 0x78, 0x3C, 0x1F, 0xFC, 0x07, + 0xFC, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x83, 0xFE, 0x61, 0xFF, 0xF0, + 0xF0, 0x78, 0x78, 0x0F, 0x1C, 0x03, 0xC7, 0x01, 0xF3, 0xC0, 0xCE, 0xE0, + 0x63, 0xB8, 0x30, 0xEE, 0x18, 0x3B, 0x8C, 0x0E, 0xF6, 0x03, 0x9D, 0x81, + 0xC7, 0xC0, 0x71, 0xE0, 0x3C, 0x3C, 0x1E, 0x1F, 0xFF, 0x0C, 0xFF, 0x82, + 0x0F, 0x80, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, 0x07, 0xB8, 0x1F, 0x7F, + 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1C, + 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, + 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, 0x07, + 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x03, 0x80, 0x0F, 0x80, + 0x1B, 0x80, 0x73, 0x01, 0xC7, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, + 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, + 0x03, 0xFC, 0x07, 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, 0x3C, 0x00, 0x1C, + 0x70, 0x38, 0xE0, 0x71, 0xC0, 0xE3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, + 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x7E, 0x00, 0xFC, 0x03, 0xFC, 0x07, 0xB8, 0x1F, 0x7F, 0xEE, 0x7F, 0x9C, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0E, 0xE0, 0x0E, 0x70, 0x0E, + 0x70, 0x1C, 0x70, 0x1C, 0x38, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x70, + 0x1C, 0x70, 0x1C, 0x70, 0x0E, 0xE0, 0x0E, 0xE0, 0x0E, 0xE0, 0x07, 0xC0, + 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x30, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, + 0xEF, 0xF8, 0xFF, 0xFC, 0xFC, 0x3E, 0xF0, 0x1E, 0xF0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, + 0xE3, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0E, 0xE0, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x70, 0x1C, 0x38, 0x3C, 0x38, 0x38, 0x38, 0x38, + 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x0E, 0xE0, 0x0E, 0xE0, 0x0E, 0xE0, + 0x07, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x30, 0x00 }; + +const GFXglyph FreeSans18pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 10, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 3, 26, 10, 4, -25 }, // 0x21 '!' U+0021 + { 11, 9, 9, 12, 2, -24 }, // 0x22 '"' U+0022 + { 22, 19, 25, 19, 0, -23 }, // 0x23 '#' U+0023 + { 82, 17, 31, 19, 1, -26 }, // 0x24 '$' U+0024 + { 148, 29, 26, 31, 1, -24 }, // 0x25 '%' U+0025 + { 243, 20, 26, 23, 2, -24 }, // 0x26 '&' U+0026 + { 308, 3, 9, 7, 2, -24 }, // 0x27 ''' U+0027 + { 312, 7, 33, 12, 3, -25 }, // 0x28 '(' U+0028 + { 341, 8, 33, 12, 1, -25 }, // 0x29 ')' U+0029 + { 374, 11, 11, 14, 1, -25 }, // 0x2a '*' U+002A + { 390, 17, 17, 20, 2, -16 }, // 0x2b '+' U+002B + { 427, 4, 9, 10, 3, -3 }, // 0x2c ',' U+002C + { 432, 8, 3, 12, 2, -10 }, // 0x2d '-' U+002D + { 435, 4, 4, 10, 3, -3 }, // 0x2e '.' U+002E + { 437, 10, 27, 10, 0, -25 }, // 0x2f '/' U+002F + { 471, 17, 26, 19, 1, -24 }, // 0x30 '0' U+0030 + { 527, 8, 25, 19, 4, -24 }, // 0x31 '1' U+0031 + { 552, 17, 25, 19, 1, -24 }, // 0x32 '2' U+0032 + { 606, 17, 26, 19, 1, -24 }, // 0x33 '3' U+0033 + { 662, 17, 25, 19, 1, -24 }, // 0x34 '4' U+0034 + { 716, 17, 26, 19, 1, -24 }, // 0x35 '5' U+0035 + { 772, 17, 26, 19, 1, -24 }, // 0x36 '6' U+0036 + { 828, 16, 25, 19, 2, -24 }, // 0x37 '7' U+0037 + { 878, 17, 26, 19, 1, -24 }, // 0x38 '8' U+0038 + { 934, 17, 26, 19, 1, -24 }, // 0x39 '9' U+0039 + { 990, 3, 18, 10, 4, -17 }, // 0x3a ':' U+003A + { 997, 4, 23, 10, 4, -17 }, // 0x3b ';' U+003B + { 1009, 17, 17, 20, 2, -16 }, // 0x3c '<' U+003C + { 1046, 17, 8, 20, 2, -11 }, // 0x3d '=' U+003D + { 1063, 17, 17, 20, 2, -16 }, // 0x3e '>' U+003E + { 1100, 15, 26, 19, 3, -25 }, // 0x3f '?' U+003F + { 1149, 32, 31, 36, 1, -25 }, // 0x40 '@' U+0040 + { 1273, 22, 26, 23, 1, -25 }, // 0x41 'A' U+0041 + { 1345, 19, 26, 23, 3, -25 }, // 0x42 'B' U+0042 + { 1407, 22, 27, 25, 2, -25 }, // 0x43 'C' U+0043 + { 1482, 20, 26, 25, 3, -25 }, // 0x44 'D' U+0044 + { 1547, 18, 26, 23, 3, -25 }, // 0x45 'E' U+0045 + { 1606, 17, 26, 21, 3, -25 }, // 0x46 'F' U+0046 + { 1662, 23, 27, 27, 2, -25 }, // 0x47 'G' U+0047 + { 1740, 20, 26, 25, 3, -25 }, // 0x48 'H' U+0048 + { 1805, 4, 26, 10, 3, -25 }, // 0x49 'I' U+0049 + { 1818, 14, 27, 18, 1, -25 }, // 0x4a 'J' U+004A + { 1866, 20, 26, 23, 3, -25 }, // 0x4b 'K' U+004B + { 1931, 16, 26, 19, 3, -25 }, // 0x4c 'L' U+004C + { 1983, 24, 26, 29, 3, -25 }, // 0x4d 'M' U+004D + { 2061, 20, 26, 25, 3, -25 }, // 0x4e 'N' U+004E + { 2126, 25, 27, 27, 1, -25 }, // 0x4f 'O' U+004F + { 2211, 19, 26, 23, 3, -25 }, // 0x50 'P' U+0050 + { 2273, 25, 28, 27, 1, -25 }, // 0x51 'Q' U+0051 + { 2361, 21, 26, 25, 3, -25 }, // 0x52 'R' U+0052 + { 2430, 20, 27, 23, 2, -25 }, // 0x53 'S' U+0053 + { 2498, 20, 26, 21, 1, -25 }, // 0x54 'T' U+0054 + { 2563, 20, 27, 25, 3, -25 }, // 0x55 'U' U+0055 + { 2631, 22, 26, 23, 1, -25 }, // 0x56 'V' U+0056 + { 2703, 32, 26, 33, 1, -25 }, // 0x57 'W' U+0057 + { 2807, 22, 26, 23, 1, -25 }, // 0x58 'X' U+0058 + { 2879, 23, 26, 23, 0, -25 }, // 0x59 'Y' U+0059 + { 2954, 19, 26, 21, 1, -25 }, // 0x5a 'Z' U+005A + { 3016, 7, 33, 10, 2, -25 }, // 0x5b '[' U+005B + { 3045, 10, 27, 10, 0, -25 }, // 0x5c '\' U+005C + { 3079, 6, 33, 10, 1, -25 }, // 0x5d ']' U+005D + { 3104, 13, 13, 16, 2, -24 }, // 0x5e '^' U+005E + { 3126, 21, 2, 19, -1, 5 }, // 0x5f '_' U+005F + { 3132, 7, 5, 12, 1, -25 }, // 0x60 '`' U+0060 + { 3137, 18, 20, 19, 1, -18 }, // 0x61 'a' U+0061 + { 3182, 16, 27, 19, 2, -25 }, // 0x62 'b' U+0062 + { 3236, 16, 20, 18, 1, -18 }, // 0x63 'c' U+0063 + { 3276, 16, 27, 19, 1, -25 }, // 0x64 'd' U+0064 + { 3330, 17, 20, 19, 1, -18 }, // 0x65 'e' U+0065 + { 3373, 8, 26, 10, 1, -25 }, // 0x66 'f' U+0066 + { 3399, 16, 27, 19, 1, -18 }, // 0x67 'g' U+0067 + { 3453, 15, 26, 19, 2, -25 }, // 0x68 'h' U+0068 + { 3502, 3, 26, 8, 2, -25 }, // 0x69 'i' U+0069 + { 3512, 6, 34, 8, -1, -25 }, // 0x6a 'j' U+006A + { 3538, 16, 26, 18, 2, -25 }, // 0x6b 'k' U+006B + { 3590, 3, 26, 8, 2, -25 }, // 0x6c 'l' U+006C + { 3600, 25, 19, 29, 2, -18 }, // 0x6d 'm' U+006D + { 3660, 15, 19, 19, 2, -18 }, // 0x6e 'n' U+006E + { 3696, 17, 20, 19, 1, -18 }, // 0x6f 'o' U+006F + { 3739, 16, 27, 19, 2, -18 }, // 0x70 'p' U+0070 + { 3793, 16, 27, 19, 1, -18 }, // 0x71 'q' U+0071 + { 3847, 9, 19, 12, 2, -18 }, // 0x72 'r' U+0072 + { 3869, 15, 20, 18, 1, -18 }, // 0x73 's' U+0073 + { 3907, 9, 24, 10, 0, -22 }, // 0x74 't' U+0074 + { 3934, 15, 19, 19, 2, -17 }, // 0x75 'u' U+0075 + { 3970, 17, 18, 18, 0, -17 }, // 0x76 'v' U+0076 + { 4009, 25, 18, 25, 0, -17 }, // 0x77 'w' U+0077 + { 4066, 16, 18, 18, 1, -17 }, // 0x78 'x' U+0078 + { 4102, 16, 26, 18, 1, -17 }, // 0x79 'y' U+0079 + { 4154, 15, 18, 18, 1, -17 }, // 0x7a 'z' U+007A + { 4188, 9, 33, 12, 1, -25 }, // 0x7b '{' U+007B + { 4226, 3, 33, 9, 3, -25 }, // 0x7c '|' U+007C + { 4239, 8, 33, 12, 1, -25 }, // 0x7d '}' U+007D + { 4272, 15, 6, 20, 3, -14 }, // 0x7e '~' U+007E + { 4284, 18, 26, 25, 3, -25 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 4343, 1, 1, 10, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 4344, 3, 26, 10, 5, -17 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 4354, 16, 26, 19, 2, -21 }, // 0x82 'CENT SIGN' U+00A2 + { 4406, 18, 27, 19, 1, -25 }, // 0x83 'POUND SIGN' U+00A3 + { 4467, 21, 26, 23, 1, -24 }, // 0x84 'EURO SIGN *' U+20AC + { 4536, 19, 25, 19, 0, -24 }, // 0x85 'YEN SIGN' U+00A5 + { 4596, 20, 33, 23, 2, -31 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 4679, 17, 33, 19, 1, -25 }, // 0x87 'SECTION SIGN' U+00A7 + { 4750, 15, 27, 18, 1, -25 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 4801, 26, 27, 26, 0, -25 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 4889, 11, 15, 13, 1, -25 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 4910, 12, 11, 16, 2, -14 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 4927, 18, 10, 20, 1, -12 }, // 0x8c 'NOT SIGN' U+00AC + { 4950, 8, 3, 12, 2, -10 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 4953, 26, 27, 26, 0, -25 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 5041, 10, 3, 12, 1, -24 }, // 0x8f 'MACRON' U+00AF + { 5045, 11, 11, 21, 5, -23 }, // 0x90 'DEGREE SIGN' U+00B0 + { 5061, 17, 22, 20, 2, -21 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 5108, 10, 15, 12, 1, -24 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 5127, 10, 16, 12, 1, -24 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 5147, 19, 32, 21, 1, -31 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 5223, 17, 26, 19, 2, -17 }, // 0x95 'MICRO SIGN' U+00B5 + { 5279, 16, 32, 19, 2, -25 }, // 0x96 'PILCROW SIGN' U+00B6 + { 5343, 4, 4, 10, 3, -11 }, // 0x97 'MIDDLE DOT' U+00B7 + { 5345, 15, 26, 18, 1, -25 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 5394, 6, 15, 12, 2, -24 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 5406, 10, 15, 13, 1, -25 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 5425, 12, 11, 16, 2, -14 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 5442, 33, 27, 35, 1, -25 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 5554, 30, 20, 33, 1, -18 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 5629, 23, 31, 23, 0, -30 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 5719, 15, 26, 19, 3, -17 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 5768, 22, 32, 23, 1, -31 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 5856, 22, 32, 23, 1, -31 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 5944, 22, 32, 23, 1, -31 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 6032, 22, 31, 23, 1, -30 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 6118, 22, 31, 23, 1, -30 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 6204, 22, 34, 23, 1, -33 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 6298, 33, 26, 35, 0, -25 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 6406, 22, 33, 25, 2, -25 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 6497, 18, 32, 23, 3, -31 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 6569, 18, 32, 23, 3, -31 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 6641, 18, 32, 23, 3, -31 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 6713, 18, 31, 23, 3, -30 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 6783, 7, 32, 10, 0, -31 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 6811, 8, 32, 10, 2, -31 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 6843, 10, 32, 10, 0, -31 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 6883, 10, 31, 10, 0, -30 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 6922, 22, 26, 25, 1, -25 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 6994, 20, 30, 25, 3, -29 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 7069, 25, 33, 27, 1, -31 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 7173, 25, 33, 27, 1, -31 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 7277, 25, 33, 27, 1, -31 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 7381, 25, 32, 27, 1, -30 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 7481, 25, 32, 27, 1, -30 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 7581, 14, 14, 20, 3, -14 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 7606, 25, 27, 27, 1, -25 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 7691, 20, 33, 25, 3, -31 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 7774, 20, 33, 25, 3, -31 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 7857, 20, 33, 25, 3, -31 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 7940, 20, 32, 25, 3, -30 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 8020, 23, 32, 23, 0, -31 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 8112, 19, 26, 23, 3, -25 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 8174, 18, 26, 21, 2, -24 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 8233, 18, 26, 19, 1, -24 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 8292, 18, 26, 19, 1, -24 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 8351, 18, 26, 19, 1, -24 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 8410, 18, 26, 19, 1, -24 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 8469, 18, 26, 19, 1, -24 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 8528, 18, 28, 19, 1, -26 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 8591, 29, 20, 31, 1, -18 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 8664, 16, 26, 18, 1, -18 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 8716, 17, 27, 19, 1, -25 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 8774, 17, 27, 19, 1, -25 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 8832, 17, 26, 19, 1, -24 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 8888, 17, 26, 19, 1, -24 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 8944, 7, 26, 9, 0, -25 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 8967, 8, 26, 9, 1, -25 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 8993, 10, 26, 9, 0, -25 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 9026, 9, 25, 9, 0, -24 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 9055, 17, 27, 19, 1, -25 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 9113, 15, 25, 19, 2, -24 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 9160, 17, 27, 19, 1, -25 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 9218, 17, 27, 19, 1, -25 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 9276, 17, 27, 19, 1, -25 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 9334, 17, 26, 19, 1, -24 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 9390, 17, 27, 19, 1, -25 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 9448, 17, 17, 20, 2, -16 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 9485, 18, 20, 21, 1, -18 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 9530, 15, 27, 19, 2, -25 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 9581, 15, 27, 19, 2, -25 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 9632, 15, 27, 19, 2, -25 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 9683, 15, 27, 19, 2, -25 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 9734, 16, 34, 18, 1, -25 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 9802, 16, 33, 19, 2, -24 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 9868, 16, 34, 18, 1, -25 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeSans18pt8b PROGMEM = { + (uint8_t *)FreeSans18pt8bBitmaps, + (GFXglyph *)FreeSans18pt8bGlyphs, + 0x20, 0xDF, 49 }; + +// Approx. 11287 bytes diff --git a/RX_FSK/src/fonts/FreeSans9pt7b.h b/RX_FSK/src/fonts/FreeSans9pt7b.h new file mode 100644 index 0000000..1f006a1 --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans9pt7b.h @@ -0,0 +1,201 @@ +const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, + 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, + 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, + 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, + 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, + 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, + 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, + 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, + 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, + 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, + 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, + 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, + 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, + 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, + 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, + 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, + 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, + 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, + 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, + 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, + 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, + 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, + 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, + 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, + 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, + 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, + 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, + 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, + 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, + 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, + 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, + 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, + 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, + 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, + 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, + 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, + 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, + 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, + 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, + 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, + 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, + 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, + 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, + 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, + 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, + 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, + 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, + 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, + 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, + 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, + 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, + 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, + 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, + 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, + 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, + 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, + 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, + 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, + 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, + 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, + 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, + 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, + 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, + 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, + 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, + 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, + 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, + 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, + 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, + 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38 }; + +const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 2, 13, 6, 2, -12 }, // 0x21 '!' + { 4, 5, 4, 6, 1, -12 }, // 0x22 '"' + { 7, 10, 12, 10, 0, -11 }, // 0x23 '#' + { 22, 9, 16, 10, 1, -13 }, // 0x24 '$' + { 40, 16, 13, 16, 1, -12 }, // 0x25 '%' + { 66, 11, 13, 12, 1, -12 }, // 0x26 '&' + { 84, 2, 4, 4, 1, -12 }, // 0x27 ''' + { 85, 4, 17, 6, 1, -12 }, // 0x28 '(' + { 94, 4, 17, 6, 1, -12 }, // 0x29 ')' + { 103, 5, 5, 7, 1, -12 }, // 0x2A '*' + { 107, 6, 8, 11, 3, -7 }, // 0x2B '+' + { 113, 2, 4, 5, 2, 0 }, // 0x2C ',' + { 114, 4, 1, 6, 1, -4 }, // 0x2D '-' + { 115, 2, 1, 5, 1, 0 }, // 0x2E '.' + { 116, 5, 13, 5, 0, -12 }, // 0x2F '/' + { 125, 8, 13, 10, 1, -12 }, // 0x30 '0' + { 138, 4, 13, 10, 3, -12 }, // 0x31 '1' + { 145, 9, 13, 10, 1, -12 }, // 0x32 '2' + { 160, 8, 13, 10, 1, -12 }, // 0x33 '3' + { 173, 7, 13, 10, 2, -12 }, // 0x34 '4' + { 185, 9, 13, 10, 1, -12 }, // 0x35 '5' + { 200, 9, 13, 10, 1, -12 }, // 0x36 '6' + { 215, 8, 13, 10, 0, -12 }, // 0x37 '7' + { 228, 9, 13, 10, 1, -12 }, // 0x38 '8' + { 243, 8, 13, 10, 1, -12 }, // 0x39 '9' + { 256, 2, 10, 5, 1, -9 }, // 0x3A ':' + { 259, 3, 12, 5, 1, -8 }, // 0x3B ';' + { 264, 9, 9, 11, 1, -8 }, // 0x3C '<' + { 275, 9, 4, 11, 1, -5 }, // 0x3D '=' + { 280, 9, 9, 11, 1, -8 }, // 0x3E '>' + { 291, 9, 13, 10, 1, -12 }, // 0x3F '?' + { 306, 17, 16, 18, 1, -12 }, // 0x40 '@' + { 340, 12, 13, 12, 0, -12 }, // 0x41 'A' + { 360, 11, 13, 12, 1, -12 }, // 0x42 'B' + { 378, 11, 13, 13, 1, -12 }, // 0x43 'C' + { 396, 11, 13, 13, 1, -12 }, // 0x44 'D' + { 414, 9, 13, 11, 1, -12 }, // 0x45 'E' + { 429, 8, 13, 11, 1, -12 }, // 0x46 'F' + { 442, 12, 13, 14, 1, -12 }, // 0x47 'G' + { 462, 11, 13, 13, 1, -12 }, // 0x48 'H' + { 480, 2, 13, 5, 2, -12 }, // 0x49 'I' + { 484, 7, 13, 10, 1, -12 }, // 0x4A 'J' + { 496, 11, 13, 12, 1, -12 }, // 0x4B 'K' + { 514, 8, 13, 10, 1, -12 }, // 0x4C 'L' + { 527, 13, 13, 15, 1, -12 }, // 0x4D 'M' + { 549, 11, 13, 13, 1, -12 }, // 0x4E 'N' + { 567, 13, 13, 14, 1, -12 }, // 0x4F 'O' + { 589, 10, 13, 12, 1, -12 }, // 0x50 'P' + { 606, 13, 14, 14, 1, -12 }, // 0x51 'Q' + { 629, 12, 13, 13, 1, -12 }, // 0x52 'R' + { 649, 10, 13, 12, 1, -12 }, // 0x53 'S' + { 666, 9, 13, 11, 1, -12 }, // 0x54 'T' + { 681, 11, 13, 13, 1, -12 }, // 0x55 'U' + { 699, 11, 13, 12, 0, -12 }, // 0x56 'V' + { 717, 17, 13, 17, 0, -12 }, // 0x57 'W' + { 745, 12, 13, 12, 0, -12 }, // 0x58 'X' + { 765, 12, 13, 12, 0, -12 }, // 0x59 'Y' + { 785, 10, 13, 11, 1, -12 }, // 0x5A 'Z' + { 802, 3, 17, 5, 1, -12 }, // 0x5B '[' + { 809, 5, 13, 5, 0, -12 }, // 0x5C '\' + { 818, 3, 17, 5, 0, -12 }, // 0x5D ']' + { 825, 7, 7, 8, 1, -12 }, // 0x5E '^' + { 832, 10, 1, 10, 0, 3 }, // 0x5F '_' + { 834, 4, 3, 5, 0, -12 }, // 0x60 '`' + { 836, 9, 10, 10, 1, -9 }, // 0x61 'a' + { 848, 9, 13, 10, 1, -12 }, // 0x62 'b' + { 863, 8, 10, 9, 1, -9 }, // 0x63 'c' + { 873, 8, 13, 10, 1, -12 }, // 0x64 'd' + { 886, 8, 10, 10, 1, -9 }, // 0x65 'e' + { 896, 4, 13, 5, 1, -12 }, // 0x66 'f' + { 903, 8, 14, 10, 1, -9 }, // 0x67 'g' + { 917, 8, 13, 10, 1, -12 }, // 0x68 'h' + { 930, 2, 13, 4, 1, -12 }, // 0x69 'i' + { 934, 4, 17, 4, 0, -12 }, // 0x6A 'j' + { 943, 9, 13, 9, 1, -12 }, // 0x6B 'k' + { 958, 2, 13, 4, 1, -12 }, // 0x6C 'l' + { 962, 13, 10, 15, 1, -9 }, // 0x6D 'm' + { 979, 8, 10, 10, 1, -9 }, // 0x6E 'n' + { 989, 8, 10, 10, 1, -9 }, // 0x6F 'o' + { 999, 9, 13, 10, 1, -9 }, // 0x70 'p' + { 1014, 8, 13, 10, 1, -9 }, // 0x71 'q' + { 1027, 5, 10, 6, 1, -9 }, // 0x72 'r' + { 1034, 8, 10, 9, 1, -9 }, // 0x73 's' + { 1044, 4, 12, 5, 1, -11 }, // 0x74 't' + { 1050, 8, 10, 10, 1, -9 }, // 0x75 'u' + { 1060, 9, 10, 9, 0, -9 }, // 0x76 'v' + { 1072, 13, 10, 13, 0, -9 }, // 0x77 'w' + { 1089, 8, 10, 9, 0, -9 }, // 0x78 'x' + { 1099, 9, 14, 9, 0, -9 }, // 0x79 'y' + { 1115, 7, 10, 9, 1, -9 }, // 0x7A 'z' + { 1124, 4, 17, 6, 1, -12 }, // 0x7B '{' + { 1133, 2, 17, 4, 2, -12 }, // 0x7C '|' + { 1138, 4, 17, 6, 1, -12 }, // 0x7D '}' + { 1147, 7, 3, 9, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeSans9pt7b PROGMEM = { + (uint8_t *)FreeSans9pt7bBitmaps, + (GFXglyph *)FreeSans9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1822 bytes diff --git a/RX_FSK/src/fonts/FreeSans9pt8b.h b/RX_FSK/src/fonts/FreeSans9pt8b.h new file mode 100644 index 0000000..e1c87c5 --- /dev/null +++ b/RX_FSK/src/fonts/FreeSans9pt8b.h @@ -0,0 +1,421 @@ +const uint8_t FreeSans9pt8bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0x83, 0xC0, 0xDD, 0xD9, 0x90, 0x09, 0x82, 0x61, 0x90, + 0x64, 0x7F, 0xC4, 0xC1, 0x30, 0xC8, 0xFF, 0xBF, 0xE2, 0x20, 0x98, 0x26, + 0x00, 0x10, 0x3C, 0x76, 0xD3, 0x93, 0xD0, 0xF0, 0x7C, 0x17, 0x13, 0x91, + 0x91, 0xD3, 0x7E, 0x10, 0x10, 0x00, 0x21, 0xE1, 0x08, 0x84, 0x23, 0x20, + 0x8C, 0x83, 0x64, 0x07, 0x10, 0x00, 0x8E, 0x06, 0x6C, 0x13, 0x10, 0xCC, + 0x42, 0x11, 0x18, 0x78, 0x1C, 0x0F, 0x86, 0x21, 0x88, 0x36, 0x0F, 0x03, + 0x81, 0xB2, 0xC6, 0xA0, 0xEC, 0x13, 0x1E, 0x7C, 0xC0, 0xFE, 0x80, 0x12, + 0x26, 0x44, 0xCC, 0xCC, 0x44, 0x46, 0x22, 0x10, 0x84, 0x46, 0x22, 0x23, + 0x33, 0x22, 0x26, 0x4C, 0x80, 0x25, 0x5C, 0xA5, 0x00, 0x08, 0x04, 0x02, + 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xF0, 0xFF, 0xC0, 0x08, + 0x44, 0x21, 0x10, 0x84, 0x42, 0x11, 0x08, 0x00, 0x18, 0x7E, 0x42, 0xC3, + 0xC3, 0x83, 0x83, 0x83, 0x83, 0xC3, 0xC3, 0x46, 0x7C, 0x11, 0x7F, 0x11, + 0x11, 0x11, 0x11, 0x10, 0x3C, 0x7E, 0xC3, 0xC1, 0x81, 0x03, 0x06, 0x1C, + 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0x3C, 0x7E, 0xC3, 0xC3, 0x03, 0x06, 0x1C, + 0x03, 0x03, 0x83, 0x83, 0xC3, 0x7E, 0x02, 0x03, 0x01, 0x81, 0x41, 0xA1, + 0x90, 0x88, 0xC4, 0xC2, 0x7F, 0xC0, 0x80, 0x40, 0x20, 0x7F, 0x7F, 0x40, + 0x40, 0xC0, 0xFE, 0xC3, 0x03, 0x01, 0x01, 0x83, 0xC3, 0x7E, 0x1C, 0x7E, + 0x43, 0xC3, 0xC0, 0xBC, 0xFE, 0xC3, 0xC1, 0xC1, 0xC3, 0x63, 0x7E, 0xFF, + 0xFF, 0x03, 0x02, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x30, 0x20, 0x20, + 0x3C, 0x7E, 0xC3, 0xC3, 0xC3, 0x66, 0x7C, 0xC3, 0x83, 0x81, 0x83, 0xC3, + 0x7E, 0x38, 0x7E, 0xC2, 0x83, 0x83, 0x83, 0xC3, 0x7D, 0x13, 0x03, 0xC3, + 0xC6, 0x7C, 0xC0, 0x03, 0xC0, 0xC0, 0x03, 0xD6, 0x00, 0x01, 0xC3, 0x8F, + 0x0C, 0x07, 0x00, 0xF0, 0x0E, 0x01, 0x80, 0xFF, 0x80, 0x00, 0x1F, 0xF0, + 0x00, 0x60, 0x1E, 0x01, 0xC0, 0x38, 0x3C, 0x71, 0xE0, 0x80, 0x00, 0x3E, + 0x63, 0x43, 0xC1, 0x03, 0x06, 0x0C, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, + 0x07, 0xF0, 0x1C, 0x1C, 0x30, 0x0E, 0x60, 0x06, 0x43, 0xD3, 0xC6, 0x33, + 0x8C, 0x31, 0x8C, 0x23, 0x88, 0x23, 0x8C, 0x62, 0xCC, 0xEC, 0xC7, 0x38, + 0x60, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x01, 0x80, 0x06, 0x00, 0xF0, 0x0F, + 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x06, 0x60, + 0x66, 0x06, 0xC0, 0x30, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xB0, 0xEF, + 0xFB, 0x03, 0xC0, 0xF0, 0x1C, 0x0F, 0x07, 0xFF, 0x00, 0x1F, 0x86, 0x19, + 0x81, 0xE0, 0x3C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x78, 0x0D, 0x81, + 0xB8, 0x63, 0xF8, 0xFE, 0x20, 0xC8, 0x1A, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x1A, 0x1C, 0xFE, 0x00, 0xFF, 0xC0, 0x20, 0x10, + 0x08, 0x04, 0x03, 0xFD, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0F, 0xF8, 0xFF, + 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x1F, 0x83, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x0C, 0x00, 0x83, 0xFC, 0x3F, + 0xC0, 0x3C, 0x03, 0x60, 0x77, 0x0F, 0x1F, 0x90, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x3C, 0x06, 0xFF, 0xF8, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0xC3, 0xC3, 0x66, 0x7E, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, + 0xB8, 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x04, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, + 0x0F, 0xF8, 0xE0, 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, + 0x63, 0x79, 0x13, 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, + 0xE0, 0x7C, 0x0F, 0xC1, 0xEC, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, + 0x78, 0x2F, 0x07, 0xE0, 0x7C, 0x0E, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, + 0xC0, 0x38, 0x01, 0x80, 0x18, 0x01, 0xC0, 0x3C, 0x03, 0x60, 0x67, 0x0E, + 0x1F, 0x80, 0xFF, 0x41, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0xFD, 0x00, 0x80, + 0x40, 0x20, 0x10, 0x08, 0x00, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, + 0x38, 0x01, 0x80, 0x18, 0x01, 0xC0, 0x3C, 0x03, 0x61, 0xE7, 0x0E, 0x1F, + 0xF0, 0x01, 0xFF, 0x20, 0x68, 0x0E, 0x03, 0x80, 0xE0, 0x6F, 0xF2, 0x06, + 0x80, 0xA0, 0x28, 0x0A, 0x03, 0x80, 0xC0, 0x3F, 0x18, 0x6C, 0x0F, 0x03, + 0xC0, 0x1E, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x3C, 0x0D, 0x87, 0x3F, 0x80, + 0xFF, 0xE0, 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, 0x00, 0xC0, + 0x58, 0x1B, 0x03, 0x30, 0x46, 0x18, 0x43, 0x0C, 0x41, 0x98, 0x13, 0x03, + 0x40, 0x78, 0x07, 0x00, 0xC0, 0x41, 0xC1, 0xB0, 0xE1, 0x98, 0x50, 0xCC, + 0x28, 0x62, 0x36, 0x31, 0x9B, 0x10, 0xC8, 0x98, 0x64, 0x6C, 0x16, 0x36, + 0x0B, 0x0A, 0x07, 0x07, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0x63, 0x0C, + 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x70, 0x06, 0x00, 0xF0, 0x09, 0x81, 0x98, + 0x30, 0xC6, 0x06, 0x60, 0x60, 0x60, 0x36, 0x06, 0x30, 0xC1, 0x0C, 0x19, + 0x80, 0xD0, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x7F, 0xC0, 0x18, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x80, 0x60, + 0x18, 0x06, 0x01, 0x80, 0x30, 0x0F, 0xFE, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xF0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, + 0x80, 0xF3, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xF0, 0x30, 0x60, + 0xA2, 0x44, 0xD8, 0xA1, 0x00, 0xFF, 0xC0, 0x63, 0x3C, 0x3F, 0x30, 0x80, + 0x60, 0x73, 0xFB, 0x0D, 0x06, 0xC7, 0x7D, 0xC0, 0x80, 0x80, 0x80, 0x9C, + 0xBE, 0xC3, 0xC1, 0xC1, 0x81, 0xC1, 0xC3, 0xE3, 0xBE, 0x38, 0x7E, 0xC2, + 0x82, 0x80, 0x80, 0x80, 0x82, 0xC6, 0x7C, 0x01, 0x80, 0xC0, 0x63, 0xB3, + 0xFB, 0x0D, 0x06, 0x83, 0xC1, 0xA0, 0xD0, 0x6C, 0x73, 0xE8, 0x18, 0x7E, + 0xC3, 0xC3, 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x39, 0x08, 0x4F, 0x90, + 0x84, 0x21, 0x08, 0x42, 0x00, 0x38, 0x7F, 0xC7, 0x83, 0x83, 0x83, 0x83, + 0x83, 0xC7, 0x7F, 0x03, 0x82, 0xE6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDC, 0xFE, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xF0, 0xFF, 0xFF, 0xC0, + 0x6C, 0x06, 0xDB, 0x6D, 0xB6, 0xDB, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, + 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC4, 0xC6, 0xC3, 0xFF, 0xFF, 0xFF, 0xC0, + 0x1C, 0x67, 0xFF, 0xB0, 0xC7, 0x84, 0x3C, 0x21, 0xE1, 0x0F, 0x08, 0x78, + 0x43, 0xC2, 0x1E, 0x10, 0xC0, 0x1C, 0xFE, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, + 0x7E, 0x1C, 0xBE, 0xC3, 0xC1, 0xC1, 0x81, 0xC1, 0xC3, 0xE3, 0xBE, 0x80, + 0x80, 0x80, 0x80, 0x1C, 0x1F, 0x58, 0x68, 0x34, 0x1E, 0x0D, 0x06, 0x83, + 0x63, 0x9F, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x1F, 0xF9, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x39, 0xFB, 0x1C, 0x0E, 0x07, 0x81, 0xC1, 0xC7, 0xF8, 0x21, + 0x09, 0xF2, 0x10, 0x84, 0x21, 0x08, 0x70, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7F, 0x41, 0x31, 0x98, 0xC4, 0x42, 0x61, 0xA0, 0x50, + 0x38, 0x18, 0x00, 0xC7, 0x12, 0x38, 0x99, 0x4C, 0xCA, 0x62, 0xDA, 0x14, + 0xD0, 0xE3, 0x87, 0x18, 0x18, 0xC0, 0x63, 0x13, 0x0D, 0x03, 0x81, 0xC0, + 0xE0, 0xD8, 0xC6, 0x43, 0x00, 0x41, 0x31, 0x98, 0xC4, 0x43, 0x61, 0xA0, + 0x50, 0x38, 0x18, 0x0C, 0x06, 0x0E, 0x06, 0x00, 0xFE, 0x08, 0x30, 0xC3, + 0x0C, 0x10, 0x60, 0xFE, 0x36, 0x66, 0x66, 0x4C, 0x84, 0x66, 0x66, 0x66, + 0x30, 0xFF, 0xFF, 0x80, 0xC4, 0x44, 0x44, 0x46, 0x36, 0x44, 0x44, 0x44, + 0x80, 0x60, 0x59, 0x8F, 0xFF, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x60, 0x30, 0x1F, 0xF8, 0x00, 0xF0, 0x7F, 0xFF, 0xC0, + 0x08, 0x1C, 0x7E, 0x4B, 0xC9, 0xC8, 0xC8, 0xC8, 0xCB, 0x6B, 0x3E, 0x08, + 0x08, 0x1F, 0x0C, 0xE6, 0x19, 0x82, 0x60, 0x08, 0x0F, 0xE0, 0x40, 0x10, + 0x04, 0x03, 0x01, 0xF2, 0x7F, 0xC0, 0x07, 0x07, 0xF3, 0x04, 0x80, 0x60, + 0x3F, 0xE6, 0x03, 0xFC, 0x60, 0x18, 0x03, 0x00, 0x61, 0x0F, 0xC0, 0xC0, + 0xD0, 0x22, 0x18, 0xCC, 0x12, 0x07, 0x80, 0xC1, 0xFE, 0x0C, 0x1F, 0xE0, + 0xC0, 0x30, 0x0C, 0x00, 0x12, 0x07, 0x80, 0xC0, 0x00, 0x3F, 0x18, 0x6C, + 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x3C, 0x0D, 0x87, + 0x3F, 0x80, 0x3C, 0x66, 0x62, 0x62, 0x30, 0x5C, 0x8E, 0x83, 0xC1, 0x61, + 0x3B, 0x1E, 0x06, 0xC6, 0x46, 0x7E, 0x38, 0x6C, 0x70, 0x41, 0xCF, 0xD8, + 0xE0, 0x70, 0x3C, 0x0E, 0x0E, 0x3F, 0xC0, 0x1F, 0xC0, 0xC1, 0x86, 0x31, + 0x33, 0x66, 0x88, 0xCA, 0x60, 0x29, 0x80, 0xE6, 0x12, 0x88, 0xCB, 0x36, + 0x66, 0x71, 0x0C, 0x18, 0x1F, 0xC0, 0xF4, 0x9D, 0x29, 0x74, 0x1F, 0x21, + 0x99, 0xA6, 0x4C, 0x90, 0xFF, 0xFF, 0xC0, 0x20, 0x10, 0x08, 0xFF, 0x1F, + 0xC0, 0xC1, 0x86, 0xF1, 0x33, 0xF6, 0x88, 0x4A, 0x23, 0x28, 0xF8, 0xE2, + 0x32, 0x88, 0xCB, 0x23, 0x66, 0x01, 0x0C, 0x18, 0x1F, 0xC0, 0xFF, 0xC0, + 0xF4, 0x63, 0x17, 0x00, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, + 0x10, 0x08, 0x00, 0x3F, 0xE0, 0x39, 0x34, 0x43, 0x19, 0x84, 0x3F, 0x31, + 0x2C, 0xC6, 0x08, 0x1C, 0xDE, 0x11, 0x01, 0x60, 0x18, 0x00, 0x07, 0xFC, + 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x06, 0x01, 0x80, 0x60, + 0x18, 0x03, 0x00, 0xFF, 0xE0, 0xC3, 0x61, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, + 0x0D, 0x8E, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x00, 0x3F, 0x7A, 0xFA, 0xFA, + 0xFA, 0xFA, 0xFA, 0x7A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0xC0, 0x6C, 0x50, 0x40, 0x0F, 0xE0, 0x83, 0x0C, 0x30, 0xC1, 0x06, 0x0F, + 0xE0, 0x27, 0x92, 0x49, 0xF4, 0x63, 0x19, 0x38, 0x1F, 0x93, 0x26, 0x59, + 0x98, 0x40, 0x3F, 0xFF, 0x71, 0xC0, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0x80, 0xC0, 0x80, 0xFF, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0xC0, + 0x61, 0xC0, 0x3F, 0xFF, 0x38, 0x30, 0xFD, 0xFB, 0x0E, 0x1C, 0x18, 0x38, + 0x10, 0x70, 0x3F, 0xE0, 0x40, 0x61, 0x83, 0xC7, 0x84, 0xFD, 0xF8, 0x19, + 0x81, 0x98, 0x00, 0x06, 0x03, 0x60, 0x63, 0x0C, 0x10, 0xC1, 0x98, 0x0D, + 0x00, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x18, + 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x60, 0xC0, 0x83, 0xC2, 0xC6, 0x7C, + 0x0C, 0x00, 0x40, 0x02, 0x00, 0x00, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, + 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x06, 0x60, 0x66, 0x06, + 0xC0, 0x30, 0x01, 0x80, 0x30, 0x06, 0x00, 0x00, 0x06, 0x00, 0xF0, 0x0F, + 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x06, 0x60, + 0x66, 0x06, 0xC0, 0x30, 0x06, 0x00, 0xF0, 0x09, 0x00, 0x00, 0x06, 0x00, + 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, + 0x06, 0x60, 0x66, 0x06, 0xC0, 0x30, 0x0C, 0x81, 0x30, 0x00, 0x00, 0x60, + 0x0F, 0x00, 0xF0, 0x09, 0x01, 0x98, 0x19, 0x81, 0x08, 0x30, 0xC3, 0xFC, + 0x20, 0x66, 0x06, 0x60, 0x6C, 0x03, 0x19, 0x81, 0x98, 0x00, 0x00, 0x60, + 0x0F, 0x00, 0xF0, 0x09, 0x01, 0x98, 0x19, 0x81, 0x08, 0x30, 0xC3, 0xFC, + 0x20, 0x66, 0x06, 0x60, 0x6C, 0x03, 0x0F, 0x00, 0x90, 0x0F, 0x00, 0x00, + 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, + 0x3F, 0xC2, 0x06, 0x60, 0x66, 0x06, 0xC0, 0x30, 0x07, 0xFF, 0x83, 0x60, + 0x01, 0x30, 0x01, 0x98, 0x00, 0x8C, 0x00, 0xC6, 0x00, 0x63, 0xFC, 0x61, + 0x80, 0x3F, 0xC0, 0x10, 0x60, 0x18, 0x30, 0x0C, 0x18, 0x0C, 0x0F, 0xF8, + 0x1F, 0x86, 0x19, 0x81, 0xE0, 0x3C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x78, 0x0D, 0x81, 0xB8, 0x63, 0xF8, 0x08, 0x01, 0x80, 0x10, 0x0E, 0x00, + 0x30, 0x08, 0x02, 0x00, 0x0F, 0xFC, 0x02, 0x01, 0x00, 0x80, 0x40, 0x3F, + 0xD0, 0x08, 0x04, 0x02, 0x01, 0x00, 0xFF, 0x80, 0x04, 0x04, 0x04, 0x00, + 0x0F, 0xFC, 0x02, 0x01, 0x00, 0x80, 0x40, 0x3F, 0xD0, 0x08, 0x04, 0x02, + 0x01, 0x00, 0xFF, 0x80, 0x18, 0x0E, 0x09, 0x00, 0x0F, 0xFC, 0x02, 0x01, + 0x00, 0x80, 0x40, 0x3F, 0xD0, 0x08, 0x04, 0x02, 0x01, 0x00, 0xFF, 0x80, + 0x66, 0x33, 0x00, 0x1F, 0xF8, 0x04, 0x02, 0x01, 0x00, 0x80, 0x7F, 0xA0, + 0x10, 0x08, 0x04, 0x02, 0x01, 0xFF, 0xC6, 0x20, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x20, 0x36, 0x40, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x40, + 0x32, 0xB2, 0x02, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, 0x20, 0xCF, + 0x30, 0x08, 0x20, 0x82, 0x08, 0x20, 0x82, 0x08, 0x20, 0x82, 0x08, 0x3F, + 0x82, 0x0C, 0x20, 0x62, 0x03, 0x20, 0x32, 0x03, 0xFC, 0x32, 0x03, 0x20, + 0x32, 0x03, 0x20, 0x62, 0x1C, 0x3F, 0x80, 0x09, 0x03, 0xE0, 0x00, 0x70, + 0x3E, 0x07, 0xE0, 0xF6, 0x1E, 0xC3, 0xCC, 0x78, 0x8F, 0x19, 0xE1, 0xBC, + 0x17, 0x83, 0xF0, 0x3E, 0x07, 0x0C, 0x00, 0x40, 0x02, 0x00, 0x00, 0x1F, + 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x38, 0x01, 0x80, 0x18, 0x01, 0xC0, + 0x3C, 0x03, 0x60, 0x67, 0x0E, 0x1F, 0x80, 0x03, 0x00, 0x20, 0x04, 0x00, + 0x00, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x38, 0x01, 0x80, 0x18, + 0x01, 0xC0, 0x3C, 0x03, 0x60, 0x67, 0x0E, 0x1F, 0x80, 0x06, 0x00, 0xF0, + 0x09, 0x00, 0x00, 0x1F, 0x87, 0x0E, 0x60, 0x6C, 0x03, 0xC0, 0x38, 0x01, + 0x80, 0x18, 0x01, 0xC0, 0x3C, 0x03, 0x60, 0x67, 0x0E, 0x1F, 0x80, 0x0C, + 0x81, 0x30, 0x00, 0x01, 0xF8, 0x70, 0xE6, 0x06, 0xC0, 0x3C, 0x03, 0x80, + 0x18, 0x01, 0x80, 0x1C, 0x03, 0xC0, 0x36, 0x06, 0x70, 0xE1, 0xF8, 0x19, + 0x81, 0x98, 0x00, 0x01, 0xF8, 0x70, 0xE6, 0x06, 0xC0, 0x3C, 0x03, 0x80, + 0x18, 0x01, 0x80, 0x1C, 0x03, 0xC0, 0x36, 0x06, 0x70, 0xE1, 0xF8, 0x81, + 0x89, 0xA1, 0x83, 0x89, 0xA1, 0x80, 0x00, 0x01, 0xF9, 0x70, 0xE6, 0x06, + 0xC0, 0xBC, 0x13, 0x82, 0x18, 0x41, 0x8C, 0x1D, 0x83, 0xF0, 0x36, 0x06, + 0x70, 0xE9, 0xF8, 0x30, 0x06, 0x00, 0x80, 0x00, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, + 0x00, 0x06, 0x03, 0x00, 0x80, 0x00, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, 0x00, 0x0C, + 0x05, 0x03, 0x20, 0x00, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, + 0x0E, 0x03, 0x80, 0xE0, 0x3C, 0x0B, 0x86, 0x7F, 0x00, 0x33, 0x0C, 0xC0, + 0x02, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, + 0x80, 0xF0, 0x2E, 0x19, 0xFC, 0x01, 0x00, 0x20, 0x04, 0x00, 0x00, 0x60, + 0x36, 0x06, 0x30, 0xC1, 0x0C, 0x19, 0x80, 0xD0, 0x0F, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x80, 0x40, 0x3F, 0x9F, 0xE8, + 0x1C, 0x0E, 0x07, 0x03, 0xFF, 0x7E, 0x20, 0x10, 0x08, 0x00, 0x3E, 0x31, + 0xB0, 0x78, 0x3C, 0x16, 0x7B, 0x3D, 0x83, 0xC0, 0xE0, 0x70, 0x78, 0x7C, + 0xF0, 0x30, 0x0C, 0x02, 0x07, 0x87, 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, + 0xA0, 0xD8, 0xEF, 0xB8, 0x0C, 0x0C, 0x04, 0x07, 0x87, 0xE6, 0x10, 0x0C, + 0x0E, 0x7F, 0x61, 0xA0, 0xD8, 0xEF, 0xB8, 0x18, 0x16, 0x19, 0x07, 0x87, + 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, 0xA0, 0xD8, 0xEF, 0xB8, 0x32, 0x3E, + 0x00, 0x07, 0x87, 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, 0xA0, 0xD8, 0xEF, + 0xB8, 0x66, 0x33, 0x00, 0x07, 0x87, 0xE6, 0x10, 0x0C, 0x0E, 0x7F, 0x61, + 0xA0, 0xD8, 0xEF, 0xB8, 0x18, 0x12, 0x09, 0x03, 0x03, 0xC3, 0xF3, 0x08, + 0x06, 0x07, 0x3F, 0xB0, 0xD0, 0x6C, 0x77, 0xDC, 0x38, 0x71, 0xFF, 0xEC, + 0x30, 0xC0, 0xC1, 0x06, 0x05, 0xFF, 0xFC, 0x20, 0x20, 0xC1, 0xC7, 0x8F, + 0xE7, 0xE0, 0x38, 0x7E, 0xC2, 0x82, 0x80, 0x80, 0x80, 0x83, 0xC6, 0x7C, + 0x10, 0x18, 0x08, 0x78, 0x30, 0x18, 0x08, 0x18, 0x7E, 0xC3, 0xC3, 0x81, + 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x0C, 0x18, 0x10, 0x18, 0x7E, 0xC3, 0xC3, + 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x18, 0x34, 0x22, 0x18, 0x7E, 0xC3, + 0xC3, 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x66, 0x66, 0x00, 0x18, 0x7E, + 0xC3, 0xC3, 0x81, 0xFF, 0x80, 0xC3, 0xC3, 0x7E, 0x42, 0x10, 0x22, 0x22, + 0x22, 0x22, 0x20, 0x6C, 0x80, 0x44, 0x44, 0x44, 0x44, 0x40, 0x72, 0xA2, + 0x02, 0x10, 0x84, 0x21, 0x08, 0x42, 0x00, 0xCF, 0x30, 0x00, 0x10, 0x41, + 0x04, 0x10, 0x41, 0x04, 0x10, 0x6C, 0x30, 0x4C, 0x3E, 0x7E, 0xC3, 0x83, + 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x32, 0x7C, 0x00, 0x1C, 0xFE, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x30, 0x10, 0x08, 0x38, 0x7E, + 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x0C, 0x18, 0x10, 0x38, + 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x18, 0x2C, 0x64, + 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x32, 0x5C, + 0x00, 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, 0x66, + 0x66, 0x00, 0x38, 0x7E, 0xC3, 0x83, 0x81, 0x81, 0x81, 0xC3, 0xC6, 0x7E, + 0x18, 0x0C, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x30, 0x18, 0x00, 0x1C, + 0x0F, 0xE6, 0x19, 0x8E, 0x44, 0x92, 0x25, 0x09, 0xC6, 0x63, 0x1F, 0xC0, + 0x00, 0x30, 0x10, 0x08, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC7, 0x7F, 0x0C, 0x18, 0x10, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC7, 0x7F, 0x18, 0x2C, 0x64, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7F, 0x66, 0x66, 0x00, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC7, 0x7F, 0x0C, 0x04, 0x04, 0x00, 0x04, 0x13, 0x19, + 0x8C, 0x44, 0x36, 0x1A, 0x05, 0x03, 0x81, 0x80, 0xC0, 0x60, 0xE0, 0x60, + 0x00, 0x80, 0x80, 0x80, 0x9C, 0xBE, 0xC3, 0xC1, 0xC1, 0x81, 0xC1, 0xC3, + 0xE3, 0xBE, 0x80, 0x80, 0x80, 0x80, 0x22, 0x11, 0x00, 0x00, 0x04, 0x13, + 0x19, 0x8C, 0x44, 0x36, 0x1A, 0x05, 0x03, 0x81, 0x80, 0xC0, 0x60, 0xE0, + 0x60, 0x00 }; + +const GFXglyph FreeSans9pt8bGlyphs[] PROGMEM = { + { 0, 1, 1, 5, 0, 0 }, // 0x20 ' ' U+0020 + { 1, 2, 13, 5, 2, -12 }, // 0x21 '!' U+0021 + { 5, 4, 5, 6, 1, -12 }, // 0x22 '"' U+0022 + { 8, 10, 13, 10, 0, -12 }, // 0x23 '#' U+0023 + { 25, 8, 16, 10, 1, -13 }, // 0x24 '$' U+0024 + { 41, 14, 13, 16, 1, -12 }, // 0x25 '%' U+0025 + { 64, 10, 13, 12, 1, -12 }, // 0x26 '&' U+0026 + { 81, 2, 5, 3, 1, -12 }, // 0x27 ''' U+0027 + { 83, 4, 17, 6, 1, -12 }, // 0x28 '(' U+0028 + { 92, 4, 17, 6, 1, -12 }, // 0x29 ')' U+0029 + { 101, 5, 5, 7, 1, -12 }, // 0x2a '*' U+002A + { 105, 9, 9, 11, 1, -8 }, // 0x2b '+' U+002B + { 116, 1, 5, 5, 2, -1 }, // 0x2c ',' U+002C + { 117, 4, 2, 6, 1, -5 }, // 0x2d '-' U+002D + { 118, 1, 2, 5, 2, -1 }, // 0x2e '.' U+002E + { 119, 5, 13, 5, 0, -12 }, // 0x2f '/' U+002F + { 128, 8, 13, 10, 1, -12 }, // 0x30 '0' U+0030 + { 141, 4, 13, 10, 2, -12 }, // 0x31 '1' U+0031 + { 148, 8, 13, 10, 1, -12 }, // 0x32 '2' U+0032 + { 161, 8, 13, 10, 1, -12 }, // 0x33 '3' U+0033 + { 174, 9, 13, 10, 0, -12 }, // 0x34 '4' U+0034 + { 189, 8, 13, 10, 1, -12 }, // 0x35 '5' U+0035 + { 202, 8, 13, 10, 1, -12 }, // 0x36 '6' U+0036 + { 215, 8, 13, 10, 1, -12 }, // 0x37 '7' U+0037 + { 228, 8, 13, 10, 1, -12 }, // 0x38 '8' U+0038 + { 241, 8, 13, 10, 1, -12 }, // 0x39 '9' U+0039 + { 254, 2, 9, 5, 2, -8 }, // 0x3a ':' U+003A + { 257, 2, 12, 5, 2, -8 }, // 0x3b ';' U+003B + { 260, 9, 9, 11, 1, -8 }, // 0x3c '<' U+003C + { 271, 9, 4, 11, 1, -5 }, // 0x3d '=' U+003D + { 276, 9, 9, 11, 1, -8 }, // 0x3e '>' U+003E + { 287, 8, 13, 10, 1, -12 }, // 0x3f '?' U+003F + { 300, 16, 16, 18, 1, -12 }, // 0x40 '@' U+0040 + { 332, 12, 13, 12, 0, -12 }, // 0x41 'A' U+0041 + { 352, 10, 13, 12, 1, -12 }, // 0x42 'B' U+0042 + { 369, 11, 13, 13, 1, -12 }, // 0x43 'C' U+0043 + { 387, 10, 13, 13, 2, -12 }, // 0x44 'D' U+0044 + { 404, 9, 13, 12, 2, -12 }, // 0x45 'E' U+0045 + { 419, 8, 13, 11, 2, -12 }, // 0x46 'F' U+0046 + { 432, 12, 13, 14, 1, -12 }, // 0x47 'G' U+0047 + { 452, 11, 13, 13, 1, -12 }, // 0x48 'H' U+0048 + { 470, 1, 13, 5, 2, -12 }, // 0x49 'I' U+0049 + { 472, 8, 13, 9, 0, -12 }, // 0x4a 'J' U+004A + { 485, 11, 13, 12, 1, -12 }, // 0x4b 'K' U+004B + { 503, 9, 13, 10, 1, -12 }, // 0x4c 'L' U+004C + { 518, 13, 13, 15, 1, -12 }, // 0x4d 'M' U+004D + { 540, 11, 13, 13, 1, -12 }, // 0x4e 'N' U+004E + { 558, 12, 13, 14, 1, -12 }, // 0x4f 'O' U+004F + { 578, 9, 13, 12, 2, -12 }, // 0x50 'P' U+0050 + { 593, 12, 14, 14, 1, -12 }, // 0x51 'Q' U+0051 + { 614, 10, 13, 13, 2, -12 }, // 0x52 'R' U+0052 + { 631, 10, 13, 12, 1, -12 }, // 0x53 'S' U+0053 + { 648, 11, 13, 11, 0, -12 }, // 0x54 'T' U+0054 + { 666, 10, 13, 13, 2, -12 }, // 0x55 'U' U+0055 + { 683, 11, 13, 12, 1, -12 }, // 0x56 'V' U+0056 + { 701, 17, 13, 17, 0, -12 }, // 0x57 'W' U+0057 + { 729, 12, 13, 12, 0, -12 }, // 0x58 'X' U+0058 + { 749, 12, 13, 12, 0, -12 }, // 0x59 'Y' U+0059 + { 769, 11, 13, 11, 0, -12 }, // 0x5a 'Z' U+005A + { 787, 4, 17, 5, 1, -12 }, // 0x5b '[' U+005B + { 796, 5, 13, 5, 0, -12 }, // 0x5c '\' U+005C + { 805, 4, 17, 5, 0, -12 }, // 0x5d ']' U+005D + { 814, 7, 7, 8, 1, -12 }, // 0x5e '^' U+005E + { 821, 10, 1, 10, 0, 3 }, // 0x5f '_' U+005F + { 823, 4, 2, 6, 0, -12 }, // 0x60 '`' U+0060 + { 824, 9, 10, 10, 1, -9 }, // 0x61 'a' U+0061 + { 836, 8, 13, 10, 1, -12 }, // 0x62 'b' U+0062 + { 849, 8, 10, 9, 1, -9 }, // 0x63 'c' U+0063 + { 859, 9, 13, 10, 0, -12 }, // 0x64 'd' U+0064 + { 874, 8, 10, 10, 1, -9 }, // 0x65 'e' U+0065 + { 884, 5, 13, 5, 0, -12 }, // 0x66 'f' U+0066 + { 893, 8, 14, 10, 1, -9 }, // 0x67 'g' U+0067 + { 907, 8, 13, 10, 1, -12 }, // 0x68 'h' U+0068 + { 920, 2, 13, 4, 1, -12 }, // 0x69 'i' U+0069 + { 924, 3, 17, 4, 0, -12 }, // 0x6a 'j' U+006A + { 931, 8, 13, 9, 1, -12 }, // 0x6b 'k' U+006B + { 944, 2, 13, 4, 1, -12 }, // 0x6c 'l' U+006C + { 948, 13, 10, 15, 1, -9 }, // 0x6d 'm' U+006D + { 965, 8, 10, 10, 1, -9 }, // 0x6e 'n' U+006E + { 975, 8, 10, 10, 1, -9 }, // 0x6f 'o' U+006F + { 985, 8, 14, 10, 1, -9 }, // 0x70 'p' U+0070 + { 999, 9, 14, 10, 0, -9 }, // 0x71 'q' U+0071 + { 1015, 5, 10, 6, 1, -9 }, // 0x72 'r' U+0072 + { 1022, 7, 10, 9, 1, -9 }, // 0x73 's' U+0073 + { 1031, 5, 12, 5, 0, -11 }, // 0x74 't' U+0074 + { 1039, 8, 9, 10, 1, -8 }, // 0x75 'u' U+0075 + { 1048, 9, 9, 9, 0, -8 }, // 0x76 'v' U+0076 + { 1059, 13, 9, 13, 0, -8 }, // 0x77 'w' U+0077 + { 1074, 9, 9, 9, 0, -8 }, // 0x78 'x' U+0078 + { 1085, 9, 13, 9, 0, -8 }, // 0x79 'y' U+0079 + { 1100, 7, 9, 9, 1, -8 }, // 0x7a 'z' U+007A + { 1108, 4, 17, 6, 1, -12 }, // 0x7b '{' U+007B + { 1117, 1, 17, 5, 2, -12 }, // 0x7c '|' U+007C + { 1120, 4, 17, 6, 1, -12 }, // 0x7d '}' U+007D + { 1129, 8, 3, 11, 1, -7 }, // 0x7e '~' U+007E + { 1132, 9, 13, 13, 2, -12 }, // 0x7f 'REPLACEMENT CHARACTER *' U+2370 + { 1147, 1, 1, 5, 0, 0 }, // 0x80 'NO-BREAK SPACE' U+00A0 + { 1148, 2, 13, 5, 2, -8 }, // 0x81 'INVERTED EXCLAMATION MARK' U+00A1 + { 1152, 8, 13, 10, 1, -10 }, // 0x82 'CENT SIGN' U+00A2 + { 1165, 10, 13, 10, 0, -12 }, // 0x83 'POUND SIGN' U+00A3 + { 1182, 10, 13, 12, 1, -12 }, // 0x84 'EURO SIGN *' U+20AC + { 1199, 10, 13, 10, 0, -12 }, // 0x85 'YEN SIGN' U+00A5 + { 1216, 10, 17, 12, 1, -16 }, // 0x86 'LATIN CAPITAL LETTER S WITH CARON *' U+0160 + { 1238, 8, 17, 10, 1, -12 }, // 0x87 'SECTION SIGN' U+00A7 + { 1255, 7, 13, 9, 1, -12 }, // 0x88 'LATIN SMALL LETTER S WITH CARON *' U+0161 + { 1267, 14, 13, 13, 0, -12 }, // 0x89 'COPYRIGHT SIGN' U+00A9 + { 1290, 5, 8, 7, 1, -12 }, // 0x8a 'FEMININE ORDINAL INDICATOR' U+00AA + { 1295, 6, 6, 8, 1, -7 }, // 0x8b 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00AB + { 1300, 9, 5, 11, 1, -6 }, // 0x8c 'NOT SIGN' U+00AC + { 1306, 4, 2, 6, 1, -5 }, // 0x8d 'SOFT HYPHEN' U+00AD + { 1307, 14, 13, 13, 0, -12 }, // 0x8e 'REGISTERED SIGN' U+00AE + { 1330, 5, 2, 6, 0, -12 }, // 0x8f 'MACRON' U+00AF + { 1332, 5, 5, 11, 3, -11 }, // 0x90 'DEGREE SIGN' U+00B0 + { 1336, 9, 11, 11, 1, -10 }, // 0x91 'PLUS-MINUS SIGN' U+00B1 + { 1349, 6, 8, 6, 0, -12 }, // 0x92 'SUPERSCRIPT TWO' U+00B2 + { 1355, 6, 8, 6, 0, -12 }, // 0x93 'SUPERSCRIPT THREE' U+00B3 + { 1361, 11, 17, 11, 0, -16 }, // 0x94 'LATIN CAPITAL LETTER Z WITH CARON *' U+017D + { 1385, 9, 13, 10, 1, -8 }, // 0x95 'MICRO SIGN' U+00B5 + { 1400, 8, 16, 10, 1, -12 }, // 0x96 'PILCROW SIGN' U+00B6 + { 1416, 1, 2, 5, 2, -5 }, // 0x97 'MIDDLE DOT' U+00B7 + { 1417, 7, 13, 9, 1, -12 }, // 0x98 'LATIN SMALL LETTER Z WITH CARON *' U+017E + { 1429, 3, 8, 6, 1, -12 }, // 0x99 'SUPERSCRIPT ONE' U+00B9 + { 1432, 5, 8, 7, 1, -12 }, // 0x9a 'MASCULINE ORDINAL INDICATOR' U+00BA + { 1437, 6, 6, 8, 1, -7 }, // 0x9b 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK' U+00BB + { 1442, 16, 13, 18, 1, -12 }, // 0x9c 'LATIN CAPITAL LIGATURE OE *' U+0152 + { 1468, 15, 10, 17, 1, -9 }, // 0x9d 'LATIN SMALL LIGATURE OE *' U+0153 + { 1487, 12, 16, 12, 0, -15 }, // 0x9e 'LATIN CAPITAL LETTER Y WITH DIAERESIS *' U+0178 + { 1511, 8, 13, 10, 2, -8 }, // 0x9f 'INVERTED QUESTION MARK' U+00BF + { 1524, 12, 17, 12, 0, -16 }, // 0xa0 'LATIN CAPITAL LETTER A WITH GRAVE' U+00C0 + { 1550, 12, 17, 12, 0, -16 }, // 0xa1 'LATIN CAPITAL LETTER A WITH ACUTE' U+00C1 + { 1576, 12, 17, 12, 0, -16 }, // 0xa2 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' U+00C2 + { 1602, 12, 16, 12, 0, -15 }, // 0xa3 'LATIN CAPITAL LETTER A WITH TILDE' U+00C3 + { 1626, 12, 16, 12, 0, -15 }, // 0xa4 'LATIN CAPITAL LETTER A WITH DIAERESIS' U+00C4 + { 1650, 12, 17, 12, 0, -16 }, // 0xa5 'LATIN CAPITAL LETTER A WITH RING ABOVE' U+00C5 + { 1676, 17, 13, 18, 0, -12 }, // 0xa6 'LATIN CAPITAL LETTER AE' U+00C6 + { 1704, 11, 17, 13, 1, -12 }, // 0xa7 'LATIN CAPITAL LETTER C WITH CEDILLA' U+00C7 + { 1728, 9, 17, 12, 2, -16 }, // 0xa8 'LATIN CAPITAL LETTER E WITH GRAVE' U+00C8 + { 1748, 9, 17, 12, 2, -16 }, // 0xa9 'LATIN CAPITAL LETTER E WITH ACUTE' U+00C9 + { 1768, 9, 17, 12, 2, -16 }, // 0xaa 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX' U+00CA + { 1788, 9, 16, 12, 2, -15 }, // 0xab 'LATIN CAPITAL LETTER E WITH DIAERESIS' U+00CB + { 1806, 4, 17, 5, 0, -16 }, // 0xac 'LATIN CAPITAL LETTER I WITH GRAVE' U+00CC + { 1815, 4, 17, 5, 1, -16 }, // 0xad 'LATIN CAPITAL LETTER I WITH ACUTE' U+00CD + { 1824, 5, 17, 5, 0, -16 }, // 0xae 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX' U+00CE + { 1835, 6, 16, 5, 0, -15 }, // 0xaf 'LATIN CAPITAL LETTER I WITH DIAERESIS' U+00CF + { 1847, 12, 13, 13, 0, -12 }, // 0xb0 'LATIN CAPITAL LETTER ETH' U+00D0 + { 1867, 11, 16, 13, 1, -15 }, // 0xb1 'LATIN CAPITAL LETTER N WITH TILDE' U+00D1 + { 1889, 12, 17, 14, 1, -16 }, // 0xb2 'LATIN CAPITAL LETTER O WITH GRAVE' U+00D2 + { 1915, 12, 17, 14, 1, -16 }, // 0xb3 'LATIN CAPITAL LETTER O WITH ACUTE' U+00D3 + { 1941, 12, 17, 14, 1, -16 }, // 0xb4 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX' U+00D4 + { 1967, 12, 16, 14, 1, -15 }, // 0xb5 'LATIN CAPITAL LETTER O WITH TILDE' U+00D5 + { 1991, 12, 16, 14, 1, -15 }, // 0xb6 'LATIN CAPITAL LETTER O WITH DIAERESIS' U+00D6 + { 2015, 7, 7, 11, 2, -7 }, // 0xb7 'MULTIPLICATION SIGN' U+00D7 + { 2022, 12, 14, 14, 1, -13 }, // 0xb8 'LATIN CAPITAL LETTER O WITH STROKE' U+00D8 + { 2043, 10, 17, 13, 2, -16 }, // 0xb9 'LATIN CAPITAL LETTER U WITH GRAVE' U+00D9 + { 2065, 10, 17, 13, 2, -16 }, // 0xba 'LATIN CAPITAL LETTER U WITH ACUTE' U+00DA + { 2087, 10, 17, 13, 2, -16 }, // 0xbb 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX' U+00DB + { 2109, 10, 16, 13, 2, -15 }, // 0xbc 'LATIN CAPITAL LETTER U WITH DIAERESIS' U+00DC + { 2129, 12, 17, 12, 0, -16 }, // 0xbd 'LATIN CAPITAL LETTER Y WITH ACUTE' U+00DD + { 2155, 9, 13, 12, 2, -12 }, // 0xbe 'LATIN CAPITAL LETTER THORN' U+00DE + { 2170, 9, 13, 11, 1, -12 }, // 0xbf 'LATIN SMALL LETTER SHARP S' U+00DF + { 2185, 9, 13, 10, 1, -12 }, // 0xc0 'LATIN SMALL LETTER A WITH GRAVE' U+00E0 + { 2200, 9, 13, 10, 1, -12 }, // 0xc1 'LATIN SMALL LETTER A WITH ACUTE' U+00E1 + { 2215, 9, 13, 10, 1, -12 }, // 0xc2 'LATIN SMALL LETTER A WITH CIRCUMFLEX' U+00E2 + { 2230, 9, 13, 10, 1, -12 }, // 0xc3 'LATIN SMALL LETTER A WITH TILDE' U+00E3 + { 2245, 9, 13, 10, 1, -12 }, // 0xc4 'LATIN SMALL LETTER A WITH DIAERESIS' U+00E4 + { 2260, 9, 14, 10, 1, -13 }, // 0xc5 'LATIN SMALL LETTER A WITH RING ABOVE' U+00E5 + { 2276, 14, 10, 16, 1, -9 }, // 0xc6 'LATIN SMALL LETTER AE' U+00E6 + { 2294, 8, 14, 9, 1, -9 }, // 0xc7 'LATIN SMALL LETTER C WITH CEDILLA' U+00E7 + { 2308, 8, 13, 10, 1, -12 }, // 0xc8 'LATIN SMALL LETTER E WITH GRAVE' U+00E8 + { 2321, 8, 13, 10, 1, -12 }, // 0xc9 'LATIN SMALL LETTER E WITH ACUTE' U+00E9 + { 2334, 8, 13, 10, 1, -12 }, // 0xca 'LATIN SMALL LETTER E WITH CIRCUMFLEX' U+00EA + { 2347, 8, 13, 10, 1, -12 }, // 0xcb 'LATIN SMALL LETTER E WITH DIAERESIS' U+00EB + { 2360, 4, 13, 5, 0, -12 }, // 0xcc 'LATIN SMALL LETTER I WITH GRAVE' U+00EC + { 2367, 4, 13, 5, 1, -12 }, // 0xcd 'LATIN SMALL LETTER I WITH ACUTE' U+00ED + { 2374, 5, 13, 5, 0, -12 }, // 0xce 'LATIN SMALL LETTER I WITH CIRCUMFLEX' U+00EE + { 2383, 6, 13, 5, -1, -12 }, // 0xcf 'LATIN SMALL LETTER I WITH DIAERESIS' U+00EF + { 2393, 8, 13, 10, 1, -12 }, // 0xd0 'LATIN SMALL LETTER ETH' U+00F0 + { 2406, 8, 13, 10, 1, -12 }, // 0xd1 'LATIN SMALL LETTER N WITH TILDE' U+00F1 + { 2419, 8, 13, 10, 1, -12 }, // 0xd2 'LATIN SMALL LETTER O WITH GRAVE' U+00F2 + { 2432, 8, 13, 10, 1, -12 }, // 0xd3 'LATIN SMALL LETTER O WITH ACUTE' U+00F3 + { 2445, 8, 13, 10, 1, -12 }, // 0xd4 'LATIN SMALL LETTER O WITH CIRCUMFLEX' U+00F4 + { 2458, 8, 13, 10, 1, -12 }, // 0xd5 'LATIN SMALL LETTER O WITH TILDE' U+00F5 + { 2471, 8, 13, 10, 1, -12 }, // 0xd6 'LATIN SMALL LETTER O WITH DIAERESIS' U+00F6 + { 2484, 9, 9, 11, 1, -8 }, // 0xd7 'DIVISION SIGN' U+00F7 + { 2495, 10, 11, 11, 0, -9 }, // 0xd8 'LATIN SMALL LETTER O WITH STROKE' U+00F8 + { 2509, 8, 13, 10, 1, -12 }, // 0xd9 'LATIN SMALL LETTER U WITH GRAVE' U+00F9 + { 2522, 8, 13, 10, 1, -12 }, // 0xda 'LATIN SMALL LETTER U WITH ACUTE' U+00FA + { 2535, 8, 13, 10, 1, -12 }, // 0xdb 'LATIN SMALL LETTER U WITH CIRCUMFLEX' U+00FB + { 2548, 8, 13, 10, 1, -12 }, // 0xdc 'LATIN SMALL LETTER U WITH DIAERESIS' U+00FC + { 2561, 9, 17, 9, 0, -12 }, // 0xdd 'LATIN SMALL LETTER Y WITH ACUTE' U+00FD + { 2581, 8, 17, 10, 1, -12 }, // 0xde 'LATIN SMALL LETTER THORN' U+00FE + { 2598, 9, 17, 9, 0, -12 } }; // 0xdf 'LATIN SMALL LETTER Y WITH DIAERESIS' U+000FF + +const GFXfont FreeSans9pt8b PROGMEM = { + (uint8_t *)FreeSans9pt8bBitmaps, + (GFXglyph *)FreeSans9pt8bGlyphs, + 0x20, 0xDF, 25 }; + +// Approx. 3969 bytes diff --git a/RX_FSK/src/fonts/Picopixel.h b/RX_FSK/src/fonts/Picopixel.h new file mode 100644 index 0000000..0ed6543 --- /dev/null +++ b/RX_FSK/src/fonts/Picopixel.h @@ -0,0 +1,123 @@ +// Picopixel by Sebastian Weber. A tiny font +// with all characters within a 6 pixel height. + +const uint8_t PicopixelBitmaps[] PROGMEM = { + 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, + 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, + 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, + 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, + 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, + 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, + 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, + 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, + 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, + 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, + 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, + 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, + 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, + 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, + 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A }; + +const GFXglyph PicopixelGlyphs[] PROGMEM = { + { 0, 0, 0, 2, 0, 1 }, // 0x20 ' ' + { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' + { 1, 3, 2, 4, 0, -4 }, // 0x22 '"' + { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' + { 6, 3, 6, 4, 0, -4 }, // 0x24 '$' + { 9, 3, 5, 4, 0, -4 }, // 0x25 '%' + { 11, 4, 5, 5, 0, -4 }, // 0x26 '&' + { 14, 1, 2, 2, 0, -4 }, // 0x27 ''' + { 15, 2, 5, 3, 0, -4 }, // 0x28 '(' + { 17, 2, 5, 3, 0, -4 }, // 0x29 ')' + { 19, 3, 3, 4, 0, -3 }, // 0x2A '*' + { 21, 3, 3, 4, 0, -3 }, // 0x2B '+' + { 23, 2, 2, 3, 0, 0 }, // 0x2C ',' + { 24, 3, 1, 4, 0, -2 }, // 0x2D '-' + { 25, 1, 1, 2, 0, 0 }, // 0x2E '.' + { 26, 3, 5, 4, 0, -4 }, // 0x2F '/' + { 28, 3, 5, 4, 0, -4 }, // 0x30 '0' + { 30, 2, 5, 3, 0, -4 }, // 0x31 '1' + { 32, 3, 5, 4, 0, -4 }, // 0x32 '2' + { 34, 3, 5, 4, 0, -4 }, // 0x33 '3' + { 36, 3, 5, 4, 0, -4 }, // 0x34 '4' + { 38, 3, 5, 4, 0, -4 }, // 0x35 '5' + { 40, 3, 5, 4, 0, -4 }, // 0x36 '6' + { 42, 3, 5, 4, 0, -4 }, // 0x37 '7' + { 44, 3, 5, 4, 0, -4 }, // 0x38 '8' + { 46, 3, 5, 4, 0, -4 }, // 0x39 '9' + { 48, 1, 3, 2, 0, -3 }, // 0x3A ':' + { 49, 2, 4, 3, 0, -3 }, // 0x3B ';' + { 50, 2, 3, 3, 0, -3 }, // 0x3C '<' + { 51, 3, 3, 4, 0, -3 }, // 0x3D '=' + { 53, 2, 3, 3, 0, -3 }, // 0x3E '>' + { 54, 3, 5, 4, 0, -4 }, // 0x3F '?' + { 56, 3, 5, 4, 0, -4 }, // 0x40 '@' + { 58, 3, 5, 4, 0, -4 }, // 0x41 'A' + { 60, 3, 5, 4, 0, -4 }, // 0x42 'B' + { 62, 3, 5, 4, 0, -4 }, // 0x43 'C' + { 64, 3, 5, 4, 0, -4 }, // 0x44 'D' + { 66, 3, 5, 4, 0, -4 }, // 0x45 'E' + { 68, 3, 5, 4, 0, -4 }, // 0x46 'F' + { 70, 3, 5, 4, 0, -4 }, // 0x47 'G' + { 72, 3, 5, 4, 0, -4 }, // 0x48 'H' + { 74, 1, 5, 2, 0, -4 }, // 0x49 'I' + { 75, 3, 5, 4, 0, -4 }, // 0x4A 'J' + { 77, 3, 5, 4, 0, -4 }, // 0x4B 'K' + { 79, 3, 5, 4, 0, -4 }, // 0x4C 'L' + { 81, 5, 5, 6, 0, -4 }, // 0x4D 'M' + { 85, 4, 5, 5, 0, -4 }, // 0x4E 'N' + { 88, 3, 5, 4, 0, -4 }, // 0x4F 'O' + { 90, 3, 5, 4, 0, -4 }, // 0x50 'P' + { 92, 3, 6, 4, 0, -4 }, // 0x51 'Q' + { 95, 3, 5, 4, 0, -4 }, // 0x52 'R' + { 97, 3, 5, 4, 0, -4 }, // 0x53 'S' + { 99, 3, 5, 4, 0, -4 }, // 0x54 'T' + { 101, 3, 5, 4, 0, -4 }, // 0x55 'U' + { 103, 3, 5, 4, 0, -4 }, // 0x56 'V' + { 105, 5, 5, 6, 0, -4 }, // 0x57 'W' + { 109, 3, 5, 4, 0, -4 }, // 0x58 'X' + { 111, 3, 5, 4, 0, -4 }, // 0x59 'Y' + { 113, 3, 5, 4, 0, -4 }, // 0x5A 'Z' + { 115, 2, 5, 3, 0, -4 }, // 0x5B '[' + { 117, 3, 5, 4, 0, -4 }, // 0x5C '\' + { 119, 2, 5, 3, 0, -4 }, // 0x5D ']' + { 121, 3, 2, 4, 0, -4 }, // 0x5E '^' + { 122, 4, 1, 4, 0, 1 }, // 0x5F '_' + { 123, 2, 2, 3, 0, -4 }, // 0x60 '`' + { 124, 3, 4, 4, 0, -3 }, // 0x61 'a' + { 126, 3, 5, 4, 0, -4 }, // 0x62 'b' + { 128, 3, 3, 4, 0, -2 }, // 0x63 'c' + { 130, 3, 5, 4, 0, -4 }, // 0x64 'd' + { 132, 3, 4, 4, 0, -3 }, // 0x65 'e' + { 134, 2, 5, 3, 0, -4 }, // 0x66 'f' + { 136, 3, 5, 4, 0, -3 }, // 0x67 'g' + { 138, 3, 5, 4, 0, -4 }, // 0x68 'h' + { 140, 1, 5, 2, 0, -4 }, // 0x69 'i' + { 141, 2, 6, 3, 0, -4 }, // 0x6A 'j' + { 143, 3, 5, 4, 0, -4 }, // 0x6B 'k' + { 145, 2, 5, 3, 0, -4 }, // 0x6C 'l' + { 147, 5, 3, 6, 0, -2 }, // 0x6D 'm' + { 149, 3, 3, 4, 0, -2 }, // 0x6E 'n' + { 151, 3, 3, 4, 0, -2 }, // 0x6F 'o' + { 153, 3, 4, 4, 0, -2 }, // 0x70 'p' + { 155, 3, 4, 4, 0, -2 }, // 0x71 'q' + { 157, 2, 3, 3, 0, -2 }, // 0x72 'r' + { 158, 3, 4, 4, 0, -3 }, // 0x73 's' + { 160, 2, 5, 3, 0, -4 }, // 0x74 't' + { 162, 3, 3, 4, 0, -2 }, // 0x75 'u' + { 164, 3, 3, 4, 0, -2 }, // 0x76 'v' + { 166, 5, 3, 6, 0, -2 }, // 0x77 'w' + { 168, 3, 3, 4, 0, -2 }, // 0x78 'x' + { 170, 3, 4, 4, 0, -2 }, // 0x79 'y' + { 172, 3, 4, 4, 0, -3 }, // 0x7A 'z' + { 174, 3, 5, 4, 0, -4 }, // 0x7B '{' + { 176, 1, 6, 2, 0, -4 }, // 0x7C '|' + { 177, 3, 5, 4, 0, -4 }, // 0x7D '}' + { 179, 4, 2, 5, 0, -3 } }; // 0x7E '~' + +const GFXfont Picopixel PROGMEM = { + (uint8_t *)PicopixelBitmaps, + (GFXglyph *)PicopixelGlyphs, + 0x20, 0x7E, 7 }; + +// Approx. 852 bytes diff --git a/RX_FSK/src/fonts/Terminal11x16.h b/RX_FSK/src/fonts/Terminal11x16.h new file mode 100644 index 0000000..2522cbe --- /dev/null +++ b/RX_FSK/src/fonts/Terminal11x16.h @@ -0,0 +1,221 @@ +const uint8_t Terminal11x16Bitmap[] = { + 0x0C, 0x18, 0x78, 0xF1, 0xE3, 0xC7, 0x86, 0x0C, 0x18, 0x00, 0x00, 0xC1, + 0x80, 0x33, 0x33, 0x33, 0x33, 0x0C, 0xC1, 0x98, 0x33, 0x3F, 0xF1, 0x98, + 0x33, 0x0C, 0xC1, 0x98, 0xFF, 0x8C, 0xC1, 0x98, 0x33, 0x00, 0x0C, 0x06, + 0x0F, 0xCF, 0xF6, 0xC3, 0x61, 0xFC, 0x7F, 0x0D, 0x86, 0xDF, 0xE7, 0xE0, + 0xC0, 0x60, 0x00, 0x2E, 0x0D, 0xC3, 0xB8, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x3B, 0x87, 0x60, 0xE0, 0x0E, 0x06, 0xC3, 0x30, 0xCC, + 0x36, 0x07, 0x03, 0xC1, 0xF0, 0x66, 0xD9, 0xE6, 0x31, 0xDE, 0x3C, 0xC0, + 0x1C, 0x71, 0xC3, 0x0C, 0x60, 0x07, 0x0C, 0x1C, 0x18, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x18, 0x1C, 0x0C, 0x07, 0x38, 0x0C, 0x0E, 0x06, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x38, 0x6D, 0xB6, 0xCF, + 0xC3, 0xC7, 0xF8, 0xF0, 0xFC, 0xDB, 0x6D, 0x80, 0x0C, 0x06, 0x03, 0x0F, + 0xF7, 0xF8, 0x60, 0x30, 0x18, 0x1C, 0x71, 0xC3, 0x18, 0x7F, 0xBF, 0xC0, + 0x1C, 0x71, 0xC0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, + 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x1F, 0x0F, 0xF9, 0x83, + 0x60, 0x7C, 0x1F, 0x86, 0xF1, 0x9E, 0x63, 0xD8, 0x7E, 0x0F, 0x81, 0xB0, + 0x67, 0xFC, 0x3E, 0x00, 0x06, 0x03, 0x83, 0xE0, 0xF8, 0x06, 0x01, 0x80, + 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x3F, 0xCF, 0xF0, 0x3F, 0x8F, + 0xFB, 0x83, 0xE0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0x8F, 0xFB, 0x83, 0xE0, 0x30, + 0x06, 0x01, 0xC7, 0xF0, 0xFC, 0x00, 0xC0, 0x0F, 0x01, 0xF0, 0x77, 0xFC, + 0x7F, 0x00, 0x03, 0x80, 0xF0, 0x3E, 0x0E, 0xC3, 0x98, 0xE3, 0x38, 0x66, + 0x0C, 0xFF, 0xFF, 0xFC, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xFF, 0xFF, + 0xFF, 0x00, 0x60, 0x0C, 0x01, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x60, 0x0F, + 0x01, 0xF0, 0x77, 0xFC, 0x7F, 0x00, 0x07, 0x81, 0xF0, 0x70, 0x1C, 0x07, + 0x00, 0xC0, 0x3F, 0xE7, 0xFE, 0xE0, 0xF8, 0x0F, 0x01, 0xF0, 0x77, 0xFC, + 0x7F, 0x00, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0x60, 0x18, 0x03, 0x00, 0xC0, + 0x18, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, + 0xF1, 0xC7, 0x30, 0x66, 0x0C, 0xE3, 0x8F, 0xE3, 0xFE, 0xE0, 0xF8, 0x0F, + 0x01, 0xF0, 0x77, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xFB, 0x83, 0xE0, 0x3C, + 0x07, 0xC1, 0xDF, 0xF9, 0xFF, 0x00, 0xC0, 0x38, 0x0E, 0x03, 0x83, 0xE0, + 0x78, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x01, 0xC7, 0x1C, 0x1C, 0x71, 0xC0, + 0x00, 0x01, 0xC7, 0x1C, 0x30, 0xC6, 0x01, 0x81, 0xC1, 0xC1, 0xC1, 0xC1, + 0xC1, 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0C, 0x7F, 0xDF, + 0xF0, 0x00, 0x00, 0x7F, 0xDF, 0xF0, 0x60, 0x38, 0x0E, 0x03, 0x80, 0xE0, + 0x38, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x00, 0x3F, 0x1F, + 0xEE, 0x1F, 0x03, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x0C, 0x03, 0x00, 0xC0, + 0x00, 0x0C, 0x03, 0x00, 0x3F, 0x8F, 0xF9, 0x83, 0x67, 0xBD, 0xF7, 0xB6, + 0xF6, 0xDE, 0xDB, 0xDB, 0x7B, 0xFB, 0x3E, 0x70, 0x07, 0xF8, 0x3F, 0x00, + 0x0C, 0x03, 0x01, 0xE0, 0x78, 0x1E, 0x0C, 0xC3, 0x30, 0xCC, 0x61, 0x9F, + 0xE7, 0xFB, 0x03, 0xC0, 0xF0, 0x30, 0xFE, 0x3F, 0xCC, 0x3B, 0x06, 0xC1, + 0xB0, 0xEF, 0xF3, 0xFE, 0xC1, 0xF0, 0x3C, 0x0F, 0x07, 0xFF, 0xBF, 0xC0, + 0x1F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, + 0x06, 0x0D, 0xC7, 0x3F, 0x87, 0xC0, 0xFE, 0x3F, 0xCC, 0x3B, 0x06, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x1B, 0x0E, 0xFF, 0x3F, 0x80, + 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xC0, 0x30, 0x0F, 0xF3, 0xFC, 0xC0, 0x30, + 0x0C, 0x03, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xC0, + 0x30, 0x0F, 0xF3, 0xFC, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x00, + 0x1F, 0x8F, 0xF7, 0x0D, 0x80, 0xC0, 0x30, 0x0C, 0x7F, 0x1F, 0xC0, 0xF0, + 0x36, 0x0D, 0xC3, 0x3F, 0xC7, 0xF0, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, + 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x3F, 0x3F, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xF0, 0x3C, 0x0F, 0x86, 0x7F, 0x8F, 0xC0, 0xC0, 0xF0, 0x7C, 0x3B, + 0x1C, 0xCE, 0x37, 0x0F, 0x83, 0xE0, 0xDC, 0x33, 0x8C, 0x73, 0x0E, 0xC1, + 0xF0, 0x30, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xFF, 0xFF, 0xF0, 0xC0, 0xF8, 0x7E, 0x1F, + 0xCF, 0xF3, 0xF7, 0xBD, 0xEF, 0x33, 0xCC, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x30, 0xC0, 0xF8, 0x3E, 0x0F, 0xC3, 0xD8, 0xF6, 0x3C, 0xCF, 0x33, + 0xC6, 0xF1, 0xBC, 0x3F, 0x07, 0xC1, 0xF0, 0x30, 0x1E, 0x0F, 0xC7, 0x39, + 0x86, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xCE, 0x3F, + 0x07, 0x80, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x1F, 0xFE, + 0xFF, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x00, 0x1E, 0x0F, 0xC7, 0x39, + 0x86, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF1, 0xB6, 0x79, 0xCE, 0x3F, + 0xC7, 0xB0, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x1F, 0xFE, + 0xFF, 0x33, 0x8C, 0x73, 0x0E, 0xC1, 0xF0, 0x30, 0x3F, 0x1F, 0xEE, 0x1F, + 0x03, 0xC0, 0x38, 0x07, 0xF0, 0xFE, 0x01, 0xC0, 0x3C, 0x0F, 0x87, 0x7F, + 0x8F, 0xC0, 0x7F, 0xBF, 0xC3, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, + 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0D, 0x86, 0x7F, 0x8F, 0xC0, + 0xC0, 0xF0, 0x3C, 0x0D, 0x86, 0x61, 0x98, 0x63, 0x30, 0xCC, 0x33, 0x07, + 0x81, 0xE0, 0x78, 0x0C, 0x03, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x33, 0xCC, 0xF7, 0xBF, 0x3F, 0x87, 0xE1, 0xF0, 0x30, + 0xC0, 0xF0, 0x36, 0x19, 0x86, 0x33, 0x07, 0x80, 0xC0, 0x30, 0x1E, 0x0C, + 0xC6, 0x19, 0x86, 0xC0, 0xF0, 0x30, 0xC0, 0xF0, 0x36, 0x19, 0x86, 0x33, + 0x0C, 0xC1, 0xE0, 0x78, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xFF, 0xFF, 0xF0, 0x18, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, + 0x06, 0x01, 0x80, 0xFF, 0xFF, 0xF0, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3F, 0x3F, 0x80, 0x18, 0x03, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, + 0x30, 0x3F, 0x3F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x3F, 0x3F, 0x04, 0x01, 0xC0, 0x7C, 0x1D, 0xC7, 0x1D, 0xC1, 0xF0, + 0x18, 0xFF, 0xFF, 0xFC, 0x0E, 0x1C, 0x38, 0x60, 0xC0, 0xC0, 0x3F, 0x9F, + 0xF0, 0x0C, 0xFF, 0x7F, 0xF0, 0x3C, 0x0F, 0xFF, 0x7F, 0xC0, 0xC0, 0x30, + 0x0C, 0x03, 0x00, 0xC0, 0x37, 0xCF, 0xFB, 0x87, 0xC0, 0xF0, 0x3C, 0x0F, + 0x07, 0xFF, 0xBF, 0xC0, 0x3F, 0x1F, 0xEE, 0x0F, 0x00, 0xC0, 0x30, 0x0E, + 0x0D, 0xFE, 0x3F, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xCF, 0xB7, + 0xFF, 0x8F, 0xC0, 0xF0, 0x3C, 0x0F, 0x83, 0x7F, 0xCF, 0xF0, 0x3F, 0x1F, + 0xEE, 0x0F, 0xFF, 0xFF, 0xB0, 0x0E, 0x01, 0xFE, 0x3F, 0x00, 0x0F, 0x1F, + 0x38, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x3F, 0xDF, 0xFE, 0x0F, 0x03, 0xE1, 0xDF, 0xF3, 0xEC, 0x03, 0x01, 0xDF, + 0xE7, 0xF0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0xF3, 0xFD, 0xC7, 0xC1, + 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0C, 0x0C, 0x0C, 0x00, 0x1C, 0x1C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x3F, 0x03, 0x03, 0x00, 0x07, 0x07, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x33, 0x3F, 0x1E, 0x60, 0x30, 0x18, 0x0C, + 0x06, 0x03, 0x19, 0x9C, 0xDC, 0x7C, 0x3E, 0x1B, 0x8C, 0xE6, 0x3B, 0x0C, + 0x1C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x3F, 0x3F, 0xB3, 0x3F, 0xEF, 0xFF, 0x33, 0xCC, 0xF3, 0x3C, 0xCF, 0x33, + 0xCC, 0xC0, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, + 0x60, 0xC0, 0x3F, 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x3E, 0x1D, 0xFE, + 0x3F, 0x00, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF8, 0x7F, 0xFB, 0x7C, + 0xC0, 0x30, 0x0C, 0x00, 0x3F, 0xDF, 0xFE, 0x0F, 0x03, 0xC0, 0xF8, 0x77, + 0xFC, 0xFB, 0x00, 0xC0, 0x30, 0x0C, 0x6F, 0x9F, 0xF7, 0x0D, 0x80, 0x60, + 0x18, 0x06, 0x01, 0x80, 0x60, 0x00, 0x7E, 0xFF, 0xC0, 0xFE, 0x7F, 0x03, + 0x03, 0xFF, 0x7E, 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x3F, 0x1F, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, + 0x1D, 0xFF, 0x3E, 0xC0, 0xC0, 0xF0, 0x36, 0x19, 0x86, 0x33, 0x0C, 0xC1, + 0xE0, 0x78, 0x0C, 0x00, 0xCC, 0xF3, 0x3C, 0xCF, 0x33, 0xCC, 0xF7, 0xB7, + 0xF9, 0xCE, 0x21, 0x00, 0xC1, 0xF1, 0xDD, 0xC7, 0xC1, 0xC1, 0xF1, 0xDD, + 0xC7, 0xC1, 0x80, 0x61, 0xB0, 0xCC, 0xC6, 0x61, 0xE0, 0xF0, 0x30, 0x18, + 0x18, 0x0C, 0x0C, 0x00, 0xFF, 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0xFF, 0xFF, 0x80, 0x07, 0x87, 0xC7, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0xE0, + 0x38, 0x0C, 0x06, 0x03, 0x01, 0xC0, 0x7C, 0x1E, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x78, 0x3E, 0x03, 0x80, 0xC0, + 0x60, 0x30, 0x1C, 0x07, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE3, 0xE1, 0xE0, + 0x38, 0xDB, 0x6C, 0x70, 0x0C, 0x07, 0x83, 0x31, 0x86, 0xC0, 0xF0, 0x3F, + 0xFF, 0xFF, +}; + +const GFXglyph Terminal11x16Glyphs[] = { + { 0, 6, 0, 7, 0, 4 }, // 0x20 ' ' + { 0, 7, 14, 8, 0, -12 }, // 0x21 '!' + { 13, 8, 4, 9, 0, -10 }, // 0x22 '"' + { 17, 11, 12, 12, 0, -11 }, // 0x23 '#' + { 34, 9, 14, 10, 0, -12 }, // 0x24 '$' + { 50, 11, 12, 12, 0, -10 }, // 0x25 '%' + { 67, 10, 13, 11, 0, -11 }, // 0x26 '&' + { 84, 6, 6, 7, 0, -12 }, // 0x27 ''' + { 89, 8, 14, 9, 0, -12 }, // 0x28 '(' + { 103, 8, 14, 9, 0, -12 }, // 0x29 ')' + { 117, 9, 9, 10, 0, -9 }, // 0x2a '*' + { 128, 9, 8, 10, 0, -8 }, // 0x2b '+' + { 137, 6, 5, 7, 0, -1 }, // 0x2c ',' + { 141, 9, 2, 10, 0, -5 }, // 0x2d '-' + { 144, 6, 3, 7, 0, -1 }, // 0x2e '.' + { 147, 11, 12, 12, 0, -11 }, // 0x2f '/' + { 164, 11, 14, 12, 0, -12 }, // 0x30 '0' + { 184, 10, 14, 11, 0, -12 }, // 0x31 '1' + { 202, 11, 14, 12, 0, -12 }, // 0x32 '2' + { 222, 11, 14, 12, 0, -12 }, // 0x33 '3' + { 242, 11, 14, 12, 0, -12 }, // 0x34 '4' + { 262, 11, 14, 12, 0, -12 }, // 0x35 '5' + { 282, 11, 14, 12, 0, -12 }, // 0x36 '6' + { 302, 11, 14, 12, 0, -12 }, // 0x37 '7' + { 322, 11, 14, 12, 0, -12 }, // 0x38 '8' + { 342, 11, 14, 12, 0, -12 }, // 0x39 '9' + { 362, 6, 9, 7, 0, -8 }, // 0x3a ':' + { 369, 6, 12, 7, 0, -8 }, // 0x3b ';' + { 378, 9, 14, 10, 0, -12 }, // 0x3c '<' + { 394, 10, 6, 11, 0, -7 }, // 0x3d '=' + { 402, 9, 14, 10, 0, -12 }, // 0x3e '>' + { 418, 10, 14, 11, 0, -12 }, // 0x3f '?' + { 436, 11, 14, 12, 0, -12 }, // 0x40 '@' + { 456, 10, 14, 11, 0, -12 }, // 0x41 'A' + { 474, 10, 14, 11, 0, -12 }, // 0x42 'B' + { 492, 10, 14, 11, 0, -12 }, // 0x43 'C' + { 510, 10, 14, 11, 0, -12 }, // 0x44 'D' + { 528, 10, 14, 11, 0, -12 }, // 0x45 'E' + { 546, 10, 14, 11, 0, -12 }, // 0x46 'F' + { 564, 10, 14, 11, 0, -12 }, // 0x47 'G' + { 582, 10, 14, 11, 0, -12 }, // 0x48 'H' + { 600, 8, 14, 9, 0, -12 }, // 0x49 'I' + { 614, 10, 14, 11, 0, -12 }, // 0x4a 'J' + { 632, 10, 14, 11, 0, -12 }, // 0x4b 'K' + { 650, 10, 14, 11, 0, -12 }, // 0x4c 'L' + { 668, 10, 14, 11, 0, -12 }, // 0x4d 'M' + { 686, 10, 14, 11, 0, -12 }, // 0x4e 'N' + { 704, 10, 14, 11, 0, -12 }, // 0x4f 'O' + { 722, 10, 14, 11, 0, -12 }, // 0x50 'P' + { 740, 10, 14, 11, 0, -12 }, // 0x51 'Q' + { 758, 10, 14, 11, 0, -12 }, // 0x52 'R' + { 776, 10, 14, 11, 0, -12 }, // 0x53 'S' + { 794, 9, 14, 10, 0, -12 }, // 0x54 'T' + { 810, 10, 14, 11, 0, -12 }, // 0x55 'U' + { 828, 10, 14, 11, 0, -12 }, // 0x56 'V' + { 846, 10, 14, 11, 0, -12 }, // 0x57 'W' + { 864, 10, 14, 11, 0, -12 }, // 0x58 'X' + { 882, 10, 14, 11, 0, -12 }, // 0x59 'Y' + { 900, 10, 14, 11, 0, -12 }, // 0x5a 'Z' + { 918, 8, 14, 9, 0, -12 }, // 0x5b '[' + { 932, 11, 12, 12, 0, -11 }, // 0x5c '\' + { 949, 8, 14, 9, 0, -12 }, // 0x5d ']' + { 963, 11, 7, 12, 0, -12 }, // 0x5e '^' + { 973, 11, 2, 12, 0, 2 }, // 0x5f '_' + { 976, 7, 6, 8, 0, -11 }, // 0x60 '`' + { 982, 10, 9, 11, 0, -7 }, // 0x61 'a' + { 994, 10, 14, 11, 0, -12 }, // 0x62 'b' + { 1012, 10, 9, 11, 0, -7 }, // 0x63 'c' + { 1024, 10, 14, 11, 0, -12 }, // 0x64 'd' + { 1042, 10, 9, 11, 0, -7 }, // 0x65 'e' + { 1054, 8, 14, 9, 0, -12 }, // 0x66 'f' + { 1068, 10, 11, 11, 0, -7 }, // 0x67 'g' + { 1082, 9, 14, 10, 0, -12 }, // 0x68 'h' + { 1098, 8, 12, 9, 0, -10 }, // 0x69 'i' + { 1110, 8, 14, 9, 0, -10 }, // 0x6a 'j' + { 1124, 9, 14, 10, 0, -12 }, // 0x6b 'k' + { 1140, 8, 14, 9, 0, -12 }, // 0x6c 'l' + { 1154, 10, 9, 11, 0, -7 }, // 0x6d 'm' + { 1166, 10, 9, 11, 0, -7 }, // 0x6e 'n' + { 1178, 10, 9, 11, 0, -7 }, // 0x6f 'o' + { 1190, 10, 11, 11, 0, -7 }, // 0x70 'p' + { 1204, 10, 11, 11, 0, -7 }, // 0x71 'q' + { 1218, 10, 9, 11, 0, -7 }, // 0x72 'r' + { 1230, 8, 9, 9, 0, -7 }, // 0x73 's' + { 1239, 8, 13, 9, 0, -11 }, // 0x74 't' + { 1252, 10, 9, 11, 0, -7 }, // 0x75 'u' + { 1264, 10, 9, 11, 0, -7 }, // 0x76 'v' + { 1276, 10, 9, 11, 0, -7 }, // 0x77 'w' + { 1288, 9, 9, 10, 0, -7 }, // 0x78 'x' + { 1299, 9, 11, 10, 0, -7 }, // 0x79 'y' + { 1312, 9, 9, 10, 0, -7 }, // 0x7a 'z' + { 1323, 9, 15, 10, 0, -12 }, // 0x7b '{' + { 1340, 6, 14, 7, 0, -12 }, // 0x7c '|' + { 1351, 9, 15, 10, 0, -12 }, // 0x7d '}' + { 1368, 10, 3, 11, 0, -10 }, // 0x7e '~' + { 1372, 10, 8, 11, 0, -8 }, // 0x7f '' + }; +const GFXfont Terminal11x16Font = { + (uint8_t *)Terminal11x16Bitmap, + (GFXglyph *)Terminal11x16Glyphs, + 0x20, 0x7F, 18 }; diff --git a/RX_FSK/src/fonts/fonts.cpp b/RX_FSK/src/fonts/fonts.cpp new file mode 100644 index 0000000..9459f82 --- /dev/null +++ b/RX_FSK/src/fonts/fonts.cpp @@ -0,0 +1,25 @@ +#include +#include "gfxfont.h" + +#define PROGMEM + +#include "FreeMono12pt8b.h" +#include "FreeMono9pt8b.h" +#include "FreeSans12pt8b.h" +#include "FreeSans18pt8b.h" +#include "FreeSans9pt8b.h" +#include "Picopixel.h" +#include "Terminal11x16.h" + +__attribute__((used)) const GFXfont * const allfonts[]={ + (const GFXfont *)0x544E4F46, + &Terminal11x16Font, + &Terminal11x16Font, + &FreeSans9pt8b, + &FreeSans12pt8b, + &Picopixel, + &FreeSans18pt8b, + &FreeMono9pt8b, + &FreeMono12pt8b, + 0, +}; diff --git a/RX_FSK/src/fonts/gfxfont.h b/RX_FSK/src/fonts/gfxfont.h new file mode 100644 index 0000000..42cfcfc --- /dev/null +++ b/RX_FSK/src/fonts/gfxfont.h @@ -0,0 +1,31 @@ +// Font structures for newer Adafruit_GFX (1.1 and later). +// Example fonts are included in 'Fonts' directory. +// To use a font in your Arduino sketch, #include the corresponding .h +// file and pass address of GFXfont struct to setFont(). Pass NULL to +// revert to 'classic' fixed-space bitmap font. + +#ifndef _GFXFONT_H_ +#define _GFXFONT_H_ + +/// Font data stored PER GLYPH +typedef struct +{ + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +/// Data stored for FONT AS A WHOLE +typedef struct +{ + uint8_t *bitmap; ///< Glyph bitmaps, concatenated + GFXglyph *glyph; ///< Glyph array + uint8_t first; ///< ASCII extents (first char) + uint8_t last; ///< ASCII extents (last char) + uint8_t yAdvance; ///< Newline distance (y axis) +} GFXfont; + +#endif // _GFXFONT_H_ diff --git a/RX_FSK/src/geteph.cpp b/RX_FSK/src/geteph.cpp new file mode 100644 index 0000000..c6f1d86 --- /dev/null +++ b/RX_FSK/src/geteph.cpp @@ -0,0 +1,238 @@ +#include "time.h" +#include "geteph.h" +#include +#include +#include +#include +#include +#include "Display.h" +#include "Sonde.h" + +extern WiFiClient client; + +//static const char *ftpserver = "www.ngs.noaa.gov"; +char outbuf[128]; +uint8_t ephstate = EPH_NOTUSED; +//enum EPHSTATE { EPH_NOTUSED, EPH_PENDING, EPH_TIMEERR, EPH_ERROR, EPH_EPHERROR, EPH_GOOD }; +const char *ephtxt[] = { "Disabled", "Pending", "Time error", "Fetch error", "Read error", "Good" }; + +uint8_t getreply() { + String s = client.readStringUntil('\n'); + Serial.println(s); + const char *str = s.c_str(); + if(strlen(str)<4) return 255; // something unusual... + if(str[3]=='-') { // multi-line resonse... + String s2; + const char *str2; + do { + s2 = client.readStringUntil('\n'); + Serial.println(s2); + str2 = s2.c_str(); + if(strlen(str2)<4) return 255; // something is wrong + } while( str[0]!=str2[0] || str[1]!=str2[1] || str[2]!=str2[2] || str2[3]!=' ' ); + } + return str[0]; +} + +void writeFully(File &file, uint8_t *buf, size_t len) +{ + size_t olen; + + while(len) { + olen = file.write(buf, len); + Serial.printf("written: %d of %d\n", olen, len); + len -= olen; + buf += olen; + } +} + +void geteph() { + // Set current time via network... + ephstate = EPH_PENDING; + struct tm tinfo; + configTime(0, 0, "pool.ntp.org"); + bool ok = getLocalTime(&tinfo, 2000); // wait max 2 seconds to get current time via ntp + if(!ok) { + ephstate = EPH_TIMEERR; + Serial.println("Failed to get current date/time"); + return; + } + + // Check time of last update + int year = tinfo.tm_year + 1900; + int day = tinfo.tm_yday + 1; + Serial.printf("year %d, day %d\n", year, day); + char nowstr[20]; + snprintf(nowstr, 20, "%04d%03d%02d", year, day, tinfo.tm_hour); + File status = SPIFFS.open("/brdc.time", "r"); + if(status) { + String ts = status.readStringUntil('\n'); + const char *tsstr = ts.c_str(); + if(tsstr && strlen(tsstr)>=9) { + if(strcmp(nowstr, ts.c_str())<=0) { + Serial.println("local brdc is up to date\n"); + ephstate = EPH_GOOD; + return; + } + } + Serial.printf("now: %s, existing: %s => updating\n", nowstr, tsstr); + } + status.close(); + File fh = SPIFFS.open("/brdc.gz","w"); + if(!fh) { + Serial.println("cannot open file\n"); + return; + } + char host[252]; + strcpy(host, sonde.config.ephftp); + char *buf = strchr(host, '/'); + if(!buf) { Serial.println("Invalid FTP host config"); return; } + *buf = 0; + buf++; + uint8_t dispw, disph, dispxs, dispys; + disp.rdis->getDispSize(&disph, &dispw, &dispxs, &dispys); + disp.rdis->clear(); + disp.rdis->setFont(FONT_SMALL); + disp.rdis->drawString(0, 0, host); + // fetch rinex from server + char *ptr = buf + strlen(buf); + snprintf(ptr, 128, "%04d/%03d/brdc%03d0.%02dn.gz", year, day, day, year-2000); + Serial.println("running geteph\n"); + disp.rdis->drawString(0, 1*dispys, ptr+9); + + if(!client.connect(host, 21)) { + Serial.printf("FTP connection to %s failed\n", host); + return; + } + if(getreply()>='4') { Serial.println("connected failed"); return; } + client.print("USER anonymous\r\n"); + if(getreply()>='4') { Serial.println("USER failed"); return; } + client.print("PASS anonymous\r\n"); + if(getreply()>='4') { Serial.println("PASS failed"); return; } + client.print("TYPE I\r\n"); + if(getreply()>='4') { Serial.println("TYPE I failed"); return; } + client.print("PASV\r\n"); + String s = client.readStringUntil('\n'); + Serial.println(s); + if(s.c_str()[0]>='4') { Serial.println("PASV failed"); return; } + int array_pasv[6]; + char *tStr = strtok((char *)s.c_str(), "(,"); + for(int i=0; i<6; i++) { + tStr = strtok(NULL, "(,"); + if(tStr==NULL) { + Serial.println("strange response to PASV"); + return; + } + array_pasv[i] = atoi(tStr); + Serial.println(array_pasv[i]); + } + uint16_t port = (array_pasv[4]<<8) | (array_pasv[5]&0xff); + WiFiClient dclient; + Serial.printf("connecting to %s:%d\n", host, port); + dclient.connect(host, port); + if(!dclient) { + Serial.println("data connection failed"); + return; + } + client.print("RETR "); + Serial.printf("fetching %s with FTP...\n", buf); + client.println(buf); + s = client.readStringUntil('\n'); + Serial.println(s); + if(s.c_str()[0]>='4') { Serial.println("RETR failed"); return; } + int len=0; + while(dclient.connected()) { + while(dclient.available()) { + int c = dclient.read(); + if(c==-1) { + Serial.println("dclient.read() returned -1 inspite of available() being true?!"); + } else { + fh.write(c); + len++; + } + } + } + Serial.printf("fetched %d bytes\n", len); + fh.close(); + snprintf(buf, 16, "Fetched %d B ",len); + buf[16]=0; + disp.rdis->drawString(0,2*dispys,buf); + + disp.rdis->drawString(0,4*dispys,"Decompressing..."); + // decompression + tinfl_decompressor *decomp = (tinfl_decompressor *)malloc(sizeof(tinfl_decompressor)); + tinfl_init(decomp); + File file = SPIFFS.open("/brdc.gz","r"); + if(!file) { + Serial.println("cannot open file\n"); + return; + } + File ofile = SPIFFS.open("/brdc", "w"); + if(!ofile) { + Serial.println("cannot open file /brdc for writing"); + return; + } + file.readBytes(buf, 10); // skip gzip header + char flags = buf[3]; + if(flags&0x07) { + Serial.println("Unsupported flags in gzip header, may or may not cause a problem"); + } + if(flags&0x08) { // skip file name extra header + do { + int res=file.readBytes(buf, 1); + if(res!=1) return; + } while(*buf); + } + if(flags&0x10) { // skip file name extra header + do { + int res=file.readBytes(buf, 1); + if(res!=1) return; + } while(*buf); + } + int opos = 0; + int total = 0; + Serial.println("Decompressing ephemeris data...\n"); + char *obuf =(char *)malloc(32768); + char *ibuf =(char *)malloc(8192); + while(file.available()) { + size_t len = file.readBytes(ibuf, 8192); + size_t inofs = 0; + size_t inlen = len; + while(inofs=32768) { + Serial.printf("... decompressed %d bytes\n", total); + opos=0; + } + } + } + // maybe todo: check crc?!? + Serial.printf("done extracing content (total length: %d)\n", total); + status = SPIFFS.open("/brdc.time","w"); + status.println(nowstr); + status.close(); + snprintf(buf, 16, "Done: %d B ",total); + buf[16]=0; + disp.rdis->drawString(0,5*dispys,buf); + ephstate = EPH_GOOD; + delay(1000); + + free(obuf); + free(ibuf); + free(decomp); + file.close(); + ofile.close(); +} diff --git a/RX_FSK/src/geteph.h b/RX_FSK/src/geteph.h new file mode 100644 index 0000000..eca58f0 --- /dev/null +++ b/RX_FSK/src/geteph.h @@ -0,0 +1,11 @@ +#include + +#ifndef GETEPH_H +#define GETEPH_H +void geteph(); + +enum EPHSTATE { EPH_NOTUSED, EPH_PENDING, EPH_TIMEERR, EPH_ERROR, EPH_EPHERROR, EPH_GOOD }; + +extern uint8_t ephstate; +extern const char *ephtxt[]; +#endif diff --git a/RX_FSK/src/gfxfont.h b/RX_FSK/src/gfxfont.h new file mode 100644 index 0000000..f99a757 --- /dev/null +++ b/RX_FSK/src/gfxfont.h @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-3.0 +// original source: https://github.com/Nkawu/TFT_22_ILI9225 + +// Font structures like Adafruit_GFX (1.1 and later). +// Example fonts are included in 'fonts' directory. +// To use a font in your Arduino sketch, #include the corresponding .h +// file and pass address of GFXfont struct to setFont(). + +#ifndef _GFFFONT_H_ +#define _GFFFONT_H_ + +typedef struct { // Data stored PER GLYPH + uint16_t bitmapOffset; // Pointer into GFXfont->bitmap + uint8_t width, height; // Bitmap dimensions in pixels + uint8_t xAdvance; // Distance to advance cursor (x axis) + int8_t xOffset, yOffset; // Dist from cursor pos to UL corner +} GFXglyph; + +typedef struct { // Data stored for FONT AS A WHOLE: + uint8_t *bitmap; // Glyph bitmaps, concatenated + GFXglyph *glyph; // Glyph array + uint8_t first, last; // ASCII extents + uint8_t yAdvance; // Newline distance (y axis) +} GFXfont; + +#endif // _GFFFONT_H_ diff --git a/RX_FSK/src/json.cpp b/RX_FSK/src/json.cpp new file mode 100644 index 0000000..010ae89 --- /dev/null +++ b/RX_FSK/src/json.cpp @@ -0,0 +1,106 @@ +#include "json.h" +#include "RS41.h" + +extern const char *sondeTypeStrSH[]; +extern const char *dfmSubtypeStrSH[]; + +static char typestr[11]; + +const char *getType(SondeInfo *si) { + if( si->type == STYPE_RS41 ) { + if ( RS41::getSubtype(typestr, 11, si) == 0 ) return typestr; + } else if ( TYPE_IS_DFM(si->type) && si->d.subtype > 0 && si->d.subtype < 16 ) { + const char *t = dfmSubtypeStrSH[si->d.subtype]; + if(t) return t; + sprintf(typestr, "DFMx%X", si->d.subtype); + return typestr; + } + return sondeTypeStrSH[sonde.realType(si)]; +} + +int float2json(char **buf, int *maxlen, const char *fmt, float value) { + if(isnan(value)) return 0; + int n = snprintf(*buf, *maxlen, fmt, value); + if(n>*maxlen) return -1; + *buf += n; *maxlen -= n; + return n; +} + +// To be used by +// - MQTT +// - rdzJSON (for Android app) +// - Web map +int sonde2json(char *buf, int maxlen, SondeInfo *si) +{ + SondeData *s = &(si->d); + int n; + + n = float2json(&buf, &maxlen, "\"lat\": %.5f,", s->lat); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"lon\": %.5f,", s->lon); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"alt\": %.1f,", s->alt); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"vs\": %.1f,", s->vs); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"hs\": %.1f,", s->hs); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"climb\": %.1f,", s->vs); // used by HTML map, to be removed (-> vs) + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"speed\": %.1f,", s->hs); // used by HTML map, to be removed (-> hs) + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"dir\": %.1f,", s->dir); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"temp\": %.1f,", s->temperature ); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"humidity\": %.1f,", s->relativeHumidity); + if(n<0) return -1; + n = float2json(&buf, &maxlen, "\"pressure\": %.1f,", s->pressure); + if(n<0) return -1; + n = snprintf(buf, maxlen, + "\"type\":\"%s\"," + "\"id\": \"%s\"," // TODO: maybe remove in the future, ser is enough, client can calculate APRS id if needed + "\"ser\": \"%s\"," + "\"frame\": %u," // raw frame, from sonde, can be 0. (TODO: add virtual frame # as in sondehub?) + "\"vframe\": %d," + "\"time\": %u," + "\"sats\": %d," + "\"freq\": %.2f," + "\"rssi\": %d," + "\"afc\": %d," + "\"launchKT\": %d," + "\"burstKT\": %d," + "\"countKT\": %d," + "\"crefKT\": %d," + "\"launchsite\": \"%s\"," + "\"res\": %d", + getType(si), + s->id, + s->ser, + s->frame, + s->vframe, + s->time, + s->sats, + si->freq, + si->rssi, + si->afc, + s->launchKT, + s->burstKT, + s->countKT, + s->crefKT, + si->launchsite, + (int)si->rxStat[0] + ); + if(n>=maxlen) return -1; + buf += n; maxlen -= n; + + // add only if available + if(s->batteryVoltage > 0) { + n = snprintf(buf, maxlen, ",\"batt\": %.1f", s->batteryVoltage); + if(n>=maxlen) return -1; + buf += n; maxlen -= n; + } + return 0; +} + + diff --git a/RX_FSK/src/json.h b/RX_FSK/src/json.h new file mode 100644 index 0000000..608e924 --- /dev/null +++ b/RX_FSK/src/json.h @@ -0,0 +1,8 @@ +#ifndef _JSON_H +#define _JSON_H + +#include "Sonde.h" + +int sonde2json(char *buf, int maxlen, SondeInfo *si); + +#endif diff --git a/RX_FSK/src/library.json b/RX_FSK/src/library.json new file mode 100644 index 0000000..7e25074 --- /dev/null +++ b/RX_FSK/src/library.json @@ -0,0 +1,11 @@ +{ + + "dependencies": +[ + { + "owner": "olikraus", + "name": "U8g2", + "version": "^2.28.8" + } +] +} \ No newline at end of file diff --git a/RX_FSK/src/mqtt.cpp b/RX_FSK/src/mqtt.cpp new file mode 100644 index 0000000..de2e701 --- /dev/null +++ b/RX_FSK/src/mqtt.cpp @@ -0,0 +1,165 @@ +#include +#include "mqtt.h" +#include +//#include +#include +#include +#include "RS41.h" +#include "json.h" + +extern const char *version_name; +extern const char *version_id; + +TimerHandle_t mqttReconnectTimer; + +void mqttCallback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i=0;iip); + this->port = port; + this->username = username; + this->password = password; + this->prefix = prefix; + + Serial.println("[MQTT] pubsub client"); + mqttClient.setServer(ip, port); + snprintf(buffer, 20, "%s%04d", id, (int)random(0, 1000)); + buffer[20] = 0; + Serial.print(buffer); + mqttClient.setClientId(buffer); + if (strlen(password) > 0) { + mqttClient.setCredentials(username, password); + } +} + +void MQTT::connectToMqtt() { + Serial.println("Connecting to MQTT..."); + mqttClient.connect(); +} + +void MQTT::publishUptime() +{ + mqttClient.connect(); // ensure we've got connection + + Serial.println("[MQTT] writing"); + char payload[256]; + // maybe TODO: Use dynamic position if GPS is available? + // rxlat, rxlon only if not empty + snprintf(payload, 256, "{\"uptime\": %lu, \"user\": \"%s\", ", millis(), username); + if( !isnan(sonde.config.rxlat) && !isnan(sonde.config.rxlon) ) { + snprintf(payload, 256, "%s\"rxlat\": %.5f, \"rxlon\": %.5f, ", payload, sonde.config.rxlat, sonde.config.rxlon); + } + snprintf(payload, 256, "%s\"SW\": \"%s\", \"VER\": \"%s\"}", payload, version_name, version_id); + Serial.println(payload); + char topic[128]; + snprintf(topic, 128, "%s%s", this->prefix, "uptime"); + mqttClient.publish(topic, 1, 1, payload); +} + +void MQTT::publishPacket(SondeInfo *si) +{ + SondeData *s = &(si->d); + mqttClient.connect(); // ensure we've got connection + + char payload[1024]; + payload[0] = '{'; + int n = sonde2json(payload+1, 1023, si); + if(n<0) { + // ERROR + Serial.println("publishPacket: sonde2json failed, string too long"); + } + +#if 0 + snprintf(payload, 1024, "{" + "\"active\": %d," + "\"freq\": %.2f," + "\"id\": \"%s\"," + "\"ser\": \"%s\"," + "\"validId\": %d," + "\"launchsite\": \"%s\"," + "\"lat\": %.5f," + "\"lon\": %.5f," + "\"alt\": %.1f," + "\"vs\": %.1f," + "\"hs\": %.1f," + "\"dir\": %.1f," + "\"sats\": %d," + "\"validPos\": %d," + "\"time\": %u," + "\"frame\": %u," + "\"validTime\": %d," + "\"rssi\": %d," + "\"afc\": %d," + "\"rxStat\": \"%s\"," + "\"rxStart\": %u," + "\"norxStart\": %u," + "\"viewStart\": %u," + "\"lastState\": %d," + "\"launchKT\": %d," + "\"burstKT\": %d," + "\"countKT\": %d," + "\"crefKT\": %d", + (int)si->active, + si->freq, + s->id, + s->ser, + (int)s->validID, + si->launchsite, + s->lat, + s->lon, + s->alt, + s->vs, + s->hs, + s->dir, + s->sats, + s->validPos, + s->time, + s->frame, + (int)s->validTime, + si->rssi, + si->afc, + si->rxStat, + si->rxStart, + si->norxStart, + si->viewStart, + si->lastState, + s->launchKT, + s->burstKT, + s->countKT, + s->crefKT + ); + if ( !isnan( s->temperature ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"temp\": ", s->temperature ); + } + if ( !isnan( s->relativeHumidity ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"humidity\": ", s->relativeHumidity ); + } + if ( !isnan( s->pressure ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"pressure\": ", s->pressure ); + } + if ( !isnan( s->batteryVoltage && s->batteryVoltage > 0 ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"batt\": ", s->batteryVoltage ); + } + char subtype[11]; + if ( RS41::getSubtype( subtype, 11, si) == 0 ) { + snprintf(payload, 1024, "%s%s%s%s", payload, ",\"subtype\": \"", subtype, "\"" ); + } + snprintf(payload, 1024, "%s%s", payload, "}" ); // terminate payload string +#endif + strcat(payload, "}"); // terminate payload string + + char topic[128]; + snprintf(topic, 128, "%s%s", this->prefix, "packet"); + Serial.print(payload); + mqttClient.publish(topic, 1, 1, payload); +} diff --git a/RX_FSK/src/mqtt.h b/RX_FSK/src/mqtt.h new file mode 100644 index 0000000..0e6eb9b --- /dev/null +++ b/RX_FSK/src/mqtt.h @@ -0,0 +1,29 @@ +#ifndef MQTT_h +#define MQTT_h + +#include +//#include +#include +#include "Sonde.h" +#include "RS41.h" + +class MQTT +{ +public: + WiFiClient mqttWifiClient; + AsyncMqttClient mqttClient; + TimerHandle_t mqttReconnectTimer; + IPAddress ip; + uint16_t port; + const char *username; + const char *password; + const char *prefix; + + void init(const char *host, uint16_t port, const char *id, const char *username, const char *password, const char *prefix); + void publishPacket(SondeInfo *s); + void publishUptime(); +private: + void connectToMqtt(); +}; + +#endif diff --git a/RX_FSK/src/nav_gps_vel.cpp b/RX_FSK/src/nav_gps_vel.cpp new file mode 100644 index 0000000..174ec5b --- /dev/null +++ b/RX_FSK/src/nav_gps_vel.cpp @@ -0,0 +1,1715 @@ +/* SPDX-License-Identifier: GPL-3.0 + * based on https://github.com/rs1729/RS/blob/master/rs92/nav_gps_vel.c + * + Quellen: + - IS-GPS-200H (bis C: ICD-GPS-200): + http://www.gps.gov/technical/icwg/ + - Borre: http://kom.aau.dk/~borre + - Essential GNSS Project (hier und da etwas unklar) +*/ +#include +#include +#include +#include +#include + +#include "nav_gps_vel.h" + +#ifndef PI +#define PI (3.1415926535897932384626433832795) +#endif + +#define RELATIVISTIC_CLOCK_CORRECTION (-4.442807633e-10) // combined constant defined in IS-GPS-200 [s]/[sqrt(m)] +#define GRAVITY_CONSTANT (3.986005e14) // gravity constant defined on IS-GPS-200 [m^3/s^2] +#define EARTH_ROTATION_RATE (7.2921151467e-05) // IS-GPS-200 [rad/s] +#define SECONDS_IN_WEEK (604800.0) // [s] +#define LIGHTSPEED (299792458.0) // light speed constant defined in IS-GPS-200 [m/s] + +#define RANGE_ESTIMATE (0.072) // approx. GPS-Sat range 0.072s*299792458m/s=21585057m +#define RANGERATE_ESTIMATE (0.000) // + +#define EARTH_a (6378137.0) +#define EARTH_b (6356752.31424518) +#define EARTH_a2_b2 (EARTH_a*EARTH_a - EARTH_b*EARTH_b) + +/* ---------------------------------------------------------------------------------------------------- */ + + +void ecef2elli(double X, double Y, double Z, double *lat, double *lon, double *alt) { + double ea2 = EARTH_a2_b2 / (EARTH_a*EARTH_a), + eb2 = EARTH_a2_b2 / (EARTH_b*EARTH_b); + double phi, lam, R, p, t; + double sint, cost; + + lam = atan2( Y , X ); + + p = sqrt( X*X + Y*Y ); + t = atan2( Z*EARTH_a , p*EARTH_b ); + + sint = sin(t); + cost = cos(t); + + phi = atan2( Z + eb2 * EARTH_b * sint*sint*sint , + p - ea2 * EARTH_a * cost*cost*cost ); + + R = EARTH_a / sqrt( 1 - ea2*sin(phi)*sin(phi) ); + *alt = p / cos(phi) - R; + + *lat = phi*180.0/PI; + *lon = lam*180.0/PI; +} + + +double dist(double X1, double Y1, double Z1, double X2, double Y2, double Z2) { + return sqrt( (X2-X1)*(X2-X1) + (Y2-Y1)*(Y2-Y1) + (Z2-Z1)*(Z2-Z1) ); +} + + +void rotZ(double x1, double y1, double z1, double angle, double *x2, double *y2, double *z2) { + double cosa = cos(angle); + double sina = sin(angle); + *x2 = cosa * x1 + sina * y1; + *y2 = -sina * x1 + cosa * y1; + *z2 = z1; +} + + +/* ---------------------------------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------------------------------------- */ + + +static EPHEM_t *te; + +#define fgets(buffer, siz, file) file.read((uint8_t *)buffer, siz) +#define fread(buffer, siz, els, file) (file.read((uint8_t *)buffer, (siz)*(els))/siz) +#define fgetc(file) (char)file.read() + +int readDbl(File *fp, double *dbl) { + uint8_t buf[20]; + int l = fp->read(buf, 19); + if(l!=19) return -1; + if (buf[15] == 'D') buf[15] = 'E'; + buf[19] = 0; + sscanf((char *)buf, "%lf", dbl); + return 0; +} + +EPHEM_t *read_RNXpephs(const char *file) { + int l, i; + char buf[64], str[20]; + unsigned ui; + double dbl; + int c; + EPHEM_t ephem = {}; + + File fp = SPIFFS.open(file, "r"); + if(!fp) { Serial.printf("Error opening %s\n", file); } + + String line; + do { // header-Zeilen: 80 Zeichen + line = fp.readStringUntil('\n'); + //pbuf = fgets(buffer, 84, fp); // max 82-1 Zeichen + //buffer[82] = '\0'; + Serial.printf("Skipping header: %s\n", line.c_str()); + } while ( fp.available() && !strstr((const char *)line.c_str(), "END OF HEADER") ); + if (!fp.available()) return NULL; + + if(te) free(te); + te = (EPHEM_t *)calloc( 34, sizeof(ephem) ); // calloc( 1, sizeof(ephem) ); + if (te == NULL) return NULL; + + //int n = 0; + + + while (true) { // brdc/hour-rinex sollte nur Daten von einem Tag enthalten + + //memset(&ephem, 0, sizeof(ephem)); + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; sscanf(buf, "%d", &ui); + ephem.prn = ui; + + for (i = 0; i < 16; i++) ephem.epoch[i] = '0'; + ephem.epoch[16] = '\0'; + + l = fread(buf, 19, 1, fp); if (l != 1) break; buf[19] = 0; + + for (i = 0; i < 6; i++) { + c = buf[3*i ]; if (c == ' ') c = '0'; str[2*i ] = c; + c = buf[3*i+1]; if (c == ' ') c = '0'; str[2*i+1] = c; + } + str[12] = buf[17]; + str[13] = buf[18]; + str[14] = '\0'; + + strncpy(ephem.epoch , "20", 2); // vorausgesetzt 21.Jhd; Datum steht auch im Header + strncpy(ephem.epoch+2, str, 15); + ephem.epoch[16] = '\0'; + + if(readDbl(&fp, &dbl)<0) break; ephem.af0 = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.af1 = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.af2 = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af0 = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af1 = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af2 = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; + if(readDbl(&fp, &dbl)<0) break; //ephem.iode = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.crs = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.delta_n = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.M0 = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iode = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.crs = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.delta_n = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.M0 = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; + if(readDbl(&fp, &dbl)<0) break; ephem.cuc = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.e = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.cus = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.sqrta = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cuc = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.e = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cus = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.sqrta = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; + if(readDbl(&fp, &dbl)<0) break; ephem.toe = dbl; ephem.toc = ephem.toe; + if(readDbl(&fp, &dbl)<0) break; ephem.cic = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.Omega0 = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.cis = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.toe = dbl; + // ephem.toc = ephem.toe; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cic = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.Omega0 = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cis = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; + if(readDbl(&fp, &dbl)<0) break; ephem.i0 = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.crc = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.w = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.OmegaDot = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.i0 = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.crc = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.w = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.OmegaDot = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; + if(readDbl(&fp, &dbl)<0) break; ephem.idot = dbl; + if(readDbl(&fp, &dbl)<0) break; //ephem.codeL2 = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.gpsweek = (int)dbl; + if(readDbl(&fp, &dbl)<0) break; //ephem.iodc = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.idot = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.codeL2 = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.gpsweek = (int)dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iodc = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; + if(readDbl(&fp, &dbl)<0) break; //ephem.sva = dbl; + if(readDbl(&fp, &dbl)<0) break; ephem.health = (uint8_t)(dbl+0.1); + if(readDbl(&fp, &dbl)<0) break; ephem.tgd = dbl; + if(readDbl(&fp, &dbl)<0) break; //ephem.iodc = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.sva = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.health = (uint8_t)(dbl+0.1); + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.tgd = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iodc = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } + + l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0; + if(readDbl(&fp, &dbl)<0) break; //ephem.ttom = dbl; + //l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.ttom = dbl; + String l = fp.readStringUntil('\n'); + /* // die letzten beiden Felder (spare) sind manchmal leer (statt 0.00); manchmal fehlt sogar das drittletzte Feld + l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.fit = dbl; + l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.spare1 = dbl; + l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.spare2 = dbl; + while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; } */ + + ephem.week = 1; // ephem.gpsweek + //Serial.printf("Reading ephem for prn %d\n", ui); + if(ui<33) { +#if 0 + // no need to do it the difficult way, most recent data is at end of file :-) + double tdiff; + if(te[ui].prn!=ui) { + tdiff = WEEKSEC; + } else { + tdiff = now - te[ui].toe; + if(tdiff>WEEKSEC/2) tdiff -= WEEKSEC; + if(tdiff<-WEEKSEC/2) tdiff += WEEKSEC; + } + double td = now - ephem.toe; + if(td>WEEKSEC/2) td -= WEEKSEC; + if(td<-WEEKSEC/2) td += WEEKSEC; +#endif + te[ui] = ephem; + } else { + Serial.printf("bad prn: %d\n", ui); + } + //if (pbuf == NULL) break; + if(!fp.available()) break; + } + te[33].prn=0; + return te; +} + +/* ---------------------------------------------------------------------------------------------------- */ +// +// Satellite Position +// + +void GPS_SatelliteClockCorrection( + const unsigned short transmission_gpsweek, // GPS week when signal was transmit (0-1024+) [weeks] + const double transmission_gpstow, // GPS time of week when signal was transmit [s] + const unsigned short ephem_week, // ephemeris: GPS week (0-1024+) [weeks] + const double toe, // ephemeris: time of week [s] + const double toc, // ephemeris: clock reference time of week [s] + const double af0, // ephemeris: polynomial clock correction coefficient [s], + const double af1, // ephemeris: polynomial clock correction coefficient [s/s], + const double af2, // ephemeris: polynomial clock correction coefficient [s/s^2] + const double ecc, // ephemeris: eccentricity of satellite orbit [] + const double sqrta, // ephemeris: square root of the semi-major axis of orbit [m^(1/2)] + const double delta_n, // ephemeris: mean motion difference from computed value [rad] + const double m0, // ephemeris: mean anomaly at reference time [rad] + const double tgd, // ephemeris: group delay differential between L1 and L2 [s] + double* clock_correction ) // ephemeris: satellite clock correction [m] +{ + int j; + + double tot; // time of transmission (including gps week) [s] + double tk; // time from ephemeris reference epoch [s] + double tc; // time from clock reference epoch [s] + double d_tr; // relativistic correction term [s] + double d_tsv; // SV PRN code phase time offset [s] + double a; // semi-major axis of orbit [m] + double n; // corrected mean motion [rad/s] + double M; // mean anomaly, [rad] + double E; // eccentric anomaly [rad] + + // compute the times from the reference epochs + tot = transmission_gpsweek*SECONDS_IN_WEEK + transmission_gpstow; + tk = tot - (ephem_week*SECONDS_IN_WEEK + toe); + tc = tot - (ephem_week*SECONDS_IN_WEEK + toc); + + // compute the corrected mean motion term + a = sqrta*sqrta; + n = sqrt( GRAVITY_CONSTANT / (a*a*a) ); // mean motion + n += delta_n; // corrected mean motion + + // Kepler-Gleichung M = E - e sin(E) + M = m0 + n*tk; // mean anomaly + E = M; // f(E) = M + e sin(E) hat Fixpunkt fuer e < 1, + for( j = 0; j < 7; j++ ) { // da |f'(E)|=|e cos(E)|<1. + E = M + ecc * sin(E); // waehle Startwert E_1 = M, E_{k+1} = f(E_k) + } // konvergiert langsam gegen E_0 = f(E_0) + + // relativistic correction + d_tr = RELATIVISTIC_CLOCK_CORRECTION * ecc * sqrta * sin(E); // [s] + d_tr *= LIGHTSPEED; + + // clock correction + d_tsv = af0 + af1*tc + af2*tc*tc; // [s] + + // L1 only + d_tsv -= tgd; // [s] + + // clock correction + *clock_correction = d_tsv*LIGHTSPEED + d_tr; // [m] + +} + +void GPS_ComputeSatellitePosition( + const unsigned short transmission_gpsweek, // GPS week when signal was transmit (0-1024+) [weeks] + const double transmission_gpstow, // GPS time of week when signal was transmit [s] + const unsigned short ephem_week, // ephemeris: GPS week (0-1024+) [weeks] + const double toe, // ephemeris: time of week [s] + const double m0, // ephemeris: mean anomaly at reference time [rad] + const double delta_n, // ephemeris: mean motion difference from computed value [rad] + const double ecc, // ephemeris: eccentricity [] + const double sqrta, // ephemeris: square root of the semi-major axis [m^(1/2)] + const double omega0, // ephemeris: longitude of ascending node of orbit plane at weekly epoch [rad] + const double i0, // ephemeris: inclination angle at reference time [rad] + const double w, // ephemeris: argument of perigee [rad] + const double omegadot, // ephemeris: rate of right ascension [rad/s] + const double idot, // ephemeris: rate of inclination angle [rad/s] + const double cuc, // ephemeris: cos harmonic correction term to the argument of latitude [rad] + const double cus, // ephemeris: sin harmonic correction term to the argument of latitude [rad] + const double crc, // ephemeris: cos harmonic correction term to the orbit radius [m] + const double crs, // ephemeris: sin harmonic correction term to the orbit radius [m] + const double cic, // ephemeris: cos harmonic correction term to the angle of inclination [rad] + const double cis, // ephemeris: sin harmonic correction term to the angle of inclination [rad] + double* x, // satellite x [m] + double* y, // satellite y [m] + double* z ) // satellite z [m] +{ + int j; + + double tot; // time of transmission (including gps week) [s] + double tk; // time from ephemeris reference epoch [s] + double a; // semi-major axis of orbit [m] + double n; // corrected mean motion [rad/s] + double M; // mean anomaly, [rad] + double E; // eccentric anomaly [rad] + double v; // true anomaly [rad] + double u; // argument of latitude, corrected [rad] + double r; // radius in the orbital plane [m] + double i; // orbital inclination [rad] + double cos2u; // cos(2*u) [] + double sin2u; // sin(2*u) [] + double d_u; // argument of latitude correction [rad] + double d_r; // radius correction [m] + double d_i; // inclination correction [rad] + double x_op; // x position in the orbital plane [m] + double y_op; // y position in the orbital plane [m] + double omegak; // corrected longitude of the ascending node [rad] + double cos_omegak; // cos(omegak) + double sin_omegak; // sin(omegak) + double cosu; // cos(u) + double sinu; // sin(u) + double cosi; // cos(i) + double sini; // sin(i) + double cosE; // cos(E) + double sinE; // sin(E) + + + // compute the times from the reference epochs + tot = transmission_gpsweek*SECONDS_IN_WEEK + transmission_gpstow; + tk = tot - (ephem_week*SECONDS_IN_WEEK + toe); + + // compute the corrected mean motion term + a = sqrta*sqrta; + n = sqrt( GRAVITY_CONSTANT / (a*a*a) ); // computed mean motion + n += delta_n; // corrected mean motion + + // Kepler-Gleichung M = E - e sin(E) + M = m0 + n*tk; // mean anomaly + E = M; // f(E) = M + e sin(E) hat Fixpunkt fuer e < 1, + for( j = 0; j < 7; j++ ) { // da |f'(E)|=|e cos(E)|<1. + E = M + ecc * sin(E); // waehle Startwert E_1 = M, E_{k+1} = f(E_k) + } // konvergiert langsam gegen E_0 = f(E_0) + + cosE = cos(E); + sinE = sin(E); + + // true anomaly + v = atan2( (sqrt(1.0 - ecc*ecc)*sinE), (cosE - ecc) ); + // argument of latitude + u = v + w; + // radius in orbital plane + r = a * (1.0 - ecc * cos(E)); + // orbital inclination + i = i0; + + // second harmonic perturbations + // + cos2u = cos(2.0*u); + sin2u = sin(2.0*u); + // argument of latitude correction + d_u = cuc * cos2u + cus * sin2u; + // radius correction + d_r = crc * cos2u + crs * sin2u; + // correction to inclination + d_i = cic * cos2u + cis * sin2u; + + // corrected argument of latitude + u += d_u; + // corrected radius + r += d_r; + // corrected inclination + i += d_i + idot * tk; + + // positions in orbital plane + cosu = cos(u); + sinu = sin(u); + x_op = r * cosu; + y_op = r * sinu; + + + omegak = omega0 + omegadot*tk - EARTH_ROTATION_RATE*(tk + toe); + // fuer Bestimmung der Satellitenposition in ECEF, range=0; + // fuer GPS-Loesung (Sats in ECI) Erdrotation hinzuziehen: + // rotZ(EARTH_ROTATION_RATE*0.072), 0.072s*299792458m/s=21585057m + + // compute the WGS84 ECEF coordinates, + // vector r with components x & y is now rotated using, R3(-omegak)*R1(-i) + cos_omegak = cos(omegak); + sin_omegak = sin(omegak); + cosi = cos(i); + sini = sin(i); + + *x = x_op * cos_omegak - y_op * sin_omegak * cosi; + *y = x_op * sin_omegak + y_op * cos_omegak * cosi; + *z = y_op * sini; + +} + +void GPS_SatellitePosition_Ephem( + const unsigned short gpsweek, // gps week of signal transmission (0-1024+) [week] + const double gpstow, // time of week of signal transmission (gpstow-psr/c) [s] + EPHEM_t ephem, + double* clock_correction, // clock correction for this satellite for this epoch [m] + double* satX, // satellite X position WGS84 ECEF [m] + double* satY, // satellite Y position WGS84 ECEF [m] + double* satZ // satellite Z position WGS84 ECEF [m] + ) +{ + double tow; // user time of week adjusted with the clock corrections [s] + double x; // sat X position [m] + double y; // sat Y position [m] + double z; // sat Z position [m] + unsigned short week; // user week adjusted with the clock correction if needed [week] + + + x = y = z = 0.0; + + GPS_SatelliteClockCorrection( gpsweek, gpstow, + ephem.week, ephem.toe, ephem.toc, ephem.af0, + ephem.af1, ephem.af2, ephem.e, ephem.sqrta, + ephem.delta_n, ephem.M0, ephem.tgd, clock_correction ); + + + // adjust for week rollover + week = gpsweek; + tow = gpstow + (*clock_correction)/LIGHTSPEED; + if ( tow < 0.0 ) { + tow += SECONDS_IN_WEEK; + week--; + } + if ( tow > SECONDS_IN_WEEK ) { + tow -= SECONDS_IN_WEEK; + week++; + } + + //range = 0.072s*299792458m/s=21585057m + GPS_ComputeSatellitePosition( week, tow, + ephem.week, ephem.toe, ephem.M0, ephem.delta_n, ephem.e, ephem.sqrta, + ephem.Omega0, ephem.i0, ephem.w, ephem.OmegaDot, ephem.idot, + ephem.cuc, ephem.cus, ephem.crc, ephem.crs, ephem.cic, ephem.cis, + &x, &y, &z ); + + *satX = x; + *satY = y; + *satZ = z; + +} + +/* ---------------------------------------------------------------------------------------------------- */ + + +int NAV_ClosedFormSolution_FromPseudorange( + SAT_t sats[4], // input: satellite position and pseudorange + double* latitude, // output: ellipsoid latitude [rad] + double* longitude, // ellipsoid longitude [rad] + double* height, // ellipsoid height [m] + double* rx_clock_bias, // receiver clock bias [m] + double pos_ecef[3] ) // ECEF coordinates [m] +{ + + double p1 = sats[0].pseudorange + sats[0].clock_corr; // pseudorange measurement + clock correction [m] + double p2 = sats[1].pseudorange + sats[1].clock_corr; + double p3 = sats[2].pseudorange + sats[2].clock_corr; + double p4 = sats[3].pseudorange + sats[3].clock_corr; + + double x1, y1, z1; // Sat1 ECEF + double x2, y2, z2; // Sat2 ECEF + double x3, y3, z3; // Sat3 ECEF + double x4, y4, z4; // Sat4 ECEF + + // Erdrotation ECEF-ECI, 0.070s*299792458m/s=20985472m, 0.072s*299792458m/s=21585057m + rotZ(sats[0].X, sats[0].Y, sats[0].Z, EARTH_ROTATION_RATE*RANGE_ESTIMATE, &x1, &y1, &z1); + rotZ(sats[1].X, sats[1].Y, sats[1].Z, EARTH_ROTATION_RATE*RANGE_ESTIMATE, &x2, &y2, &z2); + rotZ(sats[2].X, sats[2].Y, sats[2].Z, EARTH_ROTATION_RATE*RANGE_ESTIMATE, &x3, &y3, &z3); + rotZ(sats[3].X, sats[3].Y, sats[3].Z, EARTH_ROTATION_RATE*RANGE_ESTIMATE, &x4, &y4, &z4); + + + double x12, x13, x14; // 'xij' = 'xi' - 'xj' [m] + double y12, y13, y14; + double z12, z13, z14; + double p21, p31, p41; // 'pij' = 'pi' - 'pj' [m] + + double k1, k2, k3; // coefficients + double c1, c2, c3; + double f1, f2, f3; + double m1, m2, m3; + + double d1; // clock bias, solution 1 [m] + double d2; // clock bias, solution 2 [m] + double detA; // determinant of A + double tmp1; + double tmp2; + double tmp3; + + double A[3][3]; + double D[3][3]; // D is A^-1 * detA + + typedef struct { + double x; + double y; + double z; + } struct_SOLN; + + struct_SOLN s1; + struct_SOLN s2; + + struct_SOLN stmp; + double dtmp; + double x0, y0, z0; + double latS, lonS, altS, + lat1, lon1, alt1, + lat2, lon2, alt2; + double d2_1, d2_2; + + + x12 = x1 - x2; + x13 = x1 - x3; + x14 = x1 - x4; + + y12 = y1 - y2; + y13 = y1 - y3; + y14 = y1 - y4; + + z12 = z1 - z2; + z13 = z1 - z3; + z14 = z1 - z4; + + p21 = p2 - p1; + p31 = p3 - p1; + p41 = p4 - p1; + + k1 = x12*x12 + y12*y12 + z12*z12 - p21*p21; + k2 = x13*x13 + y13*y13 + z13*z13 - p31*p31; + k3 = x14*x14 + y14*y14 + z14*z14 - p41*p41; + + A[0][0] = 2.0*x12; + A[1][0] = 2.0*x13; + A[2][0] = 2.0*x14; + + A[0][1] = 2.0*y12; + A[1][1] = 2.0*y13; + A[2][1] = 2.0*y14; + + A[0][2] = 2.0*z12; + A[1][2] = 2.0*z13; + A[2][2] = 2.0*z14; + + tmp1 = A[1][1]*A[2][2] - A[2][1]*A[1][2]; + tmp2 = A[1][0]*A[2][2] - A[2][0]*A[1][2]; + tmp3 = A[1][0]*A[2][1] - A[2][0]*A[1][1]; + + detA = A[0][0]*tmp1 - A[0][1]*tmp2 + A[0][2]*tmp3; + + D[0][0] = tmp1; + D[1][0] = -tmp2; + D[2][0] = tmp3; + + D[0][1] = -A[0][1]*A[2][2] + A[2][1]*A[0][2]; + D[1][1] = A[0][0]*A[2][2] - A[2][0]*A[0][2]; + D[2][1] = -A[0][0]*A[2][1] + A[2][0]*A[0][1]; + + D[0][2] = A[0][1]*A[1][2] - A[1][1]*A[0][2]; + D[1][2] = -A[0][0]*A[1][2] + A[1][0]*A[0][2]; + D[2][2] = A[0][0]*A[1][1] - A[1][0]*A[0][1]; + + c1 = (D[0][0]*p21 + D[0][1]*p31 + D[0][2]*p41) * 2.0 / detA; + c2 = (D[1][0]*p21 + D[1][1]*p31 + D[1][2]*p41) * 2.0 / detA; + c3 = (D[2][0]*p21 + D[2][1]*p31 + D[2][2]*p41) * 2.0 / detA; + + f1 = (D[0][0]*k1 + D[0][1]*k2 + D[0][2]*k3) / detA; + f2 = (D[1][0]*k1 + D[1][1]*k2 + D[1][2]*k3) / detA; + f3 = (D[2][0]*k1 + D[2][1]*k2 + D[2][2]*k3) / detA; + + m1 = c1*c1 + c2*c2 + c3*c3 - 1.0; + m2 = -2.0*( c1*f1 + c2*f2 + c3*f3 ); + m3 = f1*f1 + f2*f2 + f3*f3; + + tmp1 = m2*m2 - 4.0*m1*m3; + if ( tmp1 < 0 ) { // not good, there is no solution + return -1; //FALSE + } + + d1 = ( -m2 - sqrt( tmp1 ) ) * 0.5 / m1; // +-Reihenfolge vertauscht + d2 = ( -m2 + sqrt( tmp1 ) ) * 0.5 / m1; + + // two solutions + s1.x = c1*d1 - f1 + x1; + s1.y = c2*d1 - f2 + y1; + s1.z = c3*d1 - f3 + z1; + + s2.x = c1*d2 - f1 + x1; + s2.y = c2*d2 - f2 + y1; + s2.z = c3*d2 - f3 + z1; + + tmp1 = sqrt( s1.x*s1.x + s1.y*s1.y + s1.z*s1.z ); + tmp2 = sqrt( s2.x*s2.x + s2.y*s2.y + s2.z*s2.z ); + + // choose the correct solution based + // on whichever solution is closest to + // the Earth's surface + tmp1 = fabs( tmp1 - 6371000.0 ); + tmp2 = fabs( tmp2 - 6371000.0 ); + + // nur (tmp2 < tmp1) geht manchmal schief + if ( tmp2 < tmp1 && tmp1 >= 60000 ) { // swap solutions + stmp = s1; s1 = s2; s2 = stmp; // s1 = s2; + dtmp = d1; d1 = d2; d2 = dtmp; // d1 = d2; + } + else if ( tmp2 < 60000 ) { // interessant wenn tmp1 50000.0 ) { + return -2; + } + + return 0; +} + + +/* ---------------------------------------------------------------------------------------------------- */ + + +int trace_invert(double mat[4][4], double trinv[4]) // trace-invert +/* selected elements from 4x4 matrix inversion */ +{ + // Find all NECESSARY 2x2 subdeterminants + double Det2_12_01 = mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]; + double Det2_12_02 = mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]; + //double Det2_12_03 = mat[1][0]*mat[2][3] - mat[1][3]*mat[2][0]; + double Det2_12_12 = mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]; + //double Det2_12_13 = mat[1][1]*mat[2][3] - mat[1][3]*mat[2][1]; + //double Det2_12_23 = mat[1][2]*mat[2][3] - mat[1][3]*mat[2][2]; + double Det2_13_01 = mat[1][0] * mat[3][1] - mat[1][1] * mat[3][0]; + //double Det2_13_02 = mat[1][0]*mat[3][2] - mat[1][2]*mat[3][0]; + double Det2_13_03 = mat[1][0] * mat[3][3] - mat[1][3] * mat[3][0]; + //double Det2_13_12 = mat[1][1]*mat[3][2] - mat[1][2]*mat[3][1]; + double Det2_13_13 = mat[1][1] * mat[3][3] - mat[1][3] * mat[3][1]; + //double Det2_13_23 = mat[1][2]*mat[3][3] - mat[1][3]*mat[3][2]; + double Det2_23_01 = mat[2][0] * mat[3][1] - mat[2][1] * mat[3][0]; + double Det2_23_02 = mat[2][0] * mat[3][2] - mat[2][2] * mat[3][0]; + double Det2_23_03 = mat[2][0] * mat[3][3] - mat[2][3] * mat[3][0]; + double Det2_23_12 = mat[2][1] * mat[3][2] - mat[2][2] * mat[3][1]; + double Det2_23_13 = mat[2][1] * mat[3][3] - mat[2][3] * mat[3][1]; + double Det2_23_23 = mat[2][2] * mat[3][3] - mat[2][3] * mat[3][2]; + + // Find all NECESSARY 3x3 subdeterminants + double Det3_012_012 = mat[0][0] * Det2_12_12 - mat[0][1] * Det2_12_02 + mat[0][2] * Det2_12_01; + //double Det3_012_013 = mat[0][0]*Det2_12_13 - mat[0][1]*Det2_12_03 + mat[0][3]*Det2_12_01; + //double Det3_012_023 = mat[0][0]*Det2_12_23 - mat[0][2]*Det2_12_03 + mat[0][3]*Det2_12_02; + //double Det3_012_123 = mat[0][1]*Det2_12_23 - mat[0][2]*Det2_12_13 + mat[0][3]*Det2_12_12; + //double Det3_013_012 = mat[0][0]*Det2_13_12 - mat[0][1]*Det2_13_02 + mat[0][2]*Det2_13_01; + double Det3_013_013 = mat[0][0] * Det2_13_13 - mat[0][1] * Det2_13_03 + mat[0][3] * Det2_13_01; + //double Det3_013_023 = mat[0][0]*Det2_13_23 - mat[0][2]*Det2_13_03 + mat[0][3]*Det2_13_02; + //double Det3_013_123 = mat[0][1]*Det2_13_23 - mat[0][2]*Det2_13_13 + mat[0][3]*Det2_13_12; + //double Det3_023_012 = mat[0][0]*Det2_23_12 - mat[0][1]*Det2_23_02 + mat[0][2]*Det2_23_01; + //double Det3_023_013 = mat[0][0]*Det2_23_13 - mat[0][1]*Det2_23_03 + mat[0][3]*Det2_23_01; + double Det3_023_023 = mat[0][0] * Det2_23_23 - mat[0][2] * Det2_23_03 + mat[0][3] * Det2_23_02; + //double Det3_023_123 = mat[0][1]*Det2_23_23 - mat[0][2]*Det2_23_13 + mat[0][3]*Det2_23_12; + double Det3_123_012 = mat[1][0] * Det2_23_12 - mat[1][1] * Det2_23_02 + mat[1][2] * Det2_23_01; + double Det3_123_013 = mat[1][0] * Det2_23_13 - mat[1][1] * Det2_23_03 + mat[1][3] * Det2_23_01; + double Det3_123_023 = mat[1][0] * Det2_23_23 - mat[1][2] * Det2_23_03 + mat[1][3] * Det2_23_02; + double Det3_123_123 = mat[1][1] * Det2_23_23 - mat[1][2] * Det2_23_13 + mat[1][3] * Det2_23_12; + + // Find the 4x4 determinant + static double det; + det = mat[0][0] * Det3_123_123 + - mat[0][1] * Det3_123_023 + + mat[0][2] * Det3_123_013 + - mat[0][3] * Det3_123_012; + + // Very small determinants probably reflect floating-point fuzz near zero + if (fabs(det) < 0.0001) + return -1; + + //inv[0][0] = Det3_123_123 / det; + //inv[0][1] = -Det3_023_123 / det; + //inv[0][2] = Det3_013_123 / det; + //inv[0][3] = -Det3_012_123 / det; + + //inv[1][0] = -Det3_123_023 / det; + //inv[1][1] = Det3_023_023 / det; + //inv[1][2] = -Det3_013_023 / det; + //inv[1][3] = Det3_012_023 / det; + + //inv[2][0] = Det3_123_013 / det; + //inv[2][1] = -Det3_023_013 / det; + //inv[2][2] = Det3_013_013 / det; + //inv[2][3] = -Det3_012_013 / det; + + //inv[3][0] = -Det3_123_012 / det; + //inv[3][1] = Det3_023_012 / det; + //inv[3][2] = -Det3_013_012 / det; + //inv[3][3] = Det3_012_012 / det; + + trinv[0] = Det3_123_123 / det; + + trinv[1] = Det3_023_023 / det; + trinv[2] = Det3_013_013 / det; + trinv[3] = Det3_012_012 / det; + + return 0; +} + +int calc_DOPn(int n, SAT_t satss[], double pos_ecef[3], double DOP[4]) { + int i, j, k; + double norm[n], satpos[n][3]; + double SATS[n][4], AtA[4][4]; + + for (i = 0; i < n; i++) { + satpos[i][0] = satss[i].X-pos_ecef[0]; + satpos[i][1] = satss[i].Y-pos_ecef[1]; + satpos[i][2] = satss[i].Z-pos_ecef[2]; + } + + + for (i = 0; i < n; i++) { + norm[i] = sqrt( satpos[i][0]*satpos[i][0] + satpos[i][1]*satpos[i][1] + satpos[i][2]*satpos[i][2] ); + for (j = 0; j < 3; j++) { + SATS[i][j] = satpos[i][j] / norm[i]; + } + SATS[i][3] = 1; + } + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + AtA[i][j] = 0.0; + for (k = 0; k < n; k++) { + AtA[i][j] += SATS[k][i]*SATS[k][j]; + } + } + } + + return trace_invert(AtA, DOP); +} + +/* ---------------------------------------------------------------------------------------------------- */ + +int rotE(SAT_t sat, double *x, double *y, double *z) { + // Erdrotation ECEF-ECI, 0.070s*299792458m/s=20985472m, 0.072s*299792458m/s=21585057m + double range = sat.PR/LIGHTSPEED; + if (range < 19e6 || range > 30e6) range = 21e6; + rotZ(sat.X, sat.Y, sat.Z, EARTH_ROTATION_RATE*(range/LIGHTSPEED), x, y, z); + return 0; +} + + +double lorentz(double a[4], double b[4]) { + return a[0]*b[0] + a[1]*b[1] +a[2]*b[2] - a[3]*b[3]; +} + +int matrix_invert(double mat[4][4], double inv[4][4]) +{ + // 2x2 subdeterminants + double Det2_12_01 = mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]; + double Det2_12_02 = mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]; + double Det2_12_03 = mat[1][0] * mat[2][3] - mat[1][3] * mat[2][0]; + double Det2_12_12 = mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]; + double Det2_12_13 = mat[1][1] * mat[2][3] - mat[1][3] * mat[2][1]; + double Det2_12_23 = mat[1][2] * mat[2][3] - mat[1][3] * mat[2][2]; + double Det2_13_01 = mat[1][0] * mat[3][1] - mat[1][1] * mat[3][0]; + double Det2_13_02 = mat[1][0] * mat[3][2] - mat[1][2] * mat[3][0]; + double Det2_13_03 = mat[1][0] * mat[3][3] - mat[1][3] * mat[3][0]; + double Det2_13_12 = mat[1][1] * mat[3][2] - mat[1][2] * mat[3][1]; + double Det2_13_13 = mat[1][1] * mat[3][3] - mat[1][3] * mat[3][1]; + double Det2_13_23 = mat[1][2] * mat[3][3] - mat[1][3] * mat[3][2]; + double Det2_23_01 = mat[2][0] * mat[3][1] - mat[2][1] * mat[3][0]; + double Det2_23_02 = mat[2][0] * mat[3][2] - mat[2][2] * mat[3][0]; + double Det2_23_03 = mat[2][0] * mat[3][3] - mat[2][3] * mat[3][0]; + double Det2_23_12 = mat[2][1] * mat[3][2] - mat[2][2] * mat[3][1]; + double Det2_23_13 = mat[2][1] * mat[3][3] - mat[2][3] * mat[3][1]; + double Det2_23_23 = mat[2][2] * mat[3][3] - mat[2][3] * mat[3][2]; + + // 3x3 subdeterminants + double Det3_012_012 = mat[0][0] * Det2_12_12 - mat[0][1] * Det2_12_02 + mat[0][2] * Det2_12_01; + double Det3_012_013 = mat[0][0] * Det2_12_13 - mat[0][1] * Det2_12_03 + mat[0][3] * Det2_12_01; + double Det3_012_023 = mat[0][0] * Det2_12_23 - mat[0][2] * Det2_12_03 + mat[0][3] * Det2_12_02; + double Det3_012_123 = mat[0][1] * Det2_12_23 - mat[0][2] * Det2_12_13 + mat[0][3] * Det2_12_12; + double Det3_013_012 = mat[0][0] * Det2_13_12 - mat[0][1] * Det2_13_02 + mat[0][2] * Det2_13_01; + double Det3_013_013 = mat[0][0] * Det2_13_13 - mat[0][1] * Det2_13_03 + mat[0][3] * Det2_13_01; + double Det3_013_023 = mat[0][0] * Det2_13_23 - mat[0][2] * Det2_13_03 + mat[0][3] * Det2_13_02; + double Det3_013_123 = mat[0][1] * Det2_13_23 - mat[0][2] * Det2_13_13 + mat[0][3] * Det2_13_12; + double Det3_023_012 = mat[0][0] * Det2_23_12 - mat[0][1] * Det2_23_02 + mat[0][2] * Det2_23_01; + double Det3_023_013 = mat[0][0] * Det2_23_13 - mat[0][1] * Det2_23_03 + mat[0][3] * Det2_23_01; + double Det3_023_023 = mat[0][0] * Det2_23_23 - mat[0][2] * Det2_23_03 + mat[0][3] * Det2_23_02; + double Det3_023_123 = mat[0][1] * Det2_23_23 - mat[0][2] * Det2_23_13 + mat[0][3] * Det2_23_12; + double Det3_123_012 = mat[1][0] * Det2_23_12 - mat[1][1] * Det2_23_02 + mat[1][2] * Det2_23_01; + double Det3_123_013 = mat[1][0] * Det2_23_13 - mat[1][1] * Det2_23_03 + mat[1][3] * Det2_23_01; + double Det3_123_023 = mat[1][0] * Det2_23_23 - mat[1][2] * Det2_23_03 + mat[1][3] * Det2_23_02; + double Det3_123_123 = mat[1][1] * Det2_23_23 - mat[1][2] * Det2_23_13 + mat[1][3] * Det2_23_12; + + // 4x4 determinant + static double det; + det = mat[0][0] * Det3_123_123 + - mat[0][1] * Det3_123_023 + + mat[0][2] * Det3_123_013 + - mat[0][3] * Det3_123_012; + + // Very small determinants probably reflect floating-point fuzz near zero + if (fabs(det) < 0.0001) + return -1; + + inv[0][0] = Det3_123_123 / det; + inv[0][1] = -Det3_023_123 / det; + inv[0][2] = Det3_013_123 / det; + inv[0][3] = -Det3_012_123 / det; + + inv[1][0] = -Det3_123_023 / det; + inv[1][1] = Det3_023_023 / det; + inv[1][2] = -Det3_013_023 / det; + inv[1][3] = Det3_012_023 / det; + + inv[2][0] = Det3_123_013 / det; + inv[2][1] = -Det3_023_013 / det; + inv[2][2] = Det3_013_013 / det; + inv[2][3] = -Det3_012_013 / det; + + inv[3][0] = -Det3_123_012 / det; + inv[3][1] = Det3_023_012 / det; + inv[3][2] = -Det3_013_012 / det; + inv[3][3] = Det3_012_012 / det; + + return 0; +} + +int NAV_bancroft1(int N, SAT_t sats[], double pos_ecef[3], double *cc) { + + int i, j, k; + double B[N][4], BtB[4][4], BBinv[4][4], BBB[4][N]; + double a[N], Be[4], Ba[4]; + + double q0, q1, q2, p, q, sq, x1, x2; + double Lsg1[4], Lsg2[4]; + + double tmp1, tmp2; + double X, Y, Z; + + + if (N < 4 || N > 12) return -1; + + for (i = 0; i < N; i++) { + rotZ(sats[i].X, sats[i].Y, sats[i].Z, EARTH_ROTATION_RATE*RANGE_ESTIMATE, B[i], B[i]+1, B[i]+2); + B[i][3] = sats[i].pseudorange + sats[i].clock_corr; + } + + if (N == 4) { + matrix_invert(B, (double (*)[4]) BBB); + } + else { + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + BtB[i][j] = 0.0; + for (k = 0; k < N; k++) { + BtB[i][j] += B[k][i]*B[k][j]; + } + } + } + matrix_invert(BtB, BBinv); + for (i = 0; i < 4; i++) { + for (j = 0; j < N; j++) { + BBB[i][j] = 0.0; + for (k = 0; k < 4; k++) { + BBB[i][j] += BBinv[i][k]*B[j][k]; + } + } + } + } + + for (i = 0; i < 4; i++) { + Be[i] = 0.0; + for (k = 0; k < N; k++) { + Be[i] += BBB[i][k]*1.0; + } + } + + for (i = 0; i < N; i++) { + a[i] = 0.5 * lorentz(B[i], B[i]); + } + + for (i = 0; i < 4; i++) { + Ba[i] = 0.0; + for (k = 0; k < N; k++) { + Ba[i] += BBB[i][k]*a[k]; + } + } + + q2 = lorentz(Be, Be); + q1 = lorentz(Ba, Be)-1; + q0 = lorentz(Ba, Ba); + + if (q2 == 0) return -2; + + p = q1/q2; + q = q0/q2; + + sq = p*p - q; + if (sq < 0) return -2; + + x1 = -p + sqrt(sq); + x2 = -p - sqrt(sq); + + for (i = 0; i < 4; i++) { + Lsg1[i] = x1*Be[i]+Ba[i]; + Lsg2[i] = x2*Be[i]+Ba[i]; + } + Lsg1[3] = -Lsg1[3]; + Lsg2[3] = -Lsg2[3]; + + + tmp1 = sqrt( Lsg1[0]*Lsg1[0] + Lsg1[1]*Lsg1[1] + Lsg1[2]*Lsg1[2] ); + tmp2 = sqrt( Lsg2[0]*Lsg2[0] + Lsg2[1]*Lsg2[1] + Lsg2[2]*Lsg2[2] ); + + tmp1 = fabs( tmp1 - 6371000.0 ); + tmp2 = fabs( tmp2 - 6371000.0 ); + + if (tmp1 < tmp2) { + X = Lsg1[0]; Y = Lsg1[1]; Z = Lsg1[2]; *cc = Lsg1[3]; + } else { + X = Lsg2[0]; Y = Lsg2[1]; Z = Lsg2[2]; *cc = Lsg2[3]; + } + pos_ecef[0] = X; + pos_ecef[1] = Y; + pos_ecef[2] = Z; + + return 0; +} + +int NAV_bancroft2(int N, SAT_t sats[], double pos_ecef[3], double *cc) { + + int i, j, k; + double B[N][4], BtB[4][4], BBinv[4][4], BBB[4][N]; + double a[N], Be[4], Ba[4]; + + double q0, q1, q2, p, q, sq, x1, x2; + double Lsg1[4], Lsg2[4]; + + double tmp1, tmp2; + double X, Y, Z; + + + if (N < 4 || N > 12) return -1; + + for (i = 0; i < N; i++) { + rotE(sats[i], B[i], B[i]+1, B[i]+2); + B[i][3] = sats[i].PR; + } + + if (N == 4) { + matrix_invert(B, (double (*)[4])BBB); + } + else { + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + BtB[i][j] = 0.0; + for (k = 0; k < N; k++) { + BtB[i][j] += B[k][i]*B[k][j]; + } + } + } + matrix_invert(BtB, BBinv); + for (i = 0; i < 4; i++) { + for (j = 0; j < N; j++) { + BBB[i][j] = 0.0; + for (k = 0; k < 4; k++) { + BBB[i][j] += BBinv[i][k]*B[j][k]; + } + } + } + } + + for (i = 0; i < 4; i++) { + Be[i] = 0.0; + for (k = 0; k < N; k++) { + Be[i] += BBB[i][k]*1.0; + } + } + + for (i = 0; i < N; i++) { + a[i] = 0.5 * lorentz(B[i], B[i]); + } + + for (i = 0; i < 4; i++) { + Ba[i] = 0.0; + for (k = 0; k < N; k++) { + Ba[i] += BBB[i][k]*a[k]; + } + } + + q2 = lorentz(Be, Be); + q1 = lorentz(Ba, Be)-1; + q0 = lorentz(Ba, Ba); + + if (q2 == 0) return -2; + + p = q1/q2; + q = q0/q2; + + sq = p*p - q; + if (sq < 0) return -2; + + x1 = -p + sqrt(sq); + x2 = -p - sqrt(sq); + + for (i = 0; i < 4; i++) { + Lsg1[i] = x1*Be[i]+Ba[i]; + Lsg2[i] = x2*Be[i]+Ba[i]; + } + Lsg1[3] = -Lsg1[3]; + Lsg2[3] = -Lsg2[3]; + + + tmp1 = sqrt( Lsg1[0]*Lsg1[0] + Lsg1[1]*Lsg1[1] + Lsg1[2]*Lsg1[2] ); + tmp2 = sqrt( Lsg2[0]*Lsg2[0] + Lsg2[1]*Lsg2[1] + Lsg2[2]*Lsg2[2] ); + + tmp1 = fabs( tmp1 - 6371000.0 ); + tmp2 = fabs( tmp2 - 6371000.0 ); + + if (tmp1 < tmp2) { + X = Lsg1[0]; Y = Lsg1[1]; Z = Lsg1[2]; *cc = Lsg1[3]; + } else { + X = Lsg2[0]; Y = Lsg2[1]; Z = Lsg2[2]; *cc = Lsg2[3]; + } + pos_ecef[0] = X; + pos_ecef[1] = Y; + pos_ecef[2] = Z; + + return 0; +} + +/* ---------------------------------------------------------------------------------------------------- */ + +int NAV_bancroft3(int N, SAT_t sats[], double pos_ecef1[3], double *cc1 , double pos_ecef2[3], double *cc2) { + + int i, j, k; + double B[N][4], BtB[4][4], BBinv[4][4], BBB[4][N]; + double a[N], Be[4], Ba[4]; + + double q0, q1, q2, p, q, sq, x1, x2; + double Lsg1[4], Lsg2[4]; + + double tmp1, tmp2; + double X1, Y1, Z1; + double X2, Y2, Z2; + + + if (N < 4 || N > 12) return -1; + + for (i = 0; i < N; i++) { // Test: nicht hier rotieren, sondern spaeter Lsg rotieren... + rotZ(sats[i].X, sats[i].Y, sats[i].Z, 0.0, B[i], B[i]+1, B[i]+2); + //B[i][3] = sats[i].PR; + B[i][3] = sats[i].pseudorange + sats[i].clock_corr; + } + + if (N == 4) { + matrix_invert(B, (double (*)[4])BBB); + } + else { + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + BtB[i][j] = 0.0; + for (k = 0; k < N; k++) { + BtB[i][j] += B[k][i]*B[k][j]; + } + } + } + matrix_invert(BtB, BBinv); + for (i = 0; i < 4; i++) { + for (j = 0; j < N; j++) { + BBB[i][j] = 0.0; + for (k = 0; k < 4; k++) { + BBB[i][j] += BBinv[i][k]*B[j][k]; + } + } + } + } + + for (i = 0; i < 4; i++) { + Be[i] = 0.0; + for (k = 0; k < N; k++) { + Be[i] += BBB[i][k]*1.0; + } + } + + for (i = 0; i < N; i++) { + a[i] = 0.5 * lorentz(B[i], B[i]); + } + + for (i = 0; i < 4; i++) { + Ba[i] = 0.0; + for (k = 0; k < N; k++) { + Ba[i] += BBB[i][k]*a[k]; + } + } + + q2 = lorentz(Be, Be); + q1 = lorentz(Ba, Be)-1; + q0 = lorentz(Ba, Ba); + + if (q2 == 0) return -2; + + p = q1/q2; + q = q0/q2; + + sq = p*p - q; + if (sq < 0) return -2; + + x1 = -p + sqrt(sq); + x2 = -p - sqrt(sq); + + for (i = 0; i < 4; i++) { + Lsg1[i] = x1*Be[i]+Ba[i]; + Lsg2[i] = x2*Be[i]+Ba[i]; + } + Lsg1[3] = -Lsg1[3]; + Lsg2[3] = -Lsg2[3]; + + + tmp1 = sqrt( Lsg1[0]*Lsg1[0] + Lsg1[1]*Lsg1[1] + Lsg1[2]*Lsg1[2] ); + tmp2 = sqrt( Lsg2[0]*Lsg2[0] + Lsg2[1]*Lsg2[1] + Lsg2[2]*Lsg2[2] ); + + tmp1 = tmp1 - 6371000.0; + tmp2 = tmp2 - 6371000.0; + + if ( fabs(tmp1) < fabs(tmp2) ) { + X1 = Lsg1[0]; Y1 = Lsg1[1]; Z1 = Lsg1[2]; *cc1 = Lsg1[3]; + X2 = Lsg2[0]; Y2 = Lsg2[1]; Z2 = Lsg2[2]; *cc2 = Lsg2[3]; + } else { + X1 = Lsg2[0]; Y1 = Lsg2[1]; Z1 = Lsg2[2]; *cc1 = Lsg2[3]; + X2 = Lsg1[0]; Y2 = Lsg1[1]; Z2 = Lsg1[2]; *cc2 = Lsg1[3]; + } + + rotZ(X1, Y1, Z1, EARTH_ROTATION_RATE*RANGE_ESTIMATE, pos_ecef1, pos_ecef1+1, pos_ecef1+2); + rotZ(X2, Y2, Z2, EARTH_ROTATION_RATE*RANGE_ESTIMATE, pos_ecef2, pos_ecef2+1, pos_ecef2+2); + + return 0; +} + + +/* ---------------------------------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------------------------------------- */ +// +// Satellite Position and Velocity +// + +void GPS_SatelliteClockDriftCorrection( + const unsigned short transmission_gpsweek, // GPS week when signal was transmit (0-1024+) [weeks] + const double transmission_gpstow, // GPS time of week when signal was transmit [s] + const unsigned short ephem_week, // ephemeris: GPS week (0-1024+) [weeks] + const double toe, // ephemeris: time of week [s] + const double toc, // ephemeris: clock reference time of week [s] + const double af0, // ephemeris: polynomial clock correction coefficient [s], + const double af1, // ephemeris: polynomial clock correction coefficient [s/s], + const double af2, // ephemeris: polynomial clock correction coefficient [s/s^2] + const double ecc, // ephemeris: eccentricity of satellite orbit [] + const double sqrta, // ephemeris: square root of the semi-major axis of orbit [m^(1/2)] + const double delta_n, // ephemeris: mean motion difference from computed value [rad] + const double m0, // ephemeris: mean anomaly at reference time [rad] + const double tgd, // ephemeris: group delay differential between L1 and L2 [s] + double* clock_correction, // ephemeris: satellite clock correction [m] + double* clock_drift ) // ephemeris: satellite clock drift correction [m/s] +{ + int j; + + double tot; // time of transmission (including gps week) [s] + double tk; // time from ephemeris reference epoch [s] + double tc; // time from clock reference epoch [s] + double d_tr; // relativistic correction term [s] + double d_tsv; // SV PRN code phase time offset [s] + double a; // semi-major axis of orbit [m] + double n; // corrected mean motion [rad/s] + double M; // mean anomaly, [rad] + double E; // eccentric anomaly [rad] + + // compute the times from the reference epochs + tot = transmission_gpsweek*SECONDS_IN_WEEK + transmission_gpstow; + tk = tot - (ephem_week*SECONDS_IN_WEEK + toe); + tc = tot - (ephem_week*SECONDS_IN_WEEK + toc); + + // compute the corrected mean motion term + a = sqrta*sqrta; + n = sqrt( GRAVITY_CONSTANT / (a*a*a) ); // mean motion + n += delta_n; // corrected mean motion + + // Kepler-Gleichung M = E - e sin(E) + M = m0 + n*tk; // mean anomaly + E = M; // f(E) = M + e sin(E) hat Fixpunkt fuer e < 1, + for( j = 0; j < 7; j++ ) { // da |f'(E)|=|e cos(E)|<1. + E = M + ecc * sin(E); // waehle Startwert E_1 = M, E_{k+1} = f(E_k) + } // konvergiert langsam gegen E_0 = f(E_0) + + // relativistic correction + d_tr = RELATIVISTIC_CLOCK_CORRECTION * ecc * sqrta * sin(E); // [s] + d_tr *= LIGHTSPEED; + + // clock correction + d_tsv = af0 + af1*tc + af2*tc*tc; // [s] + + // L1 only + d_tsv -= tgd; // [s] + + // clock correction + *clock_correction = d_tsv*LIGHTSPEED + d_tr; // [m] + + // clock drift + *clock_drift = (af1 + 2.0*af2*tc) * LIGHTSPEED; // [m/s] + +} + +void GPS_ComputeSatellitePositionVelocity( + const unsigned short transmission_gpsweek, // GPS week when signal was transmit (0-1024+) [weeks] + const double transmission_gpstow, // GPS time of week when signal was transmit [s] + const unsigned short ephem_week, // ephemeris: GPS week (0-1024+) [weeks] + const double toe, // ephemeris: time of week [s] + const double m0, // ephemeris: mean anomaly at reference time [rad] + const double delta_n, // ephemeris: mean motion difference from computed value [rad] + const double ecc, // ephemeris: eccentricity [] + const double sqrta, // ephemeris: square root of the semi-major axis [m^(1/2)] + const double omega0, // ephemeris: longitude of ascending node of orbit plane at weekly epoch [rad] + const double i0, // ephemeris: inclination angle at reference time [rad] + const double w, // ephemeris: argument of perigee [rad] + const double omegadot, // ephemeris: rate of right ascension [rad/s] + const double idot, // ephemeris: rate of inclination angle [rad/s] + const double cuc, // ephemeris: cos harmonic correction term to the argument of latitude [rad] + const double cus, // ephemeris: sin harmonic correction term to the argument of latitude [rad] + const double crc, // ephemeris: cos harmonic correction term to the orbit radius [m] + const double crs, // ephemeris: sin harmonic correction term to the orbit radius [m] + const double cic, // ephemeris: cos harmonic correction term to the angle of inclination [rad] + const double cis, // ephemeris: sin harmonic correction term to the angle of inclination [rad] + double* x, // satellite x [m] + double* y, // satellite y [m] + double* z, // satellite z [m] + double* vx, // satellite velocity x [m/s] + double* vy, // satellite velocity y [m/s] + double* vz ) // satellite velocity z [m/s] +{ + int j; + + double tot; // time of transmission (including gps week) [s] + double tk; // time from ephemeris reference epoch [s] + double a; // semi-major axis of orbit [m] + double n; // corrected mean motion [rad/s] + double M; // mean anomaly, [rad] + double E; // eccentric anomaly [rad] + double v; // true anomaly [rad] + double u; // argument of latitude, corrected [rad] + double r; // radius in the orbital plane [m] + double i; // orbital inclination [rad] + double cos2u; // cos(2*u) [] + double sin2u; // sin(2*u) [] + double d_u; // argument of latitude correction [rad] + double d_r; // radius correction [m] + double d_i; // inclination correction [rad] + double x_op; // x position in the orbital plane [m] + double y_op; // y position in the orbital plane [m] + double omegak; // corrected longitude of the ascending node [rad] + double cos_omegak; // cos(omegak) + double sin_omegak; // sin(omegak) + double cosu; // cos(u) + double sinu; // sin(u) + double cosi; // cos(i) + double sini; // sin(i) + double cosE; // cos(E) + double sinE; // sin(E) + + + // compute the times from the reference epochs + tot = transmission_gpsweek*SECONDS_IN_WEEK + transmission_gpstow; + tk = tot - (ephem_week*SECONDS_IN_WEEK + toe); + + // compute the corrected mean motion term + a = sqrta*sqrta; + n = sqrt( GRAVITY_CONSTANT / (a*a*a) ); // computed mean motion + n += delta_n; // corrected mean motion + + // Kepler-Gleichung M = E - e sin(E) + M = m0 + n*tk; // mean anomaly + E = M; // f(E) = M + e sin(E) hat Fixpunkt fuer e < 1, + for( j = 0; j < 7; j++ ) { // da |f'(E)|=|e cos(E)|<1. + E = M + ecc * sin(E); // waehle Startwert E_1 = M, E_{k+1} = f(E_k) + } // konvergiert langsam gegen E_0 = f(E_0) + + cosE = cos(E); + sinE = sin(E); + + // true anomaly + v = atan2( (sqrt(1.0 - ecc*ecc)*sinE), (cosE - ecc) ); + // argument of latitude + u = v + w; + // radius in orbital plane + r = a * (1.0 - ecc * cos(E)); + // orbital inclination + i = i0; + + // second harmonic perturbations + // + cos2u = cos(2.0*u); + sin2u = sin(2.0*u); + // argument of latitude correction + d_u = cuc * cos2u + cus * sin2u; + // radius correction + d_r = crc * cos2u + crs * sin2u; + // correction to inclination + d_i = cic * cos2u + cis * sin2u; + + // corrected argument of latitude + u += d_u; + // corrected radius + r += d_r; + // corrected inclination + i += d_i + idot * tk; + + // positions in orbital plane + cosu = cos(u); + sinu = sin(u); + x_op = r * cosu; + y_op = r * sinu; + + + omegak = omega0 + omegadot*tk - EARTH_ROTATION_RATE*(tk + toe); + // fuer Bestimmung der Satellitenposition in ECEF, range=0; + // fuer GPS-Loesung (Sats in ECI) Erdrotation hinzuziehen: + // rotZ(EARTH_ROTATION_RATE*0.072), 0.072s*299792458m/s=21585057m + + // compute the WGS84 ECEF coordinates, + // vector r with components x & y is now rotated using, R3(-omegak)*R1(-i) + cos_omegak = cos(omegak); + sin_omegak = sin(omegak); + cosi = cos(i); + sini = sin(i); + + *x = x_op * cos_omegak - y_op * sin_omegak * cosi; + *y = x_op * sin_omegak + y_op * cos_omegak * cosi; + *z = y_op * sini; + + + // Satellite Velocity Computations are below + // see Reference + // Remodi, B. M (2004). GPS Tool Box: Computing satellite velocities using the broadcast ephemeris. + // GPS Solutions. Volume 8(3), 2004. pp. 181-183 + // + // example source code was available at [http://www.ngs.noaa.gov/gps-toolbox/bc_velo/bc_velo.c] + + // recomputed the cos and sin of the corrected argument of latitude + + double omegadotk; // corrected rate of right ascension [rad/s] + double edot; // edot = n/(1.0 - ecc*cos(E)), [rad/s] + double vdot; // d/dt of true anomaly [rad/s] + double udot; // d/dt of argument of latitude [rad/s] + double idotdot; // d/dt of the rate of the inclination angle [rad/s^2] + double rdot; // d/dt of the radius in the orbital plane [m/s] + double tmpa; // temp + double tmpb; // temp + double vx_op; // x velocity in the orbital plane [m/s] + double vy_op; // y velocity in the orbital plane [m/s] + + cos2u = cos(2.0*u); + sin2u = sin(2.0*u); + + edot = n / (1.0 - ecc*cosE); + vdot = sinE*edot*(1.0 + ecc*cos(v)) / ( sin(v)*(1.0-ecc*cosE) ); + udot = vdot + 2.0*(cus*cos2u - cuc*sin2u)*vdot; + rdot = a*ecc*sinE*n/(1.0-ecc*cosE) + 2.0*(crs*cos2u - crc*sin2u)*vdot; + idotdot = idot + (cis*cos2u - cic*sin2u)*2.0*vdot; + + vx_op = rdot*cosu - y_op*udot; + vy_op = rdot*sinu + x_op*udot; + + // corrected rate of right ascension including similarily as above, + // for omegak, compensation for the Sagnac effect + omegadotk = omegadot - EARTH_ROTATION_RATE /* - EARTH_ROTATION_RATE*RANGERATE_ESTIMATE/LIGHTSPEED */ ; + + tmpa = vx_op - y_op*cosi*omegadotk; + tmpb = x_op*omegadotk + vy_op*cosi - y_op*sini*idotdot; + + *vx = tmpa * cos_omegak - tmpb * sin_omegak; + *vy = tmpa * sin_omegak + tmpb * cos_omegak; + *vz = vy_op*sini + y_op*cosi*idotdot; +} + +void GPS_SatellitePositionVelocity_Ephem( + const unsigned short gpsweek, // gps week of signal transmission (0-1024+) [week] + const double gpstow, // time of week of signal transmission (gpstow-psr/c) [s] + EPHEM_t ephem, + double* clock_correction, // clock correction for this satellite for this epoch [m] + double* clock_drift, // clock correction for this satellite for this epoch [m] + double* satX, // satellite X position WGS84 ECEF [m] + double* satY, // satellite Y position WGS84 ECEF [m] + double* satZ, // satellite Z position WGS84 ECEF [m] + double* satvX, // satellite X velocity WGS84 ECEF [m] + double* satvY, // satellite Y velocity WGS84 ECEF [m] + double* satvZ // satellite Z velocity WGS84 ECEF [m] + ) +{ + double tow; // user time of week adjusted with the clock corrections [s] + double x; // sat X position [m] + double y; // sat Y position [m] + double z; // sat Z position [m] + double vx; // sat vX velocity [m] + double vy; // sat VY velocity [m] + double vz; // sat VZ velocity [m] + unsigned short week; // user week adjusted with the clock correction if needed [week] + + + x = y = z = 0.0; + + GPS_SatelliteClockDriftCorrection( gpsweek, gpstow, + ephem.week, ephem.toe, ephem.toc, ephem.af0, + ephem.af1, ephem.af2, ephem.e, ephem.sqrta, + ephem.delta_n, ephem.M0, ephem.tgd, clock_correction, clock_drift ); + + + // adjust for week rollover + week = gpsweek; + tow = gpstow + (*clock_correction)/LIGHTSPEED; + if ( tow < 0.0 ) { + tow += SECONDS_IN_WEEK; + week--; + } + if ( tow > SECONDS_IN_WEEK ) { + tow -= SECONDS_IN_WEEK; + week++; + } + + //range = 0.072s*299792458m/s=21585057m + GPS_ComputeSatellitePositionVelocity( week, tow, + ephem.week, ephem.toe, ephem.M0, ephem.delta_n, ephem.e, ephem.sqrta, + ephem.Omega0, ephem.i0, ephem.w, ephem.OmegaDot, ephem.idot, + ephem.cuc, ephem.cus, ephem.crc, ephem.crs, ephem.cic, ephem.cis, + &x, &y, &z, &vx, &vy, &vz ); + + *satX = x; + *satY = y; + *satZ = z; + *satvX = vx; + *satvY = vy; + *satvZ = vz; + +} + +/* ---------------------------------------------------------------------------------------------------- */ + + +double NAV_relVel(LOC_t loc, VEL_t vel) { + double d; + double x,y,z; + double norm; + + x = vel.X-loc.X; + y = vel.Y-loc.Y; + z = vel.Z-loc.Z; + norm = sqrt(x*x+y*y+z*z); + x /= norm; + y /= norm; + z /= norm; + + d = vel.vX*x + vel.vY*y + vel.vZ*z; + + return d; +} + +int NAV_LinP(int N, SAT_t satv[], double pos_ecef[3], double dt, + double dpos_ecef[3], double *cc) { + + int i, j, k; + double B[N][4], Binv[4][N], BtB[4][4], BBinv[4][4]; + double a[N], Ba[N]; + + double X, Y, Z; + double norm[N]; + double range, obs_range, prox_range; + + if (N < 4 || N > 12) return -1; + + for (i = 0; i < N; i++) { + + range = dist( pos_ecef[0], pos_ecef[1], pos_ecef[2], satv[i].X, satv[i].Y, satv[i].Z ); + range /= LIGHTSPEED; + if (range < 0.06 || range > 0.1) range = RANGE_ESTIMATE; + rotZ(satv[i].X, satv[i].Y, satv[i].Z, EARTH_ROTATION_RATE*range, B[i], B[i]+1, B[i]+2); + //rotZ(satv[i].X, satv[i].Y, satv[i].Z, 0.0, B[i], B[i]+1, B[i]+2); // est. RANGE_RATE = 0.0 + + X = B[i][0]-pos_ecef[0]; + Y = B[i][1]-pos_ecef[1]; + Z = B[i][2]-pos_ecef[2]; + norm[i] = sqrt(X*X+Y*Y+Z*Z); + + B[i][0] = X/norm[i]; + B[i][1] = Y/norm[i]; + B[i][2] = Z/norm[i]; + + B[i][3] = 1; + } + + if (N == 4) { + matrix_invert(B, (double (*)[4])Binv); + } + else { + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + BtB[i][j] = 0.0; + for (k = 0; k < N; k++) { + BtB[i][j] += B[k][i]*B[k][j]; + } + } + } + matrix_invert(BtB, BBinv); + for (i = 0; i < 4; i++) { + for (j = 0; j < N; j++) { + Binv[i][j] = 0.0; + for (k = 0; k < 4; k++) { + Binv[i][j] += BBinv[i][k]*B[j][k]; + } + } + } + + } + + + for (i = 0; i < N; i++) { + obs_range = satv[i].pseudorange + satv[i].clock_corr; //satv[i].PR; + prox_range = norm[i] - dt; + a[i] = prox_range - obs_range; + } + + for (i = 0; i < 4; i++) { + Ba[i] = 0.0; + for (k = 0; k < N; k++) { + Ba[i] += Binv[i][k]*a[k]; + } + } + + dpos_ecef[0] = Ba[0]; + dpos_ecef[1] = Ba[1]; + dpos_ecef[2] = Ba[2]; + + *cc = Ba[3]; + + return 0; +} + +int NAV_LinV(int N, SAT_t satv[], double pos_ecef[3], + double vel_ecef[3], double dt, + double dvel_ecef[3], double *cc) { + + int i, j, k; + double B[N][4], Binv[4][N], BtB[4][4], BBinv[4][4]; + double a[N], Ba[N]; + + double X, Y, Z; + double norm[N]; + double v_proj; + double obs_rate, prox_rate; + LOC_t loc; + VEL_t vel; + + if (N < 4 || N > 12) return -1; + + loc.X = pos_ecef[0]; + loc.Y = pos_ecef[1]; + loc.Z = pos_ecef[2]; + + if (N < 4 || N > 12) return -1; + + for (i = 0; i < N; i++) { + rotZ(satv[i].X, satv[i].Y, satv[i].Z, EARTH_ROTATION_RATE*RANGE_ESTIMATE, B[i], B[i]+1, B[i]+2); + //rotZ(satv[i].X, satv[i].Y, satv[i].Z, 0.0, B[i], B[i]+1, B[i]+2); // est. RANGE_RATE = 0.0 + + X = B[i][0]-pos_ecef[0]; + Y = B[i][1]-pos_ecef[1]; + Z = B[i][2]-pos_ecef[2]; + norm[i] = sqrt(X*X+Y*Y+Z*Z); + B[i][0] = X/norm[i]; + B[i][1] = Y/norm[i]; + B[i][2] = Z/norm[i]; + + // SatSpeed = sqrt( satv[i].vX*satv[i].vX + satv[i].vY*satv[i].vY + satv[i].vZ*satv[i].vZ ); + + B[i][3] = 1; + } + + if (N == 4) { + matrix_invert(B, (double (*)[4])Binv); + } + else { + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + BtB[i][j] = 0.0; + for (k = 0; k < N; k++) { + BtB[i][j] += B[k][i]*B[k][j]; + } + } + } + matrix_invert(BtB, BBinv); + for (i = 0; i < 4; i++) { + for (j = 0; j < N; j++) { + Binv[i][j] = 0.0; + for (k = 0; k < 4; k++) { + Binv[i][j] += BBinv[i][k]*B[j][k]; + } + } + } + + } + + + for (i = 0; i < N; i++) { + obs_rate = satv[i].pseudorate; // + satv[i].clock_drift; + vel.X = satv[i].X; + vel.Y = satv[i].Y; + vel.Z = satv[i].Z; + vel.vX = satv[i].vX - vel_ecef[0]; + vel.vY = satv[i].vY - vel_ecef[1]; + vel.vZ = satv[i].vZ - vel_ecef[2]; + v_proj = NAV_relVel(loc, vel); + prox_rate = v_proj - dt; + a[i] = prox_rate - obs_rate; + } + + for (i = 0; i < 4; i++) { + Ba[i] = 0.0; + for (k = 0; k < N; k++) { + Ba[i] += Binv[i][k]*a[k]; + } + } + + dvel_ecef[0] = Ba[0]; + dvel_ecef[1] = Ba[1]; + dvel_ecef[2] = Ba[2]; + + *cc = Ba[3]; + + return 0; +} + diff --git a/RX_FSK/src/nav_gps_vel.h b/RX_FSK/src/nav_gps_vel.h new file mode 100644 index 0000000..6bfcd7a --- /dev/null +++ b/RX_FSK/src/nav_gps_vel.h @@ -0,0 +1,148 @@ + + +typedef struct { + uint16_t prn; + uint16_t week; + uint32_t toa; + char epoch[20]; + double toe; + double toc; + double e; + double delta_n; + double delta_i; + double i0; + double OmegaDot; + double sqrta; + double Omega0; + double w; + double M0; + double tgd; + double idot; + double cuc; + double cus; + double crc; + double crs; + double cic; + double cis; + double af0; + double af1; + double af2; + int gpsweek; + uint16_t svn; + uint8_t ura; + uint8_t health; + uint8_t conf; +} EPHEM_t; + + +typedef struct { + uint32_t t; + double pseudorange; + double pseudorate; + double clock_corr; + double clock_drift; + double X; + double Y; + double Z; + double vX; + double vY; + double vZ; + int ephhr; + double PR; + double ephtime; + int prn; +} SAT_t; + + +typedef struct {double X; double Y; double Z;} LOC_t; + +typedef struct {double X; double Y; double Z; + double vX; double vY; double vZ;} VEL_t; + + +double dist(double X1, double Y1, double Z1, double X2, double Y2, double Z2); + +void GPS_SatelliteClockCorrection( + const unsigned short transmission_gpsweek, // GPS week when signal was transmit (0-1024+) [weeks] + const double transmission_gpstow, // GPS time of week when signal was transmit [s] + const unsigned short ephem_week, // ephemeris: GPS week (0-1024+) [weeks] + const double toe, // ephemeris: time of week [s] + const double toc, // ephemeris: clock reference time of week [s] + const double af0, // ephemeris: polynomial clock correction coefficient [s], + const double af1, // ephemeris: polynomial clock correction coefficient [s/s], + const double af2, // ephemeris: polynomial clock correction coefficient [s/s^2] + const double ecc, // ephemeris: eccentricity of satellite orbit [] + const double sqrta, // ephemeris: square root of the semi-major axis of orbit [m^(1/2)] + const double delta_n, // ephemeris: mean motion difference from computed value [rad] + const double m0, // ephemeris: mean anomaly at reference time [rad] + const double tgd, // ephemeris: group delay differential between L1 and L2 [s] + double* clock_correction ); + +void GPS_SatellitePosition_Ephem( + const unsigned short gpsweek, // gps week of signal transmission (0-1024+) [week] + const double gpstow, // time of week of signal transmission (gpstow-psr/c) [s] + EPHEM_t ephem, + double* clock_correction, // clock correction for this satellite for this epoch [m] + double* satX, // satellite X position WGS84 ECEF [m] + double* satY, // satellite Y position WGS84 ECEF [m] + double* satZ // satellite Z position WGS84 ECEF [m] + ); + +void GPS_SatelliteClockDriftCorrection( + const unsigned short transmission_gpsweek, // GPS week when signal was transmit (0-1024+) [weeks] + const double transmission_gpstow, // GPS time of week when signal was transmit [s] + const unsigned short ephem_week, // ephemeris: GPS week (0-1024+) [weeks] + const double toe, // ephemeris: time of week [s] + const double toc, // ephemeris: clock reference time of week [s] + const double af0, // ephemeris: polynomial clock correction coefficient [s], + const double af1, // ephemeris: polynomial clock correction coefficient [s/s], + const double af2, // ephemeris: polynomial clock correction coefficient [s/s^2] + const double ecc, // ephemeris: eccentricity of satellite orbit [] + const double sqrta, // ephemeris: square root of the semi-major axis of orbit [m^(1/2)] + const double delta_n, // ephemeris: mean motion difference from computed value [rad] + const double m0, // ephemeris: mean anomaly at reference time [rad] + const double tgd, // ephemeris: group delay differential between L1 and L2 [s] + double* clock_correction, // ephemeris: satellite clock correction [m] + double* clock_drift ) ; + +void GPS_SatellitePositionVelocity_Ephem( + const unsigned short gpsweek, // gps week of signal transmission (0-1024+) [week] + const double gpstow, // time of week of signal transmission (gpstow-psr/c) [s] + EPHEM_t ephem, + double* clock_correction, // clock correction for this satellite for this epoch [m] + double* clock_drift, // clock correction for this satellite for this epoch [m] + double* satX, // satellite X position WGS84 ECEF [m] + double* satY, // satellite Y position WGS84 ECEF [m] + double* satZ, // satellite Z position WGS84 ECEF [m] + double* satvX, // satellite X velocity WGS84 ECEF [m] + double* satvY, // satellite Y velocity WGS84 ECEF [m] + double* satvZ // satellite Z velocity WGS84 ECEF [m] + ); + + + int NAV_ClosedFormSolution_FromPseudorange( + SAT_t sats[4], // input: satellite position and pseudorange + double* latitude, // output: ellipsoid latitude [rad] + double* longitude, // ellipsoid longitude [rad] + double* height, // ellipsoid height [m] + double* rx_clock_bias, // receiver clock bias [m] + double pos_ecef[3] ); + +int calc_DOPn(int n, SAT_t satss[], double pos_ecef[3], double DOP[4]); + +int NAV_LinP(int N, SAT_t satv[], double pos_ecef[3], double dt, + double dpos_ecef[3], double *cc); +void ecef2elli(double X, double Y, double Z, double *lat, double *lon, double *alt); + +int NAV_LinP(int N, SAT_t satv[], double pos_ecef[3], double dt, + double dpos_ecef[3], double *cc); + +int NAV_LinV(int N, SAT_t satv[], double pos_ecef[3], + double vel_ecef[3], double dt, + double dvel_ecef[3], double *cc); + +int NAV_bancroft1(int N, SAT_t sats[], double pos_ecef[3], double *cc); + +EPHEM_t *read_RNXpephs(const char *file); + + diff --git a/RX_FSK/src/rs92gps.cpp b/RX_FSK/src/rs92gps.cpp new file mode 100644 index 0000000..4c31707 --- /dev/null +++ b/RX_FSK/src/rs92gps.cpp @@ -0,0 +1,1204 @@ +/* SPDX-License-Identifier: GPL-3.0 + * based on https://github.com/rs1729/RS/blob/master/rs92/rs92gps.c + * + * radiosonde RS92 + * + * + * broadcast ephemeris: + * http://cddis.gsfc.nasa.gov/Data_and_Derived_Products/GNSS/broadcast_ephemeris_data.html + * ftp://cddis.gsfc.nasa.gov/gnss/data/daily/YYYY/DDD/YYn/brdcDDD0.YYn.Z (updated) + * ftp://cddis.gsfc.nasa.gov/gnss/data/daily/YYYY/brdc/brdcDDD0.YYn.Z (final) + * + * SEM almanac: + * https://celestrak.com/GPS/almanac/SEM/ + * + * GPS calendar: + * http://adn.agi.com/GNSSWeb/ + * + * GPS-Hoehe ueber Ellipsoid, Geoid-Hoehe: + * http://geographiclib.sourceforge.net/cgi-bin/GeoidEval + */ + +/* + gcc rs92gps.c -lm -o rs92gps + (includes nav_gps_vel.c) + + examples: + + sox -t oss /dev/dsp -t wav - lowpass 2600 2>/dev/null | ./rs92gps -e brdc3050.15n + + ./rs92gps -r 2015_11_01.wav > raw1.out + sox -t oss /dev/dsp -t wav - lowpass 2600 2>/dev/null | stdbuf -oL ./rs92gps -r > raw2.out + ./rs92gps --dop 5 -gg -e brdc3050.15n --rawin1 raw.out + + sox -t oss /dev/dsp -t wav - lowpass 2600 2>/dev/null | tee audio.wav | ./rs92gps -e brdc3050.15n + ./rs92gps -g1 -e brdc3050.15n 2015_11_01-14.wav | tee out1.txt + ./rs92gps -g2 -e brdc3050.15n 2015_11_01-14.wav | tee out2.txt + sox 2015_11_01.wav -t wav - lowpass 2600 2>/dev/null | ./rs92gps -gg -e brdc3050.15n | tee out3.txt + + sox -t oss /dev/dsp -t wav - lowpass 2600 2>/dev/null | stdbuf -oL ./rs92gps -e brdc3050.15n > out1.txt + sox -t oss /dev/dsp -t wav - lowpass 2600 2>/dev/null | stdbuf -oL ./rs92gps -e brdc3050.15n | tee out2.txt + +*/ + +#include +#include +#include +#include +#include + +#include +#include "nav_gps_vel.h" +#include "rs92gps.h" +#include "geteph.h" +#include "Sonde.h" + + + +gpx_t gpx; + +const int option_verbose = 0, // ausfuehrliche Anzeige + option_raw = 1, // rohe Frames + option_inv = 0, // invertiert Signal + option_res = 0, // genauere Bitmessung + option_crc = 0, // check CRC + option_avg = 0, // moving average + option_b = 0, + fileloaded = 0, + option_vergps = 0, + option_iter = 0, + option_vel = 0, // velocity + option_aux = 0, // Aux/Ozon + option_der = 0, // linErr + rawin = 0; +double dop_limit = 9.9; +double d_err = 10000; + +int rollover = 0, + err_gps = 0; + +int almanac = 0, + ephem = 0; + +int exSat = -1; + + +int bufpos = -1; + +#define FRAME_LEN 240 +uint8_t frame[FRAME_LEN] = { 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x10}; +/* --- RS92-SGP ------------------- */ + + +char buffer_rawin[3*FRAME_LEN+8]; //## rawin1: buffer_rawin[2*FRAME_LEN+4]; +int frameofs = 0; + +#define MASK_LEN 64 +uint8_t mask[MASK_LEN] = { 0x96, 0x83, 0x3E, 0x51, 0xB1, 0x49, 0x08, 0x98, + 0x32, 0x05, 0x59, 0x0E, 0xF9, 0x44, 0xC6, 0x26, + 0x21, 0x60, 0xC2, 0xEA, 0x79, 0x5D, 0x6D, 0xA1, + 0x54, 0x69, 0x47, 0x0C, 0xDC, 0xE8, 0x5C, 0xF1, + 0xF7, 0x76, 0x82, 0x7F, 0x07, 0x99, 0xA2, 0x2C, + 0x93, 0x7C, 0x30, 0x63, 0xF5, 0x10, 0x2E, 0x61, + 0xD0, 0xBC, 0xB4, 0xB6, 0x06, 0xAA, 0xF4, 0x23, + 0x78, 0x6E, 0x3B, 0xAE, 0xBF, 0x7B, 0x4C, 0xC1}; +/* LFSR: ab i=8 (mod 64): + * m[16+i] = m[i] ^ m[i+2] ^ m[i+4] ^ m[i+6] + * ________________3205590EF944C6262160C2EA795D6DA15469470CDCE85CF1 + * F776827F0799A22C937C3063F5102E61D0BCB4B606AAF423786E3BAEBF7B4CC196833E51B1490898 + */ + +/* ------------------------------------------------------------------------------------ */ + +#define BAUD_RATE 4800 + +int sample_rate = 0, bits_sample = 0, channels = 0; +float samples_per_bit = 0; + +int findstr(char *buff, char *str, int pos) { + int i; + for (i = 0; i < 4; i++) { + if (buff[(pos+i)%4] != str[i]) break; + } + return i; +} + + +uint8_t framebyte(int pos) { + return frame[pos]; +} + + +/* ------------------------------------------------------------------------------------ */ + +#define GPS_WEEK1024 1 +#define WEEKSEC 604800 + +/* + * Convert GPS Week and Seconds to Modified Julian Day. + * - Adapted from sci.astro FAQ. + * - Ignores UTC leap seconds. + */ + +void Gps2Date(long GpsWeek, long GpsSeconds, int *Year, int *Month, int *Day) { + + long GpsDays, Mjd; + long J, C, Y, M; + + GpsDays = GpsWeek * 7 + (GpsSeconds / 86400); + Mjd = 44244 + GpsDays; + + J = Mjd + 2468570; + C = 4 * J / 146097; + J = J - (146097 * C + 3) / 4; + Y = 4000 * (J + 1) / 1461001; + J = J - 1461 * Y / 4 + 31; + M = 80 * J / 2447; + *Day = J - 2447 * M / 80; + J = M / 11; + *Month = M + 2 - (12 * J); + *Year = 100 * (C - 49) + Y + J; +} + +/* ------------------------------------------------------------------------------------ */ + +#define pos_FrameNb 0x08 // 2 byte +#define pos_SondeID 0x0C // 8 byte // oder: 0x0A, 10 byte? +#define pos_CalData 0x17 // 1 byte, counter 0x00..0x1f +#define pos_Calfreq 0x1A // 2 byte, calfr 0x00 + +#define posGPS_TOW 0x48 // 4 byte +#define posGPS_PRN 0x4E // 12*5 bit in 8 byte +#define posGPS_STATUS 0x56 // 12 byte +#define posGPS_DATA 0x62 // 12*8 byte + +#define pos_PTU 0x2C // 24 byte +#define pos_AuxData 0xC8 // 8 byte + + +#define BLOCK_CFG 0x6510 // frame[pos_FrameNb-2], frame[pos_FrameNb-1] +#define BLOCK_PTU 0x690C +#define BLOCK_GPS 0x673D // frame[posGPS_TOW-2], frame[posGPS_TOW-1] +#define BLOCK_AUX 0x6805 + +#define LEN_CFG (2*(BLOCK_CFG & 0xFF)) +#define LEN_GPS (2*(BLOCK_GPS & 0xFF)) +#define LEN_PTU (2*(BLOCK_PTU & 0xFF)) + + +int crc16(int start, int len) { + int crc16poly = 0x1021; + int rem = 0xFFFF, i, j; + int byte; + + if (start+len >= FRAME_LEN) return -1; + + for (i = 0; i < len; i++) { + byte = framebyte(start+i); + rem = rem ^ (byte << 8); + for (j = 0; j < 8; j++) { + if (rem & 0x8000) { + rem = (rem << 1) ^ crc16poly; + } + else { + rem = (rem << 1); + } + rem &= 0xFFFF; + } + } + return rem; +} + +int get_FrameNb() { + int i; + unsigned byte; + uint8_t frnr_bytes[2]; + int frnr; + + for (i = 0; i < 2; i++) { + byte = framebyte(pos_FrameNb + i); + frnr_bytes[i] = byte; + } + + frnr = frnr_bytes[0] + (frnr_bytes[1] << 8); + gpx.frnr = frnr; + + return 0; +} + +int get_SondeID() { + int i, ret=0; + unsigned byte; + uint8_t sondeid_bytes[10]; + int crc_frame, crc; + + // BLOCK_CFG == frame[pos_FrameNb-2 .. pos_FrameNb-1] ? + crc_frame = framebyte(pos_FrameNb+LEN_CFG) | (framebyte(pos_FrameNb+LEN_CFG+1) << 8); + crc = crc16(pos_FrameNb, LEN_CFG); +/* + if (option_crc) { + //fprintf(stdout, " (%04X:%02X%02X) ", BLOCK_CFG, frame[pos_FrameNb-2], frame[pos_FrameNb-1]); + fprintf(stdout, " [%04X:%04X] ", crc_frame, crc); + } +*/ + ret = 0; + if ( 0 && option_crc && crc != crc_frame) { + ret = -2; // erst wichtig, wenn Cal/Cfg-Data + } + + for (i = 0; i < 8; i++) { + byte = framebyte(pos_SondeID + i); + if ((byte < 0x20) || (byte > 0x7E)) return -1; + sondeid_bytes[i] = byte; + } + + for (i = 0; i < 8; i++) { + gpx.id[i] = sondeid_bytes[i]; + } + gpx.id[8] = '\0'; + + return ret; +} + +char weekday[7][3] = { "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"}; + +int get_GPStime() { + int i, ret=0; + unsigned byte; + uint8_t gpstime_bytes[4]; + int gpstime = 0, // 32bit + day; + int ms; + int crc_frame, crc; + + // BLOCK_GPS == frame[posGPS_TOW-2 .. posGPS_TOW-1] ? + crc_frame = framebyte(posGPS_TOW+LEN_GPS) | (framebyte(posGPS_TOW+LEN_GPS+1) << 8); + crc = crc16(posGPS_TOW, LEN_GPS); +/* + if (option_crc) { + //fprintf(stdout, " (%04X:%02X%02X) ", BLOCK_GPS, frame[posGPS_TOW-2], frame[posGPS_TOW-1]); + fprintf(stdout, " [%04X:%04X] ", crc_frame, crc); + } +*/ + ret = 0; + if (option_crc && crc != crc_frame) { + ret = -2; + } + + for (i = 0; i < 4; i++) { + byte = framebyte(posGPS_TOW + i); + gpstime_bytes[i] = byte; + } + + memcpy(&gpstime, gpstime_bytes, 4); + ms = gpstime % 1000; + gpstime /= 1000; + + gpx.gpssec = gpstime; + Serial.printf("GPS time is %04x (%d)\n", gpstime, gpstime); + + day = (gpstime / (24 * 3600)) % 7; // besser CRC-check, da auch + //if ((day < 0) || (day > 6)) return -1; // gpssec=604800,604801 beobachtet + + gpstime %= (24*3600); + + gpx.wday = day; + gpx.std = gpstime / 3600; + gpx.min = (gpstime % 3600) / 60; + gpx.sek = gpstime % 60 + ms/1000.0; + + return ret; +} + +int get_Aux() { + int i; + unsigned short byte; + + for (i = 0; i < 4; i++) { + byte = framebyte(pos_AuxData+2*i)+(framebyte(pos_AuxData+2*i+1)<<8); + gpx.aux[i] = byte; + } + + return 0; +} + +int get_Cal() { + int i; + unsigned byte; + uint8_t calfr = 0; + //uint8_t burst = 0; + int freq = 0; + uint8_t freq_bytes[2]; + + byte = framebyte(pos_CalData); + calfr = byte; + + if (option_verbose == 4) { + fprintf(stdout, "\n"); + fprintf(stdout, "[%5d] ", gpx.frnr); + fprintf(stdout, " 0x%02x:", calfr); + } + for (i = 0; i < 16; i++) { + byte = framebyte(pos_CalData+1+i); + if (option_verbose == 4) { + fprintf(stdout, " %02x", byte); + } + } + if (option_aux) { + get_Aux(); + if (option_verbose == 4) { + fprintf(stdout, " # "); + for (i = 0; i < 8; i++) { + byte = framebyte(pos_AuxData+i); + fprintf(stdout, "%02x ", byte); + } + } + else { + if (gpx.aux[0] != 0 || gpx.aux[1] != 0 || gpx.aux[2] != 0 || gpx.aux[3] != 0) { + fprintf(stdout, " # %04x %04x %04x %04x", gpx.aux[0], gpx.aux[1], gpx.aux[2], gpx.aux[3]); + } + } + } + + if (calfr == 0x00) { + for (i = 0; i < 2; i++) { + byte = framebyte(pos_Calfreq + i); + freq_bytes[i] = byte; + } + byte = freq_bytes[0] + (freq_bytes[1] << 8); + //fprintf(stdout, ":%04x ", byte); + freq = 400000 + 10*byte; // kHz; + gpx.freq = freq; + fprintf(stdout, " : fq %d kHz", freq); + } + + return 0; +} + + +/* ---------------------------------------------------------------------------------------------------- */ + + + +//we only use ephs EPHEM_t alm[33]; +//EPHEM_t eph[33][24]; +EPHEM_t *ephs = NULL; + +SAT_t sat[33], + sat1s[33]; + + +uint8_t prn_le[12*5+4]; +/* le - little endian */ +int prnbits_le(uint16_t byte16, uint8_t bits[64], int block) { + int i; /* letztes bit Ueberlauf, wenn 3. PRN = 32 */ + for (i = 0; i < 15; i++) { + bits[15*block+i] = byte16 & 1; + byte16 >>= 1; + } + bits[60+block] = byte16 & 1; + return byte16 & 1; +} +uint8_t prns[12], // PRNs in data + sat_status[12]; +int prn32toggle = 0x1, ind_prn32, prn32next; +void prn12(uint8_t *prn_le, uint8_t prns[12]) { + int i, j, d; + for (i = 0; i < 12; i++) { + prns[i] = 0; + d = 1; + for (j = 0; j < 5; j++) { + if (prn_le[5*i+j]) prns[i] += d; + d <<= 1; + } + } + ind_prn32 = 32; + for (i = 0; i < 12; i++) { + // PRN-32 overflow + if ( (prns[i] == 0) && (sat_status[i] & 0x0F) ) { // 5 bit: 0..31 + if ( ((i % 3 == 2) && (prn_le[60+i/3] & 1)) // Spalte 2 + || ((i % 3 != 2) && (prn_le[5*(i+1)] & 1)) ) { // Spalte 0,1 + prns[i] = 32; ind_prn32 = i; + } + } + else if ((sat_status[i] & 0x0F) == 0) { // erste beiden bits: 0x03 ? + prns[i] = 0; + } + } + + prn32next = 0; + if (ind_prn32 < 12) { + // PRN-32 overflow + if (ind_prn32 % 3 != 2) { // -> ind_prn32<11 // vorausgesetzt im Block folgt auf PRN-32 + if ((sat_status[ind_prn32+1] & 0x0F) && prns[ind_prn32+1] > 1) { // entweder PRN-1 oder PRN-gerade + // && prns[ind_prn32+1] != 3 ? + for (j = 0; j < ind_prn32; j++) { + if (prns[j] == (prns[ind_prn32+1]^prn32toggle) && (sat_status[j] & 0x0F)) break; + } + if (j < ind_prn32) { prn32toggle ^= 0x1; } + else { + for (j = ind_prn32+2; j < 12; j++) { + if (prns[j] == (prns[ind_prn32+1]^prn32toggle) && (sat_status[j] & 0x0F)) break; + } + if (j < 12) { prn32toggle ^= 0x1; } + } + prns[ind_prn32+1] ^= prn32toggle; + /* + // nochmal testen + for (j = 0; j < ind_prn32; j++) { if (prns[j] == prns[ind_prn32+1]) break; } + if (j < ind_prn32) prns[ind_prn32+1] = 0; + else { + for (j = ind_prn32+2; j < 12; j++) { if (prns[j] == prns[ind_prn32+1]) break; } + if (j < 12) prns[ind_prn32+1] = 0; + } + if (prns[ind_prn32+1] == 0) { prn32toggle ^= 0x1; } + */ + } + prn32next = prns[ind_prn32+1]; // -> ind_prn32<11 && ind_prn32 % 3 != 2 + } + } +} + + +int calc_satpos_rnx(EPHEM_t eph[][24], double t, SAT_t *satp) { + double X, Y, Z, vX, vY, vZ; + int j, i, ti; + int week = 0; + double cl_corr, cl_drift; + double tdiff, td; + + for (j = 1; j < 33; j++) { + + // Woche hat 604800 sec + tdiff = WEEKSEC; + ti = 0; + for (i = 0; i < 24; i++) { + if (eph[j][i].prn > 0) { + if (t-eph[j][i].toe > WEEKSEC/2) rollover = +1; + else if (t-eph[j][i].toe < -WEEKSEC/2) rollover = -1; + else rollover = 0; + td = t-eph[j][i].toe - rollover*WEEKSEC; + if (td < 0) td *= -1; + + if ( td < tdiff ) { + tdiff = td; + ti = i; + week = eph[j][ti].week - rollover; + gpx.week = eph[j][ti].gpsweek - rollover; + } + } + } + + if (option_vel >= 2) { + GPS_SatellitePositionVelocity_Ephem( + week, t, eph[j][ti], + &cl_corr, &cl_drift, &X, &Y, &Z, &vX, &vY, &vZ + ); + satp[eph[j][ti].prn].clock_drift = cl_drift; + satp[eph[j][ti].prn].vX = vX; + satp[eph[j][ti].prn].vY = vY; + satp[eph[j][ti].prn].vZ = vZ; + } + else { + GPS_SatellitePosition_Ephem( + week, t, eph[j][ti], + &cl_corr, &X, &Y, &Z + ); + } + + satp[eph[j][ti].prn].X = X; + satp[eph[j][ti].prn].Y = Y; + satp[eph[j][ti].prn].Z = Z; + satp[eph[j][ti].prn].clock_corr = cl_corr; + + } + + return 0; +} + +int calc_satpos_rnx2(EPHEM_t *eph, double t, SAT_t *satp) { + double X, Y, Z, vX, vY, vZ; + int j; + int week = 0; + double cl_corr, cl_drift; + double tdiff, td; + int count, count0, satfound; + + for (j = 1; j < 33; j++) { + + count = count0 = 1; + satfound = 0; + + // Woche hat 604800 sec + tdiff = WEEKSEC; + while (eph[count].prn > 0) { + if (eph[count].prn == j) { + + satfound += 1; + + if (t - eph[count].toe > WEEKSEC/2) rollover = +1; + else if (t - eph[count].toe < -WEEKSEC/2) rollover = -1; + else rollover = 0; + td = fabs( t - eph[count].toe - rollover*WEEKSEC); + + if ( td < tdiff ) { + tdiff = td; + week = eph[count].week - rollover; + gpx.week = eph[count].gpsweek - rollover; + count0 = count; + } + } + count += 1; + } + + if ( satfound ) + { + if (option_vel >= 2) { + GPS_SatellitePositionVelocity_Ephem( + week, t, eph[count0], + &cl_corr, &cl_drift, &X, &Y, &Z, &vX, &vY, &vZ + ); + satp[j].clock_drift = cl_drift; + satp[j].vX = vX; + satp[j].vY = vY; + satp[j].vZ = vZ; + } + else { + GPS_SatellitePosition_Ephem( + week, t, eph[count0], + &cl_corr, &X, &Y, &Z + ); + } + + satp[j].X = X; + satp[j].Y = Y; + satp[j].Z = Z; + satp[j].clock_corr = cl_corr; + satp[j].ephtime = eph[count0].toe; + } + + } + + return 0; +} + + +typedef struct { + uint32_t tow; + uint8_t status; + int chips; + int deltachips; +} RANGE_t; +RANGE_t range[33]; + +int prn[12]; // valide PRN 0,..,k-1 + + +// pseudo.range = -df*pseudo.chips +// df = lightspeed/(chips/sec)/2^10 +const double df = 299792.458/1023.0/1024.0; //0.286183844 // c=299792458m/s, 1023000chips/s +// dl = L1/(chips/sec)/4 +const double dl = 1575.42/1.023/4.0; //385.0 // GPS L1 1575.42MHz=154*10.23MHz, dl=154*10/4 + +double pr_ofs; +double GPSsatAlt = 20200e3; + +int get_pseudorange() { + uint32_t gpstime; + uint8_t gpstime_bytes[4]; + uint8_t pseudobytes[4]; + uint32_t chipbytes, deltabytes; + int i, j, k; + uint8_t bytes[4]; + uint16_t byte16; + double pr0, prj; + + // GPS-TOW in ms + for (i = 0; i < 4; i++) { + gpstime_bytes[i] = framebyte(posGPS_TOW + i); + } + memcpy(&gpstime, gpstime_bytes, 4); + + // Sat Status + Serial.print("Sat status: "); + for (i = 0; i < 12; i++) { + sat_status[i] = framebyte(posGPS_STATUS + i); + Serial.printf("%d:%d ", i, sat_status[i]); + } + Serial.print("\n"); + + // PRN-Nummern + for (i = 0; i < 4; i++) { + for (j = 0; j < 2; j++) { + bytes[j] = frame[posGPS_PRN+2*i+j]; + } + memcpy(&byte16, bytes, 2); + prnbits_le(byte16, prn_le, i); + } + prn12(prn_le, prns); + + + // GPS Sat Pos (& Vel) + if (ephem) calc_satpos_rnx2(ephs, gpstime/1000.0, sat); + + // GPS Sat Pos t -= 1s + if (option_vel == 1) { + if (ephem) calc_satpos_rnx2(ephs, gpstime/1000.0-1, sat1s); + } + + k = 0; + for (j = 0; j < 12; j++) { + + // Pseudorange/chips + for (i = 0; i < 4; i++) { + pseudobytes[i] = frame[posGPS_DATA+8*j+i]; + } + memcpy(&chipbytes, pseudobytes, 4); + //Serial.printf("Chipbytes(%d): %04x\n",j, chipbytes); + + // delta_pseudochips / 385 + for (i = 0; i < 3; i++) { + pseudobytes[i] = frame[posGPS_DATA+8*j+4+i]; + } + deltabytes = 0; // bzw. pseudobytes[3]=0 (24 bit); deltabytes & (0xFF<<24) als + memcpy(&deltabytes, pseudobytes, 3); // gemeinsamer offset relevant in --vel1 ! + + //if ( (prns[j] == 0) && (sat_status[j] & 0x0F) ) prns[j] = 32; + range[prns[j]].tow = gpstime; + range[prns[j]].status = sat_status[j]; + + if ( chipbytes == 0x7FFFFFFF || chipbytes == 0x55555555 ) { + range[prns[j]].chips = 0; + continue; + } + if (option_vergps != 8) { + if ( chipbytes > 0x10000000 && chipbytes < 0xF0000000 ) { + range[prns[j]].chips = 0; + continue; + }} + + range[prns[j]].chips = chipbytes; + range[prns[j]].deltachips = deltabytes; + +/* + if (range[prns[j]].deltachips == 0x555555) { + range[prns[j]].deltachips = 0; + continue; + } +*/ + Serial.printf("j=%d: prns=%d status=%d dist=%f\n ", j, prns[j], sat_status[j], dist(sat[prns[j]].X, sat[prns[j]].Y, sat[prns[j]].Z, 0, 0, 0)); + //int o=prns[j]; + //Serial.printf("x=%f y=%f z=%f\n", sat[o].X, sat[o].Y, sat[o].Z); + if ( (prns[j] > 0) && ((sat_status[j] & 0x0F) == 0xF) + && (dist(sat[prns[j]].X, sat[prns[j]].Y, sat[prns[j]].Z, 0, 0, 0) > 6700000) ) + { + for (i = 0; i < k; i++) { if (prn[i] == prns[j]) break; } + if (i == k && prns[j] != exSat) { + //if ( range[prns[j]].status & 0xF0 ) // Signalstaerke > 0 ? + { + prn[k] = prns[j]; + k++; + } + } + } + + } + + + for (j = 0; j < 12; j++) { // 0x013FB0A4 + sat[prns[j]].pseudorange = /*0x01400000*/ - range[prns[j]].chips * df; + sat1s[prns[j]].pseudorange = -(range[prns[j]].chips - range[prns[j]].deltachips/dl)*df; + //+ sat[prns[j]].clock_corr - sat1s[prns[j]].clock_corr + sat[prns[j]].pseudorate = - range[prns[j]].deltachips * df / dl; + + sat[prns[j]].prn = prns[j]; + sat1s[prns[j]].prn = prns[j]; + } + + + pr0 = (double)0x01400000; + for (j = 0; j < k; j++) { + prj = sat[prn[j]].pseudorange + sat[prn[j]].clock_corr; + if (prj < pr0) pr0 = prj; + } + for (j = 0; j < k; j++) sat[prn[j]].PR = sat[prn[j]].pseudorange + sat[prn[j]].clock_corr - pr0 + GPSsatAlt; + // es kann PRNs geben, die zeitweise stark abweichende PR liefern; + // eventuell Standardabweichung ermitteln und fehlerhafte Sats weglassen + for (j = 0; j < k; j++) { // sat/sat1s... PR-check + sat1s[prn[j]].PR = sat1s[prn[j]].pseudorange + sat[prn[j]].clock_corr - pr0 + GPSsatAlt; + } + pr_ofs = pr0; + + return k; +} + +int get_GPSvel(double lat, double lon, double vel_ecef[3], + double *vH, double *vD, double *vU) { + // ECEF-Velocities + // ECEF-Vel -> NorthEastUp + double phi = lat*M_PI/180.0; + double lam = lon*M_PI/180.0; + double vN = -vel_ecef[0]*sin(phi)*cos(lam) - vel_ecef[1]*sin(phi)*sin(lam) + vel_ecef[2]*cos(phi); + double vE = -vel_ecef[0]*sin(lam) + vel_ecef[1]*cos(lam); + *vU = vel_ecef[0]*cos(phi)*cos(lam) + vel_ecef[1]*cos(phi)*sin(lam) + vel_ecef[2]*sin(phi); + // NEU -> HorDirVer + *vH = sqrt(vN*vN+vE*vE); + *vD = atan2(vE, vN) * 180 / M_PI; + if (*vD < 0) *vD += 360; + + return 0; +} + +double DOP[4]; + +int naiv_2Dfix(int N, SAT_t sats[], double alt) { +// simple 2D fix: 3 Sats & Alt above ellipsoid +// +// - fuer 3 unbekannte lat, lon, t braucht man mind. 3 Satelliten +// - fuer Iteration braucht man jedoch einen Startwert +// - es gibt direkte Methoden +// - hier werden die vorhandenen Funktionen benutzt: +// - der 4. Satellit im Erdmittelpunkt +// - seine pseudorange(+clock) wird grob geschaetzt +// (pseudochips liefern erst Rueckschluesse, wenn man Position kennt) +// - dann approximieren, bis Hoehe stimmt +// - bei 3-4 Satelliten ist die DOP-Konstellation oft schlecht +// - moeglicherweise ist in einigen Faellen die 2. Loesung besser + + double radius = 6371e3 + alt; // wird dann approximiert + double lat2d, lon2d, alt2d, + pos_ecef[3], rx_cl_bias, + dpos_ecef[3]; + //double d; + double rofs = 200000.0, rdiff = 0.0; + int k, k_limit; + double gdop = -1; + + + sats[3].X = sats[3].Y = sats[3].Z = 0; + + k = 0; + k_limit = 100; + + if (N >= 3) { + + do + { + // PR = pseudorange + clock_corr - pr_ofs + GPSsatAlt + sats[3].X = sats[3].Y = sats[3].Z = 0; + sats[3].PR = radius - rofs; + sats[3].pseudorange = sats[3].PR + pr_ofs - GPSsatAlt; + + + NAV_bancroft1(4, sats, pos_ecef, &rx_cl_bias); + //NAV_bancroft3(4, sats, pos_ecef1, &rx_cl_bias1, pos_ecef2, &rx_cl_bias2); + + ecef2elli(pos_ecef[0], pos_ecef[1], pos_ecef[2], &lat2d, &lon2d, &alt2d); + rdiff = alt-alt2d; + + rofs -= rdiff*1.2; + k += 1; + + } while (k < k_limit && fabs(rdiff) > 1.0); + + NAV_LinP(4, sats, pos_ecef, rx_cl_bias, dpos_ecef, &rx_cl_bias); + // for (j=0;j<3;j++) pos_ecef[j] += dpos_ecef[j]; + // NAV_LinP(4, sats, pos_ecef, rx_cl_bias, dpos_ecef, &rx_cl_bias); + // d = dist(0, 0, 0, dpos_ecef[0], dpos_ecef[1], dpos_ecef[2]); + + } + + if (calc_DOPn(4, sats, pos_ecef, DOP) == 0) { + gdop = sqrt(DOP[0]+DOP[1]+DOP[2]+DOP[3]); + } + //if (gdop > 2*dop_limit) gdop = -1; + //if (gdop < 0) gdop = -1; + + gpx.lat = lat2d; + gpx.lon = lon2d; + gpx.alt = alt2d; + gpx.dop = gdop; + + if ( fabs(alt2d-alt) > 1000.0 ) return -1; + if ( k == k_limit ) return 0; + return 1; +} + + +int get_GPSkoord(int N) { + double lat, lon, alt, rx_cl_bias; + double vH, vD, vU; + double pos_ecef[3], dpos_ecef[3], + vel_ecef[3], dvel_ecef[3]; + double gdop, gdop0 = 1000.0; + //double hdop, vdop, pdop; + int i0, i1, i2, i3, j; + int nav_ret = 0; + int num = 0; + SAT_t Sat_A[4]; +#if 0 + int k, n; + double lat1s, lon1s, alt1s, + lat0 , lon0 , alt0 , pos0_ecef[3]; + double pos1s_ecef[3]; + SAT_t Sat_B[12]; // N <= 12 + SAT_t Sat_B1s[12]; + SAT_t Sat_C[12]; // 11 + int exN = -1; +#endif + double diter = 0; + +#if 0 + if (option_vergps == 8) { + fprintf(stdout, " sats: "); + for (j = 0; j < N; j++) fprintf(stdout, "%02d ", prn[j]); + fprintf(stdout, "\n"); + } +#endif + + gpx.lat = gpx.lon = gpx.alt = 0; + + if (option_vergps != 2) { + for (i0=0;i0 0 && gdop < gdop0) { // wenn fehlerhafter Sat, diter wohl besserer Indikator + gpx.lat = lat; + gpx.lon = lon; + gpx.alt = alt; + gpx.dop = gdop; + gpx.diter = diter; + gpx.sats[0] = prn[i0]; gpx.sats[1] = prn[i1]; gpx.sats[2] = prn[i2]; gpx.sats[3] = prn[i3]; + gdop0 = gdop; + + if (option_vel == 4) { + gpx.vH = vH; + gpx.vD = vD; + gpx.vU = vU; + } + } + } + + }}}} + } + +#if 0 + if (option_vergps == 8 || option_vergps == 2) { + + for (j = 0; j < N; j++) Sat_B[j] = sat[prn[j]]; + for (j = 0; j < N; j++) Sat_B1s[j] = sat1s[prn[j]]; + + NAV_bancroft1(N, Sat_B, pos_ecef, &rx_cl_bias); + ecef2elli(pos_ecef[0], pos_ecef[1], pos_ecef[2], &lat, &lon, &alt); + gdop = -1; + if (calc_DOPn(N, Sat_B, pos_ecef, DOP) == 0) { + gdop = sqrt(DOP[0]+DOP[1]+DOP[2]+DOP[3]); + } + + NAV_LinP(N, Sat_B, pos_ecef, rx_cl_bias, dpos_ecef, &rx_cl_bias); + if (option_iter) { + for (j = 0; j < 3; j++) pos_ecef[j] += dpos_ecef[j]; + ecef2elli(pos_ecef[0], pos_ecef[1], pos_ecef[2], &lat, &lon, &alt); + } + gpx.diter = dist(0, 0, 0, dpos_ecef[0], dpos_ecef[1], dpos_ecef[2]); + + // Sat mit schlechten Daten suchen + if (gpx.diter > d_err) { + if (N > 5) { // N > 4 kann auch funktionieren + for (n = 0; n < N; n++) { + k = 0; + for (j = 0; j < N; j++) { + if (j != n) { + Sat_C[k] = Sat_B[j]; + k++; + } + } + for (j = 0; j < 3; j++) pos0_ecef[j] = 0; + NAV_bancroft1(N-1, Sat_C, pos0_ecef, &rx_cl_bias); + NAV_LinP(N-1, Sat_C, pos0_ecef, rx_cl_bias, dpos_ecef, &rx_cl_bias); + diter = dist(0, 0, 0, dpos_ecef[0], dpos_ecef[1], dpos_ecef[2]); + ecef2elli(pos0_ecef[0], pos0_ecef[1], pos0_ecef[2], &lat0, &lon0, &alt0); + if (diter < gpx.diter) { + gpx.diter = diter; + for (j = 0; j < 3; j++) pos_ecef[j] = pos0_ecef[j]; + lat = lat0; + lon = lon0; + alt = alt0; + exN = n; + } + } + if (exN >= 0) { + if (prn[exN] == prn32next) prn32toggle ^= 0x1; + for (k = exN; k < N-1; k++) { + Sat_B[k] = Sat_B[k+1]; + prn[k] = prn[k+1]; + if (option_vel == 1) { + Sat_B1s[k] = Sat_B1s[k+1]; + } + } + N = N-1; + if (calc_DOPn(N, Sat_B, pos_ecef, DOP) == 0) { + gdop = sqrt(DOP[0]+DOP[1]+DOP[2]+DOP[3]); + } + } + } +/* + if (exN < 0 && prn32next > 0) { + //prn32next used in pre-fix? prn32toggle ^= 0x1; + } +*/ + } + + if (option_vel == 1) { + NAV_bancroft1(N, Sat_B1s, pos1s_ecef, &rx_cl_bias); + if (option_iter) { + NAV_LinP(N, Sat_B1s, pos1s_ecef, rx_cl_bias, dpos_ecef, &rx_cl_bias); + for (j = 0; j < 3; j++) pos1s_ecef[j] += dpos_ecef[j]; + } + for (j = 0; j < 3; j++) vel_ecef[j] = pos_ecef[j] - pos1s_ecef[j]; + get_GPSvel(lat, lon, vel_ecef, &vH, &vD, &vU); + ecef2elli(pos1s_ecef[0], pos1s_ecef[1], pos1s_ecef[2], &lat1s, &lon1s, &alt1s); + if (option_vergps == 8) { + fprintf(stdout, "\ndeltachips1s lat: %.6f , lon: %.6f , alt: %.2f ", lat1s, lon1s, alt1s); + fprintf(stdout, " vH: %4.1f D: %5.1f° vV: %3.1f ", vH, vD, vU); + fprintf(stdout, "\n"); + } + } + if (option_vel >= 2) { + //fprintf(stdout, "\nP(%.1f,%.1f,%.1f) \n", pos_ecef[0], pos_ecef[1], pos_ecef[2]); + vel_ecef[0] = vel_ecef[1] = vel_ecef[2] = 0; + NAV_LinV(N, Sat_B, pos_ecef, vel_ecef, 0.0, dvel_ecef, &rx_cl_bias); + for (j=0; j<3; j++) vel_ecef[j] += dvel_ecef[j]; + //fprintf(stdout, " V(%.1f,%.1f,%.1f) ", vel_ecef[0], vel_ecef[1], vel_ecef[2]); + //fprintf(stdout, " rx_vel_bias: %.1f \n", rx_cl_bias); + /* 2. Iteration: + NAV_LinV(N, Sat_B, pos_ecef, vel_ecef, rx_cl_bias, dvel_ecef, &rx_cl_bias); + for (j=0; j<3; j++) vel_ecef[j] += dvel_ecef[j]; + //fprintf(stdout, " V(%.1f,%.1f,%.1f) ", vel_ecef[0], vel_ecef[1], vel_ecef[2]); + //fprintf(stdout, " rx_vel_bias: %.1f \n", rx_cl_bias); + */ + get_GPSvel(lat, lon, vel_ecef, &vH, &vD, &vU); + } + + if (option_vergps == 8) { + fprintf(stdout, "bancroft[%2d] lat: %.6f , lon: %.6f , alt: %.2f ", N, lat, lon, alt); + fprintf(stdout, " (d:%.1f)", gpx.diter); + if (option_vel) { + fprintf(stdout, " vH: %4.1f D: %5.1f° vV: %3.1f ", vH, vD, vU); + } + fprintf(stdout, " DOP["); + for (j = 0; j < N; j++) { + fprintf(stdout, "%d", prn[j]); + if (j < N-1) fprintf(stdout, ","); else fprintf(stdout, "] %.1f ", gdop); + } + fprintf(stdout, "\n"); + } + + if (option_vergps == 2) { + gpx.lat = lat; + gpx.lon = lon; + gpx.alt = alt; + gpx.dop = gdop; + num = N; + + if (option_vel) { + gpx.vH = vH; + gpx.vD = vD; + gpx.vU = vU; + } + } + + } +#endif + + return num; +} + + +/* ------------------------------------------------------------------------------------ */ + + +int print_position() { // GPS-Hoehe ueber Ellipsoid + int j, k = 0, n = 0; + int err1, err2, fix2d = 0; + + err1 = 0; + if (!option_verbose) err1 = err_gps; + err1 |= get_FrameNb(); + err1 |= get_SondeID(); + + err2 = err1 | err_gps; + //err2 |= get_GPSweek(); + err2 |= get_GPStime(); + +#if 0 + Serial.printf("ephem=%d\n",ephem); + Serial.printf("print_position: ephs is %p\n", ephs); +#endif + + if (!err2 && (almanac || ephem)) { + k = get_pseudorange(); + gpx.k = k; + Serial.printf("k=%d\n", k); + if (k >= 4) { + n = get_GPSkoord(k); + } + if (k == 3) { + SAT_t Sat_A[4]; + for (j = 0; j < 3; j++) { Sat_A[j] = sat[prn[j]]; } + fix2d = naiv_2Dfix( 3, Sat_A, sonde.config.rs92.alt2d); + } + } + + if (!err1) { + fprintf(stdout, "[%5d] ", gpx.frnr); + fprintf(stdout, "(%s) ", gpx.id); + } + + if (!err2) { + if (option_verbose) { + Gps2Date(gpx.week, gpx.gpssec, &gpx.jahr, &gpx.monat, &gpx.tag); + //fprintf(stdout, "(W %d) ", gpx.week); + fprintf(stdout, "(%04d-%02d-%02d) ", gpx.jahr, gpx.monat, gpx.tag); + } + fprintf(stdout, "%s ", weekday[gpx.wday]); // %04.1f: wenn sek >= 59.950, wird auf 60.0 gerundet + fprintf(stdout, "%02d:%02d:%06.3f", gpx.std, gpx.min, gpx.sek); + + if (k == 3 && fix2d > 0 && gpx.dop > 0 && gpx.dop < 2*dop_limit) { + fprintf(stdout, " 2D lat: %.5f lon: %.5f alt: %.1f ", gpx.lat, gpx.lon, gpx.alt); + fprintf(stdout, " DOP[%02d,%02d,%02d,0] %.1f ", prn[0], prn[1], prn[2], gpx.dop); + } + else if (n > 0) { + fprintf(stdout, " "); + + if (almanac) fprintf(stdout, " lat: %.4f lon: %.4f alt: %.1f ", gpx.lat, gpx.lon, gpx.alt); + else fprintf(stdout, " lat: %.5f lon: %.5f alt: %.1f ", gpx.lat, gpx.lon, gpx.alt); + + if (option_verbose && option_vergps != 8) { + fprintf(stdout, " (d:%.1f)", gpx.diter); + } + if (option_vel /*&& option_vergps >= 2*/) { + fprintf(stdout," vH: %4.1f D: %5.1f° vV: %3.1f ", gpx.vH, gpx.vD, gpx.vU); + } + if (option_verbose) { + if (option_vergps != 2) { + fprintf(stdout, " DOP[%02d,%02d,%02d,%02d] %.1f", + gpx.sats[0], gpx.sats[1], gpx.sats[2], gpx.sats[3], gpx.dop); + } + else { // wenn option_vergps=2, dann n=N=k(-1) + fprintf(stdout, " DOP["); + for (j = 0; j < n; j++) { + fprintf(stdout, "%d", prn[j]); + if (j < n-1) fprintf(stdout, ","); else fprintf(stdout, "] %.1f ", gpx.dop); + } + } + } + } + + get_Cal(); + + if (option_vergps == 8 /*|| option_vergps == 2*/) + { + fprintf(stdout, "\n"); + for (j = 0; j < 60; j++) { fprintf(stdout, "%d", prn_le[j]); if (j % 5 == 4) fprintf(stdout, " "); } + fprintf(stdout, ": "); + for (j = 0; j < 12; j++) fprintf(stdout, "%2d ", prns[j]); + fprintf(stdout, "\n"); + fprintf(stdout, " status: "); + for (j = 0; j < 12; j++) fprintf(stdout, "%02X ", sat_status[j]); //range[prns[j]].status + fprintf(stdout, "\n"); + } + + } + + if (!err1) { + fprintf(stdout, "\n"); + //if (option_vergps == 8) fprintf(stdout, "\n"); + } + + return err2; +} + +void print_frame(uint8_t *data, int len) { + int i; + uint8_t byte; + + for (i = 0; i + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef inttypes_h + #include +#endif + +#define N 255 +#define R 24 +#define K (N-R) + +void *init_rs_char(int symsize,int gfpoly,int fcr,int prim,int nroots,int pad); +int decode_rs_char(void *arg, + unsigned char *data, int *eras_pos, int no_eras); + +void *rs; + +void initrsc() +{ + rs = init_rs_char( 8, 0x11d, 0, 1, R, 0); +} + + +int decodersc(char *data, uint32_t *eras_pos, uint32_t no_eras) +{ + return decode_rs_char(rs, (unsigned char *)data, (int *)eras_pos, no_eras); +} diff --git a/RX_FSK/src/rsc.h b/RX_FSK/src/rsc.h new file mode 100644 index 0000000..a73575c --- /dev/null +++ b/RX_FSK/src/rsc.h @@ -0,0 +1,17 @@ +/* + * dxlAPRS toolchain + * + * Copyright (C) Christian Rabler + * + * SPDX-License-Identifier: GPL-2.0+ + */ +#ifndef rsc_H_ +#define rsc_H_ + + +long decodersc(char [], uint32_t [], uint32_t); + +void initrsc(void); + + +#endif /* rsc_H_ */ diff --git a/RX_FSK/src/rsc_decode.cpp b/RX_FSK/src/rsc_decode.cpp new file mode 100644 index 0000000..eb102b4 --- /dev/null +++ b/RX_FSK/src/rsc_decode.cpp @@ -0,0 +1,436 @@ +/* + * Copyright 2016 Hannes Schmelzer, OE5HPM + * doing several cleanups and architecture changes, no functional change yet + * + * General purpose Reed-Solomon decoder for 8-bit symbols or less + * Copyright 2003 Phil Karn, KA9Q + * May be used under the terms of the GNU Lesser General Public License (LGPL) + * + * The guts of the Reed-Solomon decoder, meant to be #included + * into a function body with the following typedefs, macros and variables supplied + * according to the code parameters: + + * data_t - a typedef for the data symbol + * data_t data[] - array of rs->nn data and parity symbols to be corrected in place + * retval - an integer lvalue into which the decoder's return code is written + * NROOTS - the number of roots in the RS code generator polynomial, + * which is the same as the number of parity symbols in a block. + Integer variable or literal. + * rs->nn - the total number of symbols in a RS block. Integer variable or literal. + * rs->pad - the number of pad symbols in a block. Integer variable or literal. + * rs->alpha_to - The address of an array of rs->nn elements to convert Galois field + * elements in index (log) form to polynomial form. Read only. + * rs->index_of - The address of an array of rs->nn elements to convert Galois field + * elements in polynomial form to index (log) form. Read only. + * MODNN - a function to reduce its argument modulo rs->nn. May be inline or a macro. + * rs->fcr - An integer literal or variable specifying the first consecutive root of the + * Reed-Solomon generator polynomial. Integer variable or literal. + * rs->prim - The primitive root of the generator poly. Integer variable or literal. + * DEBUG - If set to 1 or more, do various internal consistency checking. Leave this + * undefined for production code + + * The memset(), memmove(), and memcpy() functions are used. The appropriate header + * file declaring these functions (usually ) must be included by the calling + * program. + */ +#include +#include +#include + +struct rs { + unsigned int magic; /* struct magic */ + int mm; /* Bits per symbol */ + int nn; /* Symbols per block (= (1<= rs->nn) { + x -= rs->nn; + x = (x >> rs->mm) + (x & rs->nn); + } + return x; +} + +#define MODNN(x) modnn(rs, x) +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MAGIC 0xABCD6722 + +void free_rs_char(void *arg) +{ + struct rs *rs = (struct rs *)arg; + + if (rs == NULL) + return; + if (rs->magic != MAGIC) + return; + + if (rs->alpha_to != NULL) + free(rs->alpha_to); + if (rs->index_of != NULL) + free(rs->index_of); + if (rs->genpoly != NULL) + free(rs->genpoly); + free(rs); +} + +/* Initialize a Reed-Solomon codec + * symsize = symbol size, bits + * gfpoly = Field generator polynomial coefficients + * fcr = first root of RS code generator polynomial, index form + * prim = primitive element to generate polynomial roots + * nroots = RS code generator polynomial degree (number of roots) + * pad = padding bytes at front of shortened block + */ +void *init_rs_char(int symsize, int gfpoly, int fcr, int prim, + int nroots, int pad) +{ + struct rs *rs; + + int i, j, sr,root,iprim; + + /* Check parameter ranges */ + if (symsize < 0 || symsize > 8*sizeof(unsigned char)) + return NULL; + if (fcr < 0 || fcr >= (1<= (1<= (1<= ((1<magic = MAGIC; + + rs->mm = symsize; + rs->nn = (1<pad = pad; + + rs->alpha_to = (unsigned char *)malloc(sizeof(unsigned char)*(rs->nn+1)); + if (rs->alpha_to == NULL) { + free(rs); + return NULL; + } + rs->index_of = (unsigned char *)malloc(sizeof(unsigned char)*(rs->nn+1)); + if (rs->index_of == NULL) { + free(rs->alpha_to); + free(rs); + return NULL; + } + + /* Generate Galois field lookup tables */ + rs->index_of[0] = rs->nn; /* log(zero) = -inf */ + rs->alpha_to[rs->nn] = 0; /* alpha**-inf = 0 */ + sr = 1; + for (i = 0; i < rs->nn; i++) { + rs->index_of[sr] = i; + rs->alpha_to[i] = sr; + sr <<= 1; + if (sr & (1<nn; + } + if (sr != 1) { + /* field generator polynomial is not primitive! */ + free(rs->alpha_to); + free(rs->index_of); + free(rs); + return NULL; + } + + /* Form RS code generator polynomial from its roots */ + rs->genpoly = (unsigned char *)malloc(sizeof(unsigned char)*(nroots+1)); + if(rs->genpoly == NULL) { + free(rs->alpha_to); + free(rs->index_of); + free(rs); + return NULL; + } + rs->fcr = fcr; + rs->prim = prim; + rs->nroots = nroots; + + /* Find prim-th root of 1, used in decoding */ + for (iprim = 1; (iprim % prim) != 0; iprim += rs->nn) + ; + rs->iprim = iprim / prim; + + rs->genpoly[0] = 1; + for (i = 0, root = fcr*prim; i < nroots; i++, root += prim) { + rs->genpoly[i+1] = 1; + + /* Multiply rs->genpoly[] by @**(root + x) */ + for (j = i; j > 0; j--) { + if (rs->genpoly[j] != 0) + rs->genpoly[j] = rs->genpoly[j-1] ^ rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[j]] + root)]; + else + rs->genpoly[j] = rs->genpoly[j-1]; + } + /* rs->genpoly[0] can never be zero */ + rs->genpoly[0] = rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[0]] + root)]; + } + /* convert rs->genpoly[] to index form for quicker encoding */ + for (i = 0; i <= nroots; i++) + rs->genpoly[i] = rs->index_of[rs->genpoly[i]]; + + return rs; +} + +int decode_rs_char(void *arg, + unsigned char *data, int *eras_pos, int no_eras) +{ + struct rs *rs = (struct rs *)arg; + + if (rs == NULL) + return -1; + if (rs->magic != MAGIC) + return -1; + + int retval; + int deg_lambda, el, deg_omega; + int i, j, r,k; + + unsigned char u,q,tmp,num1,num2,den,discr_r; + unsigned char lambda[rs->nroots+1], s[rs->nroots]; /* Err+Eras Locator poly + * and syndrome poly */ + unsigned char b[rs->nroots+1], t[rs->nroots+1], omega[rs->nroots+1]; + unsigned char root[rs->nroots], reg[rs->nroots+1], loc[rs->nroots]; + int syn_error, count; + + /* form the syndromes; i.e., evaluate data(x) at roots of g(x) */ + for (i = 0; i < rs->nroots; i++) + s[i] = data[0]; + + for (j = 1; j < rs->nn-rs->pad; j++) { + for(i=0;inroots;i++) { + if(s[i] == 0) { + s[i] = data[j]; + } else { + s[i] = data[j] ^ rs->alpha_to[MODNN(rs->index_of[s[i]] + (rs->fcr+i)*rs->prim)]; + } + } + } + + /* Convert syndromes to index form, checking for nonzero condition */ + syn_error = 0; + for (i = 0; i < rs->nroots; i++) { + syn_error |= s[i]; + s[i] = rs->index_of[s[i]]; + } + + if (!syn_error) { + /* if syndrome is zero, data[] is a codeword and there are no + * errors to correct. So return data[] unmodified + */ + count = 0; + goto finish; + } + memset(&lambda[1], 0, rs->nroots*sizeof(lambda[0])); + lambda[0] = 1; + + if (no_eras > 0) { + /* Init lambda to be the erasure locator polynomial */ + lambda[1] = rs->alpha_to[MODNN(rs->prim*(rs->nn-1-eras_pos[0]))]; + for (i = 1; i < no_eras; i++) { + u = MODNN(rs->prim*(rs->nn-1-eras_pos[i])); + for (j = i+1; j > 0; j--) { + tmp = rs->index_of[lambda[j - 1]]; + if(tmp != rs->nn) + lambda[j] ^= rs->alpha_to[MODNN(u + tmp)]; + } + } + + #if DEBUG >= 1 + /* Test code that verifies the erasure locator polynomial just constructed + Needed only for decoder debugging. */ + + /* find roots of the erasure location polynomial */ + for(i=1;i<=no_eras;i++) + reg[i] = rs->index_of[lambda[i]]; + + count = 0; + for (i = 1,k=rs->iprim-1; i <= rs->nn; i++,k = MODNN(k+rs->iprim)) { + q = 1; + for (j = 1; j <= no_eras; j++) + if (reg[j] != rs->nn) { + reg[j] = MODNN(reg[j] + j); + q ^= rs->alpha_to[reg[j]]; + } + if (q != 0) + continue; + /* store root and error location number indices */ + root[count] = i; + loc[count] = k; + count++; + } + if (count != no_eras) { + printf("count = %d no_eras = %d\n lambda(x) is WRONG\n",count,no_eras); + count = -1; + goto finish; + } + #if DEBUG >= 2 + printf("\n Erasure positions as determined by roots of Eras Loc Poly:\n"); + for (i = 0; i < count; i++) + printf("%d ", loc[i]); + printf("\n"); + #endif + #endif + } + for (i = 0; i < rs->nroots+1; i++) + b[i] = rs->index_of[lambda[i]]; + + /* + * Begin Berlekamp-Massey algorithm to determine error+erasure + * locator polynomial + */ + r = no_eras; + el = no_eras; + while (++r <= rs->nroots) { /* r is the step number */ + /* Compute discrepancy at the r-th step in poly-form */ + discr_r = 0; + for (i = 0; i < r; i++) { + if ((lambda[i] != 0) && (s[r-i-1] != rs->nn)) { + discr_r ^= rs->alpha_to[MODNN(rs->index_of[lambda[i]] + s[r-i-1])]; + } + } + discr_r = rs->index_of[discr_r]; /* Index form */ + if (discr_r == rs->nn) { + /* 2 lines below: B(x) <-- x*B(x) */ + memmove(&b[1],b,rs->nroots*sizeof(b[0])); + b[0] = rs->nn; + } else { + /* 7 lines below: T(x) <-- lambda(x) - discr_r*x*b(x) */ + t[0] = lambda[0]; + for (i = 0 ; i < rs->nroots; i++) { + if(b[i] != rs->nn) + t[i+1] = lambda[i+1] ^ rs->alpha_to[MODNN(discr_r + b[i])]; + else + t[i+1] = lambda[i+1]; + } + if (2 * el <= r + no_eras - 1) { + el = r + no_eras - el; + /* + * 2 lines below: B(x) <-- inv(discr_r) * + * lambda(x) + */ + for (i = 0; i <= rs->nroots; i++) + b[i] = (lambda[i] == 0) ? rs->nn : MODNN(rs->index_of[lambda[i]] - discr_r + rs->nn); + } else { + /* 2 lines below: B(x) <-- x*B(x) */ + memmove(&b[1],b,rs->nroots*sizeof(b[0])); + b[0] = rs->nn; + } + memcpy(lambda,t,(rs->nroots+1)*sizeof(t[0])); + } + } + + /* Convert lambda to index form and compute deg(lambda(x)) */ + deg_lambda = 0; + for (i = 0;i < rs->nroots+1; i++){ + lambda[i] = rs->index_of[lambda[i]]; + if(lambda[i] != rs->nn) + deg_lambda = i; + } + /* Find roots of the error+erasure locator polynomial by Chien search */ + memcpy(®[1], &lambda[1], rs->nroots*sizeof(reg[0])); + count = 0; /* Number of roots of lambda(x) */ + for (i = 1,k=rs->iprim-1; i <= rs->nn; i++,k = MODNN(k+rs->iprim)) { + q = 1; /* lambda[0] is always 0 */ + for (j = deg_lambda; j > 0; j--) { + if (reg[j] != rs->nn) { + reg[j] = MODNN(reg[j] + j); + q ^= rs->alpha_to[reg[j]]; + } + } + if (q != 0) + continue; /* Not a root */ + /* store root (index-form) and error location number */ + #if DEBUG>=2 + printf("count %d root %d loc %d\n",count,i,k); + #endif + root[count] = i; + loc[count] = k; + /* If we've already found max possible roots, + * abort the search to save time + */ + if(++count == deg_lambda) + break; + } + if (deg_lambda != count) { + /* + * deg(lambda) unequal to number of roots => uncorrectable + * error detected + */ + count = -1; + goto finish; + } + /* + * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo + * x**rs->nroots). in index form. Also find deg(omega). + */ + deg_omega = deg_lambda-1; + for (i = 0; i <= deg_omega;i++) { + tmp = 0; + for (j = i; j >= 0; j--) { + if ((s[i - j] != rs->nn) && (lambda[j] != rs->nn)) + tmp ^= rs->alpha_to[MODNN(s[i - j] + lambda[j])]; + } + omega[i] = rs->index_of[tmp]; + } + /* + * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 = + * inv(X(l))**(rs->fcr-1) and den = lambda_pr(inv(X(l))) all in poly-form + */ + for (j = count-1; j >=0; j--) { + num1 = 0; + for (i = deg_omega; i >= 0; i--) { + if (omega[i] != rs->nn) + num1 ^= rs->alpha_to[MODNN(omega[i] + i * root[j])]; + } + num2 = rs->alpha_to[MODNN(root[j] * (rs->fcr - 1) + rs->nn)]; + den = 0; + + /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */ + for (i = MIN(deg_lambda, rs->nroots-1) & ~1; i >= 0; i -=2) { + if(lambda[i+1] != rs->nn) + den ^= rs->alpha_to[MODNN(lambda[i+1] + i * root[j])]; + } + #if DEBUG >= 1 + if (den == 0) { + printf("\n ERROR: denominator = 0\n"); + count = -1; + goto finish; + } + #endif + /* Apply error to data */ + if (num1 != 0 && loc[j] >= rs->pad) { + data[loc[j]-rs->pad] ^= rs->alpha_to[MODNN(rs->index_of[num1] + rs->index_of[num2] + rs->nn - rs->index_of[den])]; + } + } + finish: + if(eras_pos != NULL) { + for (i = 0; i < count; i++) + eras_pos[i] = loc[i]; + } + retval = count; + + return retval; +} diff --git a/RX_FSK/update.ino.bin b/RX_FSK/update.ino.bin new file mode 100644 index 0000000000000000000000000000000000000000..18dea712716b7dec31d17afc65076fa38ed2a980 GIT binary patch literal 1094496 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Ν)@s$y!U|zn19jDOy(x;J@@QpM&kd< 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ξznmjC%KN=ilFPKB*EHrek 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

E%?e7UL3dUz8(f*^A>I!b?Ac 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 <7@{joLHAX2loi~4HDnV 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

fQvXe|trV_SPL6k$p}XdD6KSdCED>35X!5l&^7u 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

Pn>(>>#wT>Sp%hdHWv#9)w8{;F$i> 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

cJOipe7^ZpW-vO_Dw?=~4=< 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 literal 0 HcmV?d00001 diff --git a/RX_FSK/version.h b/RX_FSK/version.h new file mode 100644 index 0000000..3281d33 --- /dev/null +++ b/RX_FSK/version.h @@ -0,0 +1,4 @@ +const char *version_name = "RadioSonde"; +const char *version_id = "1.0.0"; +const int SPIFFS_MAJOR=1; +const int SPIFFS_MINOR=0; diff --git a/Setup.md b/Setup.md new file mode 100755 index 0000000..919703f --- /dev/null +++ b/Setup.md @@ -0,0 +1,99 @@ +# Près-requis + + + +## Arduino IDE + +Avoir une version à jour exemple 1.8.13(juillet2020) + +## ESP32 support + +Fichier -> Préférences + +en bas dans la case "URL de gestionnaire de cartes supplémentaires" + +Ajouter *https://dl.espressif.com/dl/package_esp32_index.json* et appuier sur oK + +Puis dans Outils +Outils -> type de cartes -> Gestionnaire de cartes + +dans la case de recherche taper "esp32" + +Installer "esp32 by Espressif Systems" + +Puis après + +## ESP32 Flash Filesystem Upload support + +Télécharger le fichier zip de la dernière version +https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/ + +Décompresser l'archive dans le répértoire tools de votre Arduino IDE + +## Ajouter les bibliothèques + +Séléctionner Outils -> Gestionnaire de bibliothèques + +Installer "U8g2" + +Installer "MicroNMEA" + +mais pour les fonts, car le TTGO fonctionne avec OLED SSD1306 par défaut! + +## Ajouter les bibliothèques, parties 2 + +Depuis https://github.com/me-no-dev/ESPAsyncWebServer télécharger le ZIP , l'extraire dans "libraries" +, renommer le répertoire en ESPAsyncWebServer (supprimer juste "-master") + +Depuis https://github.com/me-no-dev/AsyncTCP télécharger le ZIP, l'extraire dans "libraries", et renommer le répertoire en AsyncTCP + +de même pour https://github.com/lewisxhe/AXP202X_Library télécharger le ZIP, l'extraire dans "libraries", et renommer le répertoire en AXP202X_Library + + +## Ajouter les bibliothèques, parties 3 + +Copier libraries/SX1278FSK +et libraries/SondeLib +et libraries/fonts + +fourni dans libraries + + +``` +ou sous Linux un lien symbolique est aussi possible mais pas obligatoire! +cd ~/Arduino/libraries +ln -s /radiosonde/libraries/SondeLib/ . +ln -s /radiosonde/libraries/SX1278FSK/ . +``` +Redémarrer Arduino IDE + +## Ajout carte esp32 + +Allez dans Outils-> type de cartes -> gestionnaire de cartes + +puis dans la case taper esp32 et Installer. + +## Dernière parties + +Dans Outils -> Esp32 arduino: -> +Séléctionner "TTGO LoRa32-OLED v1" + +Puis il vous faut ouvrir le fichier +RadioSonde_FSK.ino + +Compiler et Téléverser le dans votre TTGO + +puis il faut téléverser maintenant les DATA! + +Dans Outils +cliquer sur ESP32 Sketch Data Upload + +voila le TTGO est prêt! + +Pour les futur mise à jour, +j'ai prévue une mise à jour directe via OTA depuis le TTGO donc +s'il est connecté à internet depuis votre Smartphone ou votre Box. +Cela se fera depuis le menu de la page Web. +73 +Xavier +