From 60c823a8e2f9c6144c1265c6bbee0cba8bcfb3da Mon Sep 17 00:00:00 2001 From: Theodor Chikin Date: Thu, 2 Oct 2025 16:01:32 +0300 Subject: [PATCH] implemented simple and robust function for receiving data and dumping it to the file: receive_to_file. Old function was somehow broken. --- BF_companion | Bin 62376 -> 62648 bytes main.c | 103 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 66 insertions(+), 37 deletions(-) diff --git a/BF_companion b/BF_companion index 3408e2b1e3338ef94531e2a2c7756e6a8520c441..eec48e089cf80e4a518fcf3f49fd686db46aa9b5 100755 GIT binary patch delta 13604 zcmaJ{349bqy05C9n(3J&lbK|aNkVRta3~O!OU{4+i|EN9Usc?G7uvMnRx@!NEXv*}g#a$UW7=b_Qw+ z_XTPb5^@;}RDT|*-reLm*4!MZF1%PX63DVWAUOC|lSb&>O*zM#o2v`YE?#h!m6p^L zo~>@bH)}g zILKm`2#jh*?n6+NRhN}0%ix5j3rCupcNaF0s*|L!M$YbQwkycv4d#e~w3`l{Zf>qA zYzREoB2F79PE5(_kWFTVou36!pf&3XQjE(ALE*CkV|+`|+rt+x*yAemZgW9X(_fTo z<>lhS1_ZXDXW_xv<<~bOhPIWb_)7TINPfkEnShHE1J~Jd+k&@LHc>p^fA6Q*^h+ZH z)yD%1PZvnWs<$>=qUe~z`uTnBRaNZTCP>+IkngTKYtHT0#`&j4(A3I(-}#8rAM-(qrG)7a4nE-`HMLOV}MJ zldAVte^UJ}caZLaK}l@?8g zR##PCCbe~Fk%t|Pf?{&+8*^{}Wbyeo=E?rUyH$Oo2pbh4gC|!Br&_3{|AHEB&b+0_ z|1P2nCHW+N@mA_kGi##Ek8klClfEXm&%&(5Td8HGH`OQ*7F-4{07q-&!k&m)ZOm<% z6uhfB?*Z#i4u)rl#Ttd%-PDzsYOC`9Mas5kBGy2@Zy~Kp*?E|podtr$jRvpUUg`wJ z0Z^QBV6ab-64OU5nO3%7vW0o-B0Oua@LZ#4YzrO{=9wPhnXGsWQnXbK!*$&D3R5nt zWGu|qHNtkIq9v|vExFDgiujbvY*)BggzMJ~RdwKct0mVvho)U+L#c$7eE@0|i(OaP z>RYlcZJ`Xo4|A=GaIL(;^iR9I<%#Q;7jic$L?5YEORHzEK<8WG+LMRpD$B4JOs(^TFRQHx0R&JsF zEl}I#EhQvu)US}RyXx0VRtQdwt5M??M@_9f*##$3X90`>vTINoU4e=gHLFQLSXaO5 zvrtmiQpsabvRDb`i?w^GN-V41wZB5LwMAixe`P#!ct8QS*lp5H+s;&fwE z7U8R_0*E3eDp`}qnizqJ-BlMz9-iG*KET!}>B=ZIJc9i1)2#Yf^o4nDh;Oi?(gI&m zH<2rA^yGO|4{cdHEplrcKJ&RUaer7uK0K;X`l_MdTt6g!6q&Jjt1{*xS4*ohVZlUY zUk*kpPPH@&)T}0t0<~q^kpXqyAOk0$9?FlTTE@L)?i#`O49${N}08p>bL2&1InsgblQg$WyWJYP`{WB+)nBAsyNpV@Y;_{N&#gnGY zn4~aDmFb?^1`^CSr`!^gIq~n$=H|2LGtuiP%DOGh&6@yMzunxN33xsF0`$kxk4Im-6^8@*@$X`#p`Z0$ zbMtoeAE9qV-?$4q1WZ}e0Dkno1I;PT1sFVu7>`H42$`rvUx)=>XSSQxhBukFPV@6k z<`j&R%+NG{vgb{U26m_i%Z)9^U$MDkS_Z$%Jc4$C$){&BK4`bL^7<1sS z9WeAb+gm-g_BWy!6QBEgVC>Z$-=TQDTweliuW)>fba`!#Q)<$_6qEMWuv5$P_aky4 z@5sQ^Pmry(O%0H=%48f>T07q|05{s?lo_QgoyPWulQG{uaX9hmau{r~Z}(#=5LZX& zqvnW(exqAFW*%>)W}ZvH_=#l2{72HT)|#IVo3y$VMROSiuRWEa#`ltf=hKM(Cf$A~ zUXZlEWf8`a2a~fPGfsxB9LFiDA6+@&gP0cLxe^LV6z6J@sEr}eaa}k0)Y4u z{!33Z(J*m8OqU4>2|(z~J|0@_jsyoFxD^1->#?OlzI_oej+FQc@Yr*SI4S-f8vhJm z^km;G8ZQTpp5mj0k-mj9gW2CjOq^p9p2JL@Bm-SfPs1%*l4XoP0v8PaK{R7QegGCO z;ESQEf*(d4=JWfK7@Nm8VcUF&{|i~2%a=GAdyrp(Rpopmbd~WJ5SLP(gnP;yo`>;l zz5~uZ!0nJT%iy~(HIuJH&CTFNII-{N_aej7`5$4{G#-p&Y%1^XV{8iFh~k{g=`5MV zt6Q>C}#dtiQ4Clx3H}R?DUj7A)xQ9QCl#k`@ zp#E-d?1SPl+z*v^@q3|iH17g$M)7-~@=iV#%0}{Lh`xj049eU2a3t>ugFgXhA2;}Z zc=(vXC%~FV4c>?-tugpyc(mH!AH$hd2G_70OoOk3yhjXv9Rd?F`0J3e(%?tE24gD> zei1?Yqrrbf*lP{`PY7LZ@blpKSCIb+lfMSJ4~&+e>%u3p!ZaeUxLu@gZy@IoDA{_fSQ856Eblk$ZNs(U64No6~}}8JDAoG ziCpqG^Sy<<`s!z6UcN z9bSQ!c{0?1GtYYD0RBU(lKwb9Lv%$@&!!&|o@9iI-U~bd=otSkyi#Nvcm~odZ-IGC zIx*z(F!+RQK*5d@puidI_mTX=7xUk83BGf|OT-Ugq9h24q5AoNgJ!DJ`s=CT`x zLUw})O}>e`w96Oat3#&2Zy`IODm2*x^mf?_F?Ptc5UR@wQ16sGryU|d*hI)@hHQ;4oGPyvPl$(< zL1QosGo*{TH2;Z8{NJvowyoGj^AfIe*;ZvC52av}J<;lN0A@V$R^%~Ley`>~LI89* z53NU@R8ATr5vu~r>YicG4WvHjOEFdRlJAf_1Wdremm}nUOws2!_XG>y!Kw91r z?xz4Oiz!4pwpu`S=IoL=Y@2ZT!1HkXB6HEQ{NuBd*{~^fis`S;N}C3%lfwN4sK$4h zSUiEbPKksQ1o8H>%#qc@MCzU9Gu2tV%-mI-*QG5yzhs#?FlH}oxoiQ0V*UtoezjZ+ z#Ka)=|FVFgF&E9OhX=Mzt*4sNw0MNTeiQ~o=}9-j^{xjo5nmZCos6n*jk)6Cv_LP= zM(f&1pt{Y4U_BWZ8Z}F03oyB|HgTw*FhI(`txxY{h6CmC_*j*1G z%rGRvkm(*SG7vw}Kn%CGWVkKNuqlxxG576CpDs3|;@o${e+yY2@xA#{O`>}%3fes( zMmZsVGxyhI`?nxC?n&-dq&_~=eV156I?kC<%aaG^p$goSUAJJyLl#dLTL_tiZO}a< zp^jKYC)B-rrlpc-O2sLnDMV7;<{8|)YJZyM{aAADJM9#uxN7sG<$nHq^Z4>yV;#!ho#(Vd{51h>6<`x} zNSM350(7yHF!>6I7V!kkcam)$W_Mwgx+`P}EU}-)rWqUX?7`Ua5t{1`qOmFAZFNtE zyaX`rB4X*u_P#@7qZ$j>ljHQ!o_1X^b=m zG`;t#HN8oENMz$&9U)*d)<(^Wl!Qa@G|rK{2%+xr8rgZBJ7d4OWku_#m!ZJX4-zw) z&88LEU3-3rm6hiQn<4qxBn5!Luu?`7z~^?jpRu+nE_K$P#6 z*j*sTxlKHu<4>hFmf2@udHM#*mob&+7!C?P=rYFg3v4D#J_w_D1Tl03Y>;;&%S;}^ zt$@p4Fck72h%~tYOT#7&q)SQ$hwQQrS#?Om0Vj1Chk|iR677-;vDHN}yAAscze}Sz ze-1b@`Q08m5k(v!#wL(DCVXJ$_qga>u?aeH_`M2{;wOZfk5hnMjKNywV+cBh)YBQmYzF;^#K#5KfX znHIq@R}j_XGAz^o5Sg}_X{-Dxv~$M(q^#de7z&kbD~-(Gtx7R=!aIL&H|@8lX_5vO z4Xt37RD%r0j`q`z?SLc;MG#9$hHD9%mE<%+(V}Ipjo4EXbgq{0%``onBvQj%UC7Lb zEbGS+u7`ox+0>9q+C~j?Q0ux0(p*KlibAELjgT_eo!F#Y?^_Ytb_MrRM1oDtDS_9D zR+^Y&7s($1J6&-B%b3P1LX-urWSnm<(~9S>|AzY+TZXHvRE8yC(@|NonJ=wQG_0W| z;sjOG2R21E;tH9Cdk}YB*9(^T%4={c0{_-9*GY=oVT*q4HT2B&C6>MGHia|TWZ=p7@zIJErI{reZ=r%y$`#cI{}+|(DEU3j z@|&)-VPn$fVE=nfQ{QWj_k%b*>U$k}zV;4Oi#`<>w%0T_xuS*MDbwdGxD{O?w9uxq zXaiqr*&A96#Yzh`mPO-3D|=H@Zw^{$Pg(Tj857xN%|pS_LUrZQbBfs(Es<^}TB!0N zZ78g1(A=a8GaY<`ySM$B4lSHaOGUXT{(clhHo|yM31%w5HEW;IeY<1{kn80xvJudc&hn zBLY^IYkh$~5W%l1*G{51Y%-os7R0z*JBEnZWIGFPEY~zx9wS}!hKM35*T&(jTO#8K zZ=j0iYCj<Wh}ur*g}_vsgj^h+m0ZtvZzg04;4wg8zy2>?5q>Aurne}pb_C{;=d#G4*mDbYU;Rk5<w=OHP?S zVKRG3W-DFBzp#K_mAT|za>}fkbJ%W~r^tL%79YwsR2DvoX0Obn67c;Kc7H5$@5d5M z_I1SeaX@w?4)r9b+&6I!OS7laO){mloTb}y=405QHEc~8H*N~cv?mM)sV@d)nQ1o? z{t5(C&tLa#R4e}g&4s97uZAm3MJSng_*CJ4`lQhyQSGQHp)TaPi0tyBv;i-ZZ z>|*N0g(_0PH!uekgV$y=wxL(V6wHo2NVt+kW?7(vTMc7}y_7eoX z6>UJ zw9?R<5!Ojs4P9-u&~ihqkg1xwwu(@JS|HOR-~hG2?$^}KP=o?%ea(n~_^5}oY^DWb zd0NZ)0Zpe|ijXnFeW*aW#J;mS7CnVkUfHpYK6G!(X=+0gq4Dn3VVx7gI<^Jc!tu;|YQbvke6i>?;j6x3G&t`I3C8|PtAe-HXA zL@$Cxi0K|=ZGlL82_QnJ>${PH1)?9pBIMD22kxMVs)J7|*J}`p$3@0ioIWBn!acQ{ z6{A5Y33{{~usCyJnl}yu7sSvoq& z%QB!qtAKs2BlI{swqSG2iNHwZd{lm}*2;1xkg%*5*zuHE9a{)LqKjCPrv6EV`xmrx6{mX(o1{B;le^SKeR=cms7x4_~`8D_nO;qP?{)msRMqkc=eJ zoo>BaXi0@W0Le=dL#$*~R_MndJ4xJYCFA0JJq2o#!~z&F3-+a zXK{*9>rxB7R-vU~-DU_kDc3^VD>T~UGp+A~$VY{C5br5j5%`@7ZMZq8Ey4E-MB3@dvw+Z!W3qhzzc)GLY*X>rvT7d}bbeM>2t5|Vv#%q zAL)T8v(@@^-$ILHLWE-jaSU6Z-qjuIYEe$MI%}~{6|q+ryR|_cfCRPLC$O|m=KA%i z#;NRZj2pRHFQ^bJ#*MtI72{{D7&r1FE5>ydDuj)Ej1|JQ6)J>Bc{qd!3FY88_mONZ z)KH=QjE&_x9=;GFq!i*4oI*SX1pBNQH$@0`S}{Huf%hQBNc#5?cvD3}btlWwfnk3? zfF{K9Cmz0~zDAK*^Hi?-eXDYqvAzqju=r=(?ooGZ`~xq{%-4=?jUeEE|Lila&Q}o{ ztIvgvpK-PS)3VD5GllO3r0sJaMVS+!=_q7B7D**{s`rHsmS7KOwDD3UKT8VCflps= z#G&AMCXc6j?$B1DaWArZzV?4|!uRb=-i~C`f>!tKOy1SHZ?81ebvlcy>ogrCuj6`= z9f{2g1`NyQ$yTbKF|;{Ytl2!(f;SnrYuBUvTXP@1NvQ2*CN`%W?jy}~@Kj(qM;;_Ac+!yN^p+}6IpU0a0>h4YUT$Nn>+tJAfq$W+&!{*PkD1xQ9OM!v`JQk5|V9! zNR2YvJUc%xihFq+c7<3Q?~~<-%CZ&3_sDXACCkl0>QSV2bI-GDvL(~>Ys94{Dg{Ih z1+;U{crMLc_uNUNBk!9W(Vb;)lT11ak}8r(WIoJNa-t$;-QeZ9?)WGzqg4hGdJxDP zb68YVADjsI^+7C#cvXq#QBggjNEb=z5<^lHSQOtKY3bTU`PR+PHTN_{3He0XJxr<8 z;lpzRYlDpUP_{?)#4KYyRiqS96yGTySYcr{M_=&JtR z4{zdj8jdTfztC`Rv~ydR#ocVHyFK0wzsE^6XGvRq#owU delta 13410 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 ySKjLC=zZSWO)$r4vF10oG8|(=JAO0ic6 0){ + uint32_t received_words = recv_Err_code; + for (uint32_t word_I = 0; word_I < received_words; word_I ++){ + //printf("%06d 0x%08X\n", word_I, inp_buff[word_I]); + fprintf(logfile_ptr, "0x%08X \n", inp_buff[word_I]); + } + printf("received %ld words\n", received_words); + }else{ + printf("receive error: %d\n======================\n", recv_Err_code); + } + fclose(logfile_ptr); +} + void receive_data(t_x502_hnd hnd, char* logfilename, uint32_t* inp_buff, int data_receive_trys_counter, uint32_t max_total_words, uint8_t mode){ //int data_receive_trys_counter = 100; //uint32_t max_total_words = 10000; @@ -865,10 +882,10 @@ void receive_data(t_x502_hnd hnd, char* logfilename, uint32_t* inp_buff, int dat logfile_ptr = fopen(logfilename, "a"); - while((--data_receive_trys_counter)&& (max_total_words)){ + //while((--data_receive_trys_counter)&& (max_total_words)){ - ready_cnt_Err = X502_GetRecvReadyCount(hnd, &ready_cnt); - recv_Err_code = X502_Recv(hnd, inp_buff, ready_cnt, 10); + //ready_cnt_Err = X502_GetRecvReadyCount(hnd, &ready_cnt); + recv_Err_code = X502_Recv(hnd, inp_buff, max_total_words, data_receive_trys_counter); //printf("\n\nget counters of calls of SPORT_RX, SPORT_TX, HDMA_RX, HDMA_TX\n"); //BF_exec_cmd_with_arr(hnd, 0x8005U, 100, NULL, 0, 1); //printf("\n\request TX_buff_I_shadow value (last size of TX_buff transferred to pc )\n"); @@ -918,7 +935,7 @@ void receive_data(t_x502_hnd hnd, char* logfilename, uint32_t* inp_buff, int dat ; } //printf("try: %04d, words ready: %06d, receive_error_code: %05d, data_sum: %d \n", data_receive_trys_counter, ready_cnt, recv_Err_code, data_sum); - } + //} fclose(logfile_ptr); } @@ -1058,11 +1075,16 @@ int main(int argc, char** argv) { char* BF_firmware_filename = "l502-BFfirmware0.ldr"; - printf("loading Blackfin firmware file: %s\n", BF_firmware_filename); + if (1){ - uint32_t bf_firmware_load_state = X502_BfLoadFirmware(hnd, BF_firmware_filename); //load firmware from l502-BFfirmware0.ldr file to BlackFin - printf("load state: %d \n", bf_firmware_load_state); + printf("loading Blackfin firmware file: %s\n", BF_firmware_filename); + uint32_t bf_firmware_load_state = X502_BfLoadFirmware(hnd, BF_firmware_filename); //load firmware from l502-BFfirmware0.ldr file to BlackFin + printf("load state: %d \n", bf_firmware_load_state); + + }else{ + printf("No BF firmware loaded\n"); + } printf("setup module again"); if (err == X502_ERR_OK) { // настраиваем параметры модуля // @@ -1186,22 +1208,22 @@ int main(int argc, char** argv) { uint32_t recv_Err_code = 0; - //printf("\nStart transparent mode\n"); - //BF_exec_cmd_simple(hnd, 0x8007, 10, 1); //start transparent + printf("\nStart transparent mode\n"); + BF_exec_cmd_simple(hnd, 0x8007, 10, 1); //start transparent printf("\nFlushed from receiving buff: %d\n", X502_FlushRcv_buff(hnd)); printf("receiving data...\n"); - ready_cnt_Err = X502_GetRecvReadyCount(hnd, &ready_cnt_copy); - recv_Err_code = X502_Recv(hnd, inp_buff, 1024, 10); + //ready_cnt_Err = X502_GetRecvReadyCount(hnd, &ready_cnt_copy); + //recv_Err_code = X502_Recv(hnd, inp_buff, 1024, 10); ready_cnt = ready_cnt_copy; - printf("Ready count: %d, Err: %d \n", ready_cnt, ready_cnt_Err); - printf("Recv Err code (<0 -- err, >= 0 -- number of received words(32bit)): %d\n", recv_Err_code); +// printf("Ready count: %d, Err: %d \n", ready_cnt, ready_cnt_Err); +// printf("Recv Err code (<0 -- err, >= 0 -- number of received words(32bit)): %d\n", recv_Err_code); if (recv_Err_code > 0){ ready_cnt = recv_Err_code; @@ -1212,11 +1234,13 @@ int main(int argc, char** argv) { int data_receive_trys_counter = 100; uint32_t max_total_words = 100000; - printf("\nflush TX buff. \n Number of free TX descriptors before flushing:"); - BF_exec_cmd_simple(hnd, 0x8010, 10, 1); +// printf("\nflush TX buff. \n Number of free TX descriptors before flushing:"); +// BF_exec_cmd_simple(hnd, 0x8010, 10, 1); - receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); + receive_to_file(hnd, logfilename, inp_buff, max_total_words); + + //receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); /* data_receive_trys_counter = 100; max_total_words = 10000; @@ -1224,24 +1248,26 @@ int main(int argc, char** argv) { receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); */ + printf("\n\nget counters of calls of SPORT_RX, SPORT_TX, HDMA_RX, HDMA_TX\n"); + BF_exec_cmd_with_arr(hnd, 0x8005U, 100, NULL, 0, 1); printf("\nStart averaging mode\n"); - printf("\nflush TX buff. \n Number of free TX descriptors before flushing:"); - BF_exec_cmd_simple(hnd, 0x8010, 10, 1); +// printf("\nflush TX buff. \n Number of free TX descriptors before flushing:"); +// BF_exec_cmd_simple(hnd, 0x8010, 10, 1); // X502_StreamsStop(hnd); // X502_StreamsStart(hnd); - //BF_exec_cmd_simple(hnd, 0x8008, 2, 1); //start averaging + BF_exec_cmd_simple(hnd, 0x8008, 2, 1); //start averaging //BF_exec_cmd_simple(hnd, 0x8007, 2, 1); //start transparent - BF_exec_cmd_simple(hnd, 0x800B, 2, 1); //start HDMA flood for speedtest + //BF_exec_cmd_simple(hnd, 0x800B, 2, 1); //start HDMA flood for speedtest printf("\nFlushed from receiving buff: %d\n", X502_FlushRcv_buff(hnd)); - printf("\n\nget counters of calls of SPORT_RX, SPORT_TX, HDMA_RX, HDMA_TX\n"); - BF_exec_cmd_with_arr(hnd, 0x8005U, 100, NULL, 0, 1); +// printf("\n\nget counters of calls of SPORT_RX, SPORT_TX, HDMA_RX, HDMA_TX\n"); +// BF_exec_cmd_with_arr(hnd, 0x8005U, 100, NULL, 0, 1); //fprintf(logfile_ptr, "value number; time, sec; adc_value, V\n"); @@ -1258,8 +1284,9 @@ int main(int argc, char** argv) { struct timespec time_receive_started, time_receive_ended; clock_gettime(CLOCK_MONOTONIC, &time_receive_started); + receive_to_file(hnd, logfilename, inp_buff, max_total_words); // receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, FLUSH); - receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); + //receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); clock_gettime(CLOCK_MONOTONIC, &time_receive_ended); @@ -1271,38 +1298,40 @@ int main(int argc, char** argv) { printf("\n Receive time: %g, %g sec/value \n", receive_time, receive_time/max_total_words); - printf("\n dbg value: "); - BF_exec_cmd_simple(hnd, 0x800A, 10, 1); +// printf("\n dbg value: "); +// BF_exec_cmd_simple(hnd, 0x800A, 10, 1); printf("\nStart transparent mode\n"); + BF_exec_cmd_simple(hnd, 0x8007, 10, 1); //start transparent + printf("\nflush TX buff. \n Number of free TX descriptors before flushing:"); BF_exec_cmd_simple(hnd, 0x8010, 10, 1); - BF_exec_cmd_simple(hnd, 0x8007, 10, 1); //start averaging printf("\nFlushed from receiving buff: %d\n", X502_FlushRcv_buff(hnd)); - printf("\n dbg value: "); - BF_exec_cmd_simple(hnd, 0x800A, 10, 1); +// printf("\n dbg value: "); +// BF_exec_cmd_simple(hnd, 0x800A, 10, 1); receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); - printf("\n dbg value: "); - BF_exec_cmd_simple(hnd, 0x800A, 10, 1); +// printf("\n dbg value: "); +// BF_exec_cmd_simple(hnd, 0x800A, 10, 1); + printf("\nStart averaging mode\n"); + BF_exec_cmd_simple(hnd, 0x8008, 2, 1); //start averaging printf("\nflush TX buff. \n Number of free TX descriptors before flushing:"); BF_exec_cmd_simple(hnd, 0x8010, 10, 1); - BF_exec_cmd_simple(hnd, 0x8008, 2, 1); //start averaging - printf("\nFlushed from receiving buff: %d\n", X502_FlushRcv_buff(hnd)); + printf("\nFlushed from receiving buff: %d\n", X502_FlushRcv_buff(hnd)); - printf("\n dbg value: "); - BF_exec_cmd_simple(hnd, 0x800A, 10, 1); - - receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); +// printf("\n dbg value: "); +// BF_exec_cmd_simple(hnd, 0x800A, 10, 1); + receive_to_file(hnd, logfilename, inp_buff, max_total_words); + //receive_data(hnd, logfilename, inp_buff, data_receive_trys_counter, max_total_words, DUMP_TO_FILE); printf("\n dbg value: "); BF_exec_cmd_simple(hnd, 0x800A, 10, 1);