From 3a075e56dafc93a8114ded41ffe48c00b5ec3719 Mon Sep 17 00:00:00 2001 From: Dmytro Bogovych Date: Fri, 11 Aug 2023 15:13:43 +0300 Subject: [PATCH] - import changes from master repo --- docs/gsm_agent_install.pdf | Bin 0 -> 18109 bytes src/agent_gsm.py | 29 +++++++++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 docs/gsm_agent_install.pdf diff --git a/docs/gsm_agent_install.pdf b/docs/gsm_agent_install.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96b0624d7ca39606bfd40c12f0bc72c66c783b92 GIT binary patch literal 18109 zcmeIaby!tT^fwAB(kUoN9Y7@{&N-Z*k?!u6ZVp}2sdTp>-H1pCNC*fbE!`jp(%l00 z0Dk+u@B4f1eeQpEKhI(BS+mxxnb~WP&iZ`zek?C6$^v4AU_EZlYR$$10e}F6fdv*1 z4;GuUxucaafPoQ0{`8oo2@Z`O-SES-wI)h z#U`(BYU}`DM=B`(%>eQr0})q8F(pT&Lo7BW0f3{u)76Cx0LTgiW3d_P13;`m+9RKNq zfQ=2p5$V>+!0~zz(&jdnSZs>MhK>L&5Ddl&heE+%5C9H?umWKq2#gcJ&H-eFK;Tdq z6aa^VS;6cu4hV-17Mmc#-UvCtT0o=^AhIj~xV|0NtqK@ABIg$A2EeAGD1mkL2f$$F z=xFP}#m1&@<7Q;+V99ETux2y1VKYLw*jOR-jU3qQ^&M;tjP32+SZvL&r~a?eg08&$ zdCPBn{BK8soJ$BhCl~^NfxxU#AQ%dU0>CgJD+~q$!C?Rx7{?p^DIJt@zdt)2N-{Hb0gs^c$799YftDsiAx)lxxCwoI=K!I)| zitYNAA&XZ5g;bC+HZs>2M7Z9}Jd_j43cNl591!sDOP#-k;dLv2%$yLy3SqBgt8Zw0 zeY50+lxzW4frM=K>hiA$x-OgkArQ0Ice`qm?av6lHWyRU2i$b(s_u_4L`K0?Q4~3_ zYb{YY0Dj{_loP;teRWl@E@xnI6?Hf2NXhT#?0T42{nY|oMXw^@`qnD~{*3ACiTYze z(#AHXj%EPR)zgU_gs8a{@=*Y=iCQ6_GGSvwgpu)8XB-@nOM^9*Yubj6R3v#VVdI+G zzMF4uYUGpgXXQSo>zGkOD6O{_2^I;u4dCiyq0EO-P1Hry7K-1*s`%_QdB2U7iwRYa zeKu&&VD>s*8}(Ley3p`+{dGFKYJ7Zh?4%SrF>;<^ady=4K_E!asQz5ZjYVXwek5@# zmA{A|rU%n&xtz>cSl&2lLQJ%;ZO?063Rq0K58&>w@RT2|9lpD?y4VpqctL7(rxbm$ zFL4%5?fwQ{rh>|p?V$vn38^lOcbZpGs4smjUjZvEPJ7=%R#;h5@~y?fFtyq~{GM*j z^n0bXuJ#p_Nau;6&cVsZ-RFyiP(Qjb!YZw&R$8N6JiOskkSh7=o!)j^;ZprD%+=!+ zv!#JAVmmuT@+V#R)9#fmoUSg`hy0_FCTbxsx?p450NcO83ToqfXyo$#weB zU3t_{7{xs2W2PAXY@xBC$}Z*L!JV)PoAQGE75B9Ab2XE26EO_D#sz?t7ip>YB@f0# zSw3NJZw7ul-sY#h6OLz;4DTeGTA%OhxB2dZU-!|ie>g>V#P9#O)*8W>La?4Pv!+rzd&T_=mMHw(c--v-7vUdyD0!*`)1X5 z#$8&^Obd_r@}&0t8e4f+YZLYd(lSev@Py$)%Aj42kf|pcaNV&9uGe+Z70$Y@mRjWX z(G@o2nVO6$>y09%ugJ;xc{zi2zSyndMYM&-IgujPLPk`;6^IHETF!ZrLtF>0P%yD$)^JZ8JSoiP^kSl-G4vBnGo*!A*0oW3S zw!Xj{!8-zuI0VTtr^zYseWKFUsAutqx4^!Z;I~cUSy&&sav17Ae}((lyj?GVI7Y+z zV;%uI*_me{=|jToPW6H$sVN_S-H+Y=6S;~zlA`{@ia%|N-pO|tlxAf>B`;22vNUFt z9ap5pST$`ED^P(;x|t(4wQaq30QID6sFdjzE>99Cdr$6%>DBKb3qdbe0QsZDV$3)I z>j#s3artU28g?YQn}g`n6k!L$`6Cb$0$xfH)U4=*5lRa4?&ejK;un_jZ8#-3Pc*X| zWah`J@<9GSS6qVzkqh0I9z_VfL9DfBx($NpgGMj4( zW1nV74|RdgNe#;tcTpqwiKjJ~KVJHBT4u&SwKAAizX-92e$*$=gPMBEF*iri<^PHN zU0;UXAeHFqM!rKPVJ`=pu}cMwDEmj;g+8+07DA@5*ID%+h%*x6zZxH<)4+RQ%D?s> z$l6bc9(8Ss-U%$fCnbIv8{N?5652{G7pftOdtb()zL7yGvbALdy)B%kSug_gh`ojQ zEn~o`s0JE3x^2u1&!GkTdTt!oHq58Wu|%wu>h_C=V}|;X{=8I&m3QuRd+-s-^EXp{ z#B!|^8{2#J^F+G&Fu*;C;>Vu*+>1wf!Z_qPOqgm~EyD>>&fr;Jc_|!nZEH+MK7R!q z@+BhVk6K)X$X?>^Eot;9Zy+8iR;Mjy0&$c#nBzmnfj$T6*BV;RSF+(tVp({71Ld5z zRiW9a+^&bZ$Ib}37w=vU5AWq6SVR4R?#VI-VVTmx6^Rx5kKoH4hh zUrB#oa~LUF!Od{cr(pliy?QSIr7teJL3oLaWb`wUb0t3>d%o;e5w&Rh%Qs!;{budc z^f4mfx*bR9J&FsO-iwAF_91Ce4!U^8$senr{m>F02ihO`w_c-#S&cU0k>3-8v-?re zeU#2&3#Mi1VK7aPmJ9aBV745!y2lcKr!&ovX8+mv9T|(Nox68<9Nu|rqTPEJ zr;Dvp|E#EPM->woi|(^^Nnl1q0rMzMUf$&oJ3Qm*-vfyJ@TI%U{IOJ zhUIvk9QurN&!;a+Yj--F!wRM!W~$i!D0W?J=NK4iPregT=)~QA$LW_NWY28T@c4sQ zMCugP@jxDLkBM+PODi}~Dd{=q?X;3yv4R7#B_Q7%l!}BJ<>d@rFctfo;OEW7ln*S^ zNWqe{tF=`N2F6EP>L3Bg*gF<;2*-MEQautISmMWhL2}p@sWK?Gz@9 zw+{13F>KA5ndQ0?+UpwEeEo^Sie;^Q=Y-OXbr_3=9_XU^Jz(f4F?0WM{)ooZR;FLJ zz5UUY;S(tQ-c&fw%W+Abqybe9W6xNooj1R%`oqf(-x0wpMrf0$ne3#pM}%L|%WVzW zgYAdv{OJ_F=fPA-ElWeVtP<=%&aue6PwGlQxg2Xw=;x8#c+e?wtoRaqx!DQd~8g|oXhYa)kM#tzu|ry(auQlasbBJlsP^-PS%@Ko@PUU>MA?03O4YQ7 zL4nUj=LzmYRa%@2EAXTt(Gt82T5*(HI-8TcN5Q~_x;LQd*?Y%*i@dZ%rM;}1}43B8w?93^zszw%VAeo zewQTe#?1Os)6@9%8z{L~pbEXx+Z2u$&1uzcsmmcraaf{+vjera+S^!CRV#+bGL4}@ z)Wsfhymi4cuV~6$lanL2q}%fM*opCrX9_8Gwj%SUF?`n#_C!RrpRize!Jot_RSt1F zi8>W};^rN0oMxTBrkR|8TYpJtXxST4-Y<=J^k7qd?GK>)xg!x*L9SP0ZXd^#@HIz~ zpzJ5>Av6BS{y`1VZTj%j!N}?hfuxhub(Q@H%l2hMdlW_z-WFI=2H_oPMZR{Zf=DnH z?R{KNlWObaW?=TqokKcpP7h)H(eg~Z@9{bt#Rz#*k4Jfj_*A&N&QDl<;Vlm|sV%f@ z3!f(1IM97pe`WN2+j5*sY6~s#0mFwhXy*FQ*tKbmvfIF~3HMs=cBdSPCGUFNF;_5e z7d8<$fh<+>%@dkRw^VeX>d78&^+e5B$bWOg)YRFAa_Pwe@Y1z~s^ zV~idY9<5tb7|pt%y>TGF#;5<@AZ@bj%U6$OZ41661bCFuuweFNkNLt;6KB)BTbj^2 zsA;&Q3vde0uGNZ zJKLKL*j2&+*(ofx-}^D})pq@Vupf(8$JSQvsLe=r=-u?gU|!!PuyfJTM|ETC`YQFK zf%$DYfv_^c9aOhYq0gic7|4u>HY8@M4IT9AfwhH_6oy1epuEtKtMxbc^8@!mSd$rK zAm@oS!m~X1tY;mST4r*eIc={e?Zl+^OW$X8{UQ5 z2*gVJ^>FP8;@Rvo@v6M)x~!s8dsPm>RidAvrGa?k(nnrqN6%j9S{uITnEmdV`i2){ z!xFcrmcYfFN;jR1Ma|L|#by>I2iT5?^N=!HNz-xfnZqA_Cez zf;z$Kg;!nj5Lw?DvRm_L=>!*%FQr*UHN$UZK3|NGH}Ud%q8rwq^BVsi8%AfW0Iq zEj*eCHblJklf;z+$p*##r{M!j>PlfWQR+Ks`Cb7%ODuBQ4@uigw+_9u-`7{H!cCLh#CJ9h+G_6~1-v!Zp&S1a>Sd|SS_ z%s;92&SFiKXHSPBW32oUoPRj2wy5G#+lwkfYx^X`I7v^pVn5M&xY3v}~&M+0T}#NU9@p^5v*YSj{BXgZvV8-C9q5qITVx9ZcMV@o}0@r7T;@ER3D9 zU%Pub$uj1aYi#v(N}*4`_|TnNqft@SjXHW=a5#E7N6F?72Hgp~^SMK(vvWsz#iduZ zc)3RkYt(GH8xso)>y;D=@2w@fR9m!K8oAE&m~Q3ZbQIckijv{yB?EVZ&6m0dtjLMW zj!#$6{uq+7?w z-|SLx`8AnwhKDZPb#!%I+n8TqYuI?pkaC$_;+UFj{*;i;5$AnUbS(2GQG;P9Q$M$U z@sT^*T`dW2X%sAlx^m7DN>wVp!IR^K*VNXmOkuY3cf4#PBWYKo{fd0|9jWpk zp4!P;o9WU?YuodUk<)|4!M;ce9fb%xxA6hGM1FEo20dT3ID8!K`v{5v?Ba6w*^Bct zikYu_EgDOuMQ0!5t+|4**b$Oc*@=s#zV^vA>*+PS9xg{c9hR%$5}EKdU6u;{@b(nC zh=fG?M4$jH+fSWwR$!=VtLn#RJ^AHlH?V8)_iz4$g- zDmx2@v|6sD9Q_|}qexO@lz)3jLTQE(`cmh451Jcx+r39g^Y`8E`YDShKMJF|^IpH$ zcy@p)l;rl#uV%i`c;V@b-H8`;qh%LA)}AJc&DMF42?$eXq%F#QqOiy@ObQ4bB1X69 z2r3|Rlw>x>^VcoB7spkYOJ6mXeO4i1vjKrLXPa$pxa5Wg<)k|?=c(&yGNsAM5ciL_ z3Z(s?31$ZqcNW&C#*04Aj2_Hc96ao{2gk?1C3{=cE_D1Bp#gSXo6gkvOmM22;3?QU z8QV7L>ePcF;V4YUdh27aSct`t4KW{nTee|}n>+v8@rN7hV(&{bGyPvEV<{;R>b2Wd zw1U&|@t-nTR0_Fr>!ehW4xHZJ*#yuDOH#tzxhg-W(T}W~w|&sl<~+@<&kvrIu5Ib; zk@>N5I{Z?-S8Id3wFf&Z%wf4*m<<>lQ&ukoVJ!)y9Q6yJifScD55e@^RMgxiQpTHO zukv5?*kJF|ogJQtiP`Nwe0x+`^@uH{ocF0 z_T8|LAzw9jdN*e{_6#ZWRr7LL3A{UZoU>6a0)OO+p_l299n0Ceux-7$sBLU?y+qwf z&9GUkFzK_kZ|x9B(2o+it+|~Z!O0`TB$`XS>O&0SFxOvR0_`mAanGXKHe7!CmW#M| z@i{yd-2Ccj^90+)igtOKq}bMTT0f%K{I08CR@^IdEmjJ{MkCIqR{2`~9Mw z+!E*4<{Z@0Zwp42qs>^4QjPyH@#!m6tL~U3;(3%pg)S<=ANBI#6dg_8k69=$f4y%F zjREy!w#R%|Nm}F-a?R+?HB4%Kn$Tp<-&Sz;ZPivoom6L}MPk$#Pfp%zoF-_NR zAM$3a3T4W@tfx=uM~Ut3cADoZ-41-K5ydG(Fw@q~*};kYY?y6m#v(9QdgI65w{q7D zc+R`>Hvs06H*dx+Xy?4mR=#}`ZWtgn#iKtsY#>7m#02F^b-fy%$7G43iG4=C7bUT) znmu0NIQMmN8}%*;FE*y6i&)uy`Yyie>_hTIVz#vT_YOiGZ7!E~Kl`T9&;kfV_TsTA z$zhIDu1~lhm}FyX#*CLHkMW5n6v_hj|MT`9J? z_B?h|^3}uy501tj(IQ#^IUjAW?8(;|GOK#1Yel~M z+WK~OwkLc-^0r;KTAqMcx5IwrA!u5UvjR)1lCrqvA5n)pIutP`*DCxiO%%|u`IgzBhtw~ds%t##DJRuaZ4XbA z6Zh}Ca%~Wg6_@X^uR9`Rizn1$Kj~x-SPXrTNke!iyb*mD-796bNb)P-p6z|Vyof=C za)Wh-95PoY9+Zo=cP71C^(;L+bcoqaPfjl9JqHMCtWG}tbn|W0)eLWBrqO+X z4xH66>yd@tzkfe^sovp`MT=(P2RE8*bKcnF`W05d7MAUzAZwJHMq9oq*Zs90Z3Lt! z69ZVerm~@IFP)Ch3f&1{J#*pMRd2Zz{4Zl=Z<3a?acOPVrKCXCQ36FQ6cvYc#g)NOx3PTCHUQ1kd`F?EWgutFK;4zcvmTn9H1myR*|~pM6z}_{nEs(e}Z5`e$L#6Q*KZ zJpiK-W&H3xzjEB!wg;yxG{LIB1bv9JGxIW^2h=NIkXFCI!H-1*bt-Tx?;Y}01dZf< zw=97jWWUI&jxnT6IDd0mnK^$?`^gN^+wT3;9kwFnoj!V5^)}wIkWTypl}~uT?8khk z-rXKckJxXZOK}S&Wh=m=jB#e1T>N6gRgy^Yu!!V7kJ;EaLsqf0>?lkMzL4piq+1!E z%Y@Y1v9Sik0HF^bPS87J2)S7QddIE0*$H*3Vs!a*zP%XW8Zrqr*Jtpls@1u7Fr~XQ z6pMqZc;_gWOxL!}qE^}xV?T|_)J%AEFy&kKD%lF8cLN~2L}dPyXm)1k72G8~NJylz z1+o0b_4MUq{~Xf`E4e&0z#Jt3NiKS*94ZYH*ZZwQvTq*@KASbaC4X3O-tjQ`TrIor zY2)!8_y$6-!sCbdfX4M)o}$>O4_-~tiLP8 zm^M9YtZEVqf!QYaImvj4LmS0E2G%Ff_FcSa%BSX5cM`+L;4aKYZxNw9pIB!wTy&2A zIw-_xxQP0;#&m@LKv~GfT%wc6!Vouf5waDK^~F2=#kS|u!EUph4BQI^!Io11i?+bL zL*+gPu`c)+Uy<1Bgw9xb~+k7N7nts@Fpar)D>*;rwY{=16Df7boPa zp725&CFMefFpCF0(*o-oO+oe$?$zZcp^h)h;vKUB3%_tlZ(ml36vV#u0~JTh00l2y zei9_2Z%yepgchKk#)_k?l6d)Z13Ld#3+{h&|O$I34; zkpCZ|bBPLxplbkL!p+i3M}w4ii6OmCaFe0Dt$WtYr8#FE{7VHjdxg0QSoCUx z8)GrTFB*Gp79$_VQX=hA>!VO=3;#qB*Be*4Xy(++i?x*J_;9KaXTxe5s4j+09G{g^ z^>l9LR!mj7D(2L3%U1B#hlq`8zl|)CbQNG(ba-KKqe=D5krqp$guwDR#{GOm1*s|S zq&Kc5JX2+s8yv2YFp;uZgrP~&{KA{9s^-4Rt>D8K$Hi20h{WSoGW!XAX`T?D*}I3> z!3sx<_~@@v^sVkx7VBFDKpfcRXZxm)`&W-l%={aj0N5fTgzveBjqj4r_Vx=OjN-kQ z_f(a$tVc~Rely+HFLP9j_me3IRF|p=t0ve_yxr$fZ83P8eVGR+#IVm3CLdDIu%vYv zVWhG?-utm8W`3L|!>||2IRkq}^Gk^qM&ts5u>X)2+W( za3u^$EvWR#^7tuZNTCtt{ITmfAq_rDpegKQrs2=2VL-ePcWKEmYKpnBxS1iiy22A8 z$TnO~XVBlE`kwOQ%zfA|B89qKf_y;(EnD?{G~TS0LAuH(0+AouU5~7c>e4F2Q*)Y_ zIxoVl*oNM2HRN;X^tql^O3q(>g~`ZQmEu)Ying}eU)Sd0{-B={FUwnfc~J@NC+z<#3Y1e^pP~1KkTvC)UH@O zT35MK7!XNNf^q<$FbMJo0zlx%OfL+0ErWqL0PIK^3=Br{nUL!W@(1St0iX~hJ?qLA znZdo%fgs5~P$0*3TUT;0i~|4%BY*5506RO9eZzibhh#q??I9dM06XN0ABFVEjyxml zp-8R`oc+d*9e(4B9qAJeK_+;w{6S#=P9PirxweA>phz7k3?=D`2bn`gCWw*w>VGhk{$i&A{zx3dVeD74_&d{nm4cSAF?R&8A^CiUSIKA- za~mW3-wY{$0rD2vU?I6bM&?K&(M{?4uc5WR?M?pre|}F@gp~e!I{`+ADRNvJD`Ros$osg*-#Angjx2LN_Pq&FMx5&VF42B2}+cexF3HOK`~b z2@1X`{ch!^1QETdyDkX_f;Vn|59P)ja?@*ef$KW(ja%4_5PZ`#JHh(BDnp%pm;69Dd`0{Ypht5cu2RN(BrA{WiGiHRPt(5agh*Ick60KO|am9fyBL zkD-(O74z>pSg&L1Dpt&GjQ@;hTZHY^+IIc>?;7}jT^}=K#7d>kpK{KwRAudL9YpWNOVaVp<-ix6{Y~>DuG0F{zlWgLWTat!sGZG*Y5J> zX#VdwkTBLCmVaNi|5`Ku0gB=NYg(i<_bPzM>fvR$pQH%iuMoX8!QdN z&dLdaB6|V-2d0KxME{PdA#1OSe@*9g{XeG@grtOWAQ#WSK(*hv-2aK>*rS2195?#9 z=_pnI88Aoyy#&bNb89zAAPChTh8mQN8Warv=pjs&geppQH%Z`GN>w{7(>&bS&|o8F z$UW@gy`!8|tB`!H!MMTqS~A@qFT#jOmBRA2Rvo2)c4fnj_%6;iAp3Q9;bWpq?@C=DG)A^7=-wE*ctYONM$GSxY#%djjv%WJAXXJ1}^(!o}v>bYm8W%;={b!G2!7qlp+O~mrT*4~m^ zoEwiw+4s&-><@sDyXulbX3mEkAfo~qb?FzP&z<6tszAbkjZ4rWMs8%7=l(pMp`jsl zxK?p->4Kc{=#X-;x9!V3`9mJZG4EmTjbv&bDfH9)8LDm9yEEyl)XyhmXBwZ#B_JM4 z&gCdD9ej25qyhR!iY5rEuX@{k-?a%nS?|1)pK>ATYMs~aeKOyZA2^`ZA$yKBqQs&; zajT-my-1Gferaofl%k3JM&}*tvk?UE!0?Oh{Uw(Dl8@)Ry}QBPm;ED?E?!F+WS0xg z85-QNmS0)AtBh59?+9x5<+KqIlnCb%%p7-qDRaW-J3i3Ke#>K3HKLYWTn2^Yy;Xl_ z;MuxR>QqI7J~Xo0(dfCBsspu^85#A?js>b zu>{^AWl31tL9;}zq#^S`ntr7L$idqr!LO5uC2d>o@?eno*DCM%1)bsGXtmYF*=Fw{ z%j7zxTz^O ztXKo~$=kG{6rqF4<`0a6Rk1hOzd&pu2a!p!#XiLg5`#k z3zd4m(F%FXtxV)f(GyFVM93w?yBw^i6%y)l8-bJ>^gRtHyBES{XC?=CNyoaFSc_4O z(O#*TOD@qxajY3QgkBQ$AV>X6%W2{@qAT?w8%D&r;}7>sm!m!kGA*5B;s8SX-dS42 zt;mj8;wSnSzr#b_yA9!!*;GPowDr79RS7sh-*ZUb znuQ_fhp|PSbypX<75TSsLvnobf=WZh^xtBLVu$s-zZmnndQLV!*HZPeDRXd|pDke= zuP8Jn371pXIo`%=@D)EsrzGO21EiTSgnoF5b4*V}(Ngzb-GH| z#zxfDqjDsrnHa1pDb1g`*1i-IdUZTCCiJML1uC*j@HxVpHvan@2uB#YMjRvt*t$e#0>{mX*rJW zh3?CQXGct=v;^Es_brZ037g7Glu0OJ@*X}9O=zg5r#EJ>w&KTc zDiy1n5nF$9R%0`D+fBbK2L1j!-N2e0}HCCZ4U< zX<-V3+|Hku=Z!v|7}=Ldu9weSvmfB=S=p&S>+)onIUb9}C(U@s#>$!dva_g6Nh7r2!^-rY;Wl!2Z|lydPg(CA%PKfqB`%#YK#zWt@vmZs-0Rd|Uko z#oH7Y$1c>`jrQjg-r%N2S{J8AP$i8*?4+=VF z{$Q}zw$6|0vr*5Mm;>%hl(iSlCUGKaJNP5Q_2(AlG|8}8FX={f#=r}fM7d}xhQv1> z=wBZh&1xR=;r$?&$B2Xd>wTtZJ8E(_#^y$};U=J_wk8;`-VTb(VPTmWHqw z-H35cls3tleMKBA;o5V)6#5Yoqrxbb5kv71`6nX}qImQ})g$RhT0W@jiCYBj8JzP~ zsU|RtJc!mwk^F$}CeBax*uPDr?h`HFhis!**$)V_X9>3|Qc8SNa7}POrOAE|NFdYl zv`xWlk;HAQrcocg-QeGbZA}?hKfnTTFL0VW#Y$T6kLOF;c;x(&(XC$#mx7DN9(>xc zJrLE7!opUaw!IMm<(^;hNmePZj$Ln#wuvfyFyXIX5iF&PrJMuJr8$-KOu>+3`O<@} z=;{-67t$Y+QWBVe&!+>79B;X;Soa)n)SX^__?8Y!x6$cxHte%Hc|bm@S$W;#=j0;~ zeU~lX=>{G^<<*Oc(xqvsC8P1RTPJN?^Uy25ME28WKzv22fG_Sya+Q_0I-o$vn^m9k zc^+E{X*wvS;*({dLwU`byb9uPc{w(J3d|PrA!L!?_EF^`#Z@$N4_5rO$N2M>ChQZ} zlRcnhN7S6)#=q9<0+YZNmm;wxp*taB|F6E zc^_|uMllclLvD8I(&17=w9A&d0mnK`B7?(P{;MMK(QS6Gqt?Vx<0%@-O zGY{8)VA#%Yez#wI#a(gF3=h?*6EC`$Eav0_dsyH*Rom@7hD1jUh1drMa;h#uukBW_ zDqqvgU~L-QPu-K(Q+u|G7Z=#KAGGd*ndye={gXiF;rfP%r5%}eR)fFS>mFw}8m}L9 z`{)F#q0ge>KvUAvAL*m?td(*PHY4~Hy86wQn(4DChCrmat#nk}B1tw>`y@x2^j{aB zaq47w-1N1~VHCUahq90E zEpe>?Tc1SaXY*@%WNQYC$+|{*6708Tl2lIW$Bk@!fRhiGkmw8 zqs5hSf25^GBCSJ}G&7%UqQvIYp6_09unG^WS|}(*YU0j$iciqIq6(duLw{cBa=9@Yx?Q9CyCj;+7s?WpKunm zAKa5{=CBmeIpHzMxNjG5^0HG6n_8k+-3%UDjlda;d_92M>_+#krkO#jXK5(w!AUn( zT*%6o%F@rO@=rGz=`31HzIw=G9&j-v_-s7f=`_~&iY*A7h|ow6mwNx`{Ojj@LY7e< zmQ7r`>Xd#pD~Q~_G2JR*XBA1bS&PPxf_E%F1ngNgc)Sdmv3q71(E)pgjkxh5f>kEz zye);|3q4u+bdQJL40jDYk!IEMdB6Bs{Hvl(`=j#A$I@mmaI-QA71Tmq4adr9!s|_G z^x9drY&24&x>KMWHXR(x?HHAG1er^TKZ?^ZMcT($L4Au{E+HpwP2xIP1U%4|KJ%s0 z{byyXpK+GEzU26gZ~x*XS(}IBquXNepO|#<`#C42wl?$?KQdqbTHL5k1%1(&lML5O z(OY{F&DqliIdPwO9y z)-JtT@;6wt%hKKi)+t89eZmpxF>1_^?Z*oXpo@L}EorfN8kQh7C z#w@jCj@nd@@s8H#jF%K)zSAziZ~CcwU@#QdyErB)|;eNZe1CYGYAklQpIvC*q z$LXwor9`aL2c#YtGWG@gY;04dgAP}WK%ebTI|b0`%0Y; z_x0k>DxZAk<2|EHD#fmOTN#<-mhsrxR+DI}&*6P~Bx|J36OK`?o%99lwvFvrZipq0 zNp_~2sjhelZqFT8;_5kVm$r}35kJ{bKh?{cZNg>|OgxGBCJl;*pA3)W=Z;7i*PNbv z^*TI50G`e-2h&F-<1CnMOE1?vgZE-IEW1UsjarFo6G}Wiwn=x`>ow>(kuCU=s?VQ( zl-30t@iZ`L*~h*J`c7LAY@wo3g-9?W&8#j;Qs(2V87vm8{u!XgZ(C*{~Nsc z4UhbW2w=Z+{5RMD{095@7p8EN)&C7;z<(nXH!uL~2H$|)Kp?+imEVBDZ$#ra&;YxE z9e(2?zi|pU5WU{~!hbe02VYD8coUs`w9-0Eq+s10}f5bN@4~ z4S@U;CAj$Sy71QufJ7j!-=Vqw!Uh(bl(~@u080z&CJ~PGEQD~ndf5f}@qyp?Ao6P% z!lKAg8@nPwLkVl-2Nwi?pN0MoJ-XT>Q92}63CFsE)ouwB2oB;z zVlw~IgI;~^;h!=PkR3T+|CB+%NCfv^G9U*S3H$t04}|pmZy5v$j{HXkL4qp(vgL#$ z(dmE6kVE7Aw+|2q1pQB6IImFaf7yb-|D6L61o=MHzw}`2NDTSkvMZ$eUotrRf93@Q zV~6}r&(U5V`9hTa^=D?3%-xNV@q$ESt{DP(BzhAsie4 MtjCW<8ng9R* literal 0 HcmV?d00001 diff --git a/src/agent_gsm.py b/src/agent_gsm.py index bacbe6d..0784645 100644 --- a/src/agent_gsm.py +++ b/src/agent_gsm.py @@ -87,15 +87,19 @@ def remove_oldest_log_audio(): def detect_degraded_signal(file_test: Path, file_reference: Path) -> SignalBoundaries: - global USE_SILENCE_ERASER, LOG_AUDIO, LOG_AUDIO_DIR + global USE_SILENCE_ERASER, LOG_AUDIO, LOG_AUDIO_DIR, BackendServer + + is_caller : bool = 'caller' in BackendServer.phone.role + is_answerer : bool = 'answer' in BackendServer.phone.role if utils.get_wav_length(file_test) < utils.get_wav_length(file_reference): # Seems some problem with recording, return zero boundaries return SignalBoundaries() r = bt_signal.find_reference_signal(file_test) - if r.offset_finish == 0.0: - r.offset_finish = 20.0 # Remove possible ring tones in the end of call on my test system + + if r.offset_start == 0.0 and is_caller: + r.offset_start = 5.0 # Skip ringing tones return r @@ -120,16 +124,20 @@ def run_analyze(file_test: str, file_reference: str, number: str) -> bool: # Check how long audio file is audio_length = utils.get_wav_length(file_test) - + + is_caller : bool = 'caller' in BackendServer.phone.role + is_answerer : bool = 'answer' in BackendServer.phone.role + + utils.log(f'Recorded audio call duration: {audio_length}s') # Check if audio length is strange - skip such calls. Usually this is missed call. - if ('caller' in BackendServer.phone.role and audio_length >= utils_mcon.TIME_LIMIT_CALL) or ('answer' in BackendServer.phone.role and audio_length >= utils_mcon.TIME_LIMIT_CALL * 1.2): - utils.log_error(f'Recorded audio call duration: {audio_length}s, skipping analysis') + if (is_caller and audio_length >= utils_mcon.TIME_LIMIT_CALL) or (is_answerer and audio_length >= utils_mcon.TIME_LIMIT_CALL * 1.2): + utils.log_error(f'Recorded call is too big - looks like mobile operator prompt, skipping analysis') return False try: bounds_signal : SignalBoundaries = detect_degraded_signal(Path(file_test), Path(file_reference)) - bounds_signal.offset_start = 0 - bounds_signal.offset_finish = 0 + # bounds_signal.offset_start = 0 + # bounds_signal.offset_finish = 0 print(f'Found signal bounds: {bounds_signal}') # Check if there is a time to remove oldest files @@ -221,13 +229,12 @@ def make_call(target: str): # Add prefix and suffix silence for reference to give a chance to record all the file reference_filename = '/dev/shm/prepared_reference.wav' - utils.prepare_reference_file(fname=REFERENCE_AUDIO, silence_prefix_length=5.0, silence_suffix_length=5.0, output_fname=reference_filename) + utils.prepare_reference_file(fname=REFERENCE_AUDIO, silence_prefix_length=10.0, silence_suffix_length=5.0, output_fname=reference_filename) # Find duration of prepared reference file reference_length = int(utils.get_wav_length(reference_filename)) # Compose a command - # target = '+380995002747' cmd = f'/usr/bin/python3 {DIR_THIS}/bt_call_controller.py --play-file {reference_filename} --record-file {record_file} --timelimit {reference_length} --target {target}' retcode = os.system(cmd) if retcode != 0: @@ -247,8 +254,6 @@ def perform_answerer(): while True: # Remove old recording record_file = f'/dev/shm/bt_record.wav' - # if Path(record_file).exists(): - # os.remove(record_file) cmd = f'/usr/bin/python3 {DIR_THIS}/bt_call_controller.py --play-file {REFERENCE_AUDIO} --record-file {record_file} --timelimit {int(reference_length)}' retcode = os.system(cmd)