Lattice ICE40 UltraPlus FPGA (Image Processing Demo Part 2)

This the second part in a series of articles related to a demo that will perform classical image processing in the Lattice ICE40 UltraPlus FPGA. The system that will be used is the Lattice ICE40 FPGA UltraPlus Breakout Board.

image

Please refer to the first part here before proceeding. The first step is to create the input image for this image processing demo. This was created in GIMP. The original image was reduced in resolution to only 64x64 and saved as a C .header file to be encoded and integrated into the C++ program as “characters” for the 4 wire SPI communication system interface, technically speaking. The actual C .header file used in this image processing demo is the following one,

/*  GIMP header image file format (RGB): /DigiKeyCoffeeCup/cup.h  */

static unsigned int image_width = 64;
static unsigned int image_height = 64;

/*  Call this macro repeatedly.  After each use, the pixel data can be extracted  */

#define HEADER_PIXEL(data,pixel) {\
pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
data += 4; \
}
static char *header_data =
	"````````````````````````````````````````````````````````````````"
	"````````````````_PHZ\\_\\N\\OXM^P8V`@X]````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````@X]]`(QZO,BY>T=[/4F^0,S_`P\\`P\\_````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"``````````\\__PHY\\?DGZ.X<Y>H9Y.L;Z/$A\\?PL^P<W`0T]`P\\_````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````0P\\]O`N[/(?Z>X;Z>`=Z?$@Z.`AYN`BZ/,E\\/PM^@8V_`P\\`P\\_````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````@T]^@0R[_4BZN\\;Z_$>[O4D[_<I[?8JZ/(GX^TCX>PAYO$E[_LM^P8V`@X]"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`@X]^P0R\\?<D[?$=[?(>[_4C\\/@I\\?DL[_@MZ_4KY_$HX^XEXNTDX^\\DZ/0G]0$Q"
	"_PL[`P\\_````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````````````````PX^"
	"^P0R[_4A[>`=[_,@\\/<D\\?@H\\?DK\\/HM[_DM[/<LZO4KZO4KZ?0KYO$HX>TCX>TA"
	"[OHK_0DY`P\\_````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````````````P\\__`HY"
	"[_0@[.\\:[_(>\\?8C\\ODH\\OLK\\OLM\\?LN\\/LN[ODM[ODM[_DN[ODOZ_8MY?$HW>D?"
	"W.@=[OHL_@H[`P\\_````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````````````@X]^@,P"
	"Y^D3Z^T8[?$>[O0B\\?@H\\_PM]/XO]/XP\\_TP\\?PO\\?PO\\?PP\\/LO[?@NZ?0KXNTE"
	"V>4=W^H?]P(S`0T]````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````````````0P\\]/PH"
	"Y.8-YN@3YNL7Z.X>[/0E\\/DK\\_TP]?\\Q]?\\R]/XQ\\_TQ\\OTQ\\/LO[?<NZ?0KX^\\F"
	"W.@@V.,;Z?0H^P8W`@X^````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````````````0P\\\\_PH"
	"XN0+X>,-Y>D6Z>\\?ZO(E[/0H[_DL\\_TP]?\\R]O\\S]?\\S\\_XR\\/LP[?@MZ/,JX^\\E"
	"W>D?V>0:W^H?[_HM^`<X`@X^````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````````````@T\\]?XJ"
	"XN0*W^$*YNH6Z_$B[/0GZ_,IZ_0J[?<L\\?LP]/XR]/\\S\\_XR\\?PP[?@LZ/,HXNTD"
	"WND?WND?X^TDY_$G\\/HN^P8X`@X^````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````P\\_`0T\\_@@V\\?@B"
	"X>,)WM\\'Y.@4Z_$A[?8H[?8KZ_4KZO0KZ_4L[?<M[_HO\\/LP[_HN[/@KY_,FXNXA"
	"X>PAY_$GZ_8MZO0KY_(H[ODL^00U_`P\\`P\\_````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````P\\_`0T]^`@X]P(R\\_XM]/TJ\\/8@Z.L4"
	"Y.8.W=`(XN82Z>\\>[?4H[O@M[O@N[/8MZO0LZO0KZ_4LZ_8LZ_8LZO4JY_,FY?$D"
	"Z/0G[ODN\\/HQ[/@NXNXEU^$7V.,5Y?$A\\O\\O^`@W`0T]`P\\_````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````P\\__`P\\]`0SY_,BS=@'NL'OQ<CTX>0.Z>P6[.X9"
	"Z^T7X^8.X^<2Y^X;[/0E[_@L\\/HP[_DP[?<NZO4LZ?0KZ/0JZ/,IY_(HY_(HZ?0I"
	"[OHM\\?PP\\/LP[/@MX>PCR-$&J*W>F)S)IZ[<Q]'`Y.`@]P,S_`P\\`P\\_````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````0T]]`,SW^L:N</RG:/1J:O6R,GSWM`*Y^D3[.X9\\?0?"
	"\\O4@ZNP7Y^L6Z.X<Z_(C[O<J\\/HP\\?LR[_DQ[/<NZO4LZ/,KY_(IYO$HYO$HY_,I"
	"[/@K[_HN[OHLZ?8JX>TBU]\\1S\\[YQ;W?L*3%EXZSDI.^L+GGVN85]P,S`0T]````"
	"````````````````````````````````````````````````````````````````"
	"`````````````P\\_^`@XY.`?N,/RCI;$DI6`N[OFV]T'Y^D3Z.D4ZNP7\\/,?]?LE"
	"]OLF\\/,?ZNX;ZN\\<Z_(B[?<H\\/HN\\/LQ\\/HR[_DQ[/<OZO4LY_,JYO(IY?$HY?$H"
	"Y_(IZO4JZ_<KZ?,IX>PCU]`6TMD+U-@#UM/ZS\\7FN*C&E(:FA(6PJK3CX.T<_0DX"
	"`P\\_````````````````````````````````````````````````````````````"
	"`````````P\\^]P,STMX-H*G8C)\"]J*C2S,OSXN,,Z^T7Z^T7ZNP6[.X;\\_@E]_\\K"
	"]_XJ]/DF[_0A[?0A[?4D[O<I[_DM\\/HP\\/HR\\/HQ[O@P[/8NZ/0KYO(IY?$HY.`H"
	"Y.`GY?$HZ/,JZ?,JY>\\FW.8<U=\\5U-X3U]\\1V=P)UL_TQK//HXNC?7:<A8V\\P\\_^"
	"]0$P`@T]````````````````````````````````````````````````````````"
	"`````P\\_]@(QR-0#DYK(D(^ZM[3>UM7^YN<1[N\\:[^`;Z^P6ZNL4[N`<]?DF]_\\K"
	"]OXJ]?PH\\ODF[_<D[O8E[O<H[_@L\\/HO\\/HP[_DQ[O@P[?<OZO4LY_,JY?$IY.`H"
	"X^XHX^XGY>`HZ?,JZ?0KY>`GX.HAVN0;V>(8VN(5VML'U,?HQJJ^L9JR@WR@<GJH"
	"L;SL[?HI_`P\\````````````````````````````````````````````````````"
	"````^`@WSMD(D9;$B7VALZ7(UL_WZ>D3\\O,?]/8A\\?,=Z^P5Z.D1[>\\:]/@E]?PH"
	"]/PI]/LI\\ODH[_<E[?4D[?4F[?<J[O@M[ODO[O@O[?<O[/8NZ_4LZ?,KY_(JY>`I"
	"X^XGX^XGYO$IZ?0KZ_4KZ?,JY.XEW><>V>,:VN,9V^$3U]/^SKK8Q:>^NJC$A'^F"
	":7&?M\\+R[_PK`0T]````````````````````````````````````````````````"
	"`@X^YO,AG*32@W.4K)*LT\\3EZ>4-]/0A^/HG^/HG]/8A[>\\7Z.D0ZNP5[_,?\\/<D"
	"\\/<E\\/<F[_8E[/0BZ_(@Z_(BZ_0F[/4I[/8K[/8LZ_8LZ_4LZO0KZ?,KZ/,KY_(J"
	"Y.`HY.\\GYO$IZO0KZ_8LZ_4LY_$HX>LBV^4<V>,9VN,8V^$3V-4#S[[DR[71N*?%"
	";V:*=X\"NS]L*]`0S`P\\_````````````````````````````````````````````"
	"_@HZQ,_^@(&KFGZ4R;+,YMT!]/,=^?HH^_PJ^OPI]_DE\\?$;ZNH2Z>H2Z^X:ZN`="
	"Z_$>ZO$?ZO$?Z>`=Z>\\=Z>\\?Z?$BZ?(EZ?,GZO,HZO,IZ?,IZ?(IZ/(JZ/(JZ/,J"
	"Y_(IY_$IZ/,J[/8M[?<N[/8MZ?,JY>\\FX.LBW.8>V>,:V.(8V=`4U]D)TLCOQK#*"
	"FX.:96&(HJW<Y_0D_`P\\````````````````````````````````````````````"
	"^`@WI['A>'&7JHN>UL+<[><+]_<B^OPJ^_XK^_XK^?LH]/4?[>T5Z>L3Z>P8Z>T:"
	"Z.T:Z.X;Z.X;Z>T;Z.T;Z.X>Z.\\@Y^\\BY^`CY^`DZ/$FZ/$FZ/$GY_$HZ/(IZ?0J"
	"ZO4KZ_8L[?@N[_HO[_DP[O@OZ_4LZ/(IY.XFX>LBW><>VN0;V>,9V^,6U]<%R+76"
	"JXB<;UQ[?82RV.04^`@X```_````````````````````````````````````````"
	"^P<WG:?6>V^2LY2DV\\??[N<(]?0=^/DE^OPH^_XJ^_TJ^/DE\\O,=[N\\9[>\\:[.\\<"
	"[.`=[/$>[/$>Z^`=ZN\\<Z>X=Z.X?Y^X?YN\\@YN\\AYN\\BY^`DZ/$EZ?(GZO0I[/<L"
	"[ODN\\/LO\\OTQ\\OTR\\?LQ[_DP[/8MZ?,KYN`HX^TEX.HAW><=V^08V]`2U,_[PJ;%"
	"K(\"2>UYX<W6AS]L*^00T`P\\_````````````````````````````````````````"
	"^P<WIJ_>@7::M9>FVL37Z]_[\\>P.\\_$7]?4=^/DC^OPG^OPH^/DE]O<B]?<B]?@D"
	"]ODF]OHH]?HH\\_DF\\/4B[?(@ZN`?Z>\\?Z.`?Z?$AZO(CZ_0F[/4H[O<K\\/HN\\OPP"
	"]/\\R]/\\S]/\\S\\_XR\\?PR[_DP[?<NZO0KYN`HX^TDX.H@WN<:W>(2U]/_R;+3N(^B"
	"JGJ*@&!Z>'BDT=T+^@4U`P\\_````````````````````````````````````````"
	"_@DYO\\CXA8&IJ8N:T+*_Y,_B[.#Z\\.D&\\NX.]/(6]_8>^?HE^OPH^_TJ_/\\K_@$M"
	"_P(O_@,P_@,Q^`(O^/\\L]?LH\\O@E\\/8D\\/<E\\/@G\\OHK\\_PN\\_TP]/XQ]O`T]`$U"
	"]`$U]?`T]/\\S\\_XR\\OPR\\/HQ[O@OZ_4LYN`HXNLAW^@<WN45W-P&TL+DOYJMM(63"
	"I76$>%QY@X.PUM\\.]OXN_00T_P<W`@L[`PX^````````````````````````````"
	"`0P]W^H8EIK&DGN4N9BBU[K&Y]3E[>+Y\\.@#\\NP*].`2]_4<^?HD^_TI_0$M_@0O"
	"_P4Q_@4R_P4S_@0R_@,R^`(Q^P$O^?`O^/`O^0$Q^0$S]`$T]`$U]`$U]`$U]`$U"
	"]O`T]?\\S]/XT]/TT\\_TS\\?LR[_HQ[/8NYN`GX.D>W>45W=\\*V<_RS+''NY*?KX&."
	"FFM^:U%UCWNLRKWNW<[`X\\`\"Z=<)\\>87^/4F_@,S`@P\\`P\\_````````````````"
	"`P\\_]P,RP,?UC8>OFG^1OY^IVL#-Z-;I[N+Z\\>D$\\^X,]?(3]_4:^/DA^?TH^P$L"
	"^`,N^`,P_0,Q_@,Q_@,S_@0S_00T_00T_00T^`0U^P,U^@,V^0(V^0(V]`$U]`$U"
	"]O`T]O`T]?\\U]?XU]/TT\\_PS\\?LR[?<NYN`FW^<9V]X*V='UTKW5QJ.QMXR7I7B'"
	"@%QV;#YLE4B!KV2<NFNBQFNDSW\"JU(&ZW*/9Z,W`]?(C_`@X`P\\_````````````"
	"`````0T]Z_4DL;3BAGNAF7Z1OJ\"NV+W-YM+G[N#Z\\NH'].X.]?$2]O07]_<>^/LF"
	"^/XJ^?`M^P$O^`$P^`(R^`(S^`,S^`,T^`,T^P,U^P,V^@,V^0(V^0(V^0(V^0(V"
	"^0(V]`$U]O`T]?\\T]/XS\\_PR\\?LP[O<MY^`DW^03V-+WT+S4QZBVO):AJX*0C&A_"
	":D1NBRIJI!=GK!%DM!)FPA1KS!5OSR1VT$.(TW6OW[+H\\>D;_P8W`P\\_````````"
	"````````_0@WVMT+HIG&@VV2E7B0M9:FS[/\"X<W@[-[W\\.@$\\NP*\\^X.].`2]?0;"
	"]ODD]OPH]_TL]_XO^/\\Q^/`R^/`R^/`R]_`S]`$T]`$T]O`T]O`T]O`T]O`T]`$U"
	"^0(V]`$U]?\\S]/TQ\\OPN\\?HM\\/DK[?8IY^\\@W]`*U<?FQZJ\\N)*?J8&1CVV&;DYY"
	"BCM]JR]ZL1QLLA%DNA!ER!1KT1URU1]WU1IXU\"V!TV.DVZ?=[N46_`@Y````````"
	"`````````0L[ZNL:OZG8E6R;?%B!@6>&H(:<P*:XU[_1Y-'HZMWY[>4\"[^D&\\>T-"
	"\\O(7\\_0=]/<E]/HI]/PM]?TO]?TO]?TP]?TP]/XQ]/XQ\\_TQ\\_TQ\\_TQ\\_TQ\\_TQ"
	"]/XQ]?\\R]?TP\\_PM\\OHJ\\?@H[_8F[/(AY>@3VM/YS+C5N9NQH'Z3AF:$<5!_AT^,"
	"KDN3O$>2N2QYMQ5IP!ANS25WU21YV!EVV!)VUQ)XU\"=_T%^?V:O@]/(C`@T]````"
	"`````````0T\\[_(AR:[>J6F<E4M`@$AY<$UV>V)`FX\"6N9ZQS[C-W,K@Y-;NZ-WY"
	"Z^,\"[.8)[>L4[O$=\\/4D\\?@H\\ODJ\\OHK\\OHM\\?LN\\?LN\\?HN\\/HM\\/HM[_DL[_@L"
	"[_DI\\/@G[_8D[_4C[O0B[/$>Z.L6XM`(ULWRP*_/I(JEAFR)<55];T1W?SUZET.&"
	"KC.#N3:&N2=YMQ9MOC)^RDZ7TDJ4U#%`TQARTQ1QTA1ST3:\"TG*NX+[S_@0T``\\_"
	"`````````PX]]/@GS[/ELFB>I4%^FT!ZBT%V=T%R:$=Q;5E]AW*0HHJANYZQRK##"
	"UL'8VLCBX-3TX]S`Y>('Z.</ZNH5Z^T9Z^\\=Z^`@Z_$AZN`?ZN`>ZO$?Z^`@ZN\\>"
	"Z>X;Z.P8Y>@3XN,-W=P%U,_UQ[W?M*?(FXRN@&Z3;5)];$%V=3IV?#)S@B=NER5U"
	"K\"1^L2!WK1ALJ2AMJD6!KER5L6J@M&ZDMVNANUZ7PD>%R\"ETRT&&U)#(\\>L<`0P\\"
	"`````````PX^]OLKT;?IMFB@K3A]J#1YGS9WDSIVA3UV=S]T:4-S9$QU<EQ`C'.1"
	"HX>AK9*KNJ.\\PJS$R+/-S;K6T<'?U,CIU<WRU]'WU]+XU\\_SU\\[OVM+UVM/YU<SS"
	"TLCNR\\+GPKG>N*W1K)_#FHRRA'6=<E^*;DY^=D)Y?S=U@R]SA2URB\"EPB1IIF\"%R"
	"I2%VHQMMG3MXI7>IP[3CW]X,[_,A]/DG\\?8DX^$0R++CM&ZCO#Q`RFJIW+SO_@4V"
	"``````````\\_^?\\OU;SNN&RDL#=^KRU[K2QZIC!YFC-VBS5S?C=R=SIR<SQS;T-U"
	";4QX;E5_>&.*A'\"4CGF<E7ZAF82GG(JMH(^QI).WJ9F]K)V_JYN\\J)F\\JIK!I9:^"
	"EH6NC'JDA7*=?6>4=UN)=D^\">45^?#Y[@3IZAS=XC3)WDS)XES=\\E2MTCAYIERMS"
	"FQQNF#EYJHB[UM4$\\OLJ_PDY`@X]`P\\^`PX^_0<WY^T<O[+BHEJ2MT2'S(W%\\_,C"
	"````````````^`(RV<3UNW:ML3N!L\"1XL\")WKBQZJ3!ZGBESDREOB2MN@RUM?3%N"
	">39Q=SMU>4-Z?4Z#?%.&=E&$<4Y`;TY_;D]_;U*!<5:&=%J*=EJ*>5N,@6\"2@%N/"
	"?4Z&?DB\"@$5_@4%]@#QZ@#AW@C5VA3)UB2]UCRMTE2=TF25UFR9UEB%ND29MF3I]"
	"DBIRF6J?TL[^]?XM`@T]`````````````````0P\\[O@GP<'PC668G31WPG:PY-<("
	"````````````_04TW<W^OH*XL4*%KR!VKQ=SKQIRK1URJ1]QHR-QF1ILDQIJCR)L"
	"C\"IPB\"QPAS%SB#MZAD)_@3]\\?3EX>S=V>3AV>3EW>SIY?3M[?CU]@$!_A$2#@SY^"
	"@3E[@C=Y@S1WA3)UAC!TARUSBBERCR9SEB=VG\"IYG2AYG\"!UFQEREAELD2MNEDN%"
	"G'2HO+'B[O4E`0P\\````````````````````_`L[Z?,BN+CH?E^1BC9UN&ZHU;OM"
	"````````````_@<VX=<'P8_#L4J*KQ]UKQ1QKA!NK1%MJQ1MIQ9LH1%IG!%IF!-I"
	"EA=KE1AMEA]PFC-\\G$6)F$\"%DC1[CBYUBBYTB#!UB#)VBC5YCCE]DSV\"ET\"&D#9]"
	"C#1ZBS%WC2QVD\"=TDR)REAYRF!IRFQ=RG1YTH\"EYH\"MZG2)VFA=QE2-NEE\"(KY3%"
	"U=,\"[_8E_PHZ`P\\_````````````````````_0@XW^<7I:#0=$Q`?RUKJU^7RJC:"
	"````````````_P@XY=`0Q)O.L5*/KB%TKQ9RKA%NK1)LJQ5LJ!AKHQ)HGQ%GG!!G"
	"FA%IFQ-KG!5MGBAVHCR#H#9_GB5VG\"%UFRIYFBYZFBYZG2][HS%_J#.#J3.$I\"9Z"
	"HRU\\HRY\\I2E[I2%XI1IUI1MVI!IUHA5SH1ERH2=WH2Q[GB1XFAEQES5WIWNOWMT,"
	"^@,R`@T]`````````````````````````PX^]?`OSM(\"CW^P;S%J?B=EI%J1QZ;7"
	"````````````_`HZZN@8R:78LEJ5K2-UKQESKA1OK11LK!MMJB%OI!1HH!!EGA!F"
	"G1)HG1)IGA%JGQ9LH2-RHQ]RI!5QIA]VJ32!JT\")JSZ(K#*!KB-\\L\"%]L2-^KAIX"
	"KAUVKB!WKR5ZKAQVK!=TJB!WJ\")XIA]VI\"-VHR]\\HC9`H#%]FR5TF#Y\\L([!\\_DI"
	"`PX]````````````````````````````_@@XY>L;M:W?@%J.<AM<@BEFIF*8SK?G"
	"`````````````0P\\[^`@S:[ALF\":K2AWKQ]UKA5OK!)JJQ5JJ1AKI!)GH1!EH!!E"
	"GQ%FH!5JHA1JI!QNIAANJ!)NJA%PK!MTKS%_LD&*LD&*L\"]^L!=VL1AXLR1]L2%X"
	"KR)VKAUTL\"EZKA]TK!5PJAARJ!]UIRAYIS!^I#-^H#)]GS-\\G\"UVF#YZKXR_\\_DI"
	"`@X]`````````````````````````0P\\\\/<GRL;WEWNO>3)L>117B2QFK6ZDV\\__"
	"`````````````PX^]/<GT;?JM&>@KC-\\L\"]ZKR1SK!1JJA!HJ!!HI1!HHQ!FHA5G"
	"HRQSI3!WI21PIRIUJ2-RJB)TK2IYKRQ[L#!^L31`L\"Y[KQUTKQ)QL!-SL1MVL!]U"
	"L3=`KB-TKB5UK1MQJQ-NJ15PJ\"%UIRQ[I3-_H3![G21TG\"!QFA]MEC-RIWFNY-\\/"
	"_`HY```_`````````````````0P\\\\?HJT<_`I8[!@T9\\>Q)5@Q-4ECAPN(.W[.H9"
	"`````````````P\\_]_TMU+_RM6^GKD2%M%22M5F6L$B(JR=RJ1%IIQ%IHQ%GHAUI"
	"IC]`IC^\"I\"ERI21PIR!PJRYZKCR&L#R%L#5`L\"][KQ]SKA!NKQ!OL!!QL!)QL!UT"
	"L3B!KR5UK1IQK!=OJQ1NJ1EPIR1VI\"=WH21UGAYQG!5NFQ)LFA1IER)IGU.-R*'6"
	"\\?8E_@DX`@X^``\\_`@X^^`8VZ?(BRLGZIHZ`C$Z#A!M:AQ!/DR-<J5J/RJS>^?`O"
	"````````````````^@$QV,CYMWJPKU20NGBPPI''OH>_LV*?JS5[IA1HHA!DH11E"
	"HBAOHB=OHAEIHQ5II11JJ!UOJR=UK2IWKBUZKRMXKQUQKQ%NL!-PL1-SL15TL1QT"
	"L\"5VKR9VK1URK!YRJQUQIQANI!EOH1IPGA9NG!%LG!%MG1=NGAMMG!=FH\"]QN&6>"
	"R[OMW^(1Y^\\?[O8FZ?$BU-D*L:W>E':IC$)YD!Q;E!!2FA!1I3APNX.VX]T-_`LZ"
	"````````````````^`0TW=(\"O(>\\L5N6O7^VR*39RJSDPIC2M6^MK%&1IT:&H1YI"
	"H!)EH!!DH1%FHQ1II1-HIQ%GJ1!IJQ)KK!=NK1ANK11MKQ-NL!=RL1=VL19VL!9R"
	"KA1OK!=OJQ1MJAIPJB-SIQ]PHQ5LH!-LGA-LG!%LFQ%LG!1MGQINHAEHJ!EEM3)S"
	"JEV3I'>JHH*UJ9#\"HXJ\\E'*EC5\"%E2QEH!)4IA!2J!!3JR5AM5Z3S:_A]_TM`PX_"
	"````````````````_08VXML+P97*LV&;O'NRQY[4R:GBQJ;BQ*#=OY#.MH*`HC=["
	"GR-NH\")MH1IJI2%PIAMMIQ-HJ!!HJA!IJQ-MK!QQK1]RK1=QKA)RKQ%VL!%VKA)P"
	"K!!MJQ!MJA!LJ1)MIQIOIBIVI3I`HCM`GBUWFQ=MFQ)LG1IQHR5VJ29TKQILN\"1P"
	"KAMEKB5KK2IMJS)NIRQGJ!]?L!-<MQ!9N1!5N!!4MQI<N4Z%R9C*Y^,3_`HZ````"
	"````````````````_P@XZ.45QZ/7M66?NG.KQIK0R:GAQZGEQJKGNI#/MXC(HT*("
	"J%.5J%.3HS=\\HR-PI3)YJ$.&JD2(K$*'KTB-L4R2L4>/L$:-LE\"6LTN5L2R#KR5Z"
	"K\"!UJQ-OJAEPJC9_JDF.JER>KWFXKGNZI%R<G\"UWFQ)LG15NH1=MIQ5IK1)HLQ1H"
	"LQ%BM1-CN!IGMQEBNA->P1%?QQ!AR1!@QQ!<PQA?P$J\"R([!X-4%^`0T`P\\_````"
	"`````````````````0L[[>X>S*_BM&>AMVFCQ97,RJGAR:WHR[3PQ*7DQZ[MJFBI"
	"MHS+LX?%JVVLIU>8KVVMO9+1P)C9P)?7PIW;OY32N'R]O8S+R:SKQZ+BMF&HM%JA"
	"LE^CK%*6K5\"4M'BXNY33MY+1N)G9M)'1IFBHG\"]YFA5NG!9OH!=MI1)HJ1!DKQ)F"
	"N1UNO1]KQC-XRS!UT\"%MU!9KU!=LT1=HS!]GR$^'S)+$X-4%^@(Q`P\\^````````"
	"`````````````````@T]\\_8FT;GLM&JCLE\"/OW^XS*;>TKKTS[GTQ*;CS;KXMY'/"
	"Q[KXOZGHP['PPJSKMI+1MY33O)W=P:CGQK/QQ:WKP9_>QJSJR[;TP934NWR_PZ3B"
	"RK3TS;W[Q*KIP*7DP:KJNZ#@NZ'AMI35J&JLG3J\"FRIVFB9SFB1NFA9CHA-BJB%I"
	"NT.(R#9^TB9TUR)SV1YSVBIZV3N&U$B+SVNCU*;9Z.$1^`0T`P\\_````````````"
	"`````````````````P\\_]OPLUL+UMG*JKCA^M$V/NW&NP(_*P9;2P)C5S;GUN973"
	"R;SYN);5OJ7DQ;+QO:'AOZCGPJOJPZOJQK7RR+?UR+7TS+OZQZCHOH+%QJ3CSL0!"
	"O9[>QK7UQ;'SPJ_OP;#OOJCHO:;FM)+3I&2FFC-]F2UVF#!VE#)TD39TFDJ$H$^("
	"K4V)Q4N*TDR.UUF>V%B=UEN;T7*LU)_4XM(#]/8F_PDY`P\\_````````````````"
	"````````````````````^P$QW,W_NH\"VKCY`L#)\\L#F!KT.'KU&1M7.OP9S9L(\"^"
	"PZ_KNIK8OJCEQK;TOJ7DPJSKQ;#OPZ[MQK3SQ[7TR+3SS;S[RJ[MPX[0R:_OT,P("
	"Q[7TP*?GN8[0O9K<Q+#PQ;CWP*[NL(O+GE&4EQ]OER=QES-XEE2.GX:ZO+7FPKOM"
	"P[7HSK7ITK+FU++GU[KMW\\W_Z^45]?DI_@<W`@T]````````````````````````"
	"````````````````````_04UXMD*P9+&KTR*KB]YKBIWJAEMJ!MKJ#=ZJ4^-I$>("
	"K7:RNIW7QK?SRKW[OZ;EP*CFPJGGP:?FPZWKPJ?FOIK9Q*GGS+?URJ?FQ:CGS,#]"
	"QK#OQ*7DLW*TK6&CLG^_N9G8MI74J'*QFS^#EAMLEB%NF46#KXR`U]D)]/\\O^0,T"
	"^0(S^@,S^@(R^P(R^P,S_08V_`LZ`@X^````````````````````````````````"
	"````````````````````_PDYZN@8R:C;L5V7K3)ZK3!YJ1]OIQ%EI1!BH1!AGA5E"
	"H#]_L8:`OZGEQ++PMY/2LX3#M(+!M87$MXW+MH7$L&VNM7N[PYS:QIK9MG2WMX#!"
	"LG*SK6&BIT\"%ICR!J%65IE^?HE:7G#Z#F\")PEAAKEB5NG%6/O:;8[_4E`@X^````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````@T]]/@GUL'SMW:LK#9\\JRAUJ!EKIA!DI!!CH1!CG1%A"
	"FR!HH522JWBVLH?%JVRLI4Z0I$.%I4>'IDR,ITB)ISE_JT:+N&:HP'&TL$./JCB#"
	"J#!\\HQ=LHA-IHB1OH3%WGBQUFA]OF!=LEQ9KEAEKES9WI7*GR\\#Q^0(R`P\\_````"
	"````````````````````````````````````````````````````````````````"
	"```````````````````````__04TY=\\/Q)W0KU60JB=SJ!=KIA!DHQ!CGQ!BG!)@"
	"FA1BFB9MG#M]H$>'H3U`H\"USGR!IGQ9CH!-CH1MHI!]LIRATLDB.O5^CKC>&IQIQ"
	"IC!YHB-QH!]NH!YLGRISG\"9PF1YLF2%NF\")OEB)NFU\"+MIG,X>$1_PDY````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````@P\\]/@HU\\?YN(&WJCQ^IQ9LIA9HI!QHH!-CG15B"
	"FAIEFRQQF!QGF15DG25MGS!TGRMPGAUHGQ=FH\"!JHR9OIR]WLTR0P&:HKSV)IBEV"
	"ICY`H2YUH3%WH#)XH3^!GCA[FB=PF2-OF\"1PF#Q]IWNPS</U]/PL`PX^````````"
	"````````````````````````````````````````````````````````````````"
	"```````````````````````````__P@X[.T=SKCJLW*IIS1YIB!OI2=PH!9FG11C"
	"FQUGG3-VF2)JF!1DFAIGFR)JG!]GG!9CG19CH\"-JHRUSIS5[LTV0P&:HKCV)I2MW"
	"HS-XGR5OGR]TH#A[HD:&GSY`FBMSEQ]MEC-VH6VCPK+CZ.P<_PHZ````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````P\\__04UZ>D9S+3FLG.JI35YHQULH1AHG19E"
	"FQ5CFB)JF!AFEQ)DF!-DF!)BF1%?FA!>FQ)@G1EDH\"!II\"MSL4>,OE^BK3F%HQ]O"
	"H25OGAEIG!UJG\"IQGCI\\FC-XE\")MD2QPFV6;NZG;X>03^P4U`P\\_````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````P\\__08VZ^P<S;KLKW:JH3)UH!MJG1MI"
	"F1%BEQ!BEA!CEA)EEQEHF!=EF!)AF!!>F1!=FQ%>G1%AHB%MKD&&NEF<JSV&H2!N"
	"H2UTG1]KFQIIF2)KE25MD1UJCB]PF&:;MJ;8W=\\/^0(R`P\\_````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````P\\__@@X[O,BT,/SKH\"SG$)^EQAF"
	"ERQPE!IGE!)FEQAJF1]NF1QJF!1DEQ%?F!!=F1%=G!1AH!UKIS)[KDB-J$.(GR=Q"
	"GB=OF2%KF\"ANEC9VCB]PBT%[F76HNK'AW^03^0(R`@X^````````````````````"
	"````````````````````````````````````````````````````````````````"
	"``````````````````````````````````````````\\__`L[]/PKVM<&M9O-GFN@"
	"EU:/BBUOC!=GE25RFS%ZFRIUEQIJE1-BE1ICER!EF1YFFQAGGR%PHC%[H#5\\FB)O"
	"F2=OD2)JBS!QB$5^BER1H8Z`R,;WZ?$A^`<W`P\\_````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`````````````````````````````````````````````````@X^_08V[O0DT<__"
	"IYC)D'.EB%N1B$>\"D$*\"DC=[CB)MC!MGCBUOD3AVD3-SD\"-KEB]UGD:'G$N*CR]T"
	"ARYP@4)[@UV0C7JKKJO;V-\\.]/XN_`P\\`P\\_````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"``````````````````````````````````````````````````````\\_`@X^_@DX"
	"\\OPJW.,1PL3UHIW.BG>J?UZ2?E2*?T^%?4I`>T9\\>T-Z?D1\\A$Z%BER2AF28@F>:"
	"AW:HGYK+OL'PVN(0\\/LJ_@DY`P\\_````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"`P\\^`0P\\_@DY\\_XNV^03P<7TL[3DJJK:G)K)CHNYB8:RC(BUF);$KK#?P,;UT=@'"
	"Z?(A]`,R_0DX`0P\\`P\\^````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"";

In reality, the original RGB image was encoded, formally speaking, using “characters” using the following macro,

#define HEADER_PIXEL(data,pixel) {\
pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
data += 4; \
}

So in order to recover it from this encoding scheme of “characters” performed by the macro, the reverse operation needs to be performed. Nevertheless, the “gray scale image” will be used in the pictures (derived from the GIMP RGB image exported as a .header file as a character encoded image) without lossing any accuracy of the description of these processes.

The image processing demo in this article, performed a threshold transformation inside the FPGA. The function used in this case was this one,

test_add_threshold(uint8_t *image_input, uint8_t *image_output, Image_processing *img_proc)

to coordinate the x86 host C++ application with the internal finite state machine that implemented this image processing operation inside the FPGA. The C++ program performed the following image processing operation test_add_threshold,

void test_add_threshold(uint8_t *image_input, uint8_t *image_output, Image_processing *img_proc){
   img_proc->send_params(image_width, image_height);

   uint8_t status[4];
   img_proc->read_status(status);
   printf("after send params\n");
   for (size_t i = 0; i < 4; i++) {
      printf("status out %lu : 0x%x\n", i, status[i]);
   }

   img_proc->send_image(image_input);

   printf("===========ADD===========\n");
   img_proc->switch_buffers();
   img_proc->send_add(32, true);
   img_proc->read_status(status);
   printf("after ADD\n");
   for (size_t i = 0; i < 4; i++) {
      printf("status out %lu : 0x%x\n", i, status[i]);
   }

   img_proc->wait_end_busy();

   img_proc->read_status(status);
   printf("Finished ADD\n");
   for (size_t i = 0; i < 4; i++) {
      printf("status out %lu : 0x%x\n", i, status[i]);
   }

   printf("===========THRESHOLD===========\n");
   img_proc->send_threshold(168, 0, 0);
   img_proc->wait_end_busy();

   img_proc->switch_buffers();
   img_proc->read_image(image_output);
}

The internal finite state machine in the FPGA performs this image processing operation (with
send_threshold(168, 0, 0)) and we obtain the following result,

This image processing demo replaces the pixels in the resulting image, if they comply with the threshold level, if upper selection is 1, then every pixel larger or equal to the threshold value, will be set to replacement, otherwise it will replace every pixels less or equal to the threshold value specified by the function send_threshold(168, 0, 0).

Inside the FPGA the threshold registers are,

reg [7:0] threshold_value;
reg [7:0] threshold_replacement;
reg threshold_upper;

When this command for image processing is received by the FPGA and the internal structure that processes this, is this section,

 COMMAND_APPLY_THRESHOLD: begin
            state <= STATE_THRESHOLD_READ_PARAM;
            counter_read <= 2; // read 3*8bits of params
         end

Also this part,

   STATE_THRESHOLD_READ_PARAM: begin
      if(comm_data_in_valid == 1)begin
         if(counter_read == 2) begin
            threshold_value[7:0] <= comm_data_in;
            counter_read <= 1;
         end else if(counter_read == 1) begin
            threshold_replacement[7:0] <= comm_data_in;
            counter_read <= 0;
         end else begin
            threshold_upper <= comm_data_in[0];
            state_processing <= STATE_PROC_UNARY;
            processing_command <= COMMAND_APPLY_THRESHOLD;
            state <= STATE_WAIT_COMMAND;
            proc_counter_read <= img_width*img_height;
            proc_memory_addr_counter <= buffer_storage_address;
         end
      end
   end

Then it sends the image back to the x86 linux host as a image file called output.dat after the following sequence is observed in the x86 host in the C++ application below,

init..
sending img_width8[0]: 64, [1]: 0
sending img_height8[0]: 64, [1]: 0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
after send params
status out 0 : 0x0
status out 1 : 0x0
status out 2 : 0x0
status out 3 : 0x0
sending..
===========ADD===========
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
after ADD
status out 0 : 0x0
status out 1 : 0x0
status out 2 : 0x0
status out 3 : 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
wait_end_busy
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
Finished ADD
status out 0 : 0x0
status out 1 : 0x0
status out 2 : 0x0
status out 3 : 0x0
===========THRESHOLD===========
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x41
recv data: 0x0
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
recv_data[0]: 0x40
wait_end_busy
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xfd
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xfe
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xfd
recv data[26]: 0xfd
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xf9
recv_data[0] (status): 0x41
recv data[1]: 0xf8
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xfe
recv data[5]: 0xf5
recv data[6]: 0xfb
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xf8
recv data[10]: 0xf4
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xfe
recv data[28]: 0xfd
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xf9
recv data[14]: 0xf5
recv data[15]: 0xfb
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xfe
recv data[2]: 0xfb
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xfe
recv data[17]: 0xfa
recv data[18]: 0xfa
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xfd
recv data[6]: 0xfa
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xfe
recv data[21]: 0xfd
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xf9
recv data[11]: 0xfe
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xfe
recv data[30]: 0xf3
recv_data[0] (status): 0x41
recv data[1]: 0xf4
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xe9
recv data[8]: 0xd6
recv data[9]: 0xe1
recv data[10]: 0xfd
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xfd
recv data[4]: 0xe4
recv data[5]: 0xc4
recv data[6]: 0xb4
recv data[7]: 0xc3
recv data[8]: 0xe3
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xfb
recv data[9]: 0xd5
recv data[10]: 0xb9
recv data[11]: 0xc5
recv data[12]: 0xe4
recv data[13]: 0xfa
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xfd
recv data[8]: 0xf3
recv data[9]: 0xeb
recv data[10]: 0xe1
recv data[11]: 0xcc
recv data[12]: 0xb3
recv data[13]: 0xae
recv data[14]: 0xcc
recv data[15]: 0xf6
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xd4
recv data[12]: 0xaa
recv data[13]: 0xae
recv data[14]: 0xd7
recv data[15]: 0xf7
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xfd
recv data[12]: 0xf3
recv data[13]: 0xee
recv data[14]: 0xf0
recv data[15]: 0xf2
recv data[16]: 0xeb
recv data[17]: 0xd4
recv data[18]: 0xb0
recv data[19]: 0x0
recv data[20]: 0xc6
recv data[21]: 0xfc
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xee
recv data[14]: 0xbc
recv data[15]: 0x0
recv data[16]: 0xc4
recv data[17]: 0xe8
recv data[18]: 0xfe
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xf8
recv data[17]: 0xf1
recv data[18]: 0xf0
recv data[19]: 0xf3
recv data[20]: 0xf5
recv data[21]: 0xf2
recv data[22]: 0xe2
recv data[23]: 0xbf
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0xdf
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xe4
recv data[17]: 0xaf
recv data[18]: 0xac
recv data[19]: 0xd3
recv data[20]: 0xf2
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xfc
recv data[22]: 0xf6
recv data[23]: 0xf5
recv data[24]: 0xf6
recv data[25]: 0xf6
recv data[26]: 0xf0
recv data[27]: 0xe2
recv data[28]: 0xcd
recv data[29]: 0x0
recv data[30]: 0x0
recv_data[0] (status): 0x41
recv data[1]: 0xcd
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xea
recv data[20]: 0xad
recv data[21]: 0x0
recv data[22]: 0xcf
recv data[23]: 0xf2
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xf9
recv data[27]: 0xf5
recv data[28]: 0xf6
recv data[29]: 0xf7
recv data[30]: 0xf3
recv_data[0] (status): 0x41
recv data[1]: 0xea
recv data[2]: 0xe1
recv data[3]: 0xd6
recv data[4]: 0x0
recv data[5]: 0x0
recv data[6]: 0xd3
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xb8
recv data[24]: 0x0
recv data[25]: 0xc8
recv data[26]: 0xef
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xfd
recv_data[0] (status): 0x41
recv data[1]: 0xf7
recv data[2]: 0xf5
recv data[3]: 0xf6
recv data[4]: 0xf7
recv data[5]: 0xf4
recv data[6]: 0xeb
recv data[7]: 0xe7
recv data[8]: 0xd4
recv data[9]: 0x0
recv data[10]: 0x0
recv data[11]: 0xeb
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xe0
recv data[27]: 0x0
recv data[28]: 0xb6
recv data[29]: 0xe5
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xfc
recv data[6]: 0xf8
recv data[7]: 0xf5
recv data[8]: 0xf4
recv data[9]: 0xf5
recv data[10]: 0xf3
recv data[11]: 0xee
recv data[12]: 0xe2
recv data[13]: 0xb7
recv data[14]: 0x0
recv data[15]: 0xbe
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xc3
recv_data[0] (status): 0x41
recv data[1]: 0x0
recv data[2]: 0xc6
recv data[3]: 0xf2
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xfd
recv data[11]: 0xf9
recv data[12]: 0xf6
recv data[13]: 0xf5
recv data[14]: 0xf7
recv data[15]: 0xf3
recv data[16]: 0xe4
recv data[17]: 0xc7
recv data[18]: 0x0
recv data[19]: 0x0
recv data[20]: 0xf4
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xb9
recv data[5]: 0x0
recv data[6]: 0xcf
recv data[7]: 0xf7
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xfc
recv data[16]: 0xf9
recv data[17]: 0xf7
recv data[18]: 0xf7
recv data[19]: 0xf0
recv data[20]: 0xde
recv data[21]: 0xc8
recv data[22]: 0x0
recv data[23]: 0x0
recv data[24]: 0xeb
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xc2
recv data[9]: 0x0
recv data[10]: 0xd1
recv data[11]: 0xf6
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xfc
recv data[20]: 0xfa
recv data[21]: 0xf9
recv data[22]: 0xf3
recv data[23]: 0xe5
recv data[24]: 0xd4
recv data[25]: 0xc6
recv data[26]: 0x0
recv data[27]: 0x0
recv data[28]: 0xed
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xdb
recv data[13]: 0x0
recv data[14]: 0xc5
recv data[15]: 0xec
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xfe
recv data[23]: 0xfb
recv data[24]: 0xfa
recv data[25]: 0xf8
recv data[26]: 0xee
recv data[27]: 0xdb
recv data[28]: 0xd0
recv data[29]: 0xc1
recv data[30]: 0x0
recv_data[0] (status): 0x41
recv data[1]: 0x0
recv data[2]: 0xf2
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xfb
recv data[17]: 0xb2
recv data[18]: 0xae
recv data[19]: 0xd5
recv data[20]: 0xf3
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xfc
recv data[27]: 0xf9
recv data[28]: 0xf9
recv data[29]: 0xf5
recv data[30]: 0xe8
recv_data[0] (status): 0x41
recv data[1]: 0xd7
recv data[2]: 0xcb
recv data[3]: 0xb6
recv data[4]: 0x0
recv data[5]: 0xab
recv data[6]: 0xe6
recv data[7]: 0xf9
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xdc
recv data[22]: 0xa9
recv data[23]: 0xb6
recv data[24]: 0xdb
recv data[25]: 0xf6
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xfb
recv_data[0] (status): 0x41
recv data[1]: 0xf7
recv data[2]: 0xf5
recv data[3]: 0xee
recv data[4]: 0xe2
recv data[5]: 0xd3
recv data[6]: 0xc1
recv data[7]: 0x0
recv data[8]: 0x0
recv data[9]: 0xb1
recv data[10]: 0xcb
recv data[11]: 0xd6
recv data[12]: 0xe2
recv data[13]: 0xeb
recv data[14]: 0xf0
recv data[15]: 0xf8
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xcd
recv data[27]: 0x0
recv data[28]: 0xb5
recv data[29]: 0xda
recv data[30]: 0xf4
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xfb
recv data[5]: 0xf4
recv data[6]: 0xec
recv data[7]: 0xe3
recv data[8]: 0xd8
recv data[9]: 0xc7
recv data[10]: 0x0
recv data[11]: 0x0
recv data[12]: 0x0
recv data[13]: 0xc0
recv data[14]: 0xc8
recv data[15]: 0xd0
recv data[16]: 0xde
recv data[17]: 0xe8
recv data[18]: 0xeb
recv data[19]: 0xec
recv data[20]: 0xef
recv data[21]: 0xfb
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xf6
recv_data[0] (status): 0x41
recv data[1]: 0xbe
recv data[2]: 0x0
recv data[3]: 0xb1
recv data[4]: 0xd1
recv data[5]: 0xeb
recv data[6]: 0xfd
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xfb
recv data[9]: 0xf1
recv data[10]: 0xe3
recv data[11]: 0xd4
recv data[12]: 0xc5
recv data[13]: 0xab
recv data[14]: 0x0
recv data[15]: 0x0
recv data[16]: 0xc7
recv data[17]: 0xcd
recv data[18]: 0xce
recv data[19]: 0xd6
recv data[20]: 0xe4
recv data[21]: 0xed
recv data[22]: 0xf1
recv data[23]: 0xf1
recv data[24]: 0xf0
recv data[25]: 0xef
recv data[26]: 0xf7
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xdb
recv data[6]: 0xb1
recv data[7]: 0x0
recv data[8]: 0x0
recv data[9]: 0xbc
recv data[10]: 0xdc
recv data[11]: 0xf3
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xf6
recv data[13]: 0xe8
recv data[14]: 0xd5
recv data[15]: 0xbc
recv data[16]: 0x0
recv data[17]: 0x0
recv data[18]: 0x0
recv data[19]: 0xca
recv data[20]: 0xd8
recv data[21]: 0xd5
recv data[22]: 0xd3
recv data[23]: 0xdc
recv data[24]: 0xe9
recv data[25]: 0xf1
recv data[26]: 0xf4
recv data[27]: 0xf4
recv data[28]: 0xf3
recv data[29]: 0xf0
recv data[30]: 0xec
recv_data[0] (status): 0x41
recv data[1]: 0xf5
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xe5
recv data[10]: 0xc5
recv data[11]: 0xb1
recv data[12]: 0x0
recv data[13]: 0x0
recv data[14]: 0x0
recv data[15]: 0xb7
recv data[16]: 0xd5
recv data[17]: 0xeb
recv data[18]: 0xf8
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xfe
recv data[15]: 0xf2
recv data[16]: 0xdc
recv data[17]: 0xc0
recv data[18]: 0x0
recv data[19]: 0x0
recv data[20]: 0x0
recv data[21]: 0x0
recv data[22]: 0xb3
recv data[23]: 0xca
recv data[24]: 0xd5
recv data[25]: 0xd5
recv data[26]: 0xd3
recv data[27]: 0xda
recv data[28]: 0xe6
recv data[29]: 0xee
recv data[30]: 0xf0
recv_data[0] (status): 0x41
recv data[1]: 0xef
recv data[2]: 0xef
recv data[3]: 0xee
recv data[4]: 0xed
recv data[5]: 0xee
recv data[6]: 0xfc
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xeb
recv data[14]: 0xce
recv data[15]: 0xc1
recv data[16]: 0xb7
recv data[17]: 0x0
recv data[18]: 0x0
recv data[19]: 0x0
recv data[20]: 0x0
recv data[21]: 0x0
recv data[22]: 0xbe
recv data[23]: 0xd7
recv data[24]: 0xe6
recv data[25]: 0xf2
recv data[26]: 0xf6
recv data[27]: 0xfc
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xfe
recv data[15]: 0xf9
recv data[16]: 0xf0
recv data[17]: 0xe3
recv data[18]: 0xd0
recv data[19]: 0xb7
recv data[20]: 0x0
recv data[21]: 0x0
recv data[22]: 0x0
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0xb3
recv data[27]: 0xc8
recv data[28]: 0xcd
recv data[29]: 0xc9
recv data[30]: 0xc5
recv_data[0] (status): 0x41
recv data[1]: 0xc6
recv data[2]: 0xca
recv data[3]: 0xcd
recv data[4]: 0xd0
recv data[5]: 0xd3
recv data[6]: 0xd7
recv data[7]: 0xde
recv data[8]: 0xe4
recv data[9]: 0xe7
recv data[10]: 0xf0
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xed
recv data[18]: 0xd2
recv data[19]: 0xc9
recv data[20]: 0xc4
recv data[21]: 0xbb
recv data[22]: 0xaf
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0x0
recv data[27]: 0x0
recv data[28]: 0x0
recv data[29]: 0xbf
recv data[30]: 0xc9
recv_data[0] (status): 0x41
recv data[1]: 0xd6
recv data[2]: 0xde
recv data[3]: 0xe4
recv data[4]: 0xe9
recv data[5]: 0xed
recv data[6]: 0xf0
recv data[7]: 0xf1
recv data[8]: 0xf3
recv data[9]: 0xf3
recv data[10]: 0xf3
recv data[11]: 0xf3
recv data[12]: 0xf6
recv data[13]: 0xf6
recv data[14]: 0xf1
recv data[15]: 0xee
recv data[16]: 0xe7
recv data[17]: 0xde
recv data[18]: 0xd4
recv data[19]: 0xc8
recv data[20]: 0xb6
recv data[21]: 0x0
recv data[22]: 0x0
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0x0
recv data[27]: 0x0
recv data[28]: 0x0
recv data[29]: 0x0
recv data[30]: 0xb4
recv_data[0] (status): 0x41
recv data[1]: 0xc1
recv data[2]: 0xbf
recv data[3]: 0xb9
recv data[4]: 0xc1
recv data[5]: 0xdf
recv data[6]: 0xfb
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xe4
recv data[12]: 0xd0
recv data[13]: 0xd8
recv data[14]: 0xe6
recv data[15]: 0xf8
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xf1
recv data[22]: 0xd4
recv data[23]: 0xcc
recv data[24]: 0xcb
recv data[25]: 0xc9
recv data[26]: 0xc2
recv data[27]: 0xb6
recv data[28]: 0x0
recv data[29]: 0x0
recv data[30]: 0x0
recv_data[0] (status): 0x41
recv data[1]: 0x0
recv data[2]: 0x0
recv data[3]: 0x0
recv data[4]: 0x0
recv data[5]: 0x0
recv data[6]: 0x0
recv data[7]: 0xaa
recv data[8]: 0xb1
recv data[9]: 0xb5
recv data[10]: 0xb8
recv data[11]: 0xbc
recv data[12]: 0xc0
recv data[13]: 0xc5
recv data[14]: 0xc8
recv data[15]: 0xc7
recv data[16]: 0xc4
recv data[17]: 0xc6
recv data[18]: 0xc1
recv data[19]: 0xb2
recv data[20]: 0x0
recv data[21]: 0x0
recv data[22]: 0x0
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0x0
recv data[27]: 0x0
recv data[28]: 0x0
recv data[29]: 0xa9
recv data[30]: 0xaf
recv_data[0] (status): 0x41
recv data[1]: 0xb3
recv data[2]: 0xb1
recv data[3]: 0xaa
recv data[4]: 0xb3
recv data[5]: 0xb7
recv data[6]: 0xb4
recv data[7]: 0xc6
recv data[8]: 0xf2
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xdb
recv data[17]: 0xbe
recv data[18]: 0xd3
recv data[19]: 0xe8
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xf5
recv data[26]: 0xd7
recv data[27]: 0xcd
recv data[28]: 0xcc
recv data[29]: 0xcc
recv data[30]: 0xca
recv_data[0] (status): 0x41
recv data[1]: 0xc5
recv data[2]: 0xba
recv data[3]: 0xaf
recv data[4]: 0x0
recv data[5]: 0x0
recv data[6]: 0x0
recv data[7]: 0x0
recv data[8]: 0x0
recv data[9]: 0x0
recv data[10]: 0x0
recv data[11]: 0x0
recv data[12]: 0x0
recv data[13]: 0x0
recv data[14]: 0x0
recv data[15]: 0x0
recv data[16]: 0x0
recv data[17]: 0x0
recv data[18]: 0x0
recv data[19]: 0x0
recv data[20]: 0x0
recv data[21]: 0x0
recv data[22]: 0x0
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0x0
recv data[27]: 0x0
recv data[28]: 0x0
recv data[29]: 0x0
recv data[30]: 0x0
recv_data[0] (status): 0x41
recv data[1]: 0x0
recv data[2]: 0xab
recv data[3]: 0xb1
recv data[4]: 0xb5
recv data[5]: 0xb7
recv data[6]: 0xb2
recv data[7]: 0xad
recv data[8]: 0xb5
recv data[9]: 0xae
recv data[10]: 0xb5
recv data[11]: 0xee
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xdd
recv data[21]: 0xa9
recv data[22]: 0xb9
recv data[23]: 0xde
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xf9
recv data[30]: 0xda
recv_data[0] (status): 0x41
recv data[1]: 0xcd
recv data[2]: 0xcb
recv data[3]: 0xcb
recv data[4]: 0xcb
recv data[5]: 0xc9
recv data[6]: 0xc5
recv data[7]: 0xbf
recv data[8]: 0xb5
recv data[9]: 0xaf
recv data[10]: 0xab
recv data[11]: 0x0
recv data[12]: 0x0
recv data[13]: 0x0
recv data[14]: 0x0
recv data[15]: 0x0
recv data[16]: 0x0
recv data[17]: 0x0
recv data[18]: 0x0
recv data[19]: 0x0
recv data[20]: 0x0
recv data[21]: 0x0
recv data[22]: 0x0
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0x0
recv data[27]: 0x0
recv data[28]: 0x0
recv data[29]: 0x0
recv data[30]: 0x0
recv_data[0] (status): 0x41
recv data[1]: 0x0
recv data[2]: 0x0
recv data[3]: 0x0
recv data[4]: 0xab
recv data[5]: 0xb2
recv data[6]: 0xb8
recv data[7]: 0xb9
recv data[8]: 0xb8
recv data[9]: 0xb7
recv data[10]: 0xb2
recv data[11]: 0xad
recv data[12]: 0xb2
recv data[13]: 0xb8
recv data[14]: 0xd8
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xd4
recv data[25]: 0x0
recv data[26]: 0x0
recv data[27]: 0xd4
recv data[28]: 0xf1
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xfd
recv data[4]: 0xdd
recv data[5]: 0xcd
recv data[6]: 0xcb
recv data[7]: 0xcb
recv data[8]: 0xca
recv data[9]: 0xc9
recv data[10]: 0xc7
recv data[11]: 0xc3
recv data[12]: 0xbd
recv data[13]: 0xb8
recv data[14]: 0xb4
recv data[15]: 0xb2
recv data[16]: 0xb1
recv data[17]: 0xb2
recv data[18]: 0xb6
recv data[19]: 0xb8
recv data[20]: 0xb4
recv data[21]: 0xae
recv data[22]: 0xaa
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0x0
recv data[26]: 0x0
recv data[27]: 0xaa
recv data[28]: 0xaf
recv data[29]: 0xb3
recv data[30]: 0xac
recv_data[0] (status): 0x41
recv data[1]: 0x0
recv data[2]: 0x0
recv data[3]: 0xa9
recv data[4]: 0xac
recv data[5]: 0xaf
recv data[6]: 0xb2
recv data[7]: 0xb4
recv data[8]: 0xb7
recv data[9]: 0xb9
recv data[10]: 0xbc
recv data[11]: 0xbc
recv data[12]: 0xb9
recv data[13]: 0xb6
recv data[14]: 0xb1
recv data[15]: 0xb2
recv data[16]: 0xcb
recv data[17]: 0xf1
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xfb
recv data[28]: 0xc1
recv data[29]: 0x0
recv data[30]: 0x0
recv_data[0] (status): 0x41
recv data[1]: 0xc7
recv data[2]: 0xe6
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xe0
recv data[9]: 0xcd
recv data[10]: 0xca
recv data[11]: 0xcb
recv data[12]: 0xca
recv data[13]: 0xc9
recv data[14]: 0xc7
recv data[15]: 0xc4
recv data[16]: 0xbf
recv data[17]: 0xbb
recv data[18]: 0xb8
recv data[19]: 0xb6
recv data[20]: 0xb7
recv data[21]: 0xb8
recv data[22]: 0xba
recv data[23]: 0xbe
recv data[24]: 0xbc
recv data[25]: 0xba
recv data[26]: 0xb8
recv data[27]: 0xb7
recv data[28]: 0xb6
recv data[29]: 0xb6
recv data[30]: 0xb9
recv_data[0] (status): 0x41
recv data[1]: 0xbf
recv data[2]: 0xc4
recv data[3]: 0xc5
recv data[4]: 0xc0
recv data[5]: 0xbf
recv data[6]: 0xbf
recv data[7]: 0xc1
recv data[8]: 0xc1
recv data[9]: 0xc1
recv data[10]: 0xc1
recv data[11]: 0xc0
recv data[12]: 0xbe
recv data[13]: 0xbd
recv data[14]: 0xbd
recv data[15]: 0xbd
recv data[16]: 0xba
recv data[17]: 0xb6
recv data[18]: 0xb3
recv data[19]: 0xc3
recv data[20]: 0xfa
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xea
recv data[2]: 0xab
recv data[3]: 0x0
recv data[4]: 0x0
recv data[5]: 0xc0
recv data[6]: 0xe3
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xe5
recv data[13]: 0xce
recv data[14]: 0xc9
recv data[15]: 0xcb
recv data[16]: 0xca
recv data[17]: 0xc9
recv data[18]: 0xc8
recv data[19]: 0xc6
recv data[20]: 0xc0
recv data[21]: 0xbc
recv data[22]: 0xba
recv data[23]: 0xb9
recv data[24]: 0xb9
recv data[25]: 0xba
recv data[26]: 0xbb
recv data[27]: 0xbd
recv data[28]: 0xbf
recv data[29]: 0xc0
recv data[30]: 0xc2
recv_data[0] (status): 0x41
recv data[1]: 0xc5
recv data[2]: 0xc7
recv data[3]: 0xc7
recv data[4]: 0xc8
recv data[5]: 0xca
recv data[6]: 0xcc
recv data[7]: 0xcd
recv data[8]: 0xca
recv data[9]: 0xca
recv data[10]: 0xca
recv data[11]: 0xcb
recv data[12]: 0xca
recv data[13]: 0xc8
recv data[14]: 0xc6
recv data[15]: 0xc4
recv data[16]: 0xc2
recv data[17]: 0xc0
recv data[18]: 0xbf
recv data[19]: 0xbe
recv data[20]: 0xbc
recv data[21]: 0xb7
recv data[22]: 0xb4
recv data[23]: 0xcc
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xd1
recv data[6]: 0x0
recv data[7]: 0x0
recv data[8]: 0x0
recv data[9]: 0xc2
recv data[10]: 0xea
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xe9
recv data[17]: 0xce
recv data[18]: 0xc9
recv data[19]: 0xcb
recv data[20]: 0xca
recv data[21]: 0xc8
recv data[22]: 0xc7
recv data[23]: 0xc5
recv data[24]: 0xc0
recv data[25]: 0xbd
recv data[26]: 0xbc
recv data[27]: 0xbb
recv data[28]: 0xbc
recv data[29]: 0xbe
recv data[30]: 0xc0
recv_data[0] (status): 0x41
recv data[1]: 0xc2
recv data[2]: 0xc4
recv data[3]: 0xc6
recv data[4]: 0xc8
recv data[5]: 0xcb
recv data[6]: 0xce
recv data[7]: 0xce
recv data[8]: 0xcc
recv data[9]: 0xcc
recv data[10]: 0xcd
recv data[11]: 0xcf
recv data[12]: 0xcd
recv data[13]: 0xcb
recv data[14]: 0xca
recv data[15]: 0xcc
recv data[16]: 0xca
recv data[17]: 0xc8
recv data[18]: 0xc6
recv data[19]: 0xc4
recv data[20]: 0xc3
recv data[21]: 0xc3
recv data[22]: 0xc0
recv data[23]: 0xbc
recv data[24]: 0xbb
recv data[25]: 0xb8
recv data[26]: 0xb4
recv data[27]: 0xcb
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xe6
recv data[9]: 0xb3
recv data[10]: 0x0
recv data[11]: 0x0
recv data[12]: 0x0
recv data[13]: 0xc9
recv data[14]: 0xf7
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xed
recv data[21]: 0xd0
recv data[22]: 0xca
recv data[23]: 0xcc
recv data[24]: 0xcb
recv data[25]: 0xc8
recv data[26]: 0xc6
recv data[27]: 0xc4
recv data[28]: 0xc1
recv data[29]: 0xbf
recv data[30]: 0xbe
recv_data[0] (status): 0x41
recv data[1]: 0xbf
recv data[2]: 0xc1
recv data[3]: 0xc1
recv data[4]: 0xc3
recv data[5]: 0xc5
recv data[6]: 0xc6
recv data[7]: 0xc9
recv data[8]: 0xcb
recv data[9]: 0xcc
recv data[10]: 0xcd
recv data[11]: 0xcc
recv data[12]: 0xcb
recv data[13]: 0xcb
recv data[14]: 0xcc
recv data[15]: 0xcd
recv data[16]: 0xcc
recv data[17]: 0xcd
recv data[18]: 0xca
recv data[19]: 0xca
recv data[20]: 0xc9
recv data[21]: 0xc7
recv data[22]: 0xc5
recv data[23]: 0xc4
recv data[24]: 0xc3
recv data[25]: 0xc1
recv data[26]: 0xbd
recv data[27]: 0xb9
recv data[28]: 0xb8
recv data[29]: 0xb6
recv data[30]: 0xb2
recv_data[0] (status): 0x41
recv data[1]: 0xc3
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xed
recv data[12]: 0xc1
recv data[13]: 0x0
recv data[14]: 0x0
recv data[15]: 0x0
recv data[16]: 0xb2
recv data[17]: 0xd4
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xf0
recv data[25]: 0xd1
recv data[26]: 0xca
recv data[27]: 0xd0
recv data[28]: 0xd1
recv data[29]: 0xcc
recv data[30]: 0xc7
recv_data[0] (status): 0x41
recv data[1]: 0xc5
recv data[2]: 0xc3
recv data[3]: 0xbf
recv data[4]: 0xbe
recv data[5]: 0xc2
recv data[6]: 0xc2
recv data[7]: 0xc0
recv data[8]: 0xc1
recv data[9]: 0xc3
recv data[10]: 0xc7
recv data[11]: 0xca
recv data[12]: 0xcc
recv data[13]: 0xcc
recv data[14]: 0xcc
recv data[15]: 0xcb
recv data[16]: 0xca
recv data[17]: 0xcb
recv data[18]: 0xcc
recv data[19]: 0xcc
recv data[20]: 0xcc
recv data[21]: 0xcd
recv data[22]: 0xcb
recv data[23]: 0xc9
recv data[24]: 0xc8
recv data[25]: 0xc7
recv data[26]: 0xc5
recv data[27]: 0xc3
recv data[28]: 0xc0
recv data[29]: 0xbd
recv data[30]: 0xba
recv_data[0] (status): 0x41
recv data[1]: 0xb8
recv data[2]: 0xb7
recv data[3]: 0xb6
recv data[4]: 0xb3
recv data[5]: 0xbb
recv data[6]: 0xe4
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xe6
recv data[15]: 0xc2
recv data[16]: 0x0
recv data[17]: 0x0
recv data[18]: 0x0
recv data[19]: 0xaf
recv data[20]: 0xc5
recv data[21]: 0xe6
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xf4
recv data[29]: 0xd3
recv data[30]: 0xcb
recv_data[0] (status): 0x41
recv data[1]: 0xd6
recv data[2]: 0xde
recv data[3]: 0xda
recv data[4]: 0xcf
recv data[5]: 0xc7
recv data[6]: 0xc2
recv data[7]: 0xbe
recv data[8]: 0xbd
recv data[9]: 0xbe
recv data[10]: 0xbe
recv data[11]: 0xbe
recv data[12]: 0xbf
recv data[13]: 0xc1
recv data[14]: 0xc4
recv data[15]: 0xc7
recv data[16]: 0xc9
recv data[17]: 0xca
recv data[18]: 0xcb
recv data[19]: 0xcb
recv data[20]: 0xcb
recv data[21]: 0xcc
recv data[22]: 0xcd
recv data[23]: 0xcd
recv data[24]: 0xcd
recv data[25]: 0xcc
recv data[26]: 0xcb
recv data[27]: 0xc9
recv data[28]: 0xc8
recv data[29]: 0xc7
recv data[30]: 0xc3
recv_data[0] (status): 0x41
recv data[1]: 0xc0
recv data[2]: 0xbd
recv data[3]: 0xba
recv data[4]: 0xb8
recv data[5]: 0xb8
recv data[6]: 0xb9
recv data[7]: 0xba
recv data[8]: 0xb8
recv data[9]: 0xbc
recv data[10]: 0xd4
recv data[11]: 0xe7
recv data[12]: 0xfb
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xf0
recv data[17]: 0xcd
recv data[18]: 0xb0
recv data[19]: 0x0
recv data[20]: 0xac
recv data[21]: 0xb0
recv data[22]: 0xb6
recv data[23]: 0xc1
recv data[24]: 0xd7
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xf9
recv data[3]: 0xd8
recv data[4]: 0xcd
recv data[5]: 0xd9
recv data[6]: 0xe4
recv data[7]: 0xe6
recv data[8]: 0xde
recv data[9]: 0xd1
recv data[10]: 0xc8
recv data[11]: 0xc3
recv data[12]: 0xbd
recv data[13]: 0xbc
recv data[14]: 0xbc
recv data[15]: 0xbd
recv data[16]: 0xbf
recv data[17]: 0xc1
recv data[18]: 0xc3
recv data[19]: 0xc5
recv data[20]: 0xc7
recv data[21]: 0xc8
recv data[22]: 0xc9
recv data[23]: 0xc9
recv data[24]: 0xcb
recv data[25]: 0xcc
recv data[26]: 0xcd
recv data[27]: 0xcd
recv data[28]: 0xcc
recv data[29]: 0xca
recv data[30]: 0xc8
recv_data[0] (status): 0x41
recv data[1]: 0xc7
recv data[2]: 0xc6
recv data[3]: 0xc6
recv data[4]: 0xc3
recv data[5]: 0xbf
recv data[6]: 0xbc
recv data[7]: 0xba
recv data[8]: 0xb8
recv data[9]: 0xb7
recv data[10]: 0xb8
recv data[11]: 0xbb
recv data[12]: 0xbe
recv data[13]: 0xc4
recv data[14]: 0xd1
recv data[15]: 0xc6
recv data[16]: 0xc0
recv data[17]: 0xbe
recv data[18]: 0xc5
recv data[19]: 0xbf
recv data[20]: 0xb0
recv data[21]: 0xa9
recv data[22]: 0xb1
recv data[23]: 0xbc
recv data[24]: 0xc2
recv data[25]: 0xc4
recv data[26]: 0xc7
recv data[27]: 0xd1
recv data[28]: 0xe9
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xfe
recv data[7]: 0xdd
recv data[8]: 0xcf
recv data[9]: 0xd8
recv data[10]: 0xe3
recv data[11]: 0xe5
recv data[12]: 0xe2
recv data[13]: 0xe0
recv data[14]: 0xdb
recv data[15]: 0xd2
recv data[16]: 0xbe
recv data[17]: 0xbb
recv data[18]: 0xbc
recv data[19]: 0xbd
recv data[20]: 0xc1
recv data[21]: 0xc2
recv data[22]: 0xc3
recv data[23]: 0xc4
recv data[24]: 0xc6
recv data[25]: 0xc7
recv data[26]: 0xc8
recv data[27]: 0xc9
recv data[28]: 0xc9
recv data[29]: 0xca
recv data[30]: 0xcb
recv_data[0] (status): 0x41
recv data[1]: 0xcc
recv data[2]: 0xca
recv data[3]: 0xc8
recv data[4]: 0xc7
recv data[5]: 0xc6
recv data[6]: 0xc5
recv data[7]: 0xc3
recv data[8]: 0xc2
recv data[9]: 0xc1
recv data[10]: 0xbe
recv data[11]: 0xba
recv data[12]: 0xb7
recv data[13]: 0xb7
recv data[14]: 0xb9
recv data[15]: 0xbf
recv data[16]: 0xc5
recv data[17]: 0xcb
recv data[18]: 0xd4
recv data[19]: 0xca
recv data[20]: 0xca
recv data[21]: 0xc9
recv data[22]: 0xc7
recv data[23]: 0xc3
recv data[24]: 0xc4
recv data[25]: 0xcc
recv data[26]: 0xd3
recv data[27]: 0xd5
recv data[28]: 0xd4
recv data[29]: 0xd3
recv data[30]: 0xd5
recv_data[0] (status): 0x41
recv data[1]: 0xe5
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xe3
recv data[12]: 0xd1
recv data[13]: 0xd6
recv data[14]: 0xe2
recv data[15]: 0xe5
recv data[16]: 0xe3
recv data[17]: 0xe2
recv data[18]: 0xd6
recv data[19]: 0xd3
recv data[20]: 0xbf
recv data[21]: 0xc4
recv data[22]: 0xc4
recv data[23]: 0xbf
recv data[24]: 0xbf
recv data[25]: 0xc1
recv data[26]: 0xc4
recv data[27]: 0xc6
recv data[28]: 0xc8
recv data[29]: 0xcb
recv data[30]: 0xcd
recv_data[0] (status): 0x41
recv data[1]: 0xcd
recv data[2]: 0xcc
recv data[3]: 0xce
recv data[4]: 0xcf
recv data[5]: 0xcd
recv data[6]: 0xcb
recv data[7]: 0xc8
recv data[8]: 0xc7
recv data[9]: 0xc6
recv data[10]: 0xc6
recv data[11]: 0xc6
recv data[12]: 0xc6
recv data[13]: 0xcb
recv data[14]: 0xca
recv data[15]: 0xc0
recv data[16]: 0xb8
recv data[17]: 0xb7
recv data[18]: 0xb9
recv data[19]: 0xbd
recv data[20]: 0xc3
recv data[21]: 0xc9
recv data[22]: 0xcf
recv data[23]: 0xcf
recv data[24]: 0xd1
recv data[25]: 0xd4
recv data[26]: 0xd3
recv data[27]: 0xd6
recv data[28]: 0xdd
recv data[29]: 0xe3
recv data[30]: 0xe5
recv_data[0] (status): 0x41
recv data[1]: 0xe3
recv data[2]: 0xdf
recv data[3]: 0xdc
recv data[4]: 0xe4
recv data[5]: 0xfc
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xe8
recv data[16]: 0xd0
recv data[17]: 0xd3
recv data[18]: 0xe1
recv data[19]: 0xe6
recv data[20]: 0xe5
recv data[21]: 0xe7
recv data[22]: 0xe0
recv data[23]: 0xe3
recv data[24]: 0xc6
recv data[25]: 0xd2
recv data[26]: 0xcf
recv data[27]: 0xc7
recv data[28]: 0xc3
recv data[29]: 0xcb
recv data[30]: 0xd9
recv_data[0] (status): 0x41
recv data[1]: 0xdc
recv data[2]: 0xdc
recv data[3]: 0xde
recv data[4]: 0xdb
recv data[5]: 0xd4
recv data[6]: 0xd9
recv data[7]: 0xe5
recv data[8]: 0xe3
recv data[9]: 0xd2
recv data[10]: 0xd0
recv data[11]: 0xce
recv data[12]: 0xc8
recv data[13]: 0xc9
recv data[14]: 0xd0
recv data[15]: 0xd7
recv data[16]: 0xd3
recv data[17]: 0xd4
recv data[18]: 0xd0
recv data[19]: 0xc2
recv data[20]: 0xb8
recv data[21]: 0xb6
recv data[22]: 0xb8
recv data[23]: 0xbc
recv data[24]: 0xc1
recv data[25]: 0xc5
recv data[26]: 0xcb
recv data[27]: 0xd5
recv data[28]: 0xd9
recv data[29]: 0xe2
recv data[30]: 0xe7
recv_data[0] (status): 0x41
recv data[1]: 0xec
recv data[2]: 0xf0
recv data[3]: 0xf0
recv data[4]: 0xed
recv data[5]: 0xe8
recv data[6]: 0xe4
recv data[7]: 0xe8
recv data[8]: 0xfc
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xed
recv data[20]: 0xd0
recv data[21]: 0xce
recv data[22]: 0xdb
recv data[23]: 0xe8
recv data[24]: 0xee
recv data[25]: 0xeb
recv data[26]: 0xe0
recv data[27]: 0xe9
recv data[28]: 0xd3
recv data[29]: 0xe3
recv data[30]: 0xdb
recv_data[0] (status): 0x41
recv data[1]: 0xdf
recv data[2]: 0xde
recv data[3]: 0xd2
recv data[4]: 0xd3
recv data[5]: 0xd8
recv data[6]: 0xdd
recv data[7]: 0xe2
recv data[8]: 0xe1
recv data[9]: 0xdd
recv data[10]: 0xe2
recv data[11]: 0xe7
recv data[12]: 0xdd
recv data[13]: 0xd7
recv data[14]: 0xdf
recv data[15]: 0xe6
recv data[16]: 0xe9
recv data[17]: 0xe0
recv data[18]: 0xdc
recv data[19]: 0xdd
recv data[20]: 0xd7
recv data[21]: 0xd7
recv data[22]: 0xd2
recv data[23]: 0xc4
recv data[24]: 0xb9
recv data[25]: 0xb7
recv data[26]: 0xb6
recv data[27]: 0xb6
recv data[28]: 0xb6
recv data[29]: 0xbe
recv data[30]: 0xc6
recv_data[0] (status): 0x41
recv data[1]: 0xd7
recv data[2]: 0xe4
recv data[3]: 0xee
recv data[4]: 0xf3
recv data[5]: 0xf5
recv data[6]: 0xf6
recv data[7]: 0xf5
recv data[8]: 0xf0
recv data[9]: 0xeb
recv data[10]: 0xf0
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xf2
recv data[24]: 0xd2
recv data[25]: 0xca
recv data[26]: 0xd0
recv data[27]: 0xd7
recv data[28]: 0xdc
recv data[29]: 0xdd
recv data[30]: 0xdc
recv_data[0] (status): 0x41
recv data[1]: 0xe9
recv data[2]: 0xd5
recv data[3]: 0xe5
recv data[4]: 0xd4
recv data[5]: 0xda
recv data[6]: 0xe1
recv data[7]: 0xd9
recv data[8]: 0xdb
recv data[9]: 0xde
recv data[10]: 0xdf
recv data[11]: 0xe2
recv data[12]: 0xe4
recv data[13]: 0xe4
recv data[14]: 0xe8
recv data[15]: 0xe3
recv data[16]: 0xda
recv data[17]: 0xe2
recv data[18]: 0xea
recv data[19]: 0xd9
recv data[20]: 0xe2
recv data[21]: 0xe1
recv data[22]: 0xde
recv data[23]: 0xdd
recv data[24]: 0xda
recv data[25]: 0xd9
recv data[26]: 0xd0
recv data[27]: 0xc0
recv data[28]: 0xb6
recv data[29]: 0xb5
recv data[30]: 0xb4
recv_data[0] (status): 0x41
recv data[1]: 0xb0
recv data[2]: 0xad
recv data[3]: 0xb6
recv data[4]: 0xbc
recv data[5]: 0xc9
recv data[6]: 0xe1
recv data[7]: 0xee
recv data[8]: 0xf3
recv data[9]: 0xf4
recv data[10]: 0xf2
recv data[11]: 0xed
recv data[12]: 0xf0
recv data[13]: 0xfe
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xf8
recv data[28]: 0xd6
recv data[29]: 0xca
recv data[30]: 0xcc
recv_data[0] (status): 0x41
recv data[1]: 0xcc
recv data[2]: 0xcb
recv data[3]: 0xcb
recv data[4]: 0xd1
recv data[5]: 0xdd
recv data[6]: 0xcc
recv data[7]: 0xdf
recv data[8]: 0xd6
recv data[9]: 0xda
recv data[10]: 0xe2
recv data[11]: 0xda
recv data[12]: 0xde
recv data[13]: 0xe1
recv data[14]: 0xdf
recv data[15]: 0xe2
recv data[16]: 0xe3
recv data[17]: 0xe4
recv data[18]: 0xe9
recv data[19]: 0xe6
recv data[20]: 0xdf
recv data[21]: 0xe5
recv data[22]: 0xec
recv data[23]: 0xe3
recv data[24]: 0xdc
recv data[25]: 0xd5
recv data[26]: 0xd9
recv data[27]: 0xe0
recv data[28]: 0xe1
recv data[29]: 0xdc
recv data[30]: 0xcc
recv_data[0] (status): 0x41
recv data[1]: 0xba
recv data[2]: 0xb3
recv data[3]: 0xb3
recv data[4]: 0xb3
recv data[5]: 0xb2
recv data[6]: 0xbb
recv data[7]: 0xd8
recv data[8]: 0xde
recv data[9]: 0xdf
recv data[10]: 0xea
recv data[11]: 0xee
recv data[12]: 0xf0
recv data[13]: 0xf3
recv data[14]: 0xfb
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xfe
recv data[2]: 0xdd
recv data[3]: 0xcb
recv data[4]: 0xca
recv data[5]: 0xca
recv data[6]: 0xc6
recv data[7]: 0xc4
recv data[8]: 0xc4
recv data[9]: 0xc5
recv data[10]: 0xc0
recv data[11]: 0xc9
recv data[12]: 0xd6
recv data[13]: 0xe2
recv data[14]: 0xe6
recv data[15]: 0xdb
recv data[16]: 0xdc
recv data[17]: 0xde
recv data[18]: 0xdd
recv data[19]: 0xdf
recv data[20]: 0xde
recv data[21]: 0xda
recv data[22]: 0xe0
recv data[23]: 0xe8
recv data[24]: 0xe6
recv data[25]: 0xe1
recv data[26]: 0xe8
recv data[27]: 0xe2
recv data[28]: 0xe0
recv data[29]: 0xcf
recv data[30]: 0xc9
recv_data[0] (status): 0x41
recv data[1]: 0xce
recv data[2]: 0xd5
recv data[3]: 0xd2
recv data[4]: 0xc4
recv data[5]: 0xb7
recv data[6]: 0xb2
recv data[7]: 0xb2
recv data[8]: 0xb5
recv data[9]: 0xcb
recv data[10]: 0xf3
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xe5
recv data[7]: 0xcd
recv data[8]: 0xc9
recv data[9]: 0xc9
recv data[10]: 0xc5
recv data[11]: 0xc3
recv data[12]: 0xc1
recv data[13]: 0xbd
recv data[14]: 0xba
recv data[15]: 0xbc
recv data[16]: 0xcd
recv data[17]: 0xdb
recv data[18]: 0xe0
recv data[19]: 0xd3
recv data[20]: 0xcf
recv data[21]: 0xd0
recv data[22]: 0xd1
recv data[23]: 0xd3
recv data[24]: 0xd2
recv data[25]: 0xcc
recv data[26]: 0xd1
recv data[27]: 0xdf
recv data[28]: 0xe2
recv data[29]: 0xd2
recv data[30]: 0xd3
recv_data[0] (status): 0x41
recv data[1]: 0xce
recv data[2]: 0xc9
recv data[3]: 0xc3
recv data[4]: 0xc2
recv data[5]: 0xc4
recv data[6]: 0xc2
recv data[7]: 0xbe
recv data[8]: 0xb8
recv data[9]: 0xb4
recv data[10]: 0xb2
recv data[11]: 0xb2
recv data[12]: 0xb8
recv data[13]: 0xd9
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xf2
recv data[11]: 0xd3
recv data[12]: 0xc8
recv data[13]: 0xc7
recv data[14]: 0xc4
recv data[15]: 0xc2
recv data[16]: 0xc0
recv data[17]: 0xbd
recv data[18]: 0xb9
recv data[19]: 0xb7
recv data[20]: 0xbd
recv data[21]: 0xc7
recv data[22]: 0xce
recv data[23]: 0xc7
recv data[24]: 0xc1
recv data[25]: 0xc0
recv data[26]: 0xc1
recv data[27]: 0xc2
recv data[28]: 0xc3
recv data[29]: 0xc3
recv data[30]: 0xc7
recv_data[0] (status): 0x41
recv data[1]: 0xd4
recv data[2]: 0xdc
recv data[3]: 0xcc
recv data[4]: 0xc6
recv data[5]: 0xc4
recv data[6]: 0xbf
recv data[7]: 0xbe
recv data[8]: 0xbe
recv data[9]: 0xbd
recv data[10]: 0xba
recv data[11]: 0xb6
recv data[12]: 0xb4
recv data[13]: 0xb3
recv data[14]: 0xb2
recv data[15]: 0xb3
recv data[16]: 0xc1
recv data[17]: 0xe7
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xe0
recv data[16]: 0xcb
recv data[17]: 0xc6
recv data[18]: 0xc4
recv data[19]: 0xc2
recv data[20]: 0xbf
recv data[21]: 0xbb
recv data[22]: 0xb8
recv data[23]: 0xb6
recv data[24]: 0xb6
recv data[25]: 0xb8
recv data[26]: 0xbc
recv data[27]: 0xbd
recv data[28]: 0xbc
recv data[29]: 0xbb
recv data[30]: 0xbb
recv_data[0] (status): 0x41
recv data[1]: 0xbc
recv data[2]: 0xbd
recv data[3]: 0xc0
recv data[4]: 0xc3
recv data[5]: 0xce
recv data[6]: 0xd9
recv data[7]: 0xca
recv data[8]: 0xc3
recv data[9]: 0xc2
recv data[10]: 0xbe
recv data[11]: 0xbc
recv data[12]: 0xbc
recv data[13]: 0xbb
recv data[14]: 0xb8
recv data[15]: 0xb5
recv data[16]: 0xb5
recv data[17]: 0xb4
recv data[18]: 0xb2
recv data[19]: 0xb7
recv data[20]: 0xd2
recv data[21]: 0xfd
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xf3
recv data[20]: 0xd4
recv data[21]: 0xc6
recv data[22]: 0xc3
recv data[23]: 0xc2
recv data[24]: 0xc0
recv data[25]: 0xbc
recv data[26]: 0xb9
recv data[27]: 0xb6
recv data[28]: 0xb7
recv data[29]: 0xb4
recv data[30]: 0xb5
recv_data[0] (status): 0x41
recv data[1]: 0xb9
recv data[2]: 0xbb
recv data[3]: 0xbb
recv data[4]: 0xba
recv data[5]: 0xbb
recv data[6]: 0xbc
recv data[7]: 0xbf
recv data[8]: 0xc3
recv data[9]: 0xcf
recv data[10]: 0xdc
recv data[11]: 0xcb
recv data[12]: 0xc2
recv data[13]: 0xc2
recv data[14]: 0xbd
recv data[15]: 0xbd
recv data[16]: 0xbc
recv data[17]: 0xbd
recv data[18]: 0xba
recv data[19]: 0xb6
recv data[20]: 0xb5
recv data[21]: 0xb4
recv data[22]: 0xb4
recv data[23]: 0xc3
recv data[24]: 0xe9
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xea
recv data[25]: 0xcf
recv data[26]: 0xc3
recv data[27]: 0xc2
recv data[28]: 0xc1
recv data[29]: 0xbc
recv data[30]: 0xb9
recv_data[0] (status): 0x41
recv data[1]: 0xb7
recv data[2]: 0xb9
recv data[3]: 0xb5
recv data[4]: 0xb4
recv data[5]: 0xb6
recv data[6]: 0xb7
recv data[7]: 0xb8
recv data[8]: 0xb8
recv data[9]: 0xb9
recv data[10]: 0xbc
recv data[11]: 0xbf
recv data[12]: 0xc3
recv data[13]: 0xcf
recv data[14]: 0xdc
recv data[15]: 0xca
recv data[16]: 0xc1
recv data[17]: 0xbf
recv data[18]: 0xbb
recv data[19]: 0xbb
recv data[20]: 0xbc
recv data[21]: 0xbe
recv data[22]: 0xbb
recv data[23]: 0xb6
recv data[24]: 0xb3
recv data[25]: 0xb2
recv data[26]: 0xbd
recv data[27]: 0xde
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xe8
recv data[30]: 0xce
recv_data[0] (status): 0x41
recv data[1]: 0xc1
recv data[2]: 0xbf
recv data[3]: 0xbd
recv data[4]: 0xb9
recv data[5]: 0xb7
recv data[6]: 0xb6
recv data[7]: 0xb4
recv data[8]: 0xb3
recv data[9]: 0xb4
recv data[10]: 0xb4
recv data[11]: 0xb5
recv data[12]: 0xb6
recv data[13]: 0xb7
recv data[14]: 0xb9
recv data[15]: 0xbc
recv data[16]: 0xc0
recv data[17]: 0xcd
recv data[18]: 0xda
recv data[19]: 0xc9
recv data[20]: 0xbf
recv data[21]: 0xbd
recv data[22]: 0xba
recv data[23]: 0xb8
recv data[24]: 0xb8
recv data[25]: 0xba
recv data[26]: 0xb6
recv data[27]: 0xb0
recv data[28]: 0xad
recv data[29]: 0xb7
recv data[30]: 0xd7
recv_data[0] (status): 0x41
recv data[1]: 0xfd
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xe9
recv data[5]: 0xcb
recv data[6]: 0xbd
recv data[7]: 0xbc
recv data[8]: 0xb9
recv data[9]: 0xb5
recv data[10]: 0xb3
recv data[11]: 0xb2
recv data[12]: 0xb2
recv data[13]: 0xb3
recv data[14]: 0xb4
recv data[15]: 0xb4
recv data[16]: 0xb4
recv data[17]: 0xb5
recv data[18]: 0xb7
recv data[19]: 0xb9
recv data[20]: 0xbe
recv data[21]: 0xca
recv data[22]: 0xd6
recv data[23]: 0xc7
recv data[24]: 0xbd
recv data[25]: 0xbd
recv data[26]: 0xb9
recv data[27]: 0xb7
recv data[28]: 0xb5
recv data[29]: 0xb1
recv data[30]: 0xad
recv_data[0] (status): 0x41
recv data[1]: 0xaa
recv data[2]: 0xb4
recv data[3]: 0xd2
recv data[4]: 0xf9
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xec
recv data[10]: 0xca
recv data[11]: 0xb8
recv data[12]: 0xb3
recv data[13]: 0xb3
recv data[14]: 0xb0
recv data[15]: 0xb0
recv data[16]: 0xb3
recv data[17]: 0xb5
recv data[18]: 0xb5
recv data[19]: 0xb4
recv data[20]: 0xb3
recv data[21]: 0xb4
recv data[22]: 0xb5
recv data[23]: 0xb8
recv data[24]: 0xbc
recv data[25]: 0xc3
recv data[26]: 0xca
recv data[27]: 0xc4
recv data[28]: 0xbb
recv data[29]: 0xba
recv data[30]: 0xb5
recv_data[0] (status): 0x41
recv data[1]: 0xb4
recv data[2]: 0xb2
recv data[3]: 0xaa
recv data[4]: 0x0
recv data[5]: 0xb5
recv data[6]: 0xd6
recv data[7]: 0xfb
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xf6
recv data[15]: 0xd1
recv data[16]: 0xba
recv data[17]: 0xb3
recv data[18]: 0x0
recv data[19]: 0x0
recv data[20]: 0xb1
recv data[21]: 0xb7
recv data[22]: 0xb7
recv data[23]: 0xb3
recv data[24]: 0xb1
recv data[25]: 0xb1
recv data[26]: 0xb3
recv data[27]: 0xb5
recv data[28]: 0xb7
recv data[29]: 0xbb
recv data[30]: 0xbe
recv_data[0] (status): 0x41
recv data[1]: 0xbc
recv data[2]: 0xb6
recv data[3]: 0xb5
recv data[4]: 0xad
recv data[5]: 0x0
recv data[6]: 0x0
recv data[7]: 0x0
recv data[8]: 0xbd
recv data[9]: 0xe4
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xed
recv data[21]: 0xc3
recv data[22]: 0xac
recv data[23]: 0x0
recv data[24]: 0x0
recv data[25]: 0xac
recv data[26]: 0xae
recv data[27]: 0xaa
recv data[28]: 0x0
recv data[29]: 0xaa
recv data[30]: 0xad
recv_data[0] (status): 0x41
recv data[1]: 0xad
recv data[2]: 0xac
recv data[3]: 0xb2
recv data[4]: 0xba
recv data[5]: 0xb8
recv data[6]: 0xab
recv data[7]: 0x0
recv data[8]: 0x0
recv data[9]: 0x0
recv data[10]: 0xa9
recv data[11]: 0xca
recv data[12]: 0xf4
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xf8
recv data[27]: 0xde
recv data[28]: 0xbe
recv data[29]: 0x0
recv data[30]: 0x0
recv_data[0] (status): 0x41
recv data[1]: 0x0
recv data[2]: 0x0
recv data[3]: 0x0
recv data[4]: 0x0
recv data[5]: 0x0
recv data[6]: 0x0
recv data[7]: 0x0
recv data[8]: 0x0
recv data[9]: 0x0
recv data[10]: 0x0
recv data[11]: 0x0
recv data[12]: 0xbb
recv data[13]: 0xda
recv data[14]: 0xf6
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xf7
recv data[4]: 0xdd
recv data[5]: 0xcf
recv data[6]: 0xc6
recv data[7]: 0xb8
recv data[8]: 0xaa
recv data[9]: 0x0
recv data[10]: 0x0
recv data[11]: 0xb4
recv data[12]: 0xca
recv data[13]: 0xdc
recv data[14]: 0xed
recv data[15]: 0xff
recv data[16]: 0xff
recv data[17]: 0xff
recv data[18]: 0xff
recv data[19]: 0xff
recv data[20]: 0xff
recv data[21]: 0xff
recv data[22]: 0xff
recv data[23]: 0xff
recv data[24]: 0xff
recv data[25]: 0xff
recv data[26]: 0xff
recv data[27]: 0xff
recv data[28]: 0xff
recv data[29]: 0xff
recv data[30]: 0xff
recv_data[0] (status): 0x41
recv data[1]: 0xff
recv data[2]: 0xff
recv data[3]: 0xff
recv data[4]: 0xff
recv data[5]: 0xff
recv data[6]: 0xff
recv data[7]: 0xff
recv data[8]: 0xff
recv data[9]: 0xff
recv data[10]: 0xff
recv data[11]: 0xff
recv data[12]: 0xff
recv data[13]: 0xff
recv data[14]: 0xff
recv data[15]: 0xff
recv data[16]: 0xff

and eventually the transformed image with a threshold level of 168 in this completed demo is displayed using gunplot,

gnuplot --persist -e "set palette gray; set yrange [] reverse; set cbrange [0:255]; set palette defined (0 \"black\", 255 \"white\"); plot \"output.dat\" matrix w image noti"

A different threshold level of 240 was used in this case img_proc->send_threshold(240, 0, 0), and the process of the demo described above was repeated and the resulting output image is the following,

The transformed image by the Lattice ICE40 FPGA UltraPlus Breakout Board looks dramatically way different (even the DigiKey logo cannot be distinguished) than using the previous threshold level.

In the next article we will be describing more image processing demos in this platform as well as more details, stay tuned. The Lattice ICE40 FPGA UltraPlus Breakout Board is an excellent, low cost, but powerful enough to even tackle image processing applications and is available at DigiKey.

Have a wonderful day!

This article is available in spanish here.

Este artículo está disponible en español aquí.

1 Like