From 686d90a2c1ce672aa1016d5f9b1e9346c0481542 Mon Sep 17 00:00:00 2001 From: MikuQ Date: Sun, 1 Jan 2017 13:23:03 +0800 Subject: [PATCH] support BPI-M2U --- MikuPi.cpp | 24 ++++++++++++++++++++++-- MikuPi.h | 5 +++-- boards/bpi-m2u.h | 0 examples/apple | Bin 0 -> 7928 bytes examples/arg_oled | Bin 0 -> 8064 bytes examples/blink | Bin 0 -> 6896 bytes examples/blink-qubot | Bin 0 -> 6868 bytes examples/oled | Bin 0 -> 7448 bytes examples/oled_text | Bin 0 -> 8352 bytes examples/pwmtest | Bin 0 -> 8512 bytes examples/relay | Bin 0 -> 7352 bytes examples/sht2x | Bin 0 -> 7392 bytes 12 files changed, 25 insertions(+), 4 deletions(-) create mode 100755 boards/bpi-m2u.h create mode 100755 examples/apple create mode 100755 examples/arg_oled create mode 100755 examples/blink create mode 100755 examples/blink-qubot create mode 100755 examples/oled create mode 100755 examples/oled_text create mode 100755 examples/pwmtest create mode 100755 examples/relay create mode 100755 examples/sht2x diff --git a/MikuPi.cpp b/MikuPi.cpp index 074d6a6..49fdbd8 100755 --- a/MikuPi.cpp +++ b/MikuPi.cpp @@ -30,7 +30,7 @@ const char *i2cDevices[3] = "/dev/i2c-2" } ; -const char *piModelNames [7] = +const char *piModelNames [9] = { "Unknown", "BPI-M1", @@ -39,9 +39,10 @@ const char *piModelNames [7] = "BPI-M1+", "BPI-M3", "BPI-M2+", + "BPI-M2U", } ; -const char *piModelFullNames [7] = +const char *piModelFullNames [9] = { "Unknown", "BananaPi-M1", @@ -50,6 +51,7 @@ const char *piModelFullNames [7] = "BananaPi-M1+", "BananaPi-M3", "BananaPi-M2+", + "BananaPi-M2U", } ; int MikuPiDebug = FALSE; @@ -88,6 +90,14 @@ static int wPinToGpioM3 [32] = 204,132,205,133, 146,147,227,226 } ; +static int wPinToGpioM2u [32] = +{ + 276,273,277,249, 272,250,251,35, + 53,52,87,248, 64,65,66,274, + 275,-1,-1,-1, -1,224,225,226, + 227,228,116,231, 230,229,257,256 +} ; + const int bPinTowPin[41] = { -1, // 0 @@ -225,6 +235,12 @@ void piBoardId(int *model, int *mem) *model = PI_MODEL_M3; *mem = 2048; } + if (strstr(line,"sun8iw11p1") != NULL) + { + //R40-M2U + *model = PI_MODEL_M2u; + *mem = 2048; + } if (MikuPiDebug) { printf ("Hardware:%s\n",line) ; @@ -303,6 +319,10 @@ void mikuPiSetup (void) wPinToGpio=wPinToGpioM2p; i2cDevice=(char *)i2cDevices[0]; } + if (model == PI_MODEL_M2u) { + wPinToGpio=wPinToGpioM2u; + i2cDevice=(char *)i2cDevices[2]; + } if (model == PI_MODEL_M3) { wPinToGpio=wPinToGpioM3; i2cDevice=(char *)i2cDevices[2]; diff --git a/MikuPi.h b/MikuPi.h index 918806a..3d096a8 100755 --- a/MikuPi.h +++ b/MikuPi.h @@ -28,14 +28,15 @@ #define PI_MODEL_M1p 4 #define PI_MODEL_M3 5 #define PI_MODEL_M2p 6 +#define PI_MODEL_M2u 7 extern char *i2cDevice; extern const int bPinTowPin[41]; #define VERSION "0.31" -extern const char *piModelNames [7] ; -extern const char *piModelFullNames [7]; +extern const char *piModelNames [9] ; +extern const char *piModelFullNames [9]; void delay (unsigned int howLong); diff --git a/boards/bpi-m2u.h b/boards/bpi-m2u.h new file mode 100755 index 0000000..e69de29 diff --git a/examples/apple b/examples/apple new file mode 100755 index 0000000000000000000000000000000000000000..d40bdb27e3a9b9e1fbaa3862a5e0b73fd2225989 GIT binary patch literal 7928 zcmb_hdu&_P89&!{gWD$5=>yU>0&mN@PE#DGP0M32Ij<(^k~V7t>#B;|>)2^b9ow_7 z+k|yA9ThN9Xa_-bFOqE)`-f>kV-wpbV-rG%Z5m8_u<=+PSPQRFGzJwac)#C0_oT-r zOhe*Rj?edl9E#5^6{xA(1W6YDu`F`=Uh+UUp#gk2;6Nys4sE0YZBT|jc5J%_zZgFh>IPBBUx~soApg4OPkPtaUH5Lyvj?6D z9sBq3zxJN=RD-8{y#P3DMecZX{WJI1wRJ=`MPlUnQSgakDataG;K{pxGg%YHF?=b>G% z-!t-T^2N{XyZ!sAhHY2B)zbdwS9jhvRQ>x6JsUpuhsE!{cJl*Ue_(X}{8xYf;@Z*< zg!rA-5ClF~M*mQw>Hpgr9R$9VgXlsKbprInGL9z4c(oXIF!@9M7VytjNF~x7M+KyJ zgEhAFy#9@fiJJUvW&GR9_zlvu(@Ob6pml%jGCBg8J$~#F)XPPc*os;K^*5E->i~V; zzZ&r=C5)Q#`^)H~W%S);bQJV3`agx5{STJ;C$Nrt68rOQ`9vy>6)eo%+pb`Pxjh+= zZHmVCB~tANN?R|>4Wus{Z>^0qVp?%4nlSUJgNank?9XJ(Otz8E@9Xb3 zbKH83!tCnnF=O#8e9qbNY+p}nGM$R|S8uT7Y;lbZS&5V|<1x#&z=-B@vR%j7p~H#8cj9i1N_4cgnj1r# zL`Qd5ORKpd#6!~oo(}3HlQox$2Pc6%{fH5`mSqcn9|6U)Cx~**x)B@=UU5VUI#Qnm zPCj8}B2h*CueAV{v9!9hHF_Fly-J9qtS`j*6{&yevqHS$A3Z(io2oDPrp5~wP92}}pLwM4pbt(x zetahI zCwSLCh1fBBNwL9rx>$Vq39lg{n44P2)WU{0ymzWX>?Hpi0kjE;8!L(p)AwK;)mc#& z7%$X8-U#fSYObD`{@$fWrhXlmoTlA!J?bdE0Op`30=wZqIkp3%r)&NJe~mD{FZ@^m z^c-b5SF|s}CmcD<&KiH@^xPDDR`%a17ME;plef>@0h>PPpF%Be zJw11lXSmDrKh-lc3f?Hb;RyNRiRsGl(t?dPBQP;*d}d;{GQ75MlgsmihvoG0F7SJy zb2r+%fgeR3DbqQi>1+@av$ufu!xqQ!U&Z2+m11pS1Z}>jK0iah-o*R}#55=I&E-D& z#nM7$U}=H+2J{zU4Coi<(j#_Gb4)nz*J}2PMNwkMfDbt7O?iRtdW z2-`U}AbP)*;8gLiA0)T`aDF?A#=F{V5czgK5qo_Zp)kE0amaLpZcBN!h3nk#8GE zCMQRo>qN(E-Yp)+cZtj2D;|EXSUlW~8gqVl4mH~eb+}(*7`JnX7YY1Th364*o;#JO zhjBM!?!+AA8Iv$}W6;1@hVe-!Xx^2Kk^b{uF+GOZ4C5@$VP7!j>Gl{-%ySp);fQk1 zG8`!m@WkxIym93XqA(8P{m(ckfPRVlQS%;Ue~gt_zgH}#pIBswB5LYlzot)s{;0DtseP$@D4I_o3{J#Eh}58!8x*0~NDB63ZD%FtKs=jEq*En?30^jy zq`X8jNn3;xsRVxQ_%MD4K!BBYZr4!rj-C*j>8C^!v0)L451Ip6YbY)?O)HzVMx>^~ zukS}k=)@XI^uvKP3`>K!twpFmJv0#vC5?*}z;#XVI=e#dFG+KE z;I5tLbNAuBQ3Kz5l9rM6Rr54=mE6yg z&)p^Wv!uBj@%`=|@d~+X)t>P>FBZ9fr95}75XZ2e310UlqwX!Qb9y)|mtXq2@#0jG zo=O>?c%#VJn{Pb{9?=6tjfZe!bM<{ZIVc}<$4l|m`0&L=zVeSRtzK!^`DK5!pV9Qc zsnH&{zhfGo@;o0UEOq?jIVs^nai5E^Quas7Kx%)@0Hz)pZ3@mf(@$IJDtDK+TDu-XI(UTA*-3bNty?Zo1 z$DjAKvNr{kH1As_e@Nrgzcy`r-cqV)pI?7v^3Q2B`(xZIp-PmmN7`5C2VbWi45gxZ zOOvnGtH62*G5ITF(u=RwnPIqb|^&sxo?=MhC&a611M%X#>qS17k{#Ul(ZAKgZ*mGX1nhv%gW$ z>il2M=(ZuB%Q}fhBsm(8V|25P2(*|C860RpSlAE>xqk}@^k?nHP+HW*M4k1~m`lK1 zzm-gy2jkX$b0GE6SWVGt*3Q}afq_szG9+7DcbMH>JNu9>IiJxn?I9Dnq7;HNm8a2~ zOf!}?_a)O&D{02;bT(&N`C)YG7_3R{+-ifZa>}c+3H`}+hIe8}*5 zah!bDd`H{2Y}wh~XZAI>bhjf7wOb|TWIC%qmv;u@f9BB`H!qmra#DGb$oVvuxm!#3 z>DezgRpx~DC227|^XO##oFt)c(;XsAqV7gnGEP@0Py3m%T-qGOWH2SzwH;p)OQg(v zE{*{_KMEW`&dg<4%=F0&XQ^Z7GlepPsDHhdcU>?iT9ScX zD3v*%l}#gyi%&r=R4p7PN!9KtNs&6a%@QA-alpa!e*)j}yzP0-@SVi}@9>SUKt%$d zKm%Vll#~B|5h4g&fjSl&(V*n`uFAkbof1N=!z_V~?+#Yf*SLP>y+rb0C;+P@vH3(4cY#e7BuIhnvx+`lUY0eiY^y zi1R)71Oy_$*)QAFciaG+uR69dPvM6E?-FH?a-?rUpc>_hsF`hdHxrM%i|9fLQ`(@lR2DwUY zU=(`JwHHQBpxo6Gb$;0w3sV=cl~JsxA;&$ffHH(?6!xjWgGIVZG0~_{*4lCtHJI2@ cID84(qbT%``>!4Y$q{wY~v4_ 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 F{TJ9!?1umV literal 0 HcmV?d00001 diff --git a/examples/blink b/examples/blink new file mode 100755 index 0000000000000000000000000000000000000000..6423adc821922100bbcba6b1b9fc4a26aa45a15f GIT binary patch literal 6896 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 literal 0 HcmV?d00001 diff --git a/examples/oled b/examples/oled new file mode 100755 index 0000000000000000000000000000000000000000..8abb8627e31ad10881b40cbbedf7d2ac0b6901ca GIT binary patch literal 7448 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 bhz?(daudk027#EaMgHdTwD0zOVDa~F!qgjm literal 0 HcmV?d00001 diff --git a/examples/oled_text b/examples/oled_text new file mode 100755 index 0000000000000000000000000000000000000000..2c225f408850557b72ffbb32ba75a427e338eb2b GIT binary patch literal 8352 zcmb_hdvKK16~AA02@w+6@K7EZ-Ko)uE!k`^*w8^tNCF8akV3T7I{oq`yCDmk-R(Yr zP#93GIxQBejH1oC{JRB0O&0#KOmXBc%D`8lU6y&^S!nO5f+9$6AKGG}J?mI2>+*o} z#ClY0M`62^=iz@E`f12m#=x^suKL&t{Z_QiQjdBTCHs0N836kkpuGpBA{^?d2nWi; zp-5_LxfSo}?(!v~zUyc}AJkzVSFXMp|1o|jwDqD;J{yH&K>6;b%57U0ojG*Xg_EaF zRR7IuZD=@G44LZdRM5K%MEeiVl|5WmDpuAkt_e`a`e`WmOmQg+ZDyj-_Z$?$Whj@U z%thh&66Q-Jj9*rbKKHm`226)_{M@=zZfW* zKI7S+I_}5OYz~A2USNL?e^v>B+5a1JtD=UoB)TPR~_KL9^$zaLod?~6(qnEG3Cc!9Ou655oiPlX~; ztZHH2x_SvK%r)U);QB-`*&0nWbazjzU)&Mg5Q;QxM(tv#q++BryRQa9iCEa`wKb~3 z(WtFZov?ZvgW+&=vq;3^p-8f8qE+Rh&T!C**K4+m13|diI8kp&AZ~4GjluysmeaFp z%G!cklMSt%6Rqkh*&EXeS{)%X715^S?N!a+FL&=ZZAiKG=znx-&UZ8q0BdUatdkq9QF`J~2Zrjt!vFRYGe zJPBv4ah&y7p@=Yp0V`=i(2+>UdYxv2wj_wYlXftWSXozRUgujZRyH>+uQM0=_%;kOM8bsuk0C4e|RLL z=mQ$PPowYA=v^AURik4X-L28>8ogelTQ#~-qiZy}nsk49L=2`!+@42I6?xM`ZZEz? zlxI8xeHr&ad8SbGWeWX$nb)(~)8|l1aWC@>9GGT^*{GlG?aR3Qdk6Ep_y0qPwIf$# zD~wmO*?&ImmUmwXbV}gEL%7wahhkq31`(#EW8#n5StsXCWRJ$;!{=o_B)!P?^V z&|_ELKKNTt{}BD=+R;YYc`zSyYv9*^-1hC+b#(6A=&#|&_xX=yz>iXw^G5%|zt7gg zOwBK-IXXIsJ}dv9WV6$*L%+sQ_XzHI8yd^sb@$&p`~&!$4g1G{IW`Xge=;LIk_Hy{ z934G_HiV;FWAtUdhx%&Z>f*i(ZL2ET_Wc>dzk7Hg>KCHkg>k4r-$u}Cj0;|C87>ghGlib%nF9ZUi~*lhFsFr}xi<5}x*^Un z=juxMbH8@eFnwmTLg;g4pgp&zF9U(yCgo#woCrcj7z6`cJbvPiC__w*zBM?>uoq)>D5!?(T!ww_#uc|Et0?m^9B? z9DCv1MEHG_x9!1aato zal3+1`1^l~vM0uM_%(0YS}PIj2w4$tm2Zh}QF*2RT1kCYT0me8~{LL~l>h>Htp0CGJ)f!jxb< zCVY`-GU%&a-c+8nHaOgdNXpld3gKxH3J4#$ZY$9(e1YBw{7IaQOUdS7JQ0dUCNL&s z@nD$xl8A+q!WW8!@IQ$dNcg(IKoqs33SaHo79XnFPf3OXTZJ#!ZFa@2o}jcet$5t( zm6nR$*olVFh}9G7L$czR4sn z=RYHIRaM?RU z?lH-8haff|mvaZocQUcd-idNAN}jJWymxpG0$gH-joZd~?l$>`CU)67N{Btw_JzydkwU1u&*kh~wQpSZ>rd`sY0sT2#31iJfXjXrUVLk~#$SlG7;^Pe zRQv*Gh9vJ6?`Kzmg-oi0#q; zpl1J&#^+)DX@6dmQ=ey~gz0wwcvecdR6OZWM9TlE9Q}owzW!FF{wJ_g<8NU6*`C`u zw*~sct|(shuS}Cuze?jvps#qP->%8|eW#rHkcwCSk7;uDk9UxSS>kT!E8f8RrCh~=%t$<`T%%sC zC;Ps)9n7=a=UZBWoZk;}c(tE+d(nS#e7@v*V@x7phV74UV+qnL?Ug)t zJ<`8AKlr+LV=5HSo0@X9UU}2cgk14lzdEo#S3s`T18?{W@alXqaK2Q7SMy8xP1JYR zr-4X;z-xo!7KK z4W6;PjP>S;v)~!e%l77p_jBz31zsQDDNxjNZ_{Y#0Q>LF;lHf$UdWe$=YChYvqnu$ z`)`5g`M`Ly81vZx*$0g1b&D95%NEtxaZEgnl)iN=|XUMHwVk%u%H&H9k7LrSlz z(qv{V8S1okLsmGn4IGkk7P4Z2AmZ*+r_K9AAz`j;UbDQm878R?v&p105e#>gvl(A> z9U5P;wzj3gY*<}yXVf?@ik{GwfH3R7xw^KcsSY-p#LfhcH?wBNiggWbW?Sv@<_09_ zZdJKYnds|Gr0k*ij~PZr)++U<=T!Av?8WpTJAJE`Sk=>mPA<`Y15C&p>TYFPRImAL z8rIbNl$*1xskxYP%*~FPfkf2o#=J0ds<$yQP202v9~=lp%v1u?<77oSSR7~YljUsD ztdsGa;8@Q*GcD?jWJjt?aM`QG>BaP_OuOoR)05jO{XAKkcRcm&B(wE_u-BPsB6X}* z6LZRHQ%%e$>uu+xw(T^r?pKZo&bI#+m>*yS!K;gJFa8dvejB0>6>Op_x8w z*Lw*JU)uac#-jXPc(U*KGvs`MQ;#w2fzR>x7UXP~dW?-9`5e6w$T?@!V@#Ze-k4Jd zWcQW*ID?}6F*ZJc$!(;91N*rxCMH1ln|AQB<5OC5XR)B(cvpl(SgGL UasP5}=>7_ko_Jn$9x~do(P|Sr)~OwwrmaqG3l5z+*4m$8{28e_k{?!3ae(m$s>t^H-hDTDS%cCU z58S=y+;i@^=iYbkx#ym2XliNJG)*XQhAHwZbdh;GHEZ$WI1} zga{OAX7NIf#buR3)a+XeNf!QRDX{oX@<7*OT$VYYS=iqa1xAom7-O-pKik+U+Z?DJ z;srG9M&Y>RJMe2j-T;r~7-$yqm5ptXZ^PIujc8|4yzgXS}lUsL|yReLVn|J0v-6Gsx_Nn3*#_}}yByKFRV-D9J@ zzz^opoRb2|FT=vtPUnhpo#%*iL5Hzd3FLnh=zJUhMw26d$gj@h-gdg&UA>W7%K>3Tzk>n4@Tbif;l01G}9xbpJ zTcc|-jhSdXfn6x{?=Jra8``dEZK!GL2E8yHF*3=UMKWWgLDt3+2~akS=bTjipHC$WMMcG3-;b9bUhdec0~0|d~Gxy);Lr?KlTCIT6@S+^SKDB@GSw z0^dThq-AM+gMP7(o{hj0OyCDs#Q}`}WX)eGp^1JV^b1~;Rp<3iWB(4xHhXXjlTRp( zMvLh+ZnXFV#SSqWTYeqt({cFMvxXDtV~qo{i8c6lu|8dh&8*=V?qLl_v6VIa;WpOL z{4i@c0(YS5or{Hd&)v84fNQ8K>l*6MP9NGbZ;c1#EMSH2YKkM{w8FF}kvR{Z5qi5!-wO4YvcQ;#iS_Nb( zpu_23Jya-Gl7FuUZ9?MOtX%bQHGGIVx0Rm$Y$fD1&+4JNl7Znz&$@l+FP_0+>do)R zKB}Jw>suCpUjHkmZcpFNvc0fZ^J9Mg=dz#=P?q0;`i1`e8W1Ic_hu)sy4~?+@GpEpho7H~}`j>JnF)(}+@FH({)?qVEfCkool4|?-=2_6F&`e>PLIwmwbyD?D(>8(PG(CHp#r^pF;m4tH0YepXpyP zpHux7gWi*`;Wq4D?w|Kge18Are~a!f(9>q=`49A{eY6+&$@bCsw`dsq7W4=B7B9MX ze|v=IXgmC-{S3KrhTH;s(IdZ|26?#Wx%@6=u+1S>4&%hl<#`Nv21b94@s+MzPE63H z3HrPK?0&2-$0Gk&L)AMXIWXL^xd27RhckE2!0_GB*&G}k zK6b}Wx2vsbL<9y#wZNtkm;Y((rGa6$XJB{=&M19Hp=cjIn#;|F?15)+>ug7X4;!Zc z;T^zxt7efm)E$h+BQY;R04R^+o_7j>zpC(FB+mN}SClwjpdl(koD6@(Hv!}Oa@4rS#9WjZ zXgo>GIQpX#xx`k)?**WDIW;q84mdP3CN`iCm#lfGs@Rt|b`0N;-ji_@<8a28jET2n zT;h+RW*o-x7&o&%k;^5*XwRW$-@~YDLI1zNw}=8aCVVPI$xp2DVskhgPN&ONP*7NS zn%g~P>a=M^#nWeaN@mWQefk-5=9Yi$Oz%18e*OFlE~=`oS+H>NrI&xJzH!O2*0z;b zUw6IU(HV^;jkUMlw(*BQ`tiN@KlsR_zkK4!!Ka?tvFopY`^UdudUekmdq?)|fA`>_ zBOiQp^w=k#9{&t$kV7PNsdwIrU^>|m4aU8-zDs-;SJn70kQf7{iR{I`+Nv6IfrvUk zreMa1LOTy=!6H#u=+>raQynv1v$RrewswZIOq-+4b(A|Rv~x7!OZWB|!4A|$O4i*9 zi^dT?CWSAaFe1LX`lVGyu*;&l;u&8@CW_}-G%S3ix`XL%;S2Z1p-z%1!Pek_A zgQ--oSN2r+jUfz#L4rNe5DZ8_u~divRro@Qo}Ne?ZPXbwj8wEEgR?ks7buEvXoAx` zN%CDQX}RB$V|*F2^2|s+U!yqBI5PyN^}^;^k~CkMc>h>?-6{AQ#hDzVc{=2oVeK?u zr1C6Dny*uNrX|f2i8IB+4se<$UgjDk&66+BzNF>Lwg|pJ(lg9@-WV+-X67LzU%nPs zkI_8I(uYVsPqg$QlBNehGQ&ETPV1Gd&Z$!%mD8%rN=NJ|W6XKW8a} z&peW&{@u3z587x4JTLVhwDBoVpDbaTX&-&Fgz4gO3uC49yT;-&z~}JFrN%pk2*>osCa<#tIUO#RyQ+yz`a(HXEPzblcYJBh?k{YCrN_ zC_&Een2qLmd_O9F{{EzXZA~+|PEPJ>}r5{lN%hK4|4{ zH29l^pw;&#|4PbR-%o@8p}op~GGgNRWn<^1$mCbp=o`@Ao^R>`&H2*vGyk-fv<38* zcY@}A=>uMZ^YMU$4lQJzx1MXa%%quZ{MC{s1)3C$mn}{~2hdkMoOeCl5eTKV&th>)+yFo4{kn~&D zutINHy0RS^!0{xdZuICOrYX}xr5KovG; zl#B*r(OWZG&7-G6opT)BP{gB>z3EGE^R;`8^_Gxj*W6vbMwlkcD=o>zNHC?)v@feOwfkX z8FL-%$z?NZ-I0m}jqYf?OGjkQ?C=+4ju|#jp3-HmS7mZ#`qzxzC#HIB-I*Z|1jZA+ zpGzZ8WKK+2>)~`l$J04%ntK&23P;kbM^1%UKHmMv;M%zbQ! zKpSw%F%P5UHUp=v9EbPDaR`vFK#hAR8kC&OYvAt?N(eROSnfkna=bUULUB?VXUU)v z+iY@-7hD)rzBb7npYP9sQy=Hcd%g&Aj1?6q`yNMwl4CqO4|4MLCMA{JZ>3yvBkBO; z0+90pFGe9KxgEfjKE{KqA*XnDx#vOf70bQAxQ>6fo@^d3fzQ`1@mpQWy!Eo zb3Y24dO0rRl=+zaWb-`^KJ{_06DW7NM9p9FSg_@&E2&sf$ni`opbVh|g<~ps2y(L( n6O9UG&Ap;v5R1MV2A+wA5DMqvLE+i3>+@ix=CqrjG6T zgEkD*GLYz`PVFEQWn;u+Q1uTaGQ>79wF9&YA;hF^0)bdHoTS#mD57YEMu^q>{oZ{i zc`;!h5~n>r=iGDdxgYPI`*CuxqkEfS7)rpSHYiHrGDEe1=C4-D<5NpolwXxY_Z3x7 zeezVfQm4ud8~v~&`W!3+W!)B768WFF#L;`HgWQ64iR&N}S>G`QN6=CpZ4p_YWh~WY z9#D_kih@2M+oj%v-;1!n2pw@2GLd@eBklXpHgPM;iK6>T7_U1M1VwPyVj>+|;Mq>r(LW)q14Ue|$rO+OB^3QiM8|V~A=QumVU}1!UW-Pgt#qS_68O z!wWHb>=o_Kr6% z{Apv)#%JFwi$7^}zHp$Xch}_`f7JZqJKwDnUqYW22GkFHxkNtXlG(SjF4+(Me2KgT z0}n3e>~UP{R2}3NtV;sxZvxxk(qC61f6unmKeWekode3dA-nzel*pXNBTEf?PFJf+ zwX&qXAM$+rwW?vxyY63CiOdOm9R7l!^w(UXA1aaCO8TR)?s}s8vRkv!cmgX92@JK`OmD{pVM%QlB;bXRGu8(3>_ zkS3-Tu?C`MHoiX^51XN6(oCkB*{h*Y$V@W^nw8nr-(!X&smM??or$FSd)i}(c%LOb~iev?b>5jIvq*t>WfxJGa)u{gR%w^sSKR4#BnxaMdQkh zgsqGP#Xvf(%iTO1v^5d*oxDRq)b{pvb5mfm+TPu@rQO^Z;O<3WlCO6OC4KXBcqwwOGe%vD7au^Qfz^@McM|NIxUx zh5`Lm2yh=M?8-^82~?0SN4unGv4(Ul^sSBWH7WIe`JvM@zIz%pc8{U;IPi zk{6A>a&)TdwIfrP{&}h(`~??(-o>AD@o%{J*IoP>7k|pdKTm!lH?8uyXIEFxFoCiT`P+sF7FL;AT^B(^re^+Yf z^fkpMc2WP6DwHYB8*7S9lh&pL z+p2Suzx>Mm`IoCECh51d9_vWGD$HqZEBprEuzgn@I$irN`fCI+zTlYx?&)6z zkJ)yZ?e*oYr)To$v-tnCSX{md{hCGD1)NbfbT+={oA~k6qwuK?pPo^U%&{Fu*?lW> z(@%nOzD`iC%uPSx*ls|(Vqbo?XR2JSC{$FfD3k~53I^t33Hne0o^$C@yC&Hu`ZzGolxoM;I!6{$xH-)7tH(6eln_PxjV5;(FN5 zW3Bb)#{Cl$haTh{x%rd-DjsC`yn3a0@LaKY@GL0i_~0xk%L)D1 zZ)>oQt_LOXSCH{ao^i=D^z9`Ec4eiG!=CpM-YvLi^PF7|oPk^q$}{}qE5*bZ?hcq& z^$gY_&*WP?hC(Q+7@Q&$?Y#h@XajeW8N@QbbSID@&GQA5s`XeOoUuyD~hj+CSd#1olFplwT6W5ybCq@j2=Fp!PnS{4nf0Ht9oJ*)!Z(K!5R znn`KR-H}u}nusqDOz2XP80|HajAc|H8js>P6FGq2K?qPK>_aBdwzDUIV)j$B(eMEk zhzy&9DQhI6YnoOnWsT~Z!rv7_LukYriH6XD1RQIJIJ8tClo%O_#8F0{Rwk2*4rDVp z78eEHoe5rh73=$~mi4zz&gu0z#`UW8T)}$1YMHB8uVXE9H7h0S%xm8^v2LAp=e1X+ zUa#7ow@|%~wah5c@uX!&1MYWo_4SRFZw!LhjyfH8T3%_F=MaZl=FL{Ar{-jyviki& z>UD0s=jQZ`A|1b^UOSp}{A!uer|Ec0(* z{@LCcSNq(qMV9`}xb(EYWeJ(`&{)qpy&4n z0j{&>o9BUs8r2Vl$T)Fq|2%s%RH`3<6Sew0wR}Qc zqg>XLeRkUp*4gbJDe*7y!;^{r&dhxuy}n*`*>iqgcgYiIk223L>3_vs{Ytw%p0gS% zRURy5o|j^Oy-Uyb&%4I^u~bF5tS8?8H0XFZ;*!}v-V;S%y1wXN_5;4Q3{0)aJY}hu z^{24@RzWW^*P|QQpE~H}`|@i+xnd9Zo&9~!z$O3*ak3g3A_hWrO0a?}y-_FlK=KA2Bq8jpZuKL_9 zUxe&_3%|CYey#d5WQqUPYNdLs#C{sG0R3GqkyqgelKxepfA#uEva8VkW|!=T+zDCY zwc1mwc0=ZV$MIKVzY9a=`Upejd}Lhp>2HjBC*C>!#~{o8O8Z=i{v>4gd_51DZx90g zy#QH&@*iEYAM#s}8E-t9=zkKj_+$S+D6wCvk6>79|Fw{1zg>;n<25CE)s#)A?8Fn^ z+D*tgIoT&%boeG89&Ez3tSJz1{x4<_N@bb@3Dpo*4c3?AE(&)cD;6{NN34D3VEoJR z8mHG(CY{L+4hBMasNdGU)9mir)sI*Ed}6`OjF=&&7Sc-61+F5~3@6N?SYp76nc++# zl{T&H0fpODG8V~1!hxHE!4`O4#K`0|PhZxMA;_dgm3^Tz!`YFMQB-kBCU1ueOmTs< zMgvHUFd@@yG6|81hHSg26^q^j3Hc8T35ak6ciL>omV?o#GPif{*wWUGD%k2=A*iHU;yE0+{~sUn78@CbKW2?mhXadCtJh; zsks?&M(0XC>7>-2xxCt9>8|+k1GfqX@6)^C{Tr*Aof=Qs>v;VVC?N zDBnH&`;s4gC6FL?r@)Ip-sjFO(k|^^0rC~ewZMB>9(MRY2jcH9DB;T>9DhMj0_|?qto_SA5wYaxD=8`qc8qBO+7PONY*XN2*sT>M l3WX(gEjM+N!Hf=H17ZR>R>m)5!|m@R5@9#W$AV7${Tt`|A)){P literal 0 HcmV?d00001 diff --git a/examples/sht2x b/examples/sht2x new file mode 100755 index 0000000000000000000000000000000000000000..7ee75428ed6ad0f20376c2089ee39db78518312d GIT binary patch literal 7392 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 Z`CkUJeQYm=Yk|L6JiXVb#>1xk{Rgp|6g~g| literal 0 HcmV?d00001