From 105e96197b20d4e905d8311b1aeb0243b67ff94e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Chyrzy=C5=84ski?= Date: Fri, 9 Feb 2024 22:16:54 +0100 Subject: [PATCH] Add support for Arduino Due (#228) * added support for Arduino Due * update tests * update changelog and docs * fix tests --- CHANGELOG.md | 1 + README.md | 1 + docs/documents/api/core/ha-mqtt.html | 5 ----- .../getting-started/compatible-hardware.html | 1 + docs/genindex.html | 6 ++---- docs/objects.inv | Bin 33520 -> 33483 bytes docs/searchindex.js | 2 +- .../getting-started/compatible-hardware.rst | 1 + src/ArduinoHADefines.h | 5 +++++ src/device-types/HAHVAC.h | 8 ++++---- src/device-types/HANumber.h | 4 ++-- src/device-types/HASensorNumber.h | 4 ++-- src/mocks/AUnitHelpers.h | 2 +- src/utils/HANumeric.cpp | 2 +- src/utils/HANumeric.h | 3 ++- tests/BinarySensorTest/BinarySensorTest.ino | 4 ++-- tests/DeviceTest/DeviceTest.ino | 2 +- tests/FanTest/FanTest.ino | 4 ++-- tests/HVACTest/HVACTest.ino | 4 ++-- tests/LightTest/LightTest.ino | 4 ++-- tests/SwitchTest/SwitchTest.ino | 4 ++-- tests/auniter.ini | 8 ++++---- 22 files changed, 39 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d5710f..5dc6498 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * Added `getState` method to the `HAMqtt` class * Added `onDisconnected` callback method to the `HAMqtt` class * Added `onStateChanged` callback method to the `HAMqtt` class +* Added support for Arduino Due [#137](https://github.com/dawidchyrzynski/arduino-home-assistant/issues/137) **Fixes:** * Fixed a bug with the maximum number of device types [#190](https://github.com/dawidchyrzynski/arduino-home-assistant/issues/190) by [@martaisty](https://github.com/martaisty) diff --git a/README.md b/README.md index c992f52..1790341 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,7 @@ Here is the list of devices on which the library was tested: * Arduino Nano * Arduino Pro Mini * Arduino Nano 33 IoT +* Arduino Due * NodeMCU * Controllino Mega (Pure) * Controllino Maxi (Pure) diff --git a/docs/documents/api/core/ha-mqtt.html b/docs/documents/api/core/ha-mqtt.html index 55556ae..7e946f7 100644 --- a/docs/documents/api/core/ha-mqtt.html +++ b/docs/documents/api/core/ha-mqtt.html @@ -161,11 +161,6 @@
enum ConnectionState

Values:

-
-
-enumerator StateNotInitialized
-
-
enumerator StateConnecting
diff --git a/docs/documents/getting-started/compatible-hardware.html b/docs/documents/getting-started/compatible-hardware.html index 2e0c4f5..3169584 100644 --- a/docs/documents/getting-started/compatible-hardware.html +++ b/docs/documents/getting-started/compatible-hardware.html @@ -158,6 +158,7 @@ It should work fine as long as the Client class is available.

  • Arduino Nano

  • Arduino Pro Mini

  • Arduino Nano 33 IoT

  • +
  • Arduino Due

  • NodeMCU

  • Controllino Mega (Pure)

  • Controllino Maxi (Pure)

  • diff --git a/docs/genindex.html b/docs/genindex.html index 5290dc5..2b8fd4c 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -900,11 +900,11 @@
  • HALight::_features (C++ member)
  • HALight::_icon (C++ member) -
  • -
  • HALight::_maxMireds (C++ member)
    • +
    • HALight::_maxMireds (C++ member) +
    • HALight::_minMireds (C++ member)
    • HALight::_optimistic (C++ member) @@ -1140,8 +1140,6 @@
    • HAMqtt::ConnectionState::StateConnectionTimeout (C++ enumerator)
    • HAMqtt::ConnectionState::StateDisconnected (C++ enumerator) -
    • -
    • HAMqtt::ConnectionState::StateNotInitialized (C++ enumerator)
    • HAMqtt::ConnectionState::StateUnauthorized (C++ enumerator)
    • diff --git a/docs/objects.inv b/docs/objects.inv index 5a8efc085e2fa0d063dfabde8e23e57d9cd29722..3f54edf74ac0495438e5a61062788c481877267c 100644 GIT binary patch delta 33096 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 z z;NHG}cYocrc*fVSb!;?Gwo{SLdP>kP0&BcFJNCpPzRG4e&m6qK;wNDwk{J;Ws_AquAGSfVbyFkH(C!hR7w*C4H%PUb)1Rqmcj4dWz$VL^-7 z%mskC4Xf>klUcPbUzdW2&H^y7scK1699M=pUI2%we+9Gb#>$XoPGsbqq;*XB39>Wx zzPsyF=}#w~iD>-n%117^LD?}@nkAO|vc)!Kb+%bp+MwSS943<$Qdjh@F~(S(M%Zk} zQ0l1j#^9rPvc?iRsFp!LP0U0;q=V9qcvEm6f!SeW5=JZIxFu$|Cp_}Jl0>^L_)NOy zNCNMee+s*6MyNOlw+X_jIo}xECJYi(cRIfQ@Dp;5o9&?1Ik%gFht!Ql2t$}mdstv1 zsgGGoh6!#>Zwek+8pe4@htX>CxmE$uS2nHhZ4|jJ_~MpGY+(4FoqR$`!kWOW@#5A@ zHw910B8bAu&cn$j8*Im872ZA09Obs7J(XC%e?3zL<(y$Mmto7WSmK6uVTD1 zwscBxGgcS+ib753YV1QYt>bA@L9Ok0DJ+?ZqdL3>MHiNE>+Fmw!T-BfaE~Kf=m^?NVC74#ARFM&`^HzoFu$vBzZ3 zOz_JfpiA*HW6n!>reD)dZpeC6_*7UCs1J9fJA;b475l6(DEnu1Ww9a zVRW4k0TRP@t1RpyGK7^sLvi2_rTC&bms(SB#cjs}pHCS6N8SZ|U5IRsEHy2r%j};5 zK=8IgVpu;zq2?3@?UlfY^{LyxUkVfaaSrLgt3`^i!f~xYV9dR~G+yI2(s1|rTGjvuMDYfRK zbHR$f#TUP!3UgCbTFek$%EA%NM;K^1+LspDenWLB1BlqwBv@e4_+B9VR&gy(*=}@M zM%7wktKz;?C%zOUL(Y?deQ?(|z)LV~xiOa6i?9`7&82|?Kuh%Pe^Vegrd&;7{Q{k= z6eCVWEoat5tlI|^t8gqIt7xh4+Cjm=maFPJxQ=t%$BSl(sw=RgEoi;D-fGGMs;d|> zvR#QOSS6!8S&JV2g9*e?=DFqwpRKwbuddLIVaZ{YRwmxv#G5SK>hZ(H?el?w*S-3X z9bVSNaAkxas-h=R+$29zRljK~-m%U*|$q?w=TUv$o?+k=g`rDyHS~V9RS* zxHUlXyc^r+Lx=o=fss5Hn}@)vX7)pY5;ZC?o)Vt8_x2GWGh;c5Xl#1m#mHca^K z<7GfNBz8N?({kx8gFFo_jKhYJDf_?Q95pg{VXl>imjpWMf1QV<3Kh?I`}|vxyLiPg z2THeX?*y>5wQ)2&;R(#?Uoqjp+<^&^lQ|vklyE}E4Dk}vZIVFx^ zBGIf>xhZy&kj2MRS7rJutE|A~vt9F=mnM6ED|TlfHe?a&0!-(84Ive}#&m1|-4xp< zS73)Wj5(i*u>;_AW#P52rs8$6|Ge~{&K`AL%8Zu-7stDV_~6B=Me zn+aby!^%L7G*F_OzHewyh=0S#VmEVEE`Yy|+)Ti9FKyluJ1thAX4GuQBrACIfw>$j z=VLY8-4eT*K*dO+ZNg~;S3-qxVfElu!OgEw zFlAw-c4ge>1#mIp(XkCWOh}pVR3yTnDm8+g<=qoO@m-n@4oJx@XLhZtwGLwvxDRDF ze_Vhs3>2~qz|RXhmb(tC!x_3EyGN!b#&NTut4PXDx;TcEGqg!*A$P-py2iB3MQ;ip zz~}*mdV?8GCHvjeoVCpIQQ0%$#d(jxGrKeeIyZxNzdO9B$SP-QDly>tm;=Bo6;s2d zzWd#EIO|wp{TZV)!&qhDeP+yt)*?RHe+|d9=n7kwSAi*mB{9Fsa-gjP>}~hA8*n~m z5l+ZqbefO7Erx}$cEHqZo8e4CpT(=e(}}?{YjhQ(g?fzoM3%71Lnr}v8w4Z%ygekK)_(FE4T`#gS#1U?>@F^Gixrj zJN2x6+MyPhi32yd5%^&97t#IWe}}JLg4C{YJ4CV{RXdxLv9VoXgH@fN%4rXZ_PM~2 zs}FTDnRj>y)K;@5bxo$$vgnzTQdn`OALnH;Rk?8_)RaCGXza{Lg1DcpP)Of7~DN`}aTm z>0iD(KRkPTKVLoh@aq82o%#4J{yRQDJ)R$Vy)S*Azq{1k+jjrkt0#&4m)*hB(>}r< zAO87tsf)mWeRz2H_6pSF_>XX>vo8S}?dN&lE(bat{|NMl)7cjRz5Cm|;xQhFe}p;C zy#(d)_xm>fdJWv?=Y2k*e}4RMv8(X!Ucde({NudeqB#i1a_&Wy9q! zfBTSHa1j8Henj}=|NY?)7eTzad;OP(%Q23_A3^^0IQJrycjK>DfZ*tl7(DY5h$ktf z7lAy9#Rts)I-Pw9(5Gsa7vX%WL>fx=ygyytGe?pqHV3;`xL-oqY+=6RvkT+V2S>Ab)JH|NP-H&%!=K3;zDt z6UYYwbA0{{xU4JuQ{iWU8f3*9rn92)Id?c}tfB627AO3I#fBt9t z`Ik5I{bit!N1u@X`NMB#E`R2ceeuxKh5zU2Pv3v|)7k6ef2TKZ@O{5VN6(#cLi?8| zpPYgE zKRk&qz@0zmgQmx?F+yhPj_!H>3(kG{@wfYh`&4d)4=10-=9AGA_na9;B$WU zOS^ABKa29af5RVf9zXv6_;^0d`!At=Fypw&x_kZW{h2Xx?u^e&|7U;sI^@YiTmp3* z`33LtUvTisS?%&z3 z=6RUML!ZDre)Qez`S#O;{kZV*`03-f#*g3q-SdA+7VhoWySMND_`}CrIE}ua z-`N+g{>yK#9{=#+mhepB3Qjmr{`$;mfBNm=FL;Nao&A2c``>SjpFTUC^XJpw|I}X3 z@7_P$f8$ji>r;mW`pM(J`=4I_)PEZ9-dtCD@RNo*)})@hG~;o^Y0J}z$gmi*wzZ11 zY%F>^TE8uN@TN1bG*f4fa@U7)d!PvuNP4d~Mz1bt<>I|Ra!~7(z(lA~LiTBv+oEd< z(KG9*xNecT%)wbPKb5foL2ip)LuJM2rKK`Me=3R#$@QKrO1E&`&c!#NuhJsBj)^rE zZ1kQXc$U^=|F-MOj9-u5s++dVSkl~@G&VqEln^Umg?3&4*>6FQ-I_62RWZ<{x?C{a zF!*{da$VWdZ$QWY*#Eh@6?0_+klI3&IN6!+$_ljCqq8q$1MJbxz5$m2X#a?g) zX0}<~*nc$Np9T`+zbC)qV)ws&b7b)45J#yj@gpZz^w1)iO$mKuZm>_w$D%KD7v6eo zV@}o7nvd+Clm{$(%6^2I;>+Actz9v-SYxBrvACr2_W%F@ delta 33113 zcmV)uK$gGDg#z$}0+51#qUMZVbISK6&Z!5b1hq8O!V#saM;>2EbbxPJL}_xb+cO$JbA@kbb6o9fQ%tA1}|_vgi zw?1LI3B~lXet!D%Qr)Cmcs;y6qziPB-l6n!_@z3hmm4Ztf$AZ1|5D8fzj=Dh_a9!L z)56S{=)>)$S;?1w7o%nNFg+|j{r7sks3HqQ=mCFv{0V*tJ@p9VS#*H9>`nviB&VO! z%ZvN4@FD@PVL^f#-oDYV_m6Aye*MPaU#NP&KF@NsdPt8S)*mmBR+ppv+5P$Of8?Gu5UAY_w&{2@gipjhVWTny|8P!u!1y%4d_o7uVpl7 z7`a#f5}xmUxR{W2hfW(Yfa>LJTVdK4Jf$*|c_-8IOUQ@Kqunyf{iA#S^Idv; zd3qjm%5?KdUhRmf_^Ks$b9$(WGrWa;P(M?DQJ35N_i-AYATv)zN^^U^?fx;l zhl44ot?;`}*w^Q0fOxld>$D6y?#&6uigLmN{rNF>EH6%B1M~B)cz-qzu z9$>rhUkXC+9ftCM zn3Ecu?D?K#pawkcRM{!mF(-w(sLa{aUzXR5{oZAXO~yR=hh6y4EAZ@9B={=DU8po6)&GR@YU*_o+HA10(8F==LD70W>xRpb|lx_al3CDjO zQSLh6fBBpq7el8NkS_3dkWDUs4vruV@Z+~e1WW^Qd!cS%#5>4bYy3N?Tu~d2`yO+3 zfgI)az^qoAKQ`kN3%0j{Olbw;JdJANP?iU)Vw@&YSP?5M>_Pr{21|Fv4&yWt)X~q2 z=?1G}oF?-7<3Aps{`t5lksU^j$gVuxcgd|^pVLb@e6trxWdoxN|1GG0?fQOXV%6Vv z*$`WUY_+vSD?1Uc-@QjB`>xo1vIvs~MvX}|s2d)s_M-0p#E|jLfkFr1YL%;^jzey@#uLh1pQ{Ag_)xda<|{p|(`Klm7I1egEnHWxd-bp5I}# zBC-xO{>{;~Qq8^WV*OYw*@S6j&X$$WIpKuuP6mrk$^&RX- znD-B9(gB@QbFC)!#6oTdiPb86DjOcnq%(b~yBMR1N2pGisM^7QrTUu9+e0|nNnzGu zsv$4l|h;~06gWp|H5`+H02#RN)a zwWECp>iobgrz4|(*i1fsd4fRSfyYkNxkoQ&@tCl`-Jf}MZZsFz+@6B?OFerl5>wQ~ z9*#eDK!S_xhM(^k&u}Pi?Px{l(Wdm`PQUV0lEX4qb|8%@XMInE@$K`r4Wtx8H0gaBK>j#JftTM4*jQjyg=a{c1)MA25l z;V)o!h5r+{)TmK;G-~qgV1b;&<5&jp&o2L;;{!vj~jLA)Q?$ajqx7Q4Kug>){pLG{a^PF5A$)U zs7vgGd)Gad^BOGrWH%^$s8{|QP?_xn{F@^_=@Q(=9=aVf2$b@g#5UURgNlp|!=e>= z4Wz^C84sxlQbk@1sjbnQaWBzCruxOVcyuUQIU@Rhg!~4R(T@fU8-o*11MHDUl@uLh zJbKD<_5hBk7g`8?|1OL}q~D)Q*h||XwiOw5dLHFGb`liCjSGc12i56QixtMq3B{{++j|JB9k*UwiOe9=eY zB;WhT^|kpnDV*T@?&H(*`U+f07yLP%S5aBkP2dDq_~++qTB`@w#}p4a}&&~=;Mtrzx8gOrmI)wJG4vxqH6os z(b>P0!rqv+Hd-)#S9?NgcXyu1%`eJy)4kb6nr^x`yJ*u*_huJyy6N8RqE0v6n_c8- z(*5oA`SF*WuR^zuJ)G|2HQ4eR^eM8xEob|y4*eX3ztVzU2kl#5-Rq%z>q~uq9kl;C z>wcZ&|0;`s9prC+MX-9*dv2O$mtf; z8A87;$wt(1x~aS@+a+cX(2c$%w0z%-Tju2EphbeyCpW8nhF$NS#fH~_y14}R5MCeL z8ouxj7#CynrlWHjSlxtTTBqlKPxp_hV-hbzjPV}KyCI8FJ-@rqD(cege_Ob#Nf%&! zg>op(C6@ilF~-Bmi)$_=N0{!}1V3MRNc9e)8^6;RFVq>T<&95MTDW5&k=p?#~>yU!`bmx-^oonydj(ku8!B^j)W-B{cIZl0yvKZnpjne`&y zbkG@fI3|EzXA}?D+wkXOvXE}X%6&N$*abB9y53o!|kgn0`yT@9Au{!`v_&aRev7I!tIZ5qV8kkaaz_(cXvF4GT580G zvznC`_F1j&46uSX=^3}asAc#YU~LBFhhQe1=})&U!)NNFZN=CWH~*q86JI?%0KeU( z6MY0`y}?+DPigBa>N1glKL@;2N1W%eztcZI=Gnors>Hi4C9Hm7wR&kG&uaB>`1wIs z6LNch*LOorzehZO8uq1RD7$w;4WXS~+xSlL!5vGY*bukNHuzq^;sbpSe0*_;o`kts zdZ7w1x%k6Ktf>#k^*PAShuhjoWWB*4ra;MV#eMRy7&ld{jg+)mGF_`1k+$^*1B-IzN7Kp(;~- zb&#@JeH{)jbPn2aYzq5XZ6&F#pu3jn)#{t4r-%E;4-KS&+eByZD6dKHg8%mU&&AML zRd^RTjNKxC$o3$(3-$Zt*30#HO?nsn5Ah)_gH4X2yMST-Ez{cv!Ck1klAjCpc1?O4 ze&X(HA8cj+wI;s?{JMSu^}}~;O2O)#JW4CVo0ug51qw5Jsdc13b_%{&*XkBVmB2UY z;pP4nA9q}rf~NAf^yxDS0W1_uX$7SQ4%W1MKkub~Hj%F2751l7wkkGi$GyLI8$!GA zCZ4uAuT0(NZEE1`v&PQoMitv=ln8iSHz^iy4<XZcwAdlyd11|w#x?Br0elmXEC$c2;=2jFefnp5UXDOjd^dqjT(%s6s`zdKzqx0; zwsH(BmLkJMA5@iCWod5kf?sdEvi)Oo^!m7e0YK%?uNYImeNN$i^O$K9eb&kI@?<_A zes&9NW}J^NNCw8Ie2%@Bde=a@!aCqJ;=YToIbJ@#yjECQCQT7tVlTO{x5c~M0@oJr zQtJd;w2Oz|yF~9|7Hy07OU~sxbtklqw##-F=+uhjChQdg%ggSbTxtxl1j>H-uoReo zJxHXiD!+#NxFjsCh_9kvDJ8g4BGB&P0)5*Fa6LV$Qn-prRS4|t)sie!6QfGy#?rmU za`t>BY^{)=K)dorVT;XGcVk*?ZeR!FO2-1OxAuGSIO*Ev=)F6R?aZxCy^~cJ|N6(2 ztF`^Rw^fNvq|vwBdwcI7tp>5X`(BxUKtwQ#N;Rc+A-oU)=7fju~7wVlyU(KYOKGyf{o zvn{!&QA>_1Q~mPmEa2zw*6DK@C%Bi^f@r3$^KIC=KYN{3zNJ4O>n`B3g~ZY)+q=&H zb-(`j-NTdH^!&r=Q7+T7i(FB-fn`I9ZS+BdkUZ8BUzAH`Ei^l4` zmL#-5>@Dh2Pngw4u)V;{9nNK$NS2zmWF&Ds^)ZaiGQBgA+_DiOQ~d}VcHe*fGoHG+ z598P^(uMQL?uuv@S*AbOfSS;|H@ibzeW;<^{_03TahcE)y)I)FPY?;il%+AiiE7Yalz1fGiy}+y0rzZSd&orDv z!IsmC$h$Y9AFq6a2SJzG*E%FKO}Te(j^6DAeEH^&WKw#QZ9fA=pZqfuu=V}LY{Y1W zFKJ!UgW7|8Rm4j7~-f*Q3I% za9xq)@cD3mEt0Q)f#Du$?ykx5<_A3AGQ0CevbfQvox%@huxG*iay)eXiNxy?LG8Xi zk=Gj;n&$JBS7ve(gOjh#plU+Sb1A>!JKvyOkkfGEa$!=#bor8`UT<*tMi`(=v%0wf z%(uj5tdUwM7As(?F3fC zpB~5sj`WR#FTLY22K}Yr@yWv@pgn6w`=4)H{8IWP<2m>rLa9@XdM6F_c;um`=hk3_F`5_eimxouI^_K6149Av3TqHFpF6`y_2@v z+UHnriYsZ#u~!Y;Qi_bVu3~Jld#QaD9YR`Z$6~hdb;l(aN($8h@B_Ah0B zdgNQOt4{di{fCd+W`zg$@^V(-1Af0MQGa!mvs(TA8UK7tFH>JDZpr^y?}Q&;f7LCN zyDEooo*tf_=RXNLfC=M0ST#Po7b?H2K4ez7M`Qz|hTj4%0ojRg8{>aub8DJ#WOge$ zv0DB5KmNYpP?4kf8h+LA3^r!{fcrmxaVxOClv&4vRHWMD<1BdzcyJ>B{hEG=mxYHx z*r?|mJAWM9y|lY7hz3}Ju|41&f%k1}{&_V*Urr;hR=((f7weMM>cg!Pd%i7V{^51h zgL4C@2$b0~iSqN)r@z1EoXTr0B}d`?mF7<{TCJj6yJd!_0J+Ikt(T+s;W?#$$HLkp zH$r>V=lotFLcbz>k;|AO3X?f3+&3n)7)4NAYRv-i<&n z)d}-hET9YNzsKM&rwc=PJnvo>C^rQ;h-^;4D+KTG@w@dio*i(1{CKpsv)f5cTXGHf zy+0&=Q=VZxfowZO_d&l4?x9eBEC4Q}A-4`18cAi@Rx{ZP(4etBvwTduOO1D1awl*z zw=UFt(I>x?L@kXdG4c($ouJ3!n)4BPO=umimKM*3vIlu}l*0kw*$8qYt1kVM`{Sp3 zu#ly+lN=>BfbJhl1MMZ&fu26E??2tYtalHP%txXXk#(r?kFTFtkElI=zkWdY;5T|+ z*mCQZ;5zK4I&5J~QI}c+ob{~r3Cx~{t#_!$=WrWFxcH(p_SI{EIN&n4Y2oPgPU$Xe#B0w+N{P25~a4>92O4N~7AcC(v17 z^hyz1Vg#pfdwN{Vzf#*FeDkR1j?vr0F5ekOvz|~}fZ);&OZGw_yTdq+q_I|-etRhkI-BPr(SxYV-M+p$fWT6{G@Q@w4YG189>Tp>;X?bHi$pJz7?q7-WJB;>-&|jRE|NJOsN?C zD7HP5jz7cGq@D0ZLgG^#iW_!X5n8pMy~v9g^9d{#2r`GWm{3>l#JRXumA59+jM8$` zV2k=mvln=Od^Np+w8Ur*K`rl)`%xiod;BHmVy<{6uf8d>`LLK`s;#&^#M5p~ci>e) z_fD#?Lk&2z-qPm1OJ_3sb(HADXoY^_@^Kk(NtSbLBg@>hjf!6@4B(Br@ z*Xr`?_4E6%ooka$#P`i+)s$LCoO+d|53chf%NA?&4U-;>+WnHP=!usxdM#l4D#jLP z!cB~S9*o94jE(qt*Ax00(|0*x13B+Nd=v7`0kh{g{04J>#&*h4iC(p<2|aOGu+3od z*~&$@Og}kQh7KNqD>yLrAP>)q)Iy85`;f8=ecl0PQxL*n#Oo|5fA8N}-C^V9k% zJUuMfOM8g(eCpwGQ8uCuFqq5z9mHrS&KPDtKE14$((F3Q z7*@aCe@aiU<%u!Y4RoH{xA!k$IYrlhEsXPwetug2@OZ!8uIa?3#;}fZp4IP3JDWx`i=_(HEE&&OfB3>}3U_%BSLyd*hvRkh?$bepOq)^{e^*>u)!)LjBlg6>+uN zMiT?Vj%DCKxj(jFdif3GnVz{q=g*=!ib4E#&{Ye|V_wT}~gMhO|zkU(cS!7@+2LVVyX?9k%wS!ic)88cKJv zG~GhCO0II;e1qjM(!tUNu_`%=ZOR50$0Poi!S|q0B-{YA0 z^x@nt+F1?U$hdoBe|Y3MzCR+l9(NWp4e z`||Bx6#jCcSL*8CS^Rc;%4}w=#Hz9o?9fEt19&*g_~Xz+mWzB@l!yW{+#CNPA&1j2hi)t;pyq~JnjNT)MVo6{&~C)v@4?Us=$}KZkSQG6pEq#`1Il2aoF>VH%)nso@{L$ zO@|V7X&o)A{*4&vML zOLq4Vw1PqZ5V%s~cLEFRc5a^keRu!AX0LnKgxz)NMeQ4Z@Xsdb)OGGb$g^YeDqJNb zuP4W~pW&Qr0nTXTNz@{-`XN+rOFRo%vbBTo-=y^U>xcU(mO~ zIz~i}>-4rG_?R&NtFi!w+V}6j1O5BB zeLDL4^zb=7Uk1A8w)En-;Vj^4g@@0InA;iMy&Q|dJ--}<`=3m%~uskcy*&9bMQTX;kMYH&0f;sFPlE0a{CX6!ovLv z%I-qn1b@4qkH5WJp3RJcex=C#^b|)_dOL+GP}E&Z`1ZeFzpkIg7Tr1vX7-Z%Q2+k) zM{!WS6WoXS?%_V}^t>c2B}d_H=u3C+WjprbUHX1&^+wbKI|Zh;;+hcCi^81(>njX* z#GP1w8tx=$*UA0^;@ARlr;w^e;tl|x+#mnx9$t$z#~vg$f$kqm1MMU>f%aCpNSA$T z8Rm(V^-k(QySm;1t?qS8fRUrj2G;mmey4!y_52PXFYENV-1wlh1^`3`>tFIu$-TTj zr%(HczaADx+%;mug@rD?BbtY-*i< z$I`T>S9?6kq+V|E*Eh#W)r&s8$XN*{FNJ+^Wlp!sE~-kEk89xTE=9OB0nV;T;PuKw z&^;M1&fuzpkgtV2)CeqOktP|0i*XrZ94<=coQ__O%EoH8=o zYX#pNmVC?DIZ>B<*qiSL-ruTjvnbGi8w03}uQ7dc)vQ_gxq&pf()3i&pWGkiTBo)G zJ2V?U-PFk|+_DpZ_m73!g;xi=VDLTC$0gd;4Y*(bE~bu~&B-^LeV;BcXkHVtj7FZo zomvF_bkf;bhrAPYW-0V}G^P|pKe=kuDp1}6n^6{hGIHVQxl$;67o}bjavzKWUK*3@ zCmDbGO9DkE>f-QcChbM=PpH`P_^;RP|8o=jG6b$U0{Ke7gC_qH>F0>azcBpS$$tU- zld88g{_A!7|NP{?1c7UgK)w?2xyheCm(4FxVn-s2A7fL~=LK@h9?ai6&khx7DI;C- zyH;FUU)r2@KEZ2#mz*cJS^euj)&9D^f7pMc;8&|K_N%Ip-68ISyxz_|CGzK^h93WR zbQ#SB?xk@LzTz6d8xwU6U?nby_j;wFJ-VT*AYWy0^Q95L^x%xUbh4bmSe(aD19A}} zLv(I=BCj_xG=mMmWtiN=;NpiAZ2s?AIGmg%N)S zVrdpvSB5^r@RR%F+xrjq>oe8-2O?5hk#|=|dVl}&F0BiIsI8=?_(At^hPI>YD$Wk) z%el)^gPZZCc1db0KDdYQiWfP~*9AI>Q&}mXye706)8*%xMIuMN6L#{{e+?F| z=3xDxa#}xy!{D>!P7qTDLv4k%A@=rvHiF!GfEK{-1&71z z#dX7!8W6J=*9~Ke4g2q1V}cjx@Z$M@6fytqUFVs^2GnZh%30cBkpEGp7t?=#4+1OD zz@ebe>1EcOs!XYksHT3rl<`hgXHgY-*PWwOzfwFZ9?GDEmu#ROon%imUj5D@YX!q- zte;By&YiTTYOSA2`p%uSPLN{0b0@76q?GU63Ts2m3(>2-b0h2SZRkK)t>VkNpzZ3# zD(a~B;@X{7)KTxnb;FoqI#z#m)bB!iOe1Pmz2Nt&vh`O-Ik?tv6gYVAv?cRry_2*5 z^ROLRhnZCiYCP(k>NEXleYI!ypkoWc^dnWv!0e@uFZ^+$-)dz)b_lZyW1Q%)#$!q!V=3E&sV3X58yP)!p5<`fI3@F7=-pK21~l&c#jOhN1VL=$Poy^T?@>0$q#)4%{?^9vnC zFSn95zWpe3cvrQ=;t{8Q@VG6|JRAMZ0iKaAfYu!B`qK7(-+p{&TY}M?jz!P5-z?ZGn>~%1@W!ajD&}?? zx~G`i9(iiKenJK7(em!($lIeq?#7=Nx|gFfCyGBgFMHzn8t{L#K>nnE7!eD0QJE9V zFUxC2IKM2h$q{{FTGOj@on%t4iB&5<(}g_!=EPhUFNKY2WiFpA!qbDlP)7{rG9ke` z71p#8t~%269B(4%)ba$UXI*DqfKJqz+h0VzdomzvCj>(@9=~2gCh1?- z>1Fr%B9s{I#HtgkY1jzWJ%PXfOUENVO;oTK)j=6MXG?#Pn6;ERkHn3s!~14=w!sTo z{R}9pN^Rh!KR(|-r?2yRx0Y1~uOhX9SJSrwVD=!f351UD_s?Lx zp?)|?WXi%vKVHWgL=9=i!pAhwdN@#Ugmp{!dHB`pf4&rN{Xiz~>YlAkC-9o!)3Cd| zbrHLFp2y5ODyPuTlqxwzqD&o?GUNuFbsrUy??r$1VhumxUIKUYGpJjTjv_TweASYB zOthvvjoJ(KGZl5Y&3|`43fh^5brUU+oL-6doY!BkN_=)Aej(obvooV#NgTnF*Ff&N zSWJ3va0G?cmFGJC@qoZ&1KIhkTZ@NmAl1^BBJX33=#-PWRO5-EqW#ih!m23k8)5y7 z=DL5E^6XxgQKk0aHGrC%p0~kC_gkLpk~%!LaWkY|Z*cfdd5$Zyy14<&x5Q?gk-CT# zonf%9#BaFqx+1}0^Wa(pUvGSfM;N$kGQ8bQB}+rZRu$oY+E!z=I;+N)=Ja}dV>it3 zT!YlDjb6SXG9!%B@?qC#<8)C<1C7(gISo+n%W`_Xy|Ei=oGwr5)!Pf9hB+O%#%k?_YQ zXOYo^pJiKrpg>g<=p3o-G1;Z)kR!x7BEMIUgDgOW zRYBThT0Z!EDZgPBzxJ=Yw^V)qHC7+pb_z0UZUJ<2+Mky`XzsuYjTa{Q$^C&-?>_Ax z6u1?d`x8Hx3_463w5@pX(+{80rwa!iqzkr_+zol!Rx?VO@QxlDfPS;#bq9abn~bA^9wHH?Avw>5`qiF!76ZAdlNjzNn!gX> za9F>(hu;=)Zi^6JEPz;q?fOPLHb1<+d@MT6+w2(?XkA#H!&y1{WgmY!k5Iekcv zxR6>+yo>r|+W~O*HjK#XI|MAblCl)z<^1wegkRU6UvIj958l0O6xkBLVK+E*X#M)4 zG1&rS7aI2ks4f*f&Stv4tL)sA^EXGq9dYFGhmAvmvvFBfbO-WFT9=%GSa0#vV#^Y6 zz1HVT$0lwUqhfyxQKS2!armP+dV#JPdJpJ|>=rozT!7)aw11Q9eQY?$maUhxv?ICv zYpLVpmA69bTalyAoc(RHby~YTroZYETR-0Yb!)?Q8raVrd#N2Cb=-6bmnigD^?@M!$_7-?z?;Xs{=1^KOK4vfbt{eLO{b7IPhM%z*2CcTTPXdoV-Z8M% zd+B}PEwwGpfbtqfACH4Nmd2MG(LJy(#)ZrZ$I~tco$Ezkt#EvnoQFe*%-cWe;PIwY z5l(LX1)@eji3ZtaJiLZN=R+AhwTLe^Y%ey8swf zP03B%=3BZYKzU7U199|QSSOHbZ(;2L8ZWk%Xb^v`2yLKM-VZH+q<8Y_AoCu*I@Peg zN3V9k^IouT1HY*t_q<@gL!SDA{fWlbpN#i!j}yKddEVRgC5X(anSXNBd#dEufTz7$ zf6^?Bc-Qe@pu1L`EZN= z)k*p9sUyS_C%jIY`YcHDQ3=8#H7S2)N>jK11uB_QR7mQ$cF7UVcytjUiQ++db_ohj zO3Dgp>1yz~`!jicG3eGBFl1U*k#-g-2o1CPY2?`=aP#8gjPQ>sOLJHibtOAwVNp%Sd zQWIg6ik>rJY);vesI?P9X_Z{Q00mCC6pZH_tqq`u*=w7l7T$w~IIAx}K^P&7_sOwr zRmdc|AbAed5)(o;mvBP@3`T#_nxzCuUe*+ly)%-f$g*?%62?sl4|qa|%yghIF%y^6 zWRY^nfu~E@1r7e!OX;!>*+-W%b3&!SJeYW)E@I*}qe+1(Xy+qOFc}!lz(E=ljF03J zrb(l129vA}Q2~sEH{5!njAPy?D=wjq8cc$sT4qnR4@`kM2q9PwmP&s{>MvoMv{N>5 z=13G^j=_I%V}r2ZU%etQE*GF+08|pnrQ6(IY=-PFi9^!!K!Ej7usNKY@|~VBzP-hf(dCei5D-$_`z+KbG zL?Qubc?c{op-m7ZLR{cIi~%H7EGCF%iBAk-_$-yX#H7oHS|vRb8e$}HnT~2s2;`W= zF^Hco;UscMR%(A?A*C@8MiQZ<)&w|N(1a8&LLsRjg2^yhbT&ECoTwGjdrge>y8NuY ze{|1(zTdv&HcI&B7k5vP4DipzpWFPO3+0h*0QLBlnJu{1jAtQc7ooDzTSq|q#78ZAUy8PY;yCDSIl zsBKynoNI#1MAk7$A?i;|5>6F?`OSkln%O>3J0+!G+jH$H!UuvFANTu ztN<5Dq4zUnm|g`cNJ^l1pmnUUZGT;_pB_hv-28t=zpTwBmURijJ}_6AN|7N^XCk{C zIf>Atsx(|=gkZf-!$3U+&4DW-m9-LK2`vt1aM=ekIB#&hSks_AHGyS_{e{ql;VAb3 z`V4Y>#$ZNTu9Qq9bCw~P4kPzR2Eb{fx#JKus(@YUB4gPGt3=2wv(lZ(xU`&UnA181 z>12PlL>kG3CYf@GQwzh%NM#@-Xy+7YN9LJn2J=lzPEr=8IGmx7a%dYpgbQAA50Ro4 zoC~U8a{Iz?kZ>v7Cr%uE6gLFiRfgOLn#+T-vUF!c6qc2Th$IE!17yNP2uO}0FBbx| zv~=q%#MO=k0FepIBf+KEz*)>m0EQ}URlt9W$OOr2@KG{LbWV~PfS1-#aEG!CTyXfH z$QW7M-{_Zxdsq+~>a4+TK(_?O0tC$vDS90Y56qjwaF`5$`GYA0_C19}jSGDve9)G2$Q((sFs+@|`ND7zxw8PRj-bPehe#nx zBAgpgW#(a?ip%q{Fk>LJwvb{m4?2IQrAkgg@RsAqWwHT$qQ-O?PZVWpA+o1JQ>6?j zf{!c}Hx!vhZap-g@dVSBN-d-10_K(#V4+GW+tZgcYNcuO3%!ys1WP``M$Cz?^l^rDee&vNPcK zEJQEKI!>9BPAA5cw#iXb6ik0GC!~_j8VvM!3NA(XJE1{pmpLs8hK3g+SVyU*OeM&& ztWKUe9;C-ro{NGxXe}fpmO{1#UdUz3Eab`@L#Y@D&zEImHD}U5$VxJX9z=L8t#{Ez zJbY%=W!X5NdC*xz>XV>?=WG-zqXSp1&A1ij^K3BHrND?Au=WO0-wc0q8sad>ycN@B z6&}KX$aKJSZP6Hr#2^QTU?lNqgypuZMKq2Jr841Qf0KzaBs@zQID{22$;X{sIuDj5 zjHOJODR3zn5+6oFP7d-=jR#4Kf>}@rD+2s~k|Tj&3HlUw%Z-3wDi(Gu5S&r2yaM|R zTFY>(;3G&0h=Mtj%4&b3b%9ffr>h)|TI;9?HDDn~2woaq7;Ljs9z5g%8sg%V45X;S zdzWB}vQ*Y(dM>PHctFM(Dy5f+Gm#*DqY4~Z2p0u&5Nv~{LUb;(#fT29u974vgE4!Q z?6Pd46$Z1-sJyjGS|^lCV3d7MUx> zdkuysNWlz+>B``LhCxgb#-3|A3kGqlh1fP_A9C;vqO%AcPP`F#nwypNsgW@YUPFmM zA(GCPMv4{z!(GUwGruU9Bi`c@JTZhR;m}NZl9IOsPt0<`F3U#3PiVH#Rvyx<|SoD6)N zq1!IZCc)1IV=xuLzd-~NyaCH&iLx%^+)Y{8kTy{W^LS2);qfX+7V)Np6gJ0zmq^OauEZpsCsPu11~OqC zf}z1>_&+O>C1n?8vZUaGZGaTWX$YOY6cVP1bzY$VDmzni6j7S&8Rrl;2PYv5hdvD= zrvTHjjLCo8e({v3@bsKe#P*y0GH@5xX^2u%7Tim)q-L|>kU^ul&KY8zLNF934>!zf zg*%iXGp-%?URq*3-aPhcF7pUx6lA3#kz#2w-Rkc*asN znuI7JD>mFS2=_M%L3o7t-*J+KCsiFrP|i!u8;EOh!vs?CC=@s}4Z#wH|3Y>IQ zHgp{%4}>R3!;7^B5_%`Kb5szb6-0m`rU1by?i@2$YHTc*pj?psc%zw4QWy=fCPw2b z5(q&`!QlC*%mjooEO2g(1M6?0eO79kPy2t#5il;0B((%5<8p$o%eWbgYlV?!2(C)` z8!ri7iG~CU5D0iP08K!$zh@v*0FPrKvpSP4jDguK=s@JJNHQ31L+g|vo@q*{GNoD* zl9tXxcqT0;A|xT4g%B4UbQZYTTnGkcI*A+t&KS8yFJnEiK_!SlopG#`BZyLQK@E%$ z&jhD`eF8&`+f0EfNG?n%7)=OGOvwxy#_=*o<`C6#XDLMoR}3amrMZNpm~-dwB(E1> zOa-L!U=2z+=_K*sqGVb-hyesR8BZfoG)H5=nwB!1S(t3Iw-jO~j@cT|cnBp(P-*Xc zsZPrgLI6l_qG1s-LuX+QB?)s?U_wtyDKtcX-IT)Ygba-t4h~vtlOXe8Ciw(EDFU;8 zcHtl6wyyX8-u~u!*_(|~%fLiZYnf1vXGqO51IL*$(#hg8y7zyxsMRM zdq_ARiS`B_Vl)ISzIa*LLaE`DL&0Xc*pvcGN`BatA31BqUfjf!k~I zb9g9EN(f&wA($X3NavMF4*X>_c~o+k)J7H_@Al`YQ|u*f-4-1PJu z(^KlO9+6rY-e`xpkfEGK1MVmYW{mXO$eeK-Nio4%S$ItY(25 ze^-Xbz{){53IT$FJX_<9YYpEN0gQgKIbNHe7lP8n;U9)kX(4kWPDrf0kgO0yT%BJ| zBpS%>laWfp)UpJ=3C1RZr&8?N>g7Vz6t4~f9j*){IMKtj3yB6DETnJ?^9x+1Y=wt} zAz;NZLV-dGDX=WS3@;9kH#Z}H7~BY0bVirac9aWz()Z-He1IC#S?aT zjS@HF6_?6#F|NAP6nG1>;h@04bffF>*Y{Y@Ato;#ndg-UP>g?XU!wjFCnShL7TQ zn9yWtqiX|JDo$7-AUH#K@(j{>ocAPI&X(?cNa68frjTHJl9jkuLIfU|WmZSMxaxtk zF~)fq=D?(&5cHzsb1?~_GWBt3cr2dlcn}cK2otR#5K+VIW14cTJhU);g5ib$E`X(> zoO?|pfjFNwb1DkQ_0s-6MG;`?Q}2~kc(4x- z%HYi=C9HFfT^Zi7sB+8-J{3V_%T)9PTqHFlc?UgqZGKn;&u1_ef++(T8Ss)4#xr85 z>SMY#KLe%=vLnojGz2ruLb~d~yi&+tAY*dZ=I0=Z^gtwkVr}A-HA}*95^%LwLeLkk z%`XTA9p)j`lTmQ^0ZRe0gH84aF`~ITKkbBtw3{&q7YQ!hCgpQDQ|5 z&W(^pTV;665XnMs@{kg>*XEZZgq=2S>a?3|CAU;C_#)(EF`>wXlt`dx*j0RJlngtce{t|vi4n*{hTyhxl3jSLX;xHkt*0&&!H!5x#tN<5gV z@d%{nSY{eh5mgSz6AFQx)X@s3AqLLi@}TMlhA5Lf?rhF!phPt!`_vex6A=;9`ye0}gD4nl8W#gn zSU}29$O9xZxUv;2jLK%6n6@yPq81L!1+(K;t4{-=GMm7E z5m4dV9n{LiGbA~Jf-;1HKzwsZonwyY@v$jT^c?Y=w8PFU2b96if$sq&;|li>qX*}t z@OT*2!k252Ap)Eq9x4|ZpE`jQ7IGlGRTiVP<4(t%2I7ooo@By$7sg};aVFO$;a+&= zWrcM2SU|kHz8t@1W`!3{CgaS#Zz#a!kM~2E2l6Su|ieCBqBVSii|+EG1ViG7JU_ zYGK_t0e(gr=b6I$znnP>oE#^W6)$OAxn_b6a-2V4`O5r;f)v41_~iz zU}&2mtS%QB;z4Tg)rs6`90Z^ELcp5v8A z@IOi`T))3C9f%>kA`nl1Mu8W*A=o1ZZ^u)vLJ;E$D;1y<@x=rdlT!GIB2f@{7?~`1 zEFyE{yf7VYLrz{v+zgH~;(cel1sK6N2sO?*4?%nI4y06LObU&Z1WT)mTo^6klP;2`lnC(}Uy%X>gs(AwB!&B;rO`~p3N+x$ z6@gjAB*ZeHMKo=ul`f2y1Je}a>cp&&l3Kwy#n-AH^26pv3!0iMbdfhlE<(dxoF zNu5;q91Jxk;?kghNe(B0(KPBvP3dt91kx^W^3XU<01FJ9Qr=icEmpWHi^f1G3>TK) z1!Ee(bz;`cyo4U5+4#a}ki|Mhp&KECfJ_Mwt>TFu0N@ojTWoS8HZIhgu-&&9PQGD>2Q1t%~1vk zy2wl!3hASNf~Zu$98Wfe3)2yT1xsZ#*#He`9p<*)>1;K8g%8ZB@wG!eMp2%4&x3)X{6FeGQ;3Tp{uT>+9j5+gpn$soGL*RCzz zxk#9QMifTFl^?@6KtX=zok|d0D5kQ-`n*JyMuUXGK&GB8r0lp+gZJ`{c6d+HlhQp2 zF*K1BLR$y~jmFp8sU?YMjTH}F;b>4mx)6nn5VnI73QWHwgt!^zUVvz#aC{~#$2(Al z`@pT{!C@67&fo*QbgFb|Gy^jWRM1OYd7)l^2m!;zKwF4Ugj^QQF|3zpgpgq~$QBFS zYL7R8@miq2G#yCN4Cu2n_&Oi684aK{1`9q=HS)>u0(6{)SPZg$gE!S8SbYMa2)@UK zwZM70G@YPGiYh>S2AMRAD&k2!@D|F6g!`NqrW2uqaQ`!6+4%q?7lMMso)c>`*xk~9 z(=>Q)KtJ#q-5Bw`cHuO>FDmh1crKjUi^u|A#s@!$g*_l2#mkYwM-#xU#L}(KR&_f1979Gyj5%MB~M94)DbzDz6zJlbTO(aGasFd=A$6s@qMl9*jt#shc?mS_wz zWE(T{$wBr-3il+WbGRjgS3&T^iN}I}A&x=h?m0v_qOg`oAFYJ&GkEm7nM8anD`Ezh zNCpQ|77cP}$X*@JcJ#c$L-dJn>Os^&1264_H|tnNs;sGkfDlxZT5D-Y;1q3&h4Txg z@V(@ab%dk_#w%&OCx+`!fa+A~p49l7Sf*Jjr3hXFx|^@Rg^Xj&G3Ob4(V z1pHd`c-JQ?;drtT!W9lMl+Qs4@4;U}7zMc@_t`~Zvn5%wT-Zsd7{MjT4EdKMIuJa$ z5kiJ=4R@<$;n}S+rBWvtI1WiAzUrCq;)tOtx#&xK9L*!e^c9P{;^S`kgcpRNRjsX)~BFeANy7wNFtxpNZmF|EI8)fb~e=Wjy5Tknch0gD1=J!7!0RlA^E= zfU(-_-~^ZPtzQ9#A6GzBf+#jY)La-1&p~V4l9E(ea0kgSVGP5k4m;NABx>&l4usZiz#z_LMlOj7B9hE%hG5f*kC=O z&_4KoxVgP4V-ql1D81#2QwPMx7t2!WUr5=n!v%@GQ5JA>c|Vq3xj_odH) zoTcONxdx6;$U@AvdG{XjObAfDrj83~E=(s-0%@BJPLU`wHF$HuQH?Ksn3zc6U<6_x z!a?&g0hjGC&;m!pjOV!a#zkR=4Sfos6(u}4fo=3yd5aK#3MSe@d{Wq4xv;T~8Ly{0 zh|GnREJ+B@4L8w|(r8%)Pd$NQbt17OHcviyYwLM5(~OW`eL3Pw#^qOAn;To?^YlPEq&)uqpWzX;CePIu1I@kB_$DT6taeb`jB;nX0LO)U|9VLB1mXic=khqF?K z7!#&4*bD)AhBDe*m`;`&6d2bKl7XC&IirMBBGJfYin6c~3kp(ULp_AM9*B0PhUg>YJs z!WmVtctuSS@OK7MC&oCz^6WHb2E8c?Yc)i%5WpI#tyL)yhF8w1$&Q(b_X7$$*3GU| zgbYwAN0`v~fF7Q=#HFX0RcS4OfE@B|?y!OjrBT6D$SDde!fA8xmqo)Bdm|uZXIKq? z2Yg(FX{snLb6Cg=HN7w$1>wCgiYe>xpefcW1$%B3J~W4yqc2P+NPK$ACYI$ioPT)H&pwOT~;C>@|VXTCI;aSA&?ZR}jVw?%7qk?!%q^Lc_DcMQLO_<8O za0HDRH-u)8`P2Q;Bo!S=DQ9D4E*zAB;fFL%Du-{H^2mafTxLilh2oIx6*iesD5{bP zNoy^AWEfO%h3`Z`>Mu**kinDWoZ-V_kcFENvE&I2_`q%ONtKS6HiyQe!#9k7g0>pM zAPOMSfCh1zN}mdj3K9nh;32ugds>uio)V%u1-xhoy-WSI5;sIv;^M`MiT3a2ZME8gbby(_3-oc;3M&X0X{%*NO&Mvv6*;(84CNM#2Ky}27D0#*P#UXJ?#iC(Aq3Z-^onUB^tm^ z;)9V!VBIVM2>}x>;~}2HD|<-`E}aFBZnJ`5IqE1S*G?Ne_efo7G|gOgIeM^^B1@Sd z{m2R5JpqHFXlb-SH_x*r2JR?1XrE5F!jG3!f+`$ZLO!culA&2)h z7(ts~=#_+(5*P$-SPIEoe4Wt1Y-J1&cQCNGX53A@^I+0D555C`4|uCYBMd@v_*g;8 zJgRXoIGqR637i#Y);dUMAj?pAf-s|9$|gBp77Q9j!3-&U(3xqDkMs~J;e(K>eqj(b+mvSJBFw#H5W>KR#fN@2F%Z z0>0+P6JC`m3nl^&g!+JIr-F?JrU7_H7)gjVj+&-gA^B&hntVzpf# z$5mB54;H{ESs$_DSTu}!Ba#b-SbUy_hq5h0HGo(b)F1GFs7Z?O&C~WGL#`Rd71TTn zCVb=sQ&84MD&F4~00`Zy>d#BNq|1BouDWhb@7e3FSx z4O9qr6~@~h=77{D2|Diav;kn?*b^rZUUQyt;fO)jzzMzqZA)vT1iNGrkYPq7x`c+t|Wm7M;x5NC>V8Br6=en0CQ}Il)3_IhO@X zSPj5s!cqv5gU|LMY;uTf^~hRH1HjCt!Ygsy3&=Eo1&z!{fyLMe=t$X?L9(R-*4v>F z13-WqA`Oml#TXbXX$phcKum_fgA0dGsvEG9l9~`8S%(0tY>=wFcVOX}#v?`$8*s2& z1drc?*EUj?1>2O>_J%6V)jh;kSXI?ha0d?Gt|$!_rRG{ermUhf#1W^p75L6uhGe$v zJk$7pV30A%#;5`~78NPw2{Iz3P1dBW1p&k4b;fW2*D>+@Qov^lA*qDyGRCrTqk*)a zYfY3$FtxGV0L*XPzLpVBhx)=`5U2X6H*f7m>7n-s`fbBP2$0g21p`B901YpDNoyqI zSQ8t1(vytOXq5%S6a8T0jbLQ+kf*{|yFEmIS@_^zEF18Ey@ecjE;#FJ04ZhF}@G23E5elbF zF5u!b-Y;Pg3$q*oOa(MzS_zSexF{H89^e9^f)o+=E&@#?hU^Vtl0c##+-2Da+}Z$t z!zKgh6RuxJtRJ5(3_eznQM zC4s;zZ~-0xEU1M5g_mXH6_!JCRD`5rHXJvQJxiVt>G7g{Sug_;4?dR^sgk%fY%DH# z!%U0}ueW zZ8_vzvuE!{zh3THY_d5^R#$ORy<^7huFg!)$^;_Zf%stX87e zA%*e2pm!3UV0PJU22*2-Mw^4Nu`{iXH3*9DDM5_pLl!Oxk5ZTwu!qwSs4%*u0I z17vQEHw~C#5wA|oLbx*1>shdW&4_FsnV}&14AwVs{vZ7bm%A0kr^2Rl(b?-U|!3n(fDrs^{NZu_^(}uE708hXlxuf zJ2b_xDEtLF#+#V4jZm?|MHX&I%wj9|xL^gHaU~yf>B>=d9*XO4z8-0R5bU7JOb^Y@ z<;>nh>$+XO=b$R9UKS4vFaa}IFCVmH!1c2N@=HQNISux^k;2~7$6kNzOmBfoi*zSNo6p@FvozTF%)14e($-7f3j|)OBjIlmBM(}(Xf4^ZrI+t1ZXJ2Gd)9eL zegcHCFjBmik>WDb>sq0IJp+|NEPESp;&|3+VZ0~MaBekAj90ecdk!l49<1jnmV_jt zMCSc~ig|F_>${y|64KS2{m2>DA5wbjc%I!1) zxGX3FS0-aynAc+z7UN-~p9)dvcS13cxpQ3^uMLjMk5E{BIR^Nta9!2QXP}_fva;N3 zfrJAkSB7O-)lyBPwVfkyq{=|(4rY8Tm8Sw|*UHFzgJtWtDgg|fMHg~CqLda~JQ%EJ zvS-kpQ+VJVHE@T2kp`P(fskuvYLhbub#+}$_kR$o1-9U3W$FZtOkpkqw!f=~)9};u zCGRDH^!7p*7*Y-pEUiF;DJY}kGVzN(7x;--;(|v4=>x}ajwNuW;b_lfhK=_E1M31e z)J!r1pj?@uNfRkmVCl<7s71L{s3>YE!5`aB3@Kx@^h~;c^KGxi2UlQwMs+3nsiPIR zt2*Ht!`Nc`e*X7|v(ZoE-TmbGJnn1fA1#fzyOLH=oe(BrM!53?8zAP{gJ%asn3Pja zSqtJIWU<2utj367e}1LrQV7`KSukALvpF{H9fqsaD6G`x&lAc^A=qFEI=keGF$&gL zip-b-R7+xiAHW?DvthcIK3o!5Cd|+}VTHA)X_ykW0|J&khXMQIii01UaAhNV7@3vm zvNu3@#ieUlaSF5?#DMmYUKxTJ zWNDmPj*J?-qx2&0f?a#zcfn;H96Ic#V5V@pgPA-fy~uOG*B&K#MrsbO*r(AXM^JA} zkmP)QiF>G>b)$QQ3(v!`m_(KyR*gm-V=rPKdSOCwE!>6&!x}Yai~`I{DC{&uUgREs z@Dv0@ulNNzGsyS4kBoR4uvj&`#65sTWd@u|N({v&%ue$3m0ev@4sLk7_rAlq!#AwT+Iqe~t2$<} zV!C?cnhfmMj@O;FWyn^~=@$)B43M7A7;2GGFz-RwGlhmjRz zhrR%d&893h*V2O4j=84h0*k6f|4b3Y3n5r1v(^|D>;+<;yHZf!zBKkIld@yb7Ep4{ z6Yl}WQ5Hs*4+9S?nbuTo$G1?Hk?27J3@}^%!N9T{_ynTpGo@iJg(!p3$99zd4uN5H zeKp8?R>Oyd+ySAiKMCjL6Q0d~V8QR|V<4NGHErQ?)eVp}5%5&a5zcXqfl)TAuFe`V zJ0M`qD=r@f#uTpUD@Lyx#PV!v=kpUTgn$C33aX=~iJ3N~28MS=mOmKjO^39V??!T#(o!nIpb~AwNfBG z4xLK}Eo>3Rjpd%kpbrwyHcpw1N%7KC_QCv)<;M=g9p(yaWEjAs$vmDC(=_18(-uqH zGmL8(M+bB!@UA0S7rb>1*2LT~FS`1PsU6^1*#r+W0bXO_<#!0TBAw`k4aQ?v6n_6yC>IV|06sp}>hxUqC;_ z8&vj=*FErTe2K6behA)1Hc&UFmcZ%`lO3yS2AdRTJQ}kEvU9_`hX88q;?v8HcLDEa zP!b@|GMTO2q5sg-EG7AECwRRT-sNXJHe8m4o#y#+=onj)KZ-mc%5X6(T5lqyB9n z?$F)Kdu~jv?Ab}TbvBD{t2*rv7@_QV-K+ZGXp-1;${HKlf!hwaTh8>kV_v{4<+y^& zx}39R+#Oro0A|2{o7*DHLHNKf8L*;Fo3Q!ku)#u}uv;trL&p5=uRr&Bf6XT5>5Q*m z>)43wY|+DdbY$e9f0)Wy{G7*PX5S5$7IhFKxhXGZVby@fs?VLisqBW!v3X(n<;Z=D z+8NA^dC_VC*PXH(juGSL(uhnk>lS)+33RC{4C6HiyJ%i6vKE`Vl(0O+t3=sk-pP^auMbkdcvKbOG8$(AT1 z!*M6@OM>NpT&8DA+R)u26B4_n)9pNL1?I7Wcq(20*H{9*Hju80#jpKq}_0XTY609u8mz9jJ>)X*N7P6kav^4YC#iN ztBwW4x{k#V^-w{+YF^t7m%&hVcmNyh#mIVvk)Z|bh009V&2UZ3!T9GaDFJL43#ds= zm@W(EdH2HvH82beHo0^#|3!kimNGtnV4?ZGdt|mXXJ*C4wU!@67n{jWywCu?;QMa7 z)V;FS*eYR(Kq4>kiA}hfknFCkd4368fP-UgNeJ-3Dwb)Ae`)O=G+sW9~9O! z8=0#qA>|0e*4cm zdZg609WHadt+~YNg;}BLCU+ttcZ2AtHp5wqp+x+v-n@-oT`KViOY6}Mx0|1^qCwA< za$uMbE@sTU43ESH)_%LqoHZACxh|FA%Ey+9HksX~mFUuL#X6@sn8vo?4V2yglog7! zvWJ{C+wIMlrIEy-t|~M*CK{f9V&gl61cEr&M`h>z-Pw!%`f&H=@hUv_%wn5J#68F<;}*f?&KI@24k@_B z%IsiftsU;FX;|7K9C2gcn2ksk2F7YXbvs1in(~i5UhPj5?bIwobO&T%v&7A z!z*zO7qlX7d{0uPu+LwAipiE_)|1YR1U`M@LmtT zz4PfM$2I5}W(AFq5emk-uwuU}qdl|qeI-&X8N?w7CYIsVz&o^*LK+M&$$jT{!o_tu zezlolE}Ah%Kc_MwPUO6Uy$-1a!=#NNVA5i62+VEL3LuHV9~=FDQ%O+7c}1%s1v60S zm7uXkv52qLHrfcVyJ|2yn5-Cif$IYxm!9L0t!Fom2xWuiTp@S-oB@_%r6cv93;8zA zmsGnBsTQDRKL>QU`NcpcOeQGRk#b0Nqm2N~>7({G;0f1)#i(?I7>$FKpZZ1{!H~|T zY~%s%C==>iFnMc#VEgv#(`W=R>^c%yf3L7Z^g$S&on3)sRu`kg_+Vjnr%6lk z8<{1Cxn!phNz7POg}Ey}8{|dx$%UOrMnc)T1DjYLuGS)dOazoXi=xJjqr8pT>x6{2 zI))#R5G}BkgPAoL^^IPmgFV1(d*_$f^swfYO!jE-0XM&qmv=U5U`+$>I)B0d%-k4q zuBw%tynMtYo~_AYX|=O1Va;GLuzGlwE^T~zqm;zmP{-W;8b^!EasR>zTuE;meeQq) zFeYE~CleiiQD6WudmXEe#f=4bcFm zG-`J%B7@KIeQLT$$ID6gmdJbgb#JP6>G{7zmtScmb;%8Jx8SsB>4WW=ZP1>;+qx zACASbq8%lA8NdpO+pC2ZwQmKJ9@SUS1c+F?qtPKL9L63ypRelLRCx#Uq!rCEW>Y z?QaEZ>~*amUnb6{Y|Q&~tU3US)G<1@f^{E83^3zPhN~5RPkOSzLMNRRdJouqGsji^ z(@tl6{aUmTiD|KTNOR634Xxy~#&Vdoy!*9(87{C*L~=SxOn5(RZx(t41Lp=arr2({ zM3EBmT8lOMMinpzs|;0UdX#L2lLT%o4&+$0!5n#?>HzB+@I(!ca5vnTp(QC{_#kjA zsT)_{8n~Eho4X%oB>CyFkk>KqPQ?m473J!bo!fWAB`;hQAe>{$S!3hm$X0c*gV%+B z+g$*cy2EHmIYSDqL(LwaOr4)^fg8>8 zu(C!^kx^*V15250A21Vl4;A$eGM*j6V^9`b$t&j88aMU8-|KF;VriAJSfI8vlaA5S zb1K2*?&E$q%sfeJh6FjvUOR3{g`J0g?g`vi-woG;g*@^siwwtudrV2AvYpl(VfRp} zT`@owczRQ4kx(==w&`lc%Pg|nW;PZt1ml3$)G}usu{p)p13}O*uWMv~2^{DfrnCp$ z0jz}}I#->^7gzeMyZzl!jbO$K3R#%E2jVk^>q#*2E13UgII9H?V1x;d!+yVi4YZ_T zHaMxuDyzHUnyr;EVDfO8h1`tkB$~ahzM`hxa6Jg~QA1^_gC>tBI70;ZEV{Ov=sBQe zh8Q3`xFcA9Trn~Y2{bA6unX?(`*-)(U5jUY{aVLH^JGgG>8$Al?IN(otFvoREaIzd zhV#t93oL#TMk4894-@NnXyo62dG3beONY=5%KBZiJ4k0=F{>bDd{MU<4v%ipQWUTb zV79UFEG3fVYYuBW91B)USupw3nQ+^^)?A9jJ}|Z8Zn!zD;rR`?=*I0BD-)t%ijF1f z(hI}2oG@G&tW{x1)Dm|B#+Z2FM^{r2$lgoz z%x-QHEfiaD9c42d>=2kJ6s`{MtaA<0y6I&86JF)+snjq|0vHAapDEuN1}$^xdv*!% zx*HC@u!rCVivgs>b>yjk-j^~%r%m1s$Clj*o)_#Xt_JAEEofHgV0EYM57UhG5p8%2 z(T@IG7Q9eBFwk{AW&PiIwl%F6wWAD4WK9&A-;+crX&#rvrf*X__W2ITkmI6=eXGp zYMpbtDR@ZTScEWy$+U+BCX)J?rDT}k*7T;}k)>grhjbXNCZB5+5PkKQQg5TkZNV3} zL}CNO_v|JVN)py3W{nrOX1XbON)|yBR(2jvHrZfHAgl0y?s4WQw;k=N!~*V_Dk$d+ zlOgwGx*94IEPcA|JO?Rka@4)VL}NoI{GQ!hoxRIyysddH4!W_y`OhFDaAmFM=CrIh zSl{!u@0?HFvx{0{Kq;GC=V0s($9h=N-S(Yp>4~kNnt}57po^XKx-K!sKbLV+aFSKG zz)5O>MN4acKwcHddiFjDF5VU#=B;yw)dx#ixrpkGyYK=%pO)Qrv_tmz+_eN}nLWP) zHFgERz)c9`?M=a%kW>e(tg@|Cf}_EMh_w!;RL^gbDA$0G3NJb&50+EsbKDg229il~lQ+5OWAxoflo+YxTP=-2Gj9 zbNBzwlj4uTHlGeZe=)K_*NbB&9b9x{i$7-|DeAbp2~C)`<55RvEmjn2LRVuilxZDL zlL~5W$4g{#`~gkh%_Kf?&KY{!F?V6}Sz&4~$e$&Grns~=^+<=5SKJ`Lw! zYNAYkTd~2$o5$0X;9XB^joo-bjQK!p@DRXgI~*~n8zv=6Rq52!~V1V#{T)U6Uu?ibFA_FZdmljx^JG7U-p&a1L z7c?mgHSicPo5=h=__!qN#cv4n83O_T37gYN)nl-L&OzG1>%ROG!W`)(cl;4n4s4gw z3U&yVyfQLpzW5ClH;sKRduD=P1_51)pBZyr!ZSUiZgNA`qr#`cia>q1Bi$KP)UDWm zXN5u8KdUnnI=s`^*=LXZ0}rF?gb0urwp(Rk7m*>X{27V^e<;Nl&AHT?f-7!29{7C1 z@IUe{;OjzUgJ!8|FaUXJ^g4it$^$0_!O!R-B=;!bqt#ADs(U^ew*l4ON(%qS9i9@KP3zXgY0HhV%wB|l?Fefw z4HN)cqHmu9xiRHx3hNi>WThB!Drz~iCSu(_pjd@t`B+6uh1U)W4z^rX-@$d9+df`2 zOH^HfU3Ee0&GlAO7EoQqkdf_5Ou;G{<;hy~@E=SdhBD7JNBC^j?Ra&CZVXEftF$ul z?k3)3;Z~0yE^eO>47~2uhwSiwvL=QrBm5xWQ(Mfj+&&*#3Gn!l>IdZ;I3=cvCSgmj~N!!@{irlIPvnJ|8;d7YvN#x!61eRyDI93Y5svf@=Fp$PmMm z!!(d4Yz|ioxFMb}JF;QIZyzrM!XdHSS)P_lZyDriXki>Sj7-`8{pP5Dk--adtu(wO z&{6L^Bvq(*#@pxLirmF3hB;8Wt&}yuz$peSGh2guX}qKL5KVY+@Y_X$dCW~=M@sFc z$-npwwUn9_^^44oo#)_I8U`JmTYw9F@f+%S_Rt6WGx-5ZkAJQB5Jy~KH@2Dfw)^|` z+m)Amb)0m`g^zOf3!2M+FE*%W`85pvDtP48*OAj~H^o*@x}FmIm$c#&pXl_jv|-HoRE!+}rz;DueKk$D#D>^^0ojKVNz&QiDMf=U zpUY2@!WmWuYNUY@-SmA!gF^fpMix7&vvL9ab>wCOrh94g zme^^r0yU#%J0@AdqYupGSUDf7;qI2$%^Vj!#u%&e9lMp-w^Byp9SyrBHXOpx9D}g& zlUDEW|Dc>M6vh;P#Bxh)ODyWgXj(Tx2%SQq1+e<4WoaEZ9cvR#Be)VOj0>v=uL_PP zDaIkb_N&$B8SMYKdl-MYYPa$@|;K>T4 zZ0Zd94tuyTKUNz>)0OE|&%;5K$BwVZO8NV9A#=J@I0z@CH z=4x$>@l3|_#?5dE!>hu`K$JVG60MkPBd|ubNo#I1T<$CqltXDydJP_JSi|FW)q+=e zw#{&uQHoi_HUZ$DQj-P;sRvUQR%%zqeO>?;6CNE~vBQLv2~R~L460Hi*je5^5ftC0 z>EM8r+;V1r*ScEkFeZWfP6p`f4c$aV;13r97d=4*xO=Q7;6Vi&9)iNB=lLl8a$mCEVD*eF7Jt_8ATJ*Izf*EMvw1g_S!Mz5tti2_%LndoxV1@_rp47=eb zL=47%y>)hNh7(r??zrU>>w8_-9^&h85AF3&??-$4_PV?Voc8L&Y0q4hyaZ!Bw+X_9 zHwKal;uTp8ElrF^ZtF2hXs*#ra( z*1CeLU^=*)0r&1>n>MrNQoB>n+NT|AftfgeaDy9x4>o@h-9LW#>Lp0+8n;6v`%$&C zIT;(<1vXgK396j-plF{947vJHCzE-Hhd^yLYf{%_`aLMzLXy?Qc~Ih1y5j#}qDo`} z?;7=6P`=#o^Yp%s>*0W}HwHZ&cUk0e5zxE8%_|<`arj4=eO8Z z^QkrpaZYDn26Uap{oK@EVPrqcfw&g$cdzRNd(BJxvL;F0xYOB}06pP)m!tij zAOiBo_WI8sF7qtxGqm9Ek3E5WATY=0U!V!kT=mI?aPIf_bItqtcFgb2*N6T31;1EH z_B1t*6TkErzOWE}0l@Dzl#lU$^zrlyVP1XOY`zri$rAl%kUtz(I*a>BBAf^NM0bJk ze~y#Be%)tY@RNg1S3F(s^MUeuK0MsL#pr!#_Yc!RL4W?GJ>2y-^VMJ4z5PeK|B9)+ z;KWA~`}l|N|M=k#XYl8Lwx54_Gv8kZ`grsS>7PIRcINVD9@!TUJze;Jf1dvI{f9rD zy*_?=^9JAdYjpJ787H)VdGg5_s9)|eU;q8ryZ3hwmp-n~PC0@7>FGyL(B9njdvNgo z*8bM+pwaH$+&%pE>VE$6?*7A*_yXMdb3T}wCx83?7w-#y&T_y6@vD0lA<{qfr~5RZp_xc=j>U%29# zY5LhArz`#I>7y@R=i&aH{W_k1)K8CmoQ9u1`NE|s`d>BsTZ7AgwDZ^g?9kK2|LuSO z_~Z8<&t9`V{CfYz`FEWAevV)7IboiMc|7z9%;QJjy`FDBJ=l*6FOQ!-erx>r-QPX` zr)1&Ye!YA9?vFowyoJ-~`}v)H;p)Hq_UiEuA8rZH6t3We^W?A3oc5>R9{z%N_}SU- zXS@IX#`x*8(>Z^CKK=bq?e+Zb{lh(8<*`0>NT8oQ{=5I_^-uk$@$Suar3XK0sAEm) zxl1!1N1V1iornyJF>70^NXy2ex1;sjq6cp}^GY*y_9%CKD7OciFoC4^dSmqJf>tix z`y&UnP6_xR6}$ z$)a=%*X>+<1Ntg0vg?>wW5Gu68G>hNP4;iQuFUxL=&ibG%Zw$>tx018G)4)r0#<0( z^`HF~^w_N#gH;s+O{&WU!wrM4=OWjYE&T>`{Ez*gt6MQwHUOzDM2VA~`K|$@09^m9 zKzltp`$9Ir9_{Rlf7qHjSaM`$o7Ig?^ZjWcG5&k_ z(%FwF^_RJe7Hc~av1j#@RRJbbU9*B)TwX)6(g$6>De7q%8}9`?b{Qe J|3AuKob(x) #define AHAFROMFSTR(x) reinterpret_cast(x) diff --git a/src/device-types/HAHVAC.h b/src/device-types/HAHVAC.h index 1c090f9..1957ac6 100644 --- a/src/device-types/HAHVAC.h +++ b/src/device-types/HAHVAC.h @@ -140,7 +140,7 @@ public: _SET_CURRENT_TEMPERATURE_OVERLOAD(uint32_t) _SET_CURRENT_TEMPERATURE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_CURRENT_TEMPERATURE_OVERLOAD(int) #endif @@ -218,7 +218,7 @@ public: _SET_TARGET_TEMPERATURE_OVERLOAD(uint32_t) _SET_TARGET_TEMPERATURE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_TARGET_TEMPERATURE_OVERLOAD(int) #endif @@ -240,7 +240,7 @@ public: _SET_CURRENT_CURRENT_TEMPERATURE_OVERLOAD(uint32_t) _SET_CURRENT_CURRENT_TEMPERATURE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_CURRENT_CURRENT_TEMPERATURE_OVERLOAD(int) #endif @@ -378,7 +378,7 @@ public: _SET_CURRENT_TARGET_TEMPERATURE_OVERLOAD(uint32_t) _SET_CURRENT_TARGET_TEMPERATURE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_CURRENT_TARGET_TEMPERATURE_OVERLOAD(int) #endif diff --git a/src/device-types/HANumber.h b/src/device-types/HANumber.h index 441ad67..e20d6fe 100644 --- a/src/device-types/HANumber.h +++ b/src/device-types/HANumber.h @@ -64,7 +64,7 @@ public: _SET_STATE_OVERLOAD(uint32_t) _SET_STATE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_STATE_OVERLOAD(int) #endif @@ -86,7 +86,7 @@ public: _SET_CURRENT_STATE_OVERLOAD(uint32_t) _SET_CURRENT_STATE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_CURRENT_STATE_OVERLOAD(int) #endif diff --git a/src/device-types/HASensorNumber.h b/src/device-types/HASensorNumber.h index 83558ed..d530737 100644 --- a/src/device-types/HASensorNumber.h +++ b/src/device-types/HASensorNumber.h @@ -52,7 +52,7 @@ public: _SET_VALUE_OVERLOAD(uint32_t) _SET_VALUE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_VALUE_OVERLOAD(int) #endif @@ -73,7 +73,7 @@ public: _SET_CURRENT_VALUE_OVERLOAD(uint32_t) _SET_CURRENT_VALUE_OVERLOAD(float) -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD _SET_CURRENT_VALUE_OVERLOAD(int) #endif diff --git a/src/mocks/AUnitHelpers.h b/src/mocks/AUnitHelpers.h index 6b3844b..9b22424 100644 --- a/src/mocks/AUnitHelpers.h +++ b/src/mocks/AUnitHelpers.h @@ -30,7 +30,7 @@ assertEqual(eTopic, publishedMessage->topic); \ assertEqual(messageP, publishedMessage->buffer); \ assertEqual(messageLen, publishedMessage->bufferSize - 1); \ - assertEqual(eRetained, publishedMessage->retained); \ + assertEqual(static_cast(eRetained), publishedMessage->retained); \ } #define assertSingleMqttMessage(eTopic, eMessage, eRetained) { \ diff --git a/src/utils/HANumeric.cpp b/src/utils/HANumeric.cpp index 79bea60..4314663 100644 --- a/src/utils/HANumeric.cpp +++ b/src/utils/HANumeric.cpp @@ -96,7 +96,7 @@ HANumeric::HANumeric(const uint32_t value, const uint8_t precision): _value = value * getPrecisionBase(); } -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD HANumeric::HANumeric(const int value, const uint8_t precision): _isSet(true), _precision(precision) diff --git a/src/utils/HANumeric.h b/src/utils/HANumeric.h index 50a7cf6..9debe2b 100644 --- a/src/utils/HANumeric.h +++ b/src/utils/HANumeric.h @@ -3,6 +3,7 @@ #define AHA_NUMERIC_H #include +#include "../ArduinoHADefines.h" /** * This class represents a numeric value that simplifies use of different types of numbers across the library. @@ -92,7 +93,7 @@ public: */ HANumeric(const uint32_t value, const uint8_t precision); -#ifdef __SAMD21G18A__ +#ifdef ARDUINOHA_INT_OVERLOAD /** * Converts the given int into number representation of the given precision. * If the precision is greater than zero the given value will be converted to float. diff --git a/tests/BinarySensorTest/BinarySensorTest.ino b/tests/BinarySensorTest/BinarySensorTest.ino index f4f4859..f6a4823 100644 --- a/tests/BinarySensorTest/BinarySensorTest.ino +++ b/tests/BinarySensorTest/BinarySensorTest.ino @@ -203,7 +203,7 @@ AHA_TEST(BinarySensorTest, default_state_false) { initMqttTest(testDeviceId) HABinarySensor sensor(testUniqueId); - assertEqual(false, sensor.getCurrentState()); + assertFalse(sensor.getCurrentState()); } AHA_TEST(BinarySensorTest, default_state_true) { @@ -211,7 +211,7 @@ AHA_TEST(BinarySensorTest, default_state_true) { HABinarySensor sensor(testUniqueId); sensor.setCurrentState(true); - assertEqual(true, sensor.getCurrentState()); + assertTrue(sensor.getCurrentState()); } AHA_TEST(BinarySensorTest, publish_state_on) { diff --git a/tests/DeviceTest/DeviceTest.ino b/tests/DeviceTest/DeviceTest.ino index 16daaef..adfa0fc 100644 --- a/tests/DeviceTest/DeviceTest.ino +++ b/tests/DeviceTest/DeviceTest.ino @@ -291,7 +291,7 @@ AHA_TEST(DeviceTest, lwt_enabled) { assertEqual(AHATOFSTR(AvailabilityTopic), mock->getLastWill().topic); assertEqual("offline", mock->getLastWill().message); - assertEqual(true, mock->getLastWill().retain); + assertTrue(mock->getLastWill().retain); } AHA_TEST(DeviceTest, full_serialization) { diff --git a/tests/FanTest/FanTest.ino b/tests/FanTest/FanTest.ino index a61a3b6..d9c11b5 100644 --- a/tests/FanTest/FanTest.ino +++ b/tests/FanTest/FanTest.ino @@ -8,7 +8,7 @@ #define assertStateCallbackCalled(expectedState, callerPtr) \ assertTrue(lastStateCallbackCall.called); \ - assertEqual(expectedState, lastStateCallbackCall.state); \ + assertEqual(static_cast(expectedState), lastStateCallbackCall.state); \ assertEqual(callerPtr, lastStateCallbackCall.caller); #define assertStateCallbackNotCalled() \ @@ -377,7 +377,7 @@ AHA_TEST(FanTest, current_state_setter) { fan.setCurrentState(true); assertEqual(0, mock->getFlushedMessagesNb()); - assertEqual(true, fan.getCurrentState()); + assertTrue(fan.getCurrentState()); } AHA_TEST(FanTest, current_speed_setter) { diff --git a/tests/HVACTest/HVACTest.ino b/tests/HVACTest/HVACTest.ino index b9f51d0..b6cb2e7 100644 --- a/tests/HVACTest/HVACTest.ino +++ b/tests/HVACTest/HVACTest.ino @@ -12,7 +12,7 @@ #define assertAuxStateCallbackCalled(expectedState, callerPtr) \ assertTrue(lastAuxStateCallbackCall.called); \ - assertEqual(expectedState, lastAuxStateCallbackCall.state); \ + assertEqual(static_cast(expectedState), lastAuxStateCallbackCall.state); \ assertEqual(callerPtr, lastAuxStateCallbackCall.caller); #define assertAuxStateCallbackNotCalled() \ @@ -20,7 +20,7 @@ #define assertPowerCallbackCalled(expectedState, callerPtr) \ assertTrue(lastPowerCallbackCall.called); \ - assertEqual(expectedState, lastPowerCallbackCall.state); \ + assertEqual(static_cast(expectedState), lastPowerCallbackCall.state); \ assertEqual(callerPtr, lastPowerCallbackCall.caller); #define assertPowerCallbackNotCalled() \ diff --git a/tests/LightTest/LightTest.ino b/tests/LightTest/LightTest.ino index 1cc2d37..cd2ce1a 100644 --- a/tests/LightTest/LightTest.ino +++ b/tests/LightTest/LightTest.ino @@ -10,7 +10,7 @@ #define assertStateCallbackCalled(expectedState, callerPtr) \ assertTrue(lastStateCallbackCall.called); \ - assertEqual(expectedState, lastStateCallbackCall.state); \ + assertEqual(static_cast(expectedState), lastStateCallbackCall.state); \ assertEqual(callerPtr, lastStateCallbackCall.caller); #define assertStateCallbackNotCalled() \ @@ -603,7 +603,7 @@ AHA_TEST(LightTest, current_state_setter) { light.setCurrentState(true); assertEqual(0, mock->getFlushedMessagesNb()); - assertEqual(true, light.getCurrentState()); + assertTrue(light.getCurrentState()); } AHA_TEST(LightTest, current_brightness_setter) { diff --git a/tests/SwitchTest/SwitchTest.ino b/tests/SwitchTest/SwitchTest.ino index 276f74e..7d6b4d6 100644 --- a/tests/SwitchTest/SwitchTest.ino +++ b/tests/SwitchTest/SwitchTest.ino @@ -7,7 +7,7 @@ #define assertCommandCallbackCalled(expectedCommand, callerPtr) \ assertTrue(lastCommandCallbackCall.called); \ - assertEqual(expectedCommand, lastCommandCallbackCall.state); \ + assertEqual(static_cast(expectedCommand), lastCommandCallbackCall.state); \ assertEqual(callerPtr, lastCommandCallbackCall.caller); #define assertCommandCallbackNotCalled() \ @@ -272,7 +272,7 @@ AHA_TEST(SwitchTest, current_state_setter) { testSwitch.setCurrentState(true); assertEqual(0, mock->getFlushedMessagesNb()); - assertEqual(true, testSwitch.getCurrentState()); + assertTrue(testSwitch.getCurrentState()); } AHA_TEST(SwitchTest, publish_state_on) { diff --git a/tests/auniter.ini b/tests/auniter.ini index 0b8b2a6..e583ea2 100644 --- a/tests/auniter.ini +++ b/tests/auniter.ini @@ -6,7 +6,7 @@ mega = arduino:avr:mega:cpu=atmega2560 nodemcuv2 = esp8266:esp8266:nodemcuv2:xtal=80,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=921600 esp32 = esp32:esp32:esp32da:PartitionScheme=default,EraseFlash=none,FlashMode=qio,FlashFreq=80,FlashSize=4M,LoopCore=1,EventsCore=1,UploadSpeed=921600,DebugLevel=none - nano_33_iot = arduino:samd:nano_33_iot + due = arduino:sam:arduino_due_x_dbg [env:uno] board = uno @@ -24,6 +24,6 @@ board = esp32 preprocessor = -D AUNITER_ESP32 -D ARDUINOHA_TEST -[env:samd] - board = nano_33_iot - preprocessor = -D AUNITER_SAMD -D ARDUINOHA_TEST +[env:due] + board = due + preprocessor = -D AUNITER_DUE -D ARDUINOHA_TEST