From 6a2720787599b7db9469a542161dff73842fce85 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 15 Nov 2019 18:59:27 +0100 Subject: [PATCH] gotthard2: vetoref, burstmode --- .../bin/gotthard2DetectorServer_developer | Bin 152204 -> 156616 bytes .../gotthard2DetectorServer/config.txt | 10 +- .../slsDetectorFunctionList.c | 261 +++++++++++++++++- .../slsDetectorServer_defs.h | 12 +- .../include/slsDetectorFunctionList.h | 5 + .../include/slsDetectorServer_funcs.h | 5 +- .../src/slsDetectorServer_funcs.c | 99 ++++++- slsDetectorSoftware/include/CmdProxy.h | 8 +- slsDetectorSoftware/include/Detector.h | 11 +- slsDetectorSoftware/include/slsDetector.h | 9 + slsDetectorSoftware/src/CmdProxy.cpp | 19 ++ slsDetectorSoftware/src/Detector.cpp | 12 + slsDetectorSoftware/src/slsDetector.cpp | 19 ++ .../tests/test-multiSlsDetectorClient.cpp | 21 ++ slsSupportLib/include/sls_detector_funcs.h | 6 + 15 files changed, 486 insertions(+), 11 deletions(-) diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index 9f60f4d198f3aa736f8ad5eed6ad2de7db5990e7..4f4d3b77b4f38c3fb38ce2da80ed68a2ed341db7 100755 GIT binary patch literal 156616 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%0D3fyLh+pcm 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 literal 152204 zcmeF43!EKAmGFCJdT!py4W!dI5QYhaknny)g%OxhhL;P9iu-}05J-SPNCFw;A(AUj zG$O8nWfc|IsHph*j2c#C(Olg@qGs2i5fbv6fe?ZO2oT6S_xqpIr+e!5+&eQFBcR_- zekb?z>FTOer%s(Zb*j30_GxFIUR71)#edb_HJ)5;JkIkb@;l<3YP~hltM~eO1a%u`hg^1PRg?&n^t@^S}O zD_lW=Bi`a^xpH4P8qfXl+!t8RwSe#?We6NYA;*k~pq^`i_}=@TZkg=nzkz!KF@Hx- zn|jI7(_{_0cL@#W!$9LDc~z|nRc z@OvmQ&aUGh=?n6=A20zBJ(NFGR{!ekH~u*SWF*iS6H>pIBFK67R+(N6_RipXqcI_M z`xBMk>RkVfYhN0ZKe_)EuCvZ{EI+wlFaMF>Xy^V1A&qygujToP&UKOdP0sb9Jb$)x zy@31YJJ;XidfhFNjo8Nss=QJB`Tu0n)@|#<@mR-bv22=ve%B5J)?4o^$^;t}k}3>)?NybKS`G4bJr}u9tqZ z$}8}kw8z^hzty?FlIwZS^y1`s8cJ6QI`DM;^2>&vDc(gFU4He9=@-pvnRIQ-MHfX$ z%O)hdOQY;&&A9ZcDJ|Y*mrc8F))n5YmTNDad80SwhN&%NcG=V$CSNvrs&_@pjOo+# z|5@Iwnb%I8-f|gtCrzF_`Lg4^%Vx}+GF={=e(BXSy_r+4y>`a6+?`6sC!ToGtXY>% znl7m?Z<%%3ao*JFQ(7*X-ZEpRH*4zU(wcr)W1TV`D4 zU48YWnciiWPidj(mTRYx_Ub8D&w}HNE~2REGcKAo7`R(;-ZUYU3ZCdPpSpen#U|2k>-LCeqymp z!&>`aJ!$H6@A_+}wy0jTOh){dT{}fCR75JEGtNHiou^)O+)>9J3t6ANbk=oLdAcx~ zTyrS~8IP*k{>cE<`LC1SNh^nSK2_<7O7tkV&gbR2iht+ARaRKz?-O@?fnmMcJD$_^=3{Cb(5}rr^UP zdW+!uMEDJYi^Iy_&4QaVnHO9fBmP30}F9?1} zgtrN9gYRO&$4B%ff{SCv-%`QFG30NV;N~nY7hD`W{#FTY&VRe$;(YVBPH^+vHVAG$ z#YVwxyxSzWIn76g(az(6Mpi@bl*jE|UxX`U@_OIDdl$Z;0@$;4&HE zZ-n47k>D>UxHR7>>BKmm2-x=XY2!3jWA0zl_5k67y()Luq*M9RPJU;@+#`PyR29}v^zxp6dOq7QcTNy``7C`Po2E5vI3?S3 zR*lzm)_z{dGo)MXR~ObajQ6%?;57s98S0XuZW-#Dq3#)EkwG>YWR*d78DyD3wi#rd zp^s*ee}?wR&^{U3D?|HbXwMAoo1wikw0{PD$e2pf@PBgfvmN{#2Y+{jZ}##TzyEh1YnWTR+~0)_s?IMD zs=O7E9m4Ls>mlsU4;Nq-s{Kb&bk_fEzt)DuU(Y|dbW9#Q;ro+*drw=jv9)3DAz5tg z-ESS}jVQdWhPYLp*h+qGNPZ#th2$4f7IIkS*GBf3G+Au@-S8>A3d|F`E;7k%Z1nu1 zj0IxD3v2zV=$Usk)Rd+BJ4ssu@73N~9|(3gb_B)Q9pUap?c;0m*}C_5S-~Himx<*4 z_RmRqIV}%aj>hI612hBY1Ji&!a2IeN@DQ*RSO;tcLh=^b`)5oT(=@h5$Bu+{j?ox9 z654r2W9&$17Z{DPBcXl7Xp9{R?NXyLb|kbbjKg!YMu)-bnJ)m8rZ5rkd%Z9~8+;6H1cQ$r3F@OcTxCe}^ zq5b&HZl^7M(aEMN|5H;Zz>8OSSB)2vR|zksW04MdYw3H-!w=10s%bp%($l2!6Dx2U@U#+VEW8KO{;=2=(ybbVExkI zL-kAj?fI&Pxr4-?sq#-5I3|At1M}fI?|fugmy@~_JpYv6<+R){d{^b$JUEYRhky^N zr;fQowua}a^C|C|p!s}r!kGM}$Y%@k*)qE$k;9h8j>7J0?SBEhXPzJ)BW-tO)OK}s zUbgUy8t-B$8<{r!z9!+rTQ6-oK+4QfHsuZ*uVsE~YE&k?do)B@KAwV)ryM?>O7Zak z{b_TJH)P$S_NIZp7d*YF-P;cT>ld{L&lKC;vV#ri%d@jPytSSD1b>0{-0Y5~=N;Nc zXwT2?$Uo`OUV!%E?2eX9-U~J@Y9F+&*dD$>8U6Fi!x#A-z%TTmAHN&yQ5elz_3 zh2I)}pX1l(cLTpw{65Ps<3acgzaGEqiyh(9i;(#s+Ke{+g|)>?$l#^f9j(w*Ctr$W zP$K{9)Sg!P`yLjx-^)Dn^6ZXgCYAck%h5AZcKB?uy6vW;Jn)y72~@QH0iSC6Qufof#4ll2!c)`Dpco_pP2Yb>6BmJfk z@>{nbzsTpPoHrs$Gl4XRdx1wktZG`#y$)m-@$kNGc-RaNn;jlDr+C1>*7m)|+Ugb3 zzv8sjD^Ys!uf-Pn+l%YNevDTcZ*5o$AHKJ`%h=c7Y-DP@!v0hhUJJd3$NcP)M#jY= zWdZF~^wXiVKX_Y}+7TI#tNa^`C$*hU9T@lG{vYvG3vXp?^fqi*1{+q3?E^H=Pg$PW z(r~9!Pi(Q|8SH3m_iG|PBmRo*6W{iIuQ@X}TQ?Y636J!Nh`-xP`AhWM_>;Mer04l6 zob0x0UcnCT0cGp;8uc1Lz4~K+`(cOq)w+Gt^4-p}+nu^?x4Lbm zZey_-mjMaRHgTiH?sQCF9?qY`CMb!+SY&Xk(NnZ8&atJ|Cq;KS`(U z8rkx^^75Th*(A2xX}f@aC3&ci#BaE*NSn|H)-1v{5Au@oNmn-z{h+-x?**muOXP0y zlm5z>xIU~#PZ{&nAFDB)RDUZPE5&{`pVmrU`=LMam{42K_4qDhXkVY(-svacyG1@H zJ|g{imG})wpD=qgu_^Dh6&Gb2X3n42F!Lb%#(sHtn~TqmO#0R11FjG8JLq>^ea?*4 zv8OT#??vqu*}%P0ro=ReMNlvGL$tl6ub1nWdy@7h@|{Dzt;h;^_!o`swZCj^KMj}z zwEYsBaY})5hN#X+JBsgtZ`_Vg)~+`C=Vl)tJZwzUKHU2_`f&^T_VGm>ZH-O%Ed#P1 zoj&|H{urzGa!;T8&6VPNWxd0B=H^B15`$>_1<&2AeKuR@XMRGI4u2;~7m~K_)y6D- zSG%Ma-ZZ~QqWto;lqEK;Sma(Az0;Tu^^JYa|BDRXiww?%1_VE$Za)PU0`~*|0sIVj z0QfoZAn>2SLjdv`f}DayDOvp1WbtEUQGk~pr)2SClLhyb_a_`#EI<~-ZNdelIZXVL zep$&Qspm>diy!3|itYYS<*#4A`iH}>yoYEWbM}DLF$rXHiof{)>YzO^wZ42X;zjf>wkM>S{+Ck>ytT9`J zoe!BWQOC$vXFd>(QC?NPUSw3Ete0uqA(S8wBz=wg40J|7Bm}6=ApThs%B|7~GZ7uLH^9$_uF0=9c3O-N9`&SyX`Ydrj zefG}s&+5Gma_jhDsXxk$3nQ@1^MZ!XrdaTBJXEnzy&B6K@(=>oJw8^5-9sc{QPlx zT{uB}z6yOxVm=z@$uh{0-@Wznu|(0lyMcS6+#ohdX5+K>ruL-C1l` z9gq59y{qHKH~OY_>V*8{uDq)bVTZ*JLl4wH6kK)qsc!1D0-2A)jvYdM#u6_$n0d-U z_&a0rtAcv`odfZAxF@kkozG*BH8xO7QBM%?bG=TAR4SfrU=7aev zf8_U%)pVn-Dw%hw&XSMbOUDnG>xRs$6Wjb;Y@735W{s6Q(()T`ZLpSS);jatwb3(v z6Mdzfdw}?9K}UoKGVk8h*dD%EY`^JoKNoH)wr`)8$pzxm0y4)9wvm=}+voXNc|Kq+ z9lXplFWECM%QJ`N8Wvm`gxuRcZ@i{!qa7Yx>f@(c3~}+#=#%;7$TAx|NuC1ji>Tiq zbTaaP68M_+#-Q@b(}|WZ zv77K|C*P-|d_(HiMb_lo%Dh!|@10kv&)BqojaPTMmkn0qqZSu=fy7~+Z=|h??cut{ z4u9k94qsw2*jI@`!9%@1->lE)#7AtG`u3-PDBnYn8U5poQoYX%p`P%h_b!ae_Ku=# z`jwO|>wL-mi=+Gb1GrCIO#94g+DhUOaUPRP)3jn&0!eeQlje%jH0WoP2Ah=RGp#gD zbCsoGyid|xQc+LVWonfv^wOP`l< zBeTf!f>n*}!3)wRv?(z(pST)rQJ?s+Uo!q^i}~f+;wz>3X1?dt?f*v4CT&4knU6d7 zf1Ikj$Z!>MZgJ8qEKQ?wmNZv6X?|9k#uph%noFEC50<9UwvaRzIB9-annv3~(wyt0 z`BiC}wz#Y_oHP%YrcvKQ@?lLnY4^pYX`03VkTkBY{=PI#Yn;Z_)&D6?(-x<3b@kEG zG(K?;Ez8x_Kb59wj?=ih`dDe2wm3~%S68HT;t=XhY!;pJ#9s(kF=xVO5L+#{_tRR9 z4@;VGeX)Jq5MoRk&u#1oC2kzqhfbY*wlsg$W!A}6htp$#=yiKh#!nd=uyfHox9&@) zWWzP|mkBa|#cyC8AZ@4FCllF+N@FT<(-^kj$#^dVt#XjJh z$$U`u9E7`PcZ96TDBm?lL_Q)uo%l(~+zWqD>gRu_Q00F+UlkI^lKEZ}n;I(mp{Y5j z{~hf2xA8f*OI&0SbRL51iC#=n!cir%gtb@{hctIkvTljANP8Q|-9FJ+qy5EE5Y&+K+*-VeW9+ zVqftCz=r_?nrNRhy-{*69iNG=y&;|VV&459A;<5P$}xX5{d))f7{9z%WsdL67oDg# z{eZtgxpHO7oG~Q-x*Ca1gYR6_KCU{SQ<+pr%)UZwJgu8Qq8-1NZpQ)W=AdJmx|30l z{O*CC?}<(v)C-+>S4t-)?72>C9`ImQ^SAClwq@=gs@iV-J^LT}s2kr!H|{Idjlz4o z*Nuv0_bBs7M`OL*YdZ2>bmYFCb)@fn?}4tQ_4m{8_Ng>)y|At6eCCjk#4z^MMn8`| z+Xs6#9D4>ZH}43rVXPrVbMp(opADEl>3DlFIO~*(PX=dwTk$Kvw;F!*4|Kk$^l8ws zV~Sq`PJfp;o5UUBIidfe_^xy6{Y+l>FJKF})_F~|etW#>{wAK?}NeWyLk{8H8w6T59|ifW@S=2^z(toI4l*LapO zRi8c6o_(2TSvyXiwY6h?_PspYS2-}hmUZl8e7ALMAN$$rMSB^<_RCs=@YisM%)k4o zY?iRsreQ&A?ljWsy+>=aONQmMwOq^dBKKD2YGUv6TSrB666Ryd^VmpM%b9=H1_`Aswd_8!vH6i6f97&%*I%;ENlgh{3hsSIEWqr}qntC$EP}jQs ztge#pZfy(nB3cJXVvq2mb)9Z?mHO;-?9tB19;uuvLWY23)`B38BWzwbgN64H;bmrXSu*293 z|2X;(*Fqbq`y-66TZ}LCL3mAU81_c_BA=!eIkj8Ch0L>nvgI$O9~@0TIEp@SBr)3~ zh}j-a%=R#1wiAfijwfczJ(XM4+-x`)d-J%-T&{<5yI4tbnIlexGpY z{kdKVeE`3!oae=Ut#+@$2t&Z@~@K`n*%I`ASPtr78@jnVq z--EuS5j)AR?AgI)F1Of@__R%0#%)#x@zJo|kz>1+K^+>%FOWS_&o&aHlsudE35C8K zy6mNT4m!V-8PV^|WJ6@o@K`-#MEz(@``AH@9kqG(ybRatyDZJJv81^-O0#U7q?xDn zko>-G5<`}_SIigjLy3dQUK&YDeRJUo{EixLMfe22zPBQ%F0jW} z>ff}2`X7T0Yoh*VYW?rB`b!ME!>NCV)qgd%W3}nrH!ZEi6rOa_K51#ugNDcYXG8go z+e2_|59$rBd@e829`F>!HH05&k9y_j`&NeSvrF{a_SuE#j<&}O$el4$VkRngp-X$< z+XOE`=T~Jd^gEH`$|AfW$Cr!v64>Yk{_sHj3c1f-B#DiOTqD2XO1sORS;jNO$wNS8 zFFuewL;b{;3%S-ht>XR{GP!UidH=D0J@NC75NKGC85Iye59PkJ;}&qPwVg-{?_#5BWoj_ipeYkw!c6Rxp#YO}N!zfNRm@oV2})p(OP zDThrOkd>H|&v@G~vlTlzr#>K_?hlOopO9F(`ae?VL?+`|3m6|naySf~?KeN#Ge}>f zkE@SF9-m|VS@l%fWh?Ent+9R3R_f2aA#x9W)#s|gtq;e~4#^lz{4L3=AJ?W=Nt&1z zr|C}`Y)NuouCXQY_2&j~Ep_vL?R~B$!cXOQNlhU)B3sCvme9Q6?6E-}zo|d3s+0a% z*1wk&AIXjImgYVOu6bn(-f4z6`vtF7abz|=gKTT}Y_D8;?u!lgiC2l=FMHBt3?O!y ztjD$D14>MRl~MR&En`QKy3Wbz+<<3VWo?RI@ta!3&hjh1VRYTgXL)`x&(^(+&*kJ3 zLLbULOre!4U*6A=n8cD|5x!`HWwq#u@n+X`TgX$>z$fFljHP}*_*C3GLlWCDzv>0Y zhkTJ|&4=W9{7&;BUozfpO)csFwx%ZQ+J(6pFOaw_dGp?*#zJ-PIdaZ^5Lv`~TXtAp z6=J>k=3eICXlvndgyrM&OWy3K(0qpuB`&4c>}ezBsdnB!GK#U9pNk!e;(6}6>}>Ld zAN6;IPk4&+RsWVTP47qJ2)1j8*LH#Ki(H~IvsR{zpRB#L#cPf1uT~qn zvoZ3C%j{uM-*qvzk?~gBtx_812O)d4wT}B)d5lrv3r=~gF==_^mB@LVrIqo8y}C)8 z*!R>nM8yB57&AocwaFY)-!-8fSYu7vb+`1t z&izZ$_VS)0HltnU^U`;C7if5Q>HS^B#K&p7pim{cDL#(ypt^~C%GU2i>{J#zH4Gay z6#sh&{Hm?0-$4r%ejCSR3F6<(Ztyx;T5!nSU}j zx}A9&yr=6genNgfH!dB$Hvv6Qz2n38y8;482_(X|L+dQh&-o|N>H+4_ameqgq3ya0}I$}M_CpJUsP_|E0m?J0sy=eXY z<5oAx8(Aj(UHWX?-}~8^EqYG*UG==o96i1EhF>P*U6=Cb_M&|8i+DD%q3EUb&8Cl4 zh!3P<(@i&4NVgV!sz;v=M4y15JG*$7@oDkTL{1j}R9$)|;&YzZcAs~tek=YgzBs%O zjn|geIQ|d)MEjBSPi(j1(m&%qEd7(dqIBt>vA-n!lfEr>Rqd0ENz6HtK3T>Vi!SHi zx}PU=@{qQd^xh#{i$6o#)3?$6Ia&W{>*qsK{k%+`AwC!TV0j0MU*^lA8}S@0+)$M9 zrL*tPH~E=Ql#JE3{vABs*e)RN%k%ye@k{kdvW1&WhR`~BY$RV|_WLrPimz9Zf9_Ry zE{d!1PGQ7j6i2+@c&s#zD_@k!ujD&V#+7CGbEwmDSUHtfVc>$5KA<)hIU^-`Ufh4c5~} zfVL5PEIRqI_E4Qc=H>3uR*B5lt6oGhUt+wNUzYG67pi$*!W!jQV3)o;G2ZhGCb6VwV8dE{$Z2 z5_>XI=8-b)#eUnf#vkK+xOH}?9p4(+akWpf?&ChQ)t<3+rbPC(&g3)RHTx=Gt&hYs zbe|OVDR{Y2<2$13=m9Yz{AA+GGWHKeSJ>l}-Ojt_VzWYghl%V26PmvE)4u zPvS$`Uf45#TM>UO%1`#yv@zERiTyMzex$yceJ~Ao|E6Bji)`Jrwc`6yhR7x6MSY2S zbPoE+Cl=*u7&FczPFl;a_;+GgrGEIB*=C5PMaS_dru&yJf4{Hp~RHO5mP<{pLQ%h zt=zNsT7ws8`{x1di27FkQPJFRE%ILL%!SrQ?H{ac)H%(?lwVit<>t$8#>LR~_>-z%B8?&vlXH8?h?BiuUQ}zyPKhSt9ddIcs9kgtqvBp#%&@ssNZ*yOCU+ok4 z9`ApaXYfI^|Gm`B{%0wN`lt6lqrb%S>6hv=P|tP9G4&2uNWEk|B3Rz2AZOGBkAnl5 z9PPEdLYs)5BPaEJA14iS|Aysr@KuSIl3z3TgB8X0v%NyS*lY10L~h!DNw2c!H+&qK zlF!Je7v-cZrSmJewh8ZqMD>`ULVjWsgU7%Dd8fveLtOu84`Cs)caNFe?w(8hr>J!n8A%%SKe2!AJ(VBNshs!? zfoyd?dZ(sDe&k1;My^DzQaAKa@`>`N?TmI;wX93iK6X#@r=HrE*xMaqgSyyC*{4d3 zNas;wu_>#l^XdrXJR`Z5ct8|uj(p9M{)`P*zeC>ZS;gM@I|k;$)xz5&taEh671S46 zWp(9O;_14+{VaaiYNPWjxavv=Yx|s=6s&<4K=&=Kk-C)Qp%9JP!UJ_2`w2OhrFOX5 z7@kr2@+G##Mj?m>>wuH>5Ggu zJG%>6?Q(n(=4>*j6h76C>@b<~%kxn?K1w@oH#)z9tE>x+S^S`O8BcFwZAx?}uA}I$ zpO5^&5dTZg!=T-yUAmq>l6pr`){gyZ_Lngy@-M1?wA*K$cbWZ*%AEb-+)v7P$M{s) zI!>N!vMN$n;UOL;r5?yC$tV48YfojR=l`Z(vX{dDIENJSPG-|D`+0RcMTaZA59X91 zK9kDRtxsy6?fn<;gX?~u?&VG&UPV3E7Jeu1kB`X~e#7qxbMn1;_q?^*;vFs@4xfIx zz0L0Z`ZCW~kd^3K+4F%;{TedsJRj&J-cL9em<-$i+z!kK76OZbRlp{|zlHPi0BL7! z`%{nVdOpxuMsv>xI@f6K`9L2qntMLb2aP8C_~SAzGFqKOn`|`qe4wdD6B`{rJKbn{ z9)s~b%V_TTKsOkTfg*YK;}K1COZ(}Y?R=nHr$^@lE$OFg9woLSJ|8I6U&U6aeK}C< zONBn;>4iC|;1cv=?Q3*C~VjIa(qq1cD zuOvI){AiWoLsl;DKk53OmRtGRB+mQ`Pk1Czp$L%P3$yuNFE|{$YF0pd(*t5%dcDYm6<z#-wXaIG@iR;q!)tM{}20X zWnB_HcMmu|uIh!8SJU(;t==DQ{dbq~q`tSq`|5}%%_B7iXkEOc$4DC}UVU_A4Ok8&V_fag zUB~Z1MsvsSeT?Rg-=Wdm@q4t<-0^#i(cJNSoYCCz`*5R;aQHjMXzuv^7Nfc2cZ1Pt zoo5>(+M9O#Zk`d1-)GVnnfvr+{8k-14;`C?-kZOzHdgX5e_O`NlDy)xWKzCviLIo+ z96>pM70^f9~_E_vM%8 z9_F`gH215c-_!VQ&hfll%YC_){A&u?)8f4@S4HD+MgK(3U+hnuu^+xk20vVWnHy+* zuvhW;%5N1uN|oB^8D~w9wWg-UBRyF=4uO&Q;UcTd)i&3h5!srNwPFwGV|KmtFyavG zadBzM*fq)8!ks5dTkMMZyOdeDdtj$+g+Cqp&vDE2MwI5w`IA5G&oj=u=~q}eI-j($ zK+4(f*e2!I?Dh%sun(Ov2eF~Ti<~{0*m>h6mRn-yOX}JS-mWp;(BW{W!`se?HyKmQ z*KbTV|J77IKW2I9eA>xthf_}*lX^4Pa_c7hh~z!c`g@Afo;e*SIR8~*IvP_ZmOLLh z)%Amhz0qfH{ZTe~KjV|&@jDiCzi({~Gw7@-O}4r`4tWuPo(1_b-f1z%jr{z?r~#z{S8c z;0B--mFy1V#hnfr&s9a5iv0Fd3K$+ziYG?gHimKL8#8+JL3NDqsV! z8Sw7l40<33j0KJXP6EyZ&I2w6rU5qqt-w6s9^gJ;Ay5F80Ly`Oz$RcP(Em>A57Yxk z04D&=z`4MMz!g9XkOyuD?gs7!761KojAE*b808Rj!fpdWifh&L(AP?LQ+zs3dEC3z?76Z$Gc3>m0 z74W}6{Q>PmU#A~<)e-(J@Ld)I_#XIn!+#9E#qj?C-)#6p;4c~eYw#Bge+2wF! zFnlTa(}q6={-oinz}FhS7JQZAPlB&7{2B1a41W%s4`eC-FM=;M{1x#3Hhc>>AL-FF zyTBhYym~=4!vsU={lI@^_#p6K8lDCJPs2xoKVbMM@cRv~1OJKP2ZQqgD$R2|_zw&} z68yV{zZLx3hBt!qttL%>I{19U&jJ6c;pc&W+3*j6f6?%Z!0$5rQt&$rza0Eu48IEe zvxZ*_9>;ZV1fOH{TflEM{FC6b4WA2sv*Diu=R;e{=Uw0*HT)~!vkadPKGX1TfnRO- z_rR|-{72xI8~!u!$%g*|oDVN){%znNG5mMnA2R$8;O86uXYdag{sj2@3||e-IXaq8 zJNVg#uLD2J@D1Rn8~y_LsfND<-emZz;3pft9lXKtBKX@3&-^%>nP~VB@M8_%2mC0* z_X9uN@G;=y4L=n85W|lIKgjUozz;P1ZQ!E~KN)vZk2~US;@I;JeKxTnoO#@SDK58h$JItA^hO{<7hBg1>0^ zm%%q0{tfVF4gWUydc(g5{*>YW7rfo@AA_$p{Ab`#82%7=ycfLyzRc)t;Ex*qTk!ue z{14#2H~dfFiw$26{;=UsfdAU?wcv{kUkCn>;m?Bq-0&B{|HJTC!GCJ_cJKv;7r}pM zc;+WrIV(ryJP7M>zi#+w@P9Y_K=7{^J`VhD!;b{Veruk`fispV{x)#N zb;aKfe!JoC0RN2PXMlgo@N>XFY54oW^M;=fPV8Ir`7roRhF=PPz2Q^ATMVBLevRR? zz^5C21Nc>je;oV@!*2zjV)&=QFERXf@QVz;1N=h6zW{!L;a>s&XT!e^{(i&11AeaI zKLn5G8$Shqm(d>pKf~}}fHxcdYw&j%{s{OfhA#ovz36$*e-!)#qdyM*7QbUMl1pM{F>Ua3 zoo8{zwBw;M=Ph~ma%jwdOK4w)=BH>&pw*^myP;)LwBt7B0^X4-$?tqxdGbn6zyx! z_DRtmhPH2tcEF}wFd{{}5?YX=-41PJiuOxrVTyL>OSyor6qLy7Jg62oC6(s)erN}zXfvSIrD*>S?Z6c6L1^_U+OyEcq-eFTy9U}(DcZfzj!w~*K|3Zz^Iyva$EIipK|3x*Yl3!siuMs`6H~OCp}i$V`!ck* zrf3g9ds~Y37_<{ow9U{?OwrESk_#GAv`;~Mdy4iGXeXs;%b=Z{qMg1q7o3u!T@H=+ zt4sRAI%rKP+N5o{;2kO2UC`c{qCEob)D-PyXw50w0o!xIX(`&-&`wX$ZiIG5iuMg? zXQpVshjvzqwjJ8LQnVv?=bP-v~yCl1<>A|qCE}mJtP)F?6LAxSF+n+PIr>1D{hIVC&HW%7eDcY^S&IQv_ zw10l?x!~p$E&JPC@bMJwUC?ex z(LM%kc8YfNBe@`-qD_bPi4^VI&~8o9mP7kwiuO&)Xid@9Lz|PL)&DLRd@4nIFSJjm zXuBz6Zi;p?GWbl2b{(|aQnc?t`)rDKBW2v4qAi5>xfE>!w0}v_M*cn*d_F}x3EI3A z?Mi5Oq-gg*yE8@m9khQ<(KbQ5D@ChYk_-MVMQeukg%s^tXkSdx?uK@EiuN05UrNz7 zLi=)xw%>o}g0G}#P0;R1(PlyWYKpcI+P|l0`~4vod@V)$8npQ-+Tf+R;Oi+`|3`Dd zH&V3gpnWq%yARsEDcVYC-%8P5_+u{kc8d1%Kjnh&q-YbC<%0WCv@4-~H%0sSpL4DZj${V#V^)?@O~5 z7wqCa)7^{Uqu3G4Mb`Z4Cb0Iz+Fd()LF&eV?<%s6$9wk&+n(AIeiyatUXX#3j=frP z4#7^R4(FBDLB5+(Hr+=`(=C*JOtGwO?Jrr^wza>Cb#=apB;P~g{ng5KeS1__-Jk47 zbx^#DHNT1Qx;v_S9p@RzyMV%bT~$6O-^7h&7OyXdHTg&u!z54k)gfQmmnF~XxjVd1 zXlL)#ht+vx-c;pZURrO7P4xQNYfGQ~t7P^PYv@A@YkALHzCW_cmtRM2$ewpB#?<>w zUKMA@cZ2}%M2rb|$4KyoxnX_7+)>_5kM}=+`@HPM4GXddZJ#&v{OI1k+zaI1nVf@v zuDs*Ix%X$v`%G=Q(fih{e@AEV#orf{HFZ6cM)tH;qqm}itT(G1ZazNh zr(1Y_i?jpl#j-xWC0aKY8Ou5Hx?dmNmi>aVUqSXYv<{B;HM9`#>aEbtkZ)wYej7>oH9itIU{{^7P_`%xKmOX|68 z5pv{QXwo+gW)BxJE2sVm-JvBiiD*UnKAq&D@2ALjjOyCid(QiE@+~7hZvp*{-p$Bo z<8%1=zIay7Sr|9O({l-p`OTyvry1H{{$H`8IT$?DybXl-kdpI(LHXhtd5W+?Rela?7Hq4=48D z&Y1s9H~mWb^X}Qmn0<_*Poh`sX%ASElrt{aqd~d6dq-LM&sX^7)f-Z`)Y$gLzi}P= z?_LvZ`PJIswW_r~AbT6)_Cr?La&6}i+T9LaWJsJs|+7BPGx?oeq7PEw0rTqk(D0OK%d0?0N&}XZ9tWWx^ z$-hN?Mnv^V+GXjRw=VAYW7$Jm&p0+-+Aa`(g<5 zo^)(4w2Ax8+c&HpCHn_?FS*wC5Yqp8vRT?!(0~0!=bN^OPZ52?mG|7%1v_W23#EVT ztk516_V4lSg7WPFPcp7_d!|f!uF;FWqB^q9bi~HEr0?1oC*M&{?-h*4y@O+Qju*L1!YSu*C=^Zg^z$hi$NUyc1; zIeR8}sZr1MY~8XbJHCG*TlXF>m+Y;q{$a`9%I5poL$()SE&`qh+ymSPECdR`5@0#7 z4%h_j1o~6n2%sJiUNc9r|4n>Z-iyy1F21bc<2_G(0ihql9yjp|1V4!MF@7NFW1RPt z)vik#<|55v;{_i{`WWAr^f8_#eT}8Tw{MQ|fuxCXd}}!qBhl&N@nZ_74b*+&GAEC1 zrp6L}Vsnccn=@4}>|9T;S%};@uZH=ZoWG73s{G8vXx_%V>>=kZCN{`9PfOzx_<8Ez zeVP2>WqyC&?->csTvWa#*u}>hV)^Qv(#e;zS;a4rIgI%4@LuKbvrxa!ta+V7y>6wx zGC$f+^5;xu@78QxX!UVoA$%86eY9|Mu>+o{5A(sWrE(0(=BCM9!se!Wegx&!?T;_} zu)Ooj84;8_H0&CGk^35Ramzfkn=+Y`hFhKa3v)xMzwCXWj?CqmD|7yne#`Kc2-oit zA)k_VJrr4puK{0jrr^@u#ENQ5X?ji#?JjBJ_)45dz#KqyFurc~3e=;Z@3AHIdC6pW zVmI~Cz57mmw#DrUZ_;Mn=$-gRiQb)R`cYv#ma_~+xBFxZ`(UFv2QIOD$VT5=@EI?< z_~69T`s`D0#zqgqMi0bB1HHD<*w!w#8JhCRd*@;oy6|}#`Xx45bYA>a)kE}+*o^l3 zGfn>1o=LyA_SC+91iFOohV&Ef(46-1Sbx;kj1v75{VukT8`-t5$UW7qtwr)M-Fja) zx@EeM^v^hUp|-;2Zj+2}@$q&zcEw_pebSfLW9~MV_MjaS8$PxBdPHe?FK}!mce#${ z7&<2>9)|6nX?f7jGWTmv&Hef$i$3^_vA>}GLdHSn^pxGvE59ZE?Ur8n&cUX}b{Vs! z&&qiYg~f6PKztSlahDomZ<{!86Z+8o@?HpDm+LxyEW`%-Pc3D>miPSYWo#UfZO$a| zkb16ja+ZV2I*yHtufv(DiH>rXr`mJ&tVuaCCloo9^b^K0IiEoKqMUCa=UEAF(kC_V zTdW|K5?mNkd|#Az7wW80D6 zJrWt(c^HhbIyT_9jAPuF@kz&Q>ZjM6qH8zLvhTa~!49YG+~3R=_mwvtm+5=ASvyF- ztT35HX$D{G1K4Dhmt$`qv1cmu^FHG-|N$u+}HRd{W7*CJ&ws|R2Y*dSbZ#Bp47+Ung7~So_eX(f%cCAJ^A=J;r$X-gU3^s_`F8uTJZmUKLL0s#p5W@N#+; z%WQA!)j$1>^{TI9xYOU&caXJAiTUn|V!p43KKE#6MpUpf=XbB)XwlYMNmZ%^~Ly(?dO zOUb^yKCK<~!N&I}(>l+SG{jBh>{i|TB=YUDr>Ml2arU8nwR<_Ged^|(_PO`LPIOmB zY};gBuX`T`$$M8(J>xxIUfW3answbZ*5J7^^Z&=bqmlle$1ChF8_fQ)LF_LBdb7VQ*w(1uFpK3;w%s}3s$>t!x2;~4 z_I5Hy9(l6uFW@X;k-MDzs`Z^F*M$hb+V1hLXXickrW{GX+*V|73}cd>MO@&Ty(jDe z)o3(eKY_DjN z&i0CGdCIrdf%-_yN%kw|Zw(_|u{z88fKLpHex>tci5I2!<@8>kx*wlA<&ftaH?nRO z*){I~zRw9B^U&*kS%l4AUcd2_{mSY2d zZF*B-FJ4LepchhC_w4@wIrKChXdV`yjP01%Xgzm-l6*^uy>D`^K6wRPCuO38qNDEf zW%Vw72ENngt+rpd+IFz_!nf3J^#xd#VsvpQR?IR@h!mj8yrb#1pS6v79 zfwb<49TypkY?AlsI7_ds*jS}w|DHU@yXfWC&dbH5%9hJMDOo=hp2c3pasFOE&wBzY z1G6)HgE4B`GIpuQHt(Sw%C&d8J$m#n%x{pfMQ!Zj(!SD)eg3yoTnSe#$u zqq~cV{q6M_&{tm?{jSt+=)<~K!e`&K^v#lYdE$NTeTh5#J@J}8tHQBymHaT3C;o^2 zV!QRXCpr81Dqq%~_NJWsIwtpmXSJ8S=jF?umObFv^-KF==PTM5?6Jz3aaw<4e}cU} z{?2ZA>`Pzks||cTd3+u8R(0TSp|^dNuhaJB#>Nu+Wn)a2y-r18FlFTLbeJb%` zbNop<`k9Qg_d^WIX%0J_zr$vJ@ZiJ zqUQ7Nv^q-rm3eQiyZF_czHYT|jrQm5t-AFg{ulcQJ;oij9vG8!pfHmh$s=C(jR-^8bd*b8;y^ zdrh9*#CsVh%I*V*->2*Lyg%mZ;;YJee=>gd7=tXke%8}^hgaoaZF14_obe9-OWs$0 zqsDIa=PT_&w|Q#f7tXXgbTel6$(HXWKV*;U^3lIhUHYmYxBLU>N9&%;G`(J2cK+~2 z=*PeO1J&h=|3Gz_zvp#%y<%m19837_->5Dd*;}zMdn@)~Zw1in^>8PaATfkiTZ1VZ z>-kY??fFz$*JGUfiPeeoH^NQMIA`Z@G)?2&Va^m@IEb_hjveFmtMQap=FF^;a~FR7 zAFMwP$hLAuimaK#6ETZ2XP$5lh@9KRz33elI}gMi*X!6z70(4E&!*`$p1wn~kF8BQ zYx&|EB;%i)t1`5AXRMTz_Yw9B$e2ltRPvHoi^^)X$*R&>Dm)|S(`ihN^H1_m%2|fC z4$IkO0p}yRXJiKK4+&%)NA`ofT5KOFXGd=-f^(+KXgf!GGiOSVDs%o3`(yO{Bc2Va zIHz6CU3<029>At5|GAG=erL$yD2cpxME*=>3^69k4YwH|@FV+T>h^~Zsnb^Y$d%!P zd&&pTDj!?nW1I2O@A}GoNX(J-po9-Qk138J^lF^x>)1W^ZBb0=@7cGTV092Ztq_mt zlW*78xHEdCaRm6$UpEfTJ+)1&|CF^&eCIC|z1&%(?=*70yXb|)IGw(CjMdllCYh(0 z-t4hIK6vMv;FbSc8@ybz)(3iHbNxZTEPHmfA3oIXZ~lbTP5Zl^bFFE$zMVAEwTX?6 z(stbg`3LrX$T`;!Ge072FpPX9@9p_)kbS5<%s$i+4!b#e-|!@p$8hMwZ|+F;ISfBZ z=O=PbcD(*6HYh%OI~=yNL-J8O(R}>`x#x|n@$|fIo@tBb7STRa&ejh0A%8&aEobt_ zb`sy6eP`^8qn^@EY9GzsM&IjXyg18v+?PD|y}9!Yv3)yv42Kyn=l0Bt)M?_V#a`Qm zEA)Ge6Bqy1YyRv?{SITxsMTKEAiiNzUC2&cz0zx5v0T5q*z%=SUh68pMdBB-3s?Q# zYyB|K){W9r-NTJhJAcU9bp-7?!fDqLW!m+sp6j3J z^hYhZiIE3o*Y~#ho2tVG_Y4d;oo(lV9U#~dl9OG|q ztu6F{?~=Ij=X&O+PvcP^_=K5q0_Do2M@EKJ`BDsrXrGU6NR|v%k>Q`5xa_-V5!aw)a=1d?mh~!)%8D{z7?waq9OMs~_*)s12{`KPL3^^JuK?Dq|qBLY2rOjI!_&PLo!c|?%8~E-xH!Z&a?3HtaC>7vsU*P73WJP~l-TgnF25#A>6dk{wxdaK~k9AiAPu2&vLD-XGRt;7>q zKdhRY4SX*f)B@`p+vR-PF7ifVjnGEUFEf{ieeuV&wRpbJ0E&AF^iQeJ%2Rc^sSM&2KWKs z#6DV{SmCvPC5nBtj9TF}e|43{K3b~_-jIGgCvoH9XGV2vvbM7NG_y{i@6cF%&^<5n zFSedQKM04yC+8C@-zh#fk6!Kh7f>$WT5QQ#Y(@CopSnB&|L{3+F7cZE;0Hb@E?(}n z?N2O*7|p^9sMl9WLyTtOg)6+a3!)f}|D|7hLx|7J;hgcZeA}Eo;oIiy%J;=(`e|&R z4)y5k^zBp~N@cw=k+t%@Jc=_Vd`p}u=3D9z^GzL;Z)80OJul05>@UXhHvdfdKF;C0 zKX!G1V^gQvc>BXhYGH>H@JcaEXtV z)0wz`$91s&t##1vZpgc7W!~9K#qtZcVF!3ux9|r^U-``MaeODDWZmf0bHO2Vmligw$( z)iORpmoaIN>~^O1<&pMF-&AuZ*(2Uv+s-VlOS*0M zc>SagI$F|BH|maXvfrjl<@edm_a`lRJsvF{A6(08D}?tSOeR)?PY&QN?$wUyo2 zlFyaOBi+7lsdVfk&vc6sB-JF=uc&^;-cVF)>l~vO2CM&-$G10$en~$i_=D#SdN4m|^{i(;c>O&p0 zjnZxPa4BDD`D(v*q>& zPq$sVPxROhebBiQe_%{0KS^IOS!!Qk4jrGVCHq{6Csh3{`07<(NXv74DgS@9JpWp~ zKGyiDpw}9UN#-i1&kdz@NVmb8TA!OsdH<{B|JUmC*`@rXW%;Jp=l7TL|Ax!+gQfiZ z-O2OfQvTm?d0t-1&)=OquP){P4VUM2rTqNe$@At?{@-wUezKIGy(Z7Tj;qd`IC(#+ z(pqoH{N7pX{fyPA!kE0rKG#d^;~2_5jv>4s1@vY;M13yajnQAuW%a?k-4FUfe16g- zd)e=_I>?@`)S=5 zIdw1moVEI4z>xZ+-oLhbuSU+R9i3Pm>4e5qHqow>AFLq_JOyj{rHqDxpIy?(+^QYg zs>b$km7_bP4YA!G|oxSw?@_M6Zvp#P8ioURSMtK)~VgHQcqA%=YQC#$e{WOY; zzVM!(;-W9Sdl$Ui*dDwBpwGdpz-z!3U@Nc<*beLfb^@G>JY;vod!l2jOvkdKW5kYD z&F%=PV_BI#`tz*+a#7zGL$;lJYnI(8`+IWo9!l8G^Q(~OO&L$teM96|H-xow`8N96 zMZ6beKKv8b7PjvxvE#PyN%kiQAG+6rJjhz}%6^dk%D1;v2F`nfQT|2pw|yRKZmhh| zqXS+#oP8c0QTu1EiOQ@S6O}cxmS3sM+>F;&ENc0DGd?gjY3NTo{pRT?57ig;M96dK1?@g08?GbIwcMAp?)Rq*@=NOS zom5@;=C|k-X;imLWH<1p%I&E8rySX>kNDZ6_39U}Tf?ziS?m_jYrBQ*>@r3{>vnI| zWaRJ~^<=Cm+rPpG#a;nsr}s0tOMATR$o*xLJLLuPE~|`tv3+9v2wrOBom|I0kw$EV z+NW2{J{{Cheq1{qo!?B`$$Px?;efGM``X?Z+u$LwJ1?2t>7S3rHp-K+ErkEFvcaC0 z9m~d>j4F)teHzPN4}V4ax3pVq50CA>9=-Ng8Y;BwVbZR&DYk5{wrNFwg?8PHuJevG zHlZH9?mX}A9adNLH+;>}Yu>Sz{dRq7vt{(-!|BI|(T69nM|eE@B?Tug7mpR#g|g?? zXg|gd>o4}z2QTTz zwp?-XHL#19pw$b;fU*wNs-xfBew?5I3osChQ zL^k+(T0fBu{+{9@o7g`S*~I>t$R_sBL^k+m(tcfJv5&~2kPVkNcKG;haX--dUv*Qm zCtB|32lw;TUqV*uFOeR(b&kQYzhu5k;xEO%%Teg$O6(_jH7!Bz>f<`Tg63BwKl6{e z^A+&B#3xAP-yX?7LkEg^75`Z36s~c2jQs@hnekhaxv=;F(yt>KP*3~={N!*Ybo_%Z z<2C(FzGFrlcRhQc*M`;Xg^u??`?d%Ajj++z>?Iq0L;1cedvL`@i!Qw3HhT8oz(&83 zF^#!apPlIDPDeL)M!LDjF^#=hm)@QS7RNNYsY9REK2|bzj%DmT7#|quwGYhrpkt;p zhxeg%J9mE>8zOT)o4?04G4X@$uy(3oLv##XNk1VEnTzXOU2LMv)n!~=(}?YYua_5P z$JZ3Hbq9O72j^w7E$r#_N8O2UJtwF8_^X3|UYix`kBI6pd0&KX>+mOHO zo9p=Y3mxC0m;m>e@=Z1I>qGE)tWnpMd5=l*YOY3Z#H_+6b*zf!&kuLwD^!}-z7JWW z4;nY%H!I%`s!(QIu}qndbyH@Ad8eEuL75#ATL{-+$0v8c_q}8uAJvz*2JwRR-IQ%} z@MLVZIe13)K*r_XQLC{6oyR}rjL*+o-@*?JnV%=)^Ew-!-TC`d)Inkq<;Le?G(MNz z`@R-iQjaY;5L*K56OxiG)9&b|-&C>_ z*l>wyiLU3R-!P7Ze<^AVtVE~czGHnq={pv4^5q$^^HIHex98(k`pQ81$^iNb(Cfa! znt_hHyYa!nOXjNd&62t5d#N93y1dUf@a<7dZ!7nRyCn08tx+G*arPwaHP6bLhU|lq z^$a;vY-BZb@R32@)A7Zf6K*eZe%PYue4>3nRylTOK1^cA%n!@R-mUGl$2Rx~qB&7q zM*2HtYCnk`mb^c7@PE=@IkzrT?)@RgT{+`uQh)p2movw)bJV)bMY^+fef{pr4r@PT zp#AzVYYUO{HpgCx445}*Tf1$(8(rgC;)GIH@7R9j+xS?^SK1AkCOW&_?4YzQylC6P zi@$?>ZT!VA>zxj-Lx=ZAhxbE&M>VYua^C77YX_#BPJXs$@ zXOMN}cnmR1tvB%{{UyHVLo4wu$+JY)pF(#?C$aiqgV>&a*$1-Ft+4kL23Cg2IDK zGkPtwhQ(W!`&EVIa?hm);@<+XEfl`RPDz`EX}<4=Z|bJ;GS(-%_{67JJF0DR`l`LN zt$p?1>67Fku?vZz>O1JjLf<=wme^BpwWlMxuA#8b74_SH>ZadXEIR487K_f@LLKl= z)!*WGsl=knm9f#vIKP`R@KwVyXG&(KPzHW)eLZ=XdDqvkFH~_qs>76S^2aZhvoe!9 z*jbsGb38A2rm(S<)m`3e z?{6`k7Hr99u_d=L9s<1{4?m7=xCO|Uo=f0Emwv~%Oy4W>&Ena#F=>*y=iS!NZlInw zIQH@evzMd|ZsZ=2^e6C&{pm()^KWz`)0@ffW=EzsTbrNcc~U3k`$pRFu3ogG_P2uP zKeaSkqx?}c7B=tG!&vw+c=(vZ!^eyV*6o7p=?{R${;u!r3;y**=@&V_UtV=jb?*Av z=s08SuT73Ok?&289B(o?l8@>#zagNyyrEIXgXQ!Uk9#HiWnCTD`SDQ3je2}7@qd7H z8|(L)k)6^bozSxyd-c8M)VTxfvF!+o^d-s}Uqc^z4}AqZi76cQg_8NfhV!euoj~@2 zDsL=s0&q5PG0+0c1?~YB0BwMrH=r_m`0Znw#@2Y5x1p0U?e|7I&Y}I$XnbchN%y$X z#yhlCMw9m*KJ+Ipjna%j&PZG=PHWVB%p?Ny@oQ2^7Vh@7qrjDQ{-@*It9sYK&s;P!E8^w32&hyP@ z^a)UVTU^Bbrm7IXvMEEFUEBk7eBw9DnVhm#qH_=bW{Jgn`A-L4NM0qp)S7L25ni(J zG7Me-e3|+oMb%?3_`v+7>Z33=%6^MM#bSH-&-0hoaqe$;-u$KGhD|&yj#CV<&W>C ze48gE<>N=`*z`4vhv8$Uzh~VV_hWp7eE%AcYi|htrsPrBH)^**$dK!-cTkP@Iqu1K zxqaX4wfGi?*LZtekK?+j#}@Qpiz7$-c6a7#iP@nqQs!vR%ziJjn@Stl%_3gUNjoFYk8H!nG!(QI>Xe~Cw&O{(z z&Wk|@28=3Td{5Fg%xoP$6g@@1vi{cDRSgT8hfDr4F7WF$+}%99VZq$` zm`C+V#V?)vu-Mb#QU~RSU*RFRa{f}0d4PTfAE;kiq91Q}^z-D0sDJ&VgXqH{aXI`O zvCX>YCmAmrPa31T>8#^wA7cDh-N+%QJ<~DIcDl2=W zhT^+<1KB@C+t$l|zLLJ{`TmHLS~Jypj)m`!JgGJO=Zlxc>81Y^Fl=J?D2p}LL3tfh z-ev9MtmkR_#OrzYG5$!|-~L1t+n&$$nhJWlTJ$uU2Z?U!x+XDBM^EcJ^|TQ^^-WI) zn4bE>(dFE@R_fbr8L7UoW)J(qF|A(1OzRIRo~1wdTZ-+z?n8;z?IljzG=}y-7eZj@ zSolkHww&DOo7|g5q~$Mb-GSG%iguVsJJ1Hia^GjR=!4c4vQ|NyHqm2Szm4F4*2 zDrD=nI_nl^+>Puz*DcPww8~pIxfE7i5?wFkcbeThqD(sXxtqDa1h}_{bnY{+H-1;D zp6T)*>fwGmeYxw+-PC_{5BdA{Y%}S!&s}Ei%se%G-f8FO%_g?lSu|H!I%m$OeKVf( zJ!t8!wsaQDPV~lN*_j2F?ix$S{60RnPV-|9sJ8gqmTs1%bLMiI&gOENdo0~`md;`h zNxAVkad%p}>n)wc;Ws$-jrVcRwRAUHI_9Tx)?1RFo%JU11C`&$EFE!QiOVMG;&qM| zOLvQvCv30%mM^^8l4erh#xw3s}RCWQI zR+|%lM8*U4QTUC<&pcy9v3=x)zsyNme-|+XpBO?7F$DKKyx2G2g>PPsZ(fCO4#+$q z#K+M%HF)6=##OF+U0-}2XI$&q|8mD1^%XkDNf~o0&TrCl&2oGvV-bEvYW|S;VgF(} zv>W;Dj^cx=L(E;(M|uP6F8(JzRW{&PebnC0{npc_qiD+kW#;NZC$bL2ASnaY`O@Fan8q0eTKlJ%xJF$aY-B>SsR80Zz8vG(Jn~|6? zeL3>u*{@C>;@=Fy4_gA?4R`wJDY2t&(v0@zXMLdIkG1-afb_Ah=^x|&ncD=@m7u>NbpFgm!dHso z_t$e?qRPB%`O7$0^sYMEWzE42ca4@dmeiE@SQ!VVcEX$ zUE9QSXQHS3EGZWEqn$5dpKwRRg5O;k@Xk}0d}I#AytPOE?nchci{)LC@U=yJ->8_% zOLUXDWmOZlt+pN>#y2dlho6JJh6MvB2COGCPd!Ov7HJtt9ATTogXqL=(+TD`a;C1> zOW|F|1b%g0VVHccp~};Ea(A)hem4J0zZcD%FW7~x*u98&9`)fjX>^XOD}UHGI+I7-{Z+# zOCKo~X*2R%JSV5~ROYJZp8eIVr1#JMYBYD{ez?0xxy%um-!S*ku|K4Y0&x}DOBez} zSu5?F+jKLY{Hu*8J9%!WSCf~uV=uUD{!&RBTvoqS(w6NP={|R{Y^!J^!f+&$CypSI>X6!t<;d z^y>M`Dm?G^@_FVbW$Rzt%jZw8@O-A1&%d?8^TaTFRsV72pAR{wR@yN{j**WxNAttR zam`wKC4JbZLVn0oo)sIR^UX)CAJeyFJZR%=9PP(qJ0-q|9+lPG^fw<(Z`-QSd!5s> zUL^Y*2T1&wHL)kG9GiEC_%T|J&AWq5*!-6oRcEEH8pAK6`?B9beH;7`83XXGz08U9 z#Z5(h=S%I4%q8JL%cp;<{KS`(db6&s{H!&8G)~Pp81wUr)w@F9DO>)iUX)KiEGhpl zR=&k`lk(%Zu9RP<@0Bfo8*SZF{mHAO{LNOr+GeNz?7xWTOn#ZZTef_8AE>ADRev4% z@3!(ScAnJVV&`hR%JluR<^Q}F<;Qv-w|~Erqu9N~zF7}R%D43pEx(NIC|mxQdQm=k zmB>G9Hhw4N$K$u?Um4p~w)_ivQNFC@ zxczUel`rG!cBlTaFGTrb2W0JK+%S9-yVg9IhiD%@!tyZNmH1O;yVRf5wPW(?g&i$h zH+-gwx;+rv66@26#*6u1i9BQfD{YTrecWVqX|m^aT>pRVy$^hxM|JQ0thD|k+c9=* z#|{a}8sfwOTb7MUf(eObNw$^9mLkbcQipD2X=N>uc7=B3KOqE_8VEFP-8O~X+w>-- zp@rLANNIX+-j;$((~DculD4#@ZQ7WZv<sZ4c$eevR|1 z$5_!~-h+9A3vKnFA4)mWGBmrN}+|0nTBH|Y)qjdS?EiSuVZX630f zC%637TE_2dR~YVJy`Hu`=K=9ecK()o=JL(mYrnGPOP8?E@WBhs?@O0zp5YkjVE+^L zq4~L$TF?CR+}bS<=Poh7KYwiw-c0cgmDLJ+{MxOTuV~!**DD&Lzeb)|Tbg>(>R|9) zm#Ykst@-&e@yp#~RX^wG?UroT?VXZ6W#1Z={$n0l<7AEBj$*@T9(h)oumA3>PgmoX zV9PV+WsiW;b$L-%`>v^#={CwloQU;)%^S>Jf^4CS^-WIcJi{6FIFwuItb7Unk;ZYx zb0H1MR!Czd>0I=`uVs%ZxMx0#&SX8V^e#JhsqetdT9#ROq`f6G?g83xKlPui&pmes zgPwO~qUE@?xT|qJxFOtO+}*ebaF5_l;3W5^&&#xvOX~IjO?p4m;~wu0@0Z>K^b_7M zy$9%h-Y>le=%>72dJoVs?{_{t548NE_gkLw`_JAly$9%i@0Z>K^q}{flZyLs=O>>3 zQ1ih5UVDH(VR8{2|2(?c`i0aSPFQC!xnTZ=b%=Oh*eGLOiei?gOe=M0h z!(7{OWW(=oqCa4-u=|FOtyutbww3KA&{Vc88vH{F!LE?cazNrSrqk za*FoxA1U z*TTEi+?gS~HN0QO{NmB0!eI{fZs`f>=9S+$W9hiQ-OWe7tnVn*@87TQYmo!{rkMI} z>QwKS^38h5hiH&KknO56MBhMez}fQT9J>Qb@8A70@6tWc8RjEa!iN}N{T;G%{JSe7 z=~(of`Uv*eG_}y5=sh=MADE(>Z@R!|_&o=HXW{q!6u;B_or$lh`uP8ZzbRWLrjNPX zAP>ypFegjj3_n+XS9R#mGZ-(=IQe)o2VY(Xf96a%9yP5Juhpi`dOm!{H9>fd?9Is2 z*>t|IBdcHaPnWEkIsX5m4Xil+^or$_PwP`WAIZGW@n&gJIWK8kRELR z`tQ*{Ir+`bnZ8e#^^TKrbAKCMiVYp+K=ds#>6+{UY!38;+(o~{oG@t#??D^yzSrh~ zt#A3vTUSq^L9|Y?5}UhScK}P*`E_PwFWQ{lnmHP^J3IKXx2}#ZrY~lmVI|Jm!IHD2 z|9PLjA5SC0PM7-ewCwV^>;pKJVW~m<0;yawc%;~A?=U;)cRD~>I!SS(``1hKkoY#@=I*C2i}KWf;)kG z3imuN`+g?YaqDnfas9Xv+#R^sPWraDb*@a=I^XwxX`3y3jkE32Hd~YTOWSOVyOx*;p@xttRYsYvIWZX$PFT_-mDK2=no=uN*zWzc$X+%aS;(fwKPm z?yqQEypreCLKiku{D2d&r##8i*@2rs|2vuXFC5$W$p8Fe=IEn;^5zge#b%<#P1fH= zn@@i+6Vmv>G|-p8ckx`$m1dj!I}LC3^+g{qyD*j!Kc{K>?QD12%w~hkFzz%R_9q{y z(P2YB#rP6;H|_!4Be)Z|r*O~XvUj7;aO-eeaj^~?@ohh?!%E&St-~h0Us{LV?)}m_ z?A_ikt;3FbzqAhffcH!5u%GdMX&v?p-Y>1g?)83Y9rnxKFRjBq;{5)@>absTI&AAF zSIw@&>b|WQk3E^2iRo`(_Nzn$&B~ zU2XGV^pi2XSZ!#Q^Ejz-hmA8dZVhq&z~_(d(R{XK-|}bd7uHj>zuxrJn^+Tm>DrSk z$C#59UAiNT`6lVz$IcvwzH^|##sbmQQTPH5eoNxK{@CY*Ue$O?_J!s3J(riw^L+76 zXU9^;txc(QZ`Q*s{58EU{E1q=p&z0&-;7?J_wY1W+`qrm=0K;;us$fAcDZ<_yFOBL z2H_mS58I|c_p3E+`l_Gh{21<5Tord0?mpbZxW{l$;-14r$Cz)z#XNf2w}o_@{s-@u zZqv_szjT}ay7x=B>2GOd6qVwva_|PWSX5_Pj|4hOPVwCZCP#F+VUSv zYs)pf2yNttNYjr~qQ}m(kv98>&<``F`K_1!enr#oKfPjp=IJbM1?_aj_u(%()9wF) z$KQv?FM1wd<9Ynu&!E5VH2q~f{_ZtSe^HN2J1oygUd>61IqC)C;EIi$xk_fOo76m;XHY&h%+Y&Ekn%r1qW-?_%-n=Vxx zY|@p;%hdVE#CJY(a_&5rp6)BoW+ZRyS0(&7hlmuu5@+i?oDY^Bi_atWd^S0cctc$| z`h7Xh5dX}bUol=w=FT{NSUIlqv|E01*TT8U|p>UPe+Q{2|S}&5;i>dm1F-gnf zkGc5PCww1V+(nDwo8_f(u}`n$(|ZY=mr~__DOG;yDbAv9?ykEL+xYzro`-Wfke(Ap9Bi=9FH~hNyOZN>AdB1eu@SEN*-8cMq z=l37BZ}?r;H*DQ~{_K5&*?Y`m=*)Ay-qQGV933RR@D85RwG%w0dn-IMj7_RMk;@g6 zJT+E1$TQ3H5YIV05A&SM^9av*Ja6YYpXWPyHu1b8)jy=?SkisNl*UeVYZA8Ztu+ql zHrr6`Q+vVRza&fA@q9~tymYz^Go+iEN6u>gIBj=+;o8;F0rZ@=JIxjpZ&P+>OauH% zXz=a)&wPAuOPbxP_}-R;|IE{3D?jb=;QLDYkr+>UmVIKU8o@cXWVQB|8veg{eCkL2 zc#KbfY4&ivT@d=hdRsqT*00yn5SP`{VEKNlHea)6RUV)3to?rdeX8|x=k4>AFVSx@ zZ!aELe&6@``FY=%CO_}%>>n=!DgI}-+Bn4N?uC)7L#+uh){l7=_Cgu2rl+AkGP^Z8 zf93eeC$?Pm`JA13W}e;l;4ubgFTA_Q<@6crI~QlBm=l?^%GQmTQ+Yf?-$c2zXCjN- z&Bcs1JO1Iv+`0`iWphC)^LHpS^FCJQ6`tN%WJY6x<5TBH*5~?u-R6B>f)4Vv{k0|+ z*c4BGHe$|)b~3}*A$2!B_YOQ|_tU59rG~eu_GNQT%s0ifr|atyPrILoj(P3pp;t1$ zJM}t^XI5h?gm>MKWaF`^HBFFl6mZrU&bE59m73{dldIL?j-IMZvKD4 z9>BHW+HtW>&>l^<39j>gX`A2%@0Yd-_IkgxO|Z}VrEP*+yF4FzNFHpW`=>vUV zqq(0crR8;g&79BD<+XD@g3mVR^S>EKEoB_FgfY~sTG?lnK@agx|G45s##0(YA791ztt1`OLrU-Yml#i= zr=R_-TZjClkNW~)FQnqW;Npr0N7-j&dhlZO;3@EMwmztF2I2548D~7~)B865-}d7S zmH*o=J?X)@m$TM}K4(3XbQhw3-M%T=fPQX2TJgfQ°?q@`+)|&tDJJ;HMc`Enj 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
ks7C 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 2) { + sprintf(initErrorMessage, "Could not set veto reference from on-board server config file. Invalid gain index. Line:[%s].\n", line); + break; + } + //validations + if (value > ADU_MAX_VAL) { + sprintf(initErrorMessage, "Could not set veto reference from on-board server config file. Invalid value (max 0x%x). Line:[%s].\n", ADU_MAX_VAL, line); + break; + } + if (setVetoReference(igain, value) == FAIL) { + sprintf(initErrorMessage, "Could not set veto reference from on-board server config file. Line:[%s].\n", line); + break; + } + } + + // confadc command + else if (!strncmp(line, "confadc", strlen("confadc"))) { + int ichip = -1; + int iadc = -1; + int value = 0; + + // cannot scan values + if (sscanf(line, "%s %d %d 0x%x", command, &ichip, &iadc, &value) != 4) { + sprintf(initErrorMessage, "Could not scan confadc commands from on-board server config file. Line:[%s].\n", line); + break; + } + //validations + if (ichip < -1 ||ichip >= NCHIP) { + sprintf(initErrorMessage, "Could not configure adc from on-board server config file. Invalid chip index. Line:[%s].\n", line); + break; + } + if (iadc < -1 || iadc >= NADC) { + sprintf(initErrorMessage, "Could not configure adc from on-board server config file. Invalid adc index. Line:[%s].\n", line); + break; + } + //validations + if (value > ASIC_ADC_MAX_VAL) { + sprintf(initErrorMessage, "Could not configure adc from on-board server config file. Invalid value (max 0x%x). Line:[%s].\n", ASIC_ADC_MAX_VAL, line); + break; + } + + int chipmin = 0; + int chipmax = NCHIP; + int adcmin = 0; + int adcmax = NADC; + + // specific chip + if (ichip != -1) { + chipmin = ichip; + chipmax = ichip + 1; + } + // specific adc + if (iadc != -1) { + adcmin = iadc; + adcmax = iadc + 1; + } + + int i, j; + for (i = chipmin; i < chipmax; ++i) { + for (j = adcmin; j < adcmax; ++j) { + adcConfiguration[i][j] = (uint8_t)value; + ++nadcRead; + } + } + } + + // vchip command - if (!strncmp(line, "vchip_", strlen("vchip_"))) { + else if (!strncmp(line, "vchip_", strlen("vchip_"))) { enum ONCHIP_DACINDEX idac = 0; int ichip = -1; @@ -550,6 +638,20 @@ int readConfigFile() { } fclose(fd); + if (!strlen(initErrorMessage)) { + if (nadcRead != NADC * NCHIP) { + sprintf(initErrorMessage, "Could not configure adc from on-board server config file. Insufficient adcconf commands. Read %d, expected %d\n", nadcRead, NADC * NCHIP); + } + } + { + int i = 0, j = 0; + for (i = 0; i < NCHIP; ++i) { + for (j = 0; j < NADC; ++j) { + FILE_LOG(logDEBUG1, ("adc read %d %d: 0x%02hhx\n", i, j, adcConfiguration[i][j])); + } + } + } + if (strlen(initErrorMessage)) { initError = FAIL; FILE_LOG(logERROR, ("%s\n\n", initErrorMessage)); @@ -1110,6 +1212,17 @@ void getInjectedChannels(int* offset, int* increment) { *increment = injectedChannelsIncrement; } +int setVetoReference(int gainIndex, int value) { + FILE_LOG(logINFO, ("Setting veto reference [chip:-1, G%d, value:0x%x]\n", gainIndex, value)); + int vals[NCHAN]; + memset(vals, 0, sizeof(vals)); + int ich = 0; + for (ich = 0; ich < NCHAN; ++ich) { + vals[ich] = value; + } + return setVetoPhoton(-1, gainIndex, vals); +} + int setVetoPhoton(int chipIndex, int gainIndex, int* values) { FILE_LOG(logINFO, ("Setting veto photon [chip:%d, G%d]\n", chipIndex, gainIndex)); @@ -1171,7 +1284,7 @@ int setVetoPhoton(int chipIndex, int gainIndex, int* values) { } // address at the end - buffer[len -1] |= (ASIC_VETO_REF_ADDR); + buffer[len - 1] |= (ASIC_VETO_REF_ADDR); if (ASIC_Driver_Set(chipIndex, sizeof(buffer), buffer) == FAIL) { return FAIL; @@ -1216,8 +1329,147 @@ int getVetoPhoton(int chipIndex, int* retvals) { return OK; } +int configureSingleADCDriver(int chipIndex) { + FILE_LOG(logINFO, ("Configuring ADC for %s chips [chipIndex:%d Burst Mode:%d]\n", chipIndex == -1 ? "All" : "Single", chipIndex, burstMode)); + + int ind = chipIndex; + if (ind == -1) { + ind = 0; + } + uint8_t values[NADC]; + memcpy(values, adcConfiguration + ind * NADC, NADC); + + // change adc values if continuous mode + { + int i = 0; + for (i = 0; i < NADC; ++i) { + if (!burstMode) { + values[i] |= ASIC_CONTINUOUS_MODE_MSK; + } + FILE_LOG(logDEBUG1, ("Value %d: 0x%02hhx\n", i, values[i])); + } + } + const int lenDataBitsPerADC = ASIC_ADC_MAX_BITS; // 7 + const int lenBits = lenDataBitsPerADC * NADC; // 224 + const int padding = 4; // due to address (4) to make it byte aligned + const int lenTotalBits = padding + lenBits + ASIC_ADDR_MAX_BITS; // 232 + const int len = lenTotalBits / 8; // 29 + + // assign each bit into 4 + 224 into byte array + uint8_t commandBytes[lenTotalBits]; + memset(commandBytes, 0, sizeof(commandBytes)); + int offset = padding; // bit offset for commandbytes + int ich = 0; + for (ich = 0; ich < NADC; ++ich) { + // loop through all bits in a value + int iBit = 0; + for (iBit = 0; iBit < lenDataBitsPerADC; ++iBit) { + commandBytes[offset++] = ((values[ich] >> (lenDataBitsPerADC - 1 - iBit)) & 0x1); + } + } + + // create command for 4 padding + 224 bits + 4 bits address = 232 bits = 29 bytes + char buffer[len]; + memset(buffer, 0, len); + offset = 0; + // loop through buffer elements + for (ich = 0; ich < len; ++ich) { + // loop through each bit in buffer element + int iBit = 0; + for (iBit = 0; iBit < 8; ++iBit) { + buffer[ich] |= (commandBytes[offset++] << (8 - 1 - iBit)); + } + } + + // address at the end + buffer[len - 1] |= (ASIC_CONF_ADC_ADDR); + + if (ASIC_Driver_Set(chipIndex, sizeof(buffer), buffer) == FAIL) { + return FAIL; + } + + return OK; +} + +int configureADC() { + FILE_LOG(logINFO, ("Configuring ADC \n")); + + int equal = 1; + { + int i = 0, j = 0; + for (i = 0; i < NADC; ++i) { + int val = adcConfiguration[0][i]; + for (j = 1; j < NCHIP; ++j) { + if (adcConfiguration[j][i] != val) { + equal = 0; + break; + } + } + } + } + if (equal) { + return configureSingleADCDriver(-1); + } else { + int i = 0; + for (i = 0; i < NCHIP; ++i) { + if (configureSingleADCDriver(i) == FAIL) { + return FAIL; + } + } + } + return OK; +} + + +int setBurstMode(int burst) { + FILE_LOG(logINFO, ("Setting %s Mode\n", burst == 1 ? "Burst" : "Continuous")); + int value = burst ? ASIC_GLOBAL_BURST_VALUE : ASIC_GLOBAL_CONT_VALUE; + + const int padding = 6; // due to address (4) to make it byte aligned + const int lenTotalBits = padding + ASIC_GLOBAL_SETT_MAX_BITS + ASIC_ADDR_MAX_BITS; // 4 + 6 + 4 = 16 + const int len = lenTotalBits / 8; // 2 + + // assign each bit into 4 + 224 into byte array + uint8_t commandBytes[lenTotalBits]; + memset(commandBytes, 0, sizeof(commandBytes)); + int offset = padding; // bit offset for commandbytes + int ich = 0; + // loop through all bits in a value + int iBit = 0; + for (iBit = 0; iBit < ASIC_GLOBAL_SETT_MAX_BITS; ++iBit) { + commandBytes[offset++] = ((value >> (ASIC_GLOBAL_SETT_MAX_BITS - 1 - iBit)) & 0x1); + } + + // create command for 4 padding + 224 bits + 4 bits address = 232 bits = 29 bytes + char buffer[len]; + memset(buffer, 0, len); + offset = 0; + // loop through buffer elements + for (ich = 0; ich < len; ++ich) { + // loop through each bit in buffer element + int iBit = 0; + for (iBit = 0; iBit < 8; ++iBit) { + buffer[ich] |= (commandBytes[offset++] << (8 - 1 - iBit)); + } + } + + // address at the end + buffer[len - 1] |= (ASIC_CONF_GLOBAL_SETT); + + int chipIndex = -1; + if (ASIC_Driver_Set(chipIndex, sizeof(buffer), buffer) == FAIL) { + return FAIL; + } + + burstMode = burst; + return configureADC(); +} + +int getBurstMode() { + return burstMode; +} /* aquisition */ int setDetectorPosition(int pos[]) { @@ -1230,6 +1482,9 @@ int* getDetectorPosition() { } int startStateMachine(){ + if (burstMode && getNumFrames() > MAX_FRAMES_IN_BURST_MODE) { + return FAIL; + } #ifdef VIRTUAL // create udp socket if(createUDPSocket(0) != OK) { diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h index abce7198b..f0ca630a9 100644 --- a/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h @@ -9,6 +9,7 @@ #define NCHAN (128) #define NCHIP (10) #define NDAC (16) +#define NADC (32) #define ONCHIP_NDAC (7) #define DYNAMIC_RANGE (16) #define HV_SOFT_MAX_VOLTAGE (200) @@ -21,6 +22,7 @@ #define ONCHIP_DAC_MAX_VAL (0x3FF) #define ADU_MAX_VAL (0xFFF) #define ADU_MAX_BITS (12) +#define MAX_FRAMES_IN_BURST_MODE (2720) /** Default Parameters */ @@ -85,12 +87,20 @@ enum PLLINDEX {READOUT_PLL, SYSTEM_PLL}; #define ASIC_ADDR_MAX_BITS (4) #define ASIC_CURRENT_INJECT_ADDR (0x9) #define ASIC_VETO_REF_ADDR (0xA) +#define ASIC_CONF_ADC_ADDR (0xB) +#define ASIC_CONF_GLOBAL_SETT (0xC) + #define ASIC_GAIN_MAX_BITS (2) #define ASIC_GAIN_MSK (0x3) - #define ASIC_G0_VAL ((0x0 & ASIC_GAIN_MSK) << ADU_MAX_BITS) #define ASIC_G1_VAL ((0x1 & ASIC_GAIN_MSK) << ADU_MAX_BITS) #define ASIC_G2_VAL ((0x3 & ASIC_GAIN_MSK) << ADU_MAX_BITS) +#define ASIC_CONTINUOUS_MODE_MSK (0x7) +#define ASIC_ADC_MAX_BITS (7) +#define ASIC_ADC_MAX_VAL (0x7F) +#define ASIC_GLOBAL_SETT_MAX_BITS (6) +#define ASIC_GLOBAL_BURST_VALUE (0x0) +#define ASIC_GLOBAL_CONT_VALUE (0x1E) /* Struct Definitions */ typedef struct udp_header_struct { diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index 13d10f8a1..01cc84f0b 100755 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -450,8 +450,13 @@ int setClockDivider(enum CLKINDEX ind, int val); int getClockDivider(enum CLKINDEX ind); int setInjectChannel(int offset, int increment); void getInjectedChannels(int* offset, int* increment); +int setVetoReference(int gainIndex, int value); int setVetoPhoton(int chipIndex, int gainIndex, int* values); int getVetoPhoton(int chipIndex, int* retvals); +int configureSingleADCDriver(int chipIndex); +int configureADC(); +int setBurstMode(int burst); +int getBurstMode(); #endif diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h index 3b6a7e91e..ba833e0c4 100755 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h @@ -198,4 +198,7 @@ int get_on_chip_dac(int); int set_inject_channel(int); int get_inject_channel(int); int set_veto_photon(int); -int get_veto_photon(int); \ No newline at end of file +int get_veto_photon(int); +int set_veto_refernce(int); +int get_burst_mode(int); +int set_burst_mode(int); \ No newline at end of file diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 427bf67cd..01db16f8d 100755 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -300,6 +300,9 @@ const char* getFunctionName(enum detFuncs func) { case F_GET_INJECT_CHANNEL: return "F_GET_INJECT_CHANNEL"; case F_SET_VETO_PHOTON: return "F_SET_VETO_PHOTON"; case F_GET_VETO_PHOTON: return "F_GET_VETO_PHOTON"; + case F_SET_VETO_REFERENCE: return "F_SET_VETO_REFERENCE"; + case F_GET_BURST_MODE: return "F_GET_BURST_MODE"; + case F_SET_BURST_MODE: return "F_SET_BURST_MODE"; default: return "Unknown Function"; } @@ -477,7 +480,10 @@ void function_table() { flist[F_GET_INJECT_CHANNEL] = &get_inject_channel; flist[F_SET_VETO_PHOTON] = &set_veto_photon; flist[F_GET_VETO_PHOTON] = &get_veto_photon; - + flist[F_SET_VETO_REFERENCE] = &set_veto_refernce; + flist[F_GET_BURST_MODE] = &get_burst_mode; + flist[F_SET_BURST_MODE] = &set_burst_mode; + // check if (NUM_DET_FUNCTIONS >= RECEIVER_ENUM_START) { FILE_LOG(logERROR, ("The last detector function enum has reached its limit\nGoodbye!\n")); @@ -1760,10 +1766,14 @@ int start_acquisition(int file_des) { } else { ret = startStateMachine(); if (ret == FAIL) { -#if defined(CHIPTESTBOARDD) || defined(MOENCHD) +#if defined(CHIPTESTBOARDD) || defined(MOENCHD) || defined(VIRTUAL) sprintf(mess, "Could not start acquisition. Could not create udp socket in server. Check udp_dstip & udp_dstport.\n"); +#else +#if defined(GOTTHARD2D) + sprintf(mess, "Could not start acquisition due to #frames > %d in burst mode\n", MAX_FRAMES_IN_BURST_MODE); #else sprintf(mess, "Could not start acquisition\n"); +#endif #endif FILE_LOG(logERROR,(mess)); } @@ -1876,8 +1886,12 @@ int start_and_read_all(int file_des) { if (ret == FAIL) { #if defined(VIRTUAL) || defined(CHIPTESTBOARDD) || defined(MOENCHD) sprintf(mess, "Could not start acquisition. Could not create udp socket in server. Check udp_dstip & udp_dstport.\n"); +#else +#if defined(GOTTHARD2D) + sprintf(mess, "Could not start acquisition due to #frames > %d in burst mode\n", MAX_FRAMES_IN_BURST_MODE); #else sprintf(mess, "Could not start acquisition\n"); +#endif #endif FILE_LOG(logERROR,(mess)); } @@ -6307,4 +6321,85 @@ int get_veto_photon(int file_des) { sendData(file_des, retvals, sizeof(retvals), INT32); } return ret; +} + + +int set_veto_refernce(int file_des) { + ret = OK; + memset(mess, 0, sizeof(mess)); + int args[2] = {-1, -1}; + + if (receiveData(file_des, args, sizeof(args), INT32) < 0) + return printSocketReadError(); + FILE_LOG(logINFO, ("Setting Veto Reference: [G%d, value:0x%x]\n", args[0], args[1])); + +#ifndef GOTTHARD2D + functionNotImplemented(); +#else + // only set + if (Server_VerifyLock() == OK) { + int gainIndex = args[0]; + int value = args[1]; + if (gainIndex < 0 || gainIndex > 2) { + ret = FAIL; + sprintf(mess, "Could not set veto reference. Invalid gain index %d\n", gainIndex); + FILE_LOG(logERROR, (mess)); + } else if (value > ADU_MAX_VAL) { + ret = FAIL; + sprintf(mess, "Could not set veto reference. Invalid ADU value 0x%x, must be 12 bit.\n", value); + FILE_LOG(logERROR, (mess)); + } else { + ret = setVetoReference(gainIndex, value); + if (ret == FAIL) { + sprintf(mess, "Could not set veto reference\n"); + FILE_LOG(logERROR, (mess)); + } + } + } +#endif + return Server_SendResult(file_des, INT32, UPDATE, NULL, 0); +} + + +int set_burst_mode(int file_des) { + ret = OK; + memset(mess, 0, sizeof(mess)); + int arg = -1; + + if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0) + return printSocketReadError(); + FILE_LOG(logINFO, ("Setting burst mode: %d\n", arg)); + +#ifndef GOTTHARD2D + functionNotImplemented(); +#else + // only set + if (Server_VerifyLock() == OK) { + arg = arg == 0 ? 0 : 1; + ret = setBurstMode(arg); + if (ret == FAIL) { + sprintf(mess, "Could not set burst mode to %d\n", arg); + FILE_LOG(logERROR, (mess)); + } + } +#endif + return Server_SendResult(file_des, INT32, UPDATE, NULL, 0); +} + + +int get_burst_mode(int file_des) { + ret = OK; + memset(mess, 0, sizeof(mess)); + int retval = -1; + + FILE_LOG(logDEBUG1, ("Getting burst mode\n")); + +#ifndef GOTTHARD2D + functionNotImplemented(); +#else + // get only + retval = getBurstMode(); + FILE_LOG(logDEBUG1, ("Get burst mode:%d\n", retval)); +#endif + return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval)); } \ No newline at end of file diff --git a/slsDetectorSoftware/include/CmdProxy.h b/slsDetectorSoftware/include/CmdProxy.h index 599270807..5c7bbd021 100644 --- a/slsDetectorSoftware/include/CmdProxy.h +++ b/slsDetectorSoftware/include/CmdProxy.h @@ -778,6 +778,8 @@ class CmdProxy { /* Gotthard2 Specific */ {"inj_ch", &CmdProxy::InjectChannel}, {"vetophoton", &CmdProxy::VetoPhoton}, + {"vetoref", &CmdProxy::VetoReference}, + {"burstmode", &CmdProxy::burstmode}, /* CTB Specific */ {"samples", &CmdProxy::Samples}, @@ -927,7 +929,8 @@ class CmdProxy { std::string ClearROI(int action); /* Gotthard2 Specific */ std::string InjectChannel(int action); - std::string VetoPhoton(int action); + std::string VetoPhoton(int action); + std::string VetoReference(int action); /* CTB Specific */ std::string Samples(int action); std::string Dbitphase(int action); @@ -1509,6 +1512,9 @@ class CmdProxy { "[0, 1]\n\t[Gotthard] 1 adds channel intensity with precalculated values when taking an acquisition. Default is 0."); /* Gotthard2 Specific */ + INTEGER_COMMAND(burstmode, getBurstMode, setBurstMode, std::stoi, + "[0, 1]\n\t[Gotthard2] 1 sets to burst mode. 0 sets to continuous mode. Default is burst mode."); + /* CTB Specific */ INTEGER_COMMAND(asamples, getNumberOfAnalogSamples, setNumberOfAnalogSamples, std::stoi, diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index d0dc6dd09..ac6f35b31 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -891,7 +891,16 @@ class Detector { Result> getVetoPhoton(const int chipIndex, Positions pos = {}); /** [Gotthard2] energy in keV */ - void setVetoPhoton(const int chipIndex, const int numPhotons, const int energy, const std::string& fname, Positions pos = {}); + void setVetoPhoton(const int chipIndex, const int numPhotons, const int energy, const std::string& fname, Positions pos = {}); + + /** [Gotthard2] */ + void setVetoReference(const int gainIndex, const int value, Positions pos = {}); + + /** [Gotthard2] burst mode or continuous mode */ + void setBurstMode(bool enable, Positions pos = {}); + + /** [Gotthard2] */ + Result getBurstMode(Positions pos = {}); /************************************************** * * diff --git a/slsDetectorSoftware/include/slsDetector.h b/slsDetectorSoftware/include/slsDetector.h index 55862ae65..5d91b4a79 100755 --- a/slsDetectorSoftware/include/slsDetector.h +++ b/slsDetectorSoftware/include/slsDetector.h @@ -1116,6 +1116,15 @@ class slsDetector : public virtual slsDetectorDefs { /** [Gotthard2] energy in keV */ void setVetoPhoton(const int chipIndex, const int numPhotons, const int energy, const std::string& fname); + + void setVetoReference(const int gainIndex, const int value); + + /** [Gotthard2] burst mode or continuous mode */ + void setBurstMode(bool enable); + + /** [Gotthard2] */ + bool getBurstMode(); + /** * Set/get counter bit in detector (Gotthard) * @param i is -1 to get, 0 to reset and any other value to set the counter diff --git a/slsDetectorSoftware/src/CmdProxy.cpp b/slsDetectorSoftware/src/CmdProxy.cpp index f00e37d7e..872723dcc 100644 --- a/slsDetectorSoftware/src/CmdProxy.cpp +++ b/slsDetectorSoftware/src/CmdProxy.cpp @@ -1066,6 +1066,25 @@ std::string CmdProxy::VetoPhoton(int action) { return os.str(); } +std::string CmdProxy::VetoReference(int action) { + std::ostringstream os; + os << cmd << ' '; + if (action == defs::HELP_ACTION) { + os << "[gain index] [12 bit value in hex] \n\t[Gotthard2] Set veto reference for all 128 channels for all chips." << '\n'; + } else if (action == defs::GET_ACTION) { + throw sls::RuntimeError("cannot get vetoref. Did you mean vetophoton?"); + } else if (action == defs::PUT_ACTION) { + if (args.size() != 2) { + WrongNumberOfParameters(2); + } + det->setVetoReference(std::stoi(args[0]), stoiHex(args[1]), {det_id}); + os << sls::ToString(args) << '\n'; + } else { + throw sls::RuntimeError("Unknown action"); + } + return os.str(); +} + /* CTB Specific */ std::string CmdProxy::Samples(int action) { diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 038bc33a5..a959a3129 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1104,6 +1104,18 @@ void Detector::setVetoPhoton(const int chipIndex, const int numPhotons, const in pimpl->Parallel(&slsDetector::setVetoPhoton, pos, chipIndex, numPhotons, energy, fname); } +void Detector::setVetoReference(const int gainIndex, const int value, Positions pos) { + pimpl->Parallel(&slsDetector::setVetoReference, pos, gainIndex, value); +} + +void Detector::setBurstMode(bool enable, Positions pos) { + pimpl->Parallel(&slsDetector::setBurstMode, pos, enable); +} + +Result Detector::getBurstMode(Positions pos) { + return pimpl->Parallel(&slsDetector::getBurstMode, pos); +} + // CTB Specific Result Detector::getNumberOfAnalogSamples(Positions pos) const { diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index eb14dacff..0c60ad405 100755 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -2475,6 +2475,25 @@ void slsDetector::setVetoPhoton(const int chipIndex, const int numPhotons, const } } +void slsDetector::setVetoReference(const int gainIndex, const int value) { + int args[]{gainIndex, value}; + FILE_LOG(logDEBUG1) << "Setting veto reference [gainIndex: " << gainIndex << ", value: 0x" << std::hex << value << std::dec << ']'; + sendToDetector(F_SET_VETO_REFERENCE, args, nullptr); +} + +bool slsDetector::getBurstMode() { + int retval = -1; + sendToDetector(F_GET_BURST_MODE, nullptr, retval); + FILE_LOG(logDEBUG1) << "Burst mode:" << retval; + return static_cast(retval); +} + +void slsDetector::setBurstMode(bool enable) { + int arg = static_cast(enable); + FILE_LOG(logDEBUG1) << "Setting burst mode to " << arg; + sendToDetector(F_SET_BURST_MODE, arg, nullptr); +} + int slsDetector::setCounterBit(int cb) { int retval = -1; FILE_LOG(logDEBUG1) << "Sending counter bit " << cb; diff --git a/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp b/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp index cf144fc85..139c38066 100644 --- a/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp +++ b/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp @@ -9,6 +9,27 @@ auto GET = slsDetectorDefs::GET_ACTION; auto PUT = slsDetectorDefs::PUT_ACTION; +TEST_CASE("burstmode", "[.cmd][.gotthard2]") { + if (test::type == slsDetectorDefs::GOTTHARD2) { + REQUIRE_NOTHROW(multiSlsDetectorClient("burstmode 0", PUT)); + REQUIRE_NOTHROW(multiSlsDetectorClient("burstmode 1", PUT)); + REQUIRE_NOTHROW(multiSlsDetectorClient("burstmode", GET)); + } else { + REQUIRE_THROWS(multiSlsDetectorClient("burstmod", GET)); + } +} + +TEST_CASE("vetoref", "[.cmd][.gotthard2]") { + if (test::type == slsDetectorDefs::GOTTHARD2) { + REQUIRE_THROWS(multiSlsDetectorClient("vetoref 3 0x3ff", PUT)); // invalid chip index + REQUIRE_THROWS(multiSlsDetectorClient("vetoref 0 0xFFFF", PUT)); // invalid value + REQUIRE_NOTHROW(multiSlsDetectorClient("vetoref 1 0x010", PUT)); + REQUIRE_THROWS(multiSlsDetectorClient("vetoref", GET)); + } else { + REQUIRE_THROWS(multiSlsDetectorClient("vetoref 3 0x0", PUT)); + } +} + TEST_CASE("vetophoton", "[.cmd][.gotthard2]") { if (test::type == slsDetectorDefs::GOTTHARD2) { REQUIRE_THROWS(multiSlsDetectorClient("vetophoton 12 1 39950 examples/gotthard2_veto_photon.txt", PUT)); // invalid chip index diff --git a/slsSupportLib/include/sls_detector_funcs.h b/slsSupportLib/include/sls_detector_funcs.h index bd159ac5f..7162fefa8 100755 --- a/slsSupportLib/include/sls_detector_funcs.h +++ b/slsSupportLib/include/sls_detector_funcs.h @@ -181,6 +181,9 @@ enum detFuncs{ F_GET_INJECT_CHANNEL, F_SET_VETO_PHOTON, F_GET_VETO_PHOTON, + F_SET_VETO_REFERENCE, + F_GET_BURST_MODE, + F_SET_BURST_MODE, NUM_DET_FUNCTIONS, RECEIVER_ENUM_START = 256, /**< detector function should not exceed this (detector server should not compile anyway) */ @@ -426,6 +429,9 @@ static const char* getFunctionNameFromEnum(enum detFuncs func) { case F_GET_INJECT_CHANNEL: return "F_GET_INJECT_CHANNEL"; case F_SET_VETO_PHOTON: return "F_SET_VETO_PHOTON"; case F_GET_VETO_PHOTON: return "F_GET_VETO_PHOTON"; + case F_SET_VETO_REFERENCE: return "F_SET_VETO_REFERENCE"; + case F_GET_BURST_MODE: return "F_GET_BURST_MODE"; + case F_SET_BURST_MODE: return "F_SET_BURST_MODE"; case NUM_DET_FUNCTIONS: return "NUM_DET_FUNCTIONS"; case RECEIVER_ENUM_START: return "RECEIVER_ENUM_START";