From 21d23be5225a5bfc1f4988df3e5b90b92725601e Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 13 Nov 2019 16:49:35 +0100 Subject: [PATCH] gotthard2: inejct channel done --- .../bin/gotthard2DetectorServer_developer | Bin 147956 -> 147956 bytes .../slsDetectorFunctionList.c | 17 ++++++++------- .../slsDetectorServer_defs.h | 5 +++++ .../slsDetectorServer/src/ASIC_Driver.c | 16 +++----------- .../src/slsDetectorServer_funcs.c | 2 +- slsDetectorSoftware/include/CmdProxy.h | 1 + .../tests/test-multiSlsDetectorClient.cpp | 20 ++++++++++++++++++ 7 files changed, 39 insertions(+), 22 deletions(-) diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index f6da7ad81bc32e9b8032bc59309b25e7a11132cc..c4389e6ffab527f37136794ff6b71de567c84f95 100755 GIT binary patch delta 35448 zcmchA33wF6)^=Aj2}yut64IGT0@(>kSVGtdkVJ^=vhO>Hf{2KUh=|Mx5yK)Ng)|}p zDk>l%0un@o$VEgiYVdLqkR>Q00!DV(O#ZjJ&&+hUf%tv;{dt~~IrY}5Q`@Pk)7918 zS7roWnGv`k&%eWdCUw~V!R+8la?#6tX{8-(`=$Z5`AoLI%+LDmU>7#6@vj~r=M34j zBY3pGORW{3lT=CaZzf5OGS|t?lEiGU5!TRvts<g zb3WAJkWatGpK>J2muvAAjXjjoX(A4%rfHJZw&lKHKM z@q9^*Ci3NE{!NV@Ev2#u$#G+6aZ;q)o|zwScihT82~|>ZsN1dMQn&}p%&!KSDsHWF zei!+~^QkqHA~YS>cNWJ4Np{C=>O6^Wsrj{*|E-v={J$}Y#E;N^hsCDSZv=lmHa9SE zbgHH`h?m5svj`p&R~!G^;lG2AkDK9*kK{Mw(pef$i?74#@V@bh;HSj5WcB!#_$gsh zbBEMla@%97NOnzKecmRa7i+a?al&!dws5Lb674UobV|9fFY&us%3-#4qf_(pBvyFL zA=zwhreU2&r`jZ$NzpP|+uWMCesh)yASUWx^u#%)4 z-&yPc#YBh_xS8$2cQQ165AmDHiK2gFYo`T0NVT0@n}6S`=B5d??_+El-;vUi&EPjv z`mtHOXKFTE$QPz&w_Y?_7>(2IS4k=sRSQ5H|FE-I^o6EaC0$wm@lpf^P&FnwPVFq# z;@0utv{<%**H24in|V+C-^wSYCCb}J^HT>R;S2HK$+zHt zG(Up>F}xK2<9R~8M3%_g;eRq8Tdy`te*kAwm60J_&o! zTjAREPRHcaG!8FuzCuivO4FU$z#Lo%}Eoa%ge#zwiYGN05qhEHfXi#-m> zM(k-w%@(oS8g0{KmwGdOE!`gUJk$$wp>oV>64!0rJ9g!&Xmqz^+W`I=@teW_PW)Ez z7$lmEYqed$pwsy6z;6=&DfnAEix)P_kY}XuZtdcEm!^t5H-ʞ>gUM#3hRH*Lw5 z@FPw8!B!eJ8!x-7ZhE8H$BeD#LtAvNwQRNBUzQ|I@oUILavyS(mYsyP#9`z*HB(;6 zziu&9mNIz#%sKLo6#jAMBeudiPKhtbtie09ROHW6_^_7u+T2ON3b&>3qL#JfuT%Jm zHZgu>*(Y;O^Qcxk<^Q5ktwzd6Qh0XjQu!2qveM+sDg5EAk@BsSP2XfiFy_ZkXV+oj zJS-YI&Ns;}dZov1U__Z}XW+Zon1G`FAJI~4;kfgjFo8R34(AvtbixRz?N`h+o@ zr``J~8_Sp8TZc{Jd+>i6zjW^)v~|~ZXtQ_u`gRYa6QbHL4$#v7v9p*Dk5%|r?HjOV zytI8oxo{3|*x`MxYM$zds(Gp-s^+PVsG6rbqH5@Qt>aqqn2!C}JA6{dN7;w`bjSAc zzfyU6r#`a#B|fuLn)un+sh|8+DrVrCynA;)Ua#|D`H(O8US~(8oO~xA7F$csnaN8! zx0O$&@8&>CTgmQd(F#q+z|Q$&-3Sx=>=} zQg*T9N}1?I%!$uC71Yi@0ZH&1%q076=CHk|>nq z55=N_%8->sLboz>Wl?6nAOEe#Y1W$`>^UW%uw`W_=61H7$3;Z)$9km)xN|B?nJ?Mw z3lrkP6iGU2W73J74#2R+=j8Guz20}Vcnz!h^G*k9m^ntWhd(JvDWF!M?x0bi$)LHQ zm7vX_y`ZC@3m{v4LzvNZ za}ySBDB$yi8C|#8X;`q6uwEK{xA`O}n%h&mMSOjq6+y3z)m*onPL(y+O?|5=*1MT~ zd$BeANZ;t1>&EKt%lm2Z(*2bs<>1a@$3fT0To_JHCmzT2`cl7a`HQi-TqCL10+xkfnu+~wf?cnaf&&Cm=j*zX#;vGKT^zL#2og&5uIeQP;^l3{Z5FJH_@*QAMu%BCUe1~c62D*DCHhbT8}~Wm?8ILdhUFJD>_TB$}(}DF_ODoR{>BRfjyl>bM#U zM4_XG=0PG^(2=s zaeV@fpojGV zxog0DjSGVlS!uLO^F(j1C6zx z=m4k~bRKjaWXs2x1l0hgfEt5xKwUunL8CwuKvO~aphcjSpmq5eYg@tW1{Hyhg3f@h zfTUSy0gw}v1Zn_k1?m9m4H^y_2bv7Z11$h81FZ&a1{H$#fewLAfi8e=<%1T1R)W^K@NX+e176m$l31tiTy3xJ%UBv1oTD^LeeZ_seiIM8HJ z9%un*8E7?VGpG=>4|E803UmQ<8x-&&S^yLWa@EDZ=Ac|qchF$a7|=wJ8#EWR1hfjY z0kj>o7o?f+R@n1Rrt{mu|4#g;;I9zB7yL!yzXD%E{C~ioV=g`MVFb=l#BuOH5&t9j zABg`M{0ZWJ1%H(I%is?ae+~RW;%|We5Amhoi-?!k+5NvF-rt45mlOyB|2gr&;4w>S zwG0RUDe;lucMu-~{$t`3z;7kKHuw*TuLpi3@eRPgPka;b>%hCjQkRLq8j8pU|2FZt z;NK+vKJY7v?+gAl;)j4=O8hABD)A44Uqt-l;9nws68L$3hrC0P(BA_a**4@V$uN2);YEN~b{|W+i zDdGnBRN_m)Clhab-|mkq4lQvI_&DN2z}F-`9DEe<(crafKNxr%c#r#93%tjDO?}^< z>GfahA)*Q;ZU{br_-5e!h;I!Z{;O7qwtU_rbzB8!oQhP4OHpLg`~~|&sZg?A0LCns z;}@qQTd>Z+Dp{~;z-$(5128`e_5(2gLc2bFc`}YT>r^UR1X}?MuwWyB1zNC|fCX8w z0$^1v*v)fJrK%Tm={1f!?^LRJK^>b3EZBm50W8FV{RGTz!3O{8R6;G-3}9gvY>f+G zbqmN!oJzO_>k3Sy+bE<2UF0u#%Zr}>)!tY;DI z1FXIU%LkTj!L|ZxV8PA+%dlYnSDZ>i1LhLrJqchV11PXIz#3by;lP?$uxY@WTCion znpv=Iz?xgILsy(GrG*8|xaw3gE!bFKEiKq$V680JR$#3ySlTtGl4Zd<1IyMhxUZh( z-wQCuB6#obPURj8HW^qO3-&IswifIluv`nqt~-@`jhG8f-2h-aBM58=u=W;gCa?|` z?0sMzE!c5joh(@B4X4uCg0%qV>S6)M0ld$GEdtinf_(w3n+3ZKth)tkbknKyuwY|> z_0%z!xA|WI*vlfg4_I#tb_G};3zl%psr0pA9f0+-V3UCLH(}`iWdH}5K*{zcuz?or z04+0x%!SaC(b6LQT0S>odCBQ~lF#8`)Wuygb3+#RiHVN1$ z3$_N>1B7AwNMG%a0({US7*gs~Mq99Bz{XgxGGGr`u!dz$Wvm4o2kc=p=CVCl=v2m; zLECg-k65q`z{Xp!gTNlOV75=4$^;9R2JA5lHU!w?g)Xz_vjE@|7Qs(}O|)RY0DIDc zId(afNfxX%u%|58!@wqcFc&rdO8}qtfQ0P?HpPOy`!A>Rj0O8(k5idy!L9&%)`Hdl z+^I~nV6I^Rtwvb=GpFLV2=)Z_oCTW=Y`O*84s3=6djWamS+FmGJ#Y2@Y zU@us(ACO7D1&c?GXIZcTz-C*pIl$(4G4lV0Ad|UXP#+OXfW2tJ_5qt`!EOSZZ^7ce za4HKdSXW>#SunQ?;6e+y9vHV^2Y@ZIVDgtvkCY^U{irD0cP_5)&hLR zB3J}$sRb(q_NoO-`nOYAX2JRad(DCs0bB0FbpNk(pHo@k12z9|##c^dr3JeH>~#xv z{%fc5h6Nk&jZ=Bkg3SfC%7X3urj=89%L0B|rpNk0l^Bo&L?U{b8k1x`6vxb*G^C}y`mrkvX6F%PbblXI~KE3?w|TShnu;P@Sf9B>0DXAe(y-Om>A*{*Mtmnhzx!FYF~vXElveh{U6 z+dW;}Yf5`AkuCP+i`)6)NCOpb;Pe=qds&3U?Jqar=iROJ1U2k|c2o1Lx=VW5y^Ify zb?}#_KarO6UquR*C41q|l_me`*a%+|A;knrcAMYM;#}rt;x4VNO4iB3Grazc`ktIS z@-;KUm9MB0)Wp~WW~hGYD^dLXjH)7&(v9QWm@-gsvk}tb{EE0ywOQP4JwRGa_q%Xc z?Y4ebEoTcaogX8#P5WegmPs3~(}gzgjpSp0RnyR!gZRbg8z^VWOTbHKCTlG;bIzRw zDxnK_`mjXa>4ni=Df7*}Juhf#N?z!vT%>%cC#j(Z<~J1i%**elTrXGPk}fdxhn~FE z>)|=3x`(0eQ0J}tAEd$57ruLwIa>l@F|)$8iv7?p-migfxpx%zG&<}=eXlxe&Yyju z3NJhw&deJfNg<4+o@;mVfvjSwa z$=55RwBdxAv?FgT=d|PVc!cvPE zS_n<>7-!p-rpv1|i%8U3%CzF4pTxlm^pn`UEv#Rehg`17b6!<&khQCtP(w>Wh4I=D z9m()cd3sUOwp3IUEPiQN3>$bek+*N)-Im06zgsTG9`jDf|Dvo+bH1-Go|0kqPyF}Y zMNM-zDzf^OY8{L2UJ-W_*oc<1VGJFhG^UQja!q5X6L+8V&m|etIP;AZ&5ZtU`%|AQ zP5sGdzuGWF_&nNB!NKCfT~+w}{H`s3xO>BCbB~{x8FQHJWPAPK-4MTcceBdA#c<|8 zzI$1!@^g6&>U9Og5MR;HZkl8oNfIw!uEhUJDepJ|^5d^Hx`Y1uE2E>XHi(B?bl7nd ztJ1A9;pSoHsN!`0H;`w)t!Oh0+?B7Erzp4n*JYG5^yU6;WsKmrSJb>i9-^F8GAb%( zIdkJ*aa}^Ga3;Hi&CwV(n*aYYhZ_IqIVAt}97^Aup)??Ilh5n1wjHa+8yDGm??lHp zC3$iZyi@3PePYBE`uJOIy;@C!mw)+ITeq_Sy$Ntu{0O5YsBBiE-WFO-+UV`bCU&rs&yNx<4z|G&dpEjEsCXqs>{Enb~U zr8isE@=coSzGYLovaH4;&C5^R|3Po`7ME0 z+u~H-C#~d6*mRdPb4!*e-jpp5ni~pt@*TS4r~7@ID7EPlhKCi*>+0SWA=%J=Ua#dN z5~Ybo_kB@(nrOt;faU}2AUV3G(dBqa0ep%1JYuVMIWaH43tzZ3B0$Q(a~~);pRkL zGkoc`nN@_i7PYk+A2zcIAO3OUN~k#h=HtjP(WUy92TqM^do6s|$I0cvH$Sdl9-O(o zTzJa%x9`3o@?Uc$^TdJoJw{{nT;*4|wQ|I)$-4k~=U9)X(v97;t%B}5Ym)!o*&OS>$!8LUB)CC7+p=>j(EFCSI>Fu{W;@&5||L{aTYBRi1&*``ol~ z5xh4sF_6-lmJg(*O#$P)Tu$n+zn=Op?cdcTeSg6TE~o$ED{2R`t)x~c?&-fB`$pb< z-?4$Y+};JF9OqqZ9<(rvd*>0axMv=zFynj7nkve;vswIaWZc`VsiKUBn#KP{#-q)e zD$4jVv-q7eUSBj;o0>cu1`)sS#Fk&6=6u|@zj@*mQbf*&R}t;X7zav)1NK?cRpEfG zP}7XRs!8my%=sTxA=|X3z_T;mWq7Hgj05@iGqgz^b-25#SN}OxtNtgd?(Q|bSCJ~u z7_G36w)|C1;x0pETW06%Q2R_%>%UJ&C_T^ewH4br*vs5Ws<>;BniGUd zN61wD&g2YAt{}PMNzQ{$Y8$5Oi?rQsWiAO(=h^6P!O8J=UpE(0vcIt2i*<8pMdF?@ zS>d|*dPSOiu7b#Tbw%Qyj4PZBHjt(YEwe&R+y1Ji<3BxUv~96jwA-B4yNG%(WW2ks z!qNTOEbU$TjMDlAO@-}#kW^8Jdo%WWKIV4+-Yo9T*(>g8_X;yUVb)Yp#y^|I|3=0o zW=$1keAO&|=ZwYCg^uTX%eOZ173bphsr(#9@;UDe|LwW7;e~Cn>u?@$FT4riXD!OE zy@BFaU;_VD>?as@1cDmtv#@w$#Th)Gtqo*M7H9N5RvXfY>wPJ;vi8OWzJbT%MHSP| zC+HtY7=#bvKKDeZwX- z4wd+Zm|FbmPuYBBiQT->R72lrO3ffGG@QJxOQxya`=~70r5n7oB*K>Sk=?NGRJbik zb~oXDf6ELhOwykv*5<&L6U8zXp)F&k$Dq*+WxRAz(}fqFQ|_aTNdQlKh*KYnFTClE zp{bB!x?c3fc#L09ZdQ%QpWlz6DYZ9F62G0CZu^b%S^dVGUuib4bPoBOaR?YWsj(! z?9ZCDS<7x*-o*;=yjfh&98Fi=O!Pl%#5rco)`A!s@%ZoMG~yykZf?YR*YD7XOU=3c z%|?9Ftj$_>Ya^~Ri{H5sv1FOYJ05Bhw;5A6n``UM&^X>hHH(Y5l~oCIi0AHM>BfOP zuFOx_P6|x>9sGw|&6Hhc)t;8ok3p5QhJI<5w-yC;_v9_s&~MGs-m3q34ZUOC51Un3 zGt>-4ulxAYa_jyBDKOVPv#gnN)~ve1x?eWSTZ>|;`yXcMyVM<{*nEa1)-#G}#_?;S zFHfE+)U!POX~t2vF;>oK38wU>(V~u(S#2fKtU6D3Vd-E%h5kh?b82skc;^SRV^iNO z?rjpU_+NHxnwT}+C1Y*U?U+UKrWU|NMusR}pXAvB@!lqAZ_Yz6tzqW9yOZC;ocb;$ z5%yO*7oAsiKTWo5lY|#*dgaRh02Wv-sc0c#2t5MHx>wi~o&`XPGrsl<@+y z_?%Yd=Wu09#f+M90|4#Z4@`*>cPUqM<; zM{Ed?(VBY zLs;}Z`wVKo`Vd<}As~awZ%E}ac;Ux98%UT9j(Lt$sM|tVXTL*Qjf3ngHe1vf7Xexg zM2&GFq4A=|CB%yw!`JuL7~4}+W4k&vlGRlU<5)HIbvvt@Y%JjM5AC)~WyQw2>xY(} zR4?0EL*-{GEM1%EMy6(lvd;3kCw&`J#`k&cQP+pE`{i4PXnG%*?mnxTVJus&I?0#% zXS9TVp(N$(QQrt-=}Psc`l5r^bvb_WG?IEc4DDXHM-8qH4Gv9%ehTk2#7=vzfzXzx z^|th!b)&Py!+M(B)lo3NYh^e7m_$B^VZ#g?dumiHON?Jmr7`sa?DK@zK8MD# zmaYGokEz7>F3Tjmr6w0NhNv!nyBoqDd@!))IqJb!*3EB?))8rOEVlFdEk2vu2;O6J zTflp54!pl0XvO`M4mleYGh%Ws{N)oO{XoB6&B-oN4y ztI;oIa2yP~Xl108-c(6rVR0gB)+*>FQ_J_q2%8LAMl>A1d4{kDUjS^J8koeoQ^OBU zV$uJ6!(T{ZTEjQ1#oEXLPu+1@ti>96n~oZNw|2p#o~@<1BjV92H8q)8jtlqE_w8yq zn(0gG9Zpzj*Rnb4m&sUK>HM)5tMditss%PEKpO|z z^R&kf^hMcpw+iEd&Nqnu{qsSUCQ36ZpXsQu+9^d`Q`W+{X&iD>vPi~sgGhZNg*DaB zwH0owr9L}|#koc3wWZDS^tbQeJ^jnn z#p&4PD53%w7I62Xf^XAVIyTlpg?#A!F zOADOuE#60WmrM>&GlvTq+zGIqr=AoyfPU58NX-I&)g1)?-E_9~BFSORc9a<8N=R-S z$+<3*Agy(}{lTPvBth-vWyttz+`MS{5=SdJpp0z%%N`eM&NmGc| z&lid($hweRFv%I*CQXj6SpD0OoSo$8n2EO{7obmlwh8MeOM43rHem&_QvIwJDk5Tndtn%wp+x%&7?_F}My$vLlPNY+}vndKn(;G~{+KC8Z@v+yg{y>u0kE znJn#B7w51n@q3VdBks||ed%{G{T`&>h&B}8hIJL`-fqKMD*Y%A+6ou$7m9bS4eO;0 zrzjdi4vbku4Q>T?~% z5ZkXF>BzF$h;#Jfg?xAO6TD`B&|G7x*1%3IDnRHF8Hn$3h+}6})McI64f&VJs@j=- zD_@+fKHLS(dug&dzYDJ65q=-xz$=rr`}uA^9upC*y?tGcyN~&~?tj(f25iUMT8luZ zK-WQ4$1^Do)ELwOG#E4ilm}V@^16XnQDX6(fo2BR@D^c4Cs%Hv%bA?q$^;sn+^U2b zo!n5uj81L@VMZr6nlPi28%LPY$*t9*949x81dUE^dJFCC>y4k*oZP|#5$cIYS!_XA zH`az#7vGW6JVV$8ddiNlI=VaiRF=xrv>vQ}i1y(qINRDSfBKwGwP&lSD|@gcn@Fur z=*|@NSPxcNd@V}-xd(euB%aih#Z(rFGxHh$?S&Ziqn^y6CBXM;YVl9P1HwqFmIDqH zNEr_Ckr6eu7i-R*Qb+b;qm|qi@$O$EByqJa4jbZvlocLOkN0BHtdn}P7Y5ONBtg@G zur^3!^=6%w-V|lnuSC@H-t1jv2t^qjSVRr&!(LS$peUN9D9hl!aAY5)D4OFas#9M! z-&JJ(P{)L)U}m5tpmm@^&;igH&~1=?GLw=(%|Ts2UQ>LQI?!l}GYB)9;%vf9rZ}HK zqbV*T%xH?Q5N0&R<%Ahc@lC>vrns6gqba^uo+)l5L8B=a=%%<`H$`cJLwu>Dmb$M$ zYpv{S5nq@OW26~btS!<6HD&-CrW~Ot!_}5FpPeKSY_DMKl#y*K8%-AO}ndM9mi6m(3lax$tdZ;%=n;vquYkd->K0kydDXlZ( zrT?N&XoboX$9lG_JBF}_m5vl;+=%O68jetY48Ioa6N!%WE+}6K_f~ch<*hYM`O6@w5^|Xl&6wiM} zsM|(jirq~qZtlP*G^T0a#XySEk=T#>H$_QMCeh`=4Yl3IVLCZiJK)XSQK<7cy3kHjn zTmIP<2_Vd9ks*YcEHa!xqeVs%X0*r{!i*M~NSM(gQwTF!WIe)+7TK_6Ide@j5;R(5 ztCreabI&vSTr zI~zBjU`G#-oZM2i|3z4f8LOt>jYacn)tVf%%MEOd2$<$bJ53+gW3=$zfMNbWpt7^$u7NhPR%c?0a zk&I!dE@zN>b}W0f)~n{sy(OhRW$h@_Z}e@Vt;oS2IUGY*6A2s3>T=_rB5VQ`W#<1jc)m~j}K zBg{AqE)ZrM23HC54g>K$q?-f=8LlJB2r~`?TPtnbIdG~r4BS7e#~)?Ql*m@`Ik(Zm zWQ=05MO4}Z*4|Z8dRz(p^n_w(CzOzTjw-?Is7>(beFbwU)@QuI1h0*g3h}MG9kAID zoZi5M7&1qn5aYF+^a)Xq$J{H@(EOW7SzpBbc9AB=AJM@V^@*{OHn{4O&?N|6G6-GL zg_H|f#s1Op`Y1lZVGh#Knsgi?6$0fgI=%K27F|3C8>MAb`g4ZOb$zg}(#; zohEZp+23`A;xw9gxxEb+05*6QSUqqJ6KHqWtwfKb#lyxECFOGVDdmdmlqjrlT0gsy zT`bawg{^TwcV;UbI6T#HCF`VA1Eso(%s|0*dWz~^D#SJ5*9?WYrWZnM@cUZD7otW& zM`5i>cyJ1tW8V8yT$^*>>twWk6E18;}$D9Rq^4LB81yg6UG3{dm2Td9=?#Tz9$czh; z0&9)RjB7BtR)dCP#!SZW3mg)p-rC1%7esx_N~;!3_?FdRs`CV^E7x6I(C!3#$X~W| z^@E?_pET#{{-0QFgbQx|#HQIq#FVovLqxoHmJOGWE>c6z34xc@=I3yuarGi~xCjHE zCBm&1sUMtU_twZ;#H1j+QY?V=Wf_v>H^_z&+zj7gkQQ(?>^!@-`6;eToWPo1!W=SftKB&zvYv!J6}ImsY?>F0#i(0Z(3Ju7-GcPr_U$ zRRxvd53AhN*s9T5I1X5I#P`SVD3A!FI14Ya2SveeUSjP;g~nfI2|+@Kh(Efh0O7R( z33V5vH2A9|RnvY4d&9w6IQL>f=51EW5^^u8uMayjmSGB#q%hPg8zxZnvYN)^EZ2g^@i8paQ{YR4Y3#xmwkZ5Q!u#O*Eurui z2(SDGAIhTe5rl8wf((U^BV6Nk^bUo8M!0U2Fa33dFGTplRp7k-%;Zp4b9|v^FD1&r z{Ba#$^6_Na24VMpU#0^P-u{Gc2BOd-5bhF=Yhp_O1j1vcW3WdL5`=U7 z;onmHMik;HSq_bl`wVZ2B%%Ef%6|u~L_$9zyjoo&%iThI4}s52a0iT^LN&0G92-A8 z0X_u5&jFsi3&o`H5`_D!9V^M{uKe@Jgy3_45A1*j3g1TfC<315uZaa&N@mhlicd#4 z&xt$a6wXHYI-2_wg}Wd;cR2O?ZPl?hxqkfC;V3WVpWu&I zZaxaLBe{AA?^Zv8I<{IpY?ISjz8dH!r;oU9=-y8tlpEx$^w$WVe+(DMq~v>qx9;&Z z+G&KZzlCq9QT#20H?+iEJ?hD7sLN6H6+bQ0kNo6e$TZSljt!k~KdyIBa#5qh5ZbPG z^p~@7;A<9sLW|D%nyG&PULUF+MxumVjIS%C`7OX5U}$lab4OIW?qW5nvfMR(6h0y4 zDNz94Zjy)QYEE*s5$>Xv2xwF z)TKy{9g&X$CrA~_zCnHi;Zf7zaZ@$?s=^X!%?Ok6uoS}k)D}U|YJWl< z7$nyZ?Y;nuFqL^KqS47g=(xEL;buC)g@A9XzaUkQ!e&gmKs7!OH~>xT5%a^+ada(a z2(pH12q&Ru_K}*J2#4bfS)On`gr}+ls=%a{s88cZ&Z(m=ts=+7@56{Mq*TiwwF)bU zC)Ij{C##1c9zW`=5B>r0L_ZvTp=8$)KB`7mmAl2C$J880aDOak`Cs^wO+fgJI;*N2 z+a>_*=o!`^H@q|A_*p6hLhWZNO&HdonP&*$&I3PtmTUCy64G!@2hd(YF2G_$C z5y?d%ycZ4LfqFd+;SGPF2-Kw62p2_TbCQbN6XB|c{vL+#D17J5Q_FD(x3a_2qV!Wk zB=v=Aa(r0#)0h)U$@>tByQFTbCdbJ3IQ2+1xxO5*UkwVzP&kU+&wP?=Vi(=qA{c{u z^&;4ifMGL30AE)h0xUa=)Y(YY_E6NhT{Y(Wjey^0)4e=hj4>) zzR}(f;qGb+J0{}=>O*!I=lK_5E-*q-=YJ!%f2uF_F@(3OYakuJ{RiKePsO{z>mEk= z$yypByiUCVZL)oz8WoEEgF}~z--g5g14AIOcOhnn8&*hV{TSgq!_;>WVdoF(Y@}nS z)HR_PZr>btnn!6&cKz%26c^q zj~Z;GJKzKAVZdyWdPDrIQzNV6XR6vl{G3q-;3st4GAu%*sZxY!u~~q_>@%3Oibg~m zz&TH-+p5dcm|JZTE@$_+Fi8w;y(P~h+Pwk&M0LM~a2)#4)7|)fy0pLrjMSwdJarm8 z8_Kmc!n@Tk!cnG`>M!DFf*Po3KdJZ$wc%5PD@k@YWcR8A6f7|3FZrg75GS%%UlG#% zUxSrUNpb=2RliW=Zfu_#86n4Jv_b=o6S^>nHX?Q|mK`iHnnmnD*tXS|`Wu9|st+L< z>!QwzfEg95A0ZT0_?xeC{jgQhYJz$;LXNqo{|VRz6?7VKyUk}_FCx5zVXuYaS0KC$ zfz6cp2836u9UZXJ-Eb>C9^FrXt3Kgtt7`}stFs`MvEe75sW*>;cN*hM))C=i!_XRp z@CNlTl7*$j`lhlKfOD>>K~6b~^;SDN(N2ZxD^3~j@7|;yamw>TtImKTteRrP1k})$ zzepHqgDiDzB&Mn^pZZ41bBMm69*#tF!QSu_I()ZpaDRtb_*+q!)X%>Pd!c3!uQuNB z9GZf{p$O+Yd>(H+!WZCYd2FRN!YL8z>?maJhGT&4(#kd*IM!mQ&yZ%rog;XS5Jzt< zq3~x2=T!H#(|-_ltAWudbCH^gpZL1leXZ)i)>QE^pOvK`yjp!IS~NhSx-?pj$yk}< zE5md|H~+}zlP*Bm4v#vQGJgf(1?n#%v;Jye4Pi)c`f7dwu_@yUGHb|96H;^FzsqQ4)a#2sVlB=uhvgE4%;_`6tB%D@}69UB*VeWpcL0Wvl?JW7a G{Qm&Qyap`* delta 35488 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ν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 diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c index 65ffa1a32..b743f10a7 100644 --- a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c @@ -1074,17 +1074,18 @@ int setInjectChannel(int offset, int increment) { int startCh = 4; // 4 due to padding int ich = 0; for (ich = startCh + offset; ich < startCh + NCHAN; ich = ich + increment) { - buffer[ich] = 1; + int byteIndex = ich / 8; + int bitIndex = ich % 8; + buffer[byteIndex] |= (1 << (8 - 1 - bitIndex)); } - for (ich = 0; ich < sizeof(buffer); ++ich) { - printf("%d : 0x%02hhx\n", ich, buffer[ich]); - } + // address at the end + buffer[16] |= (ASIC_CURRENT_INJECT_ADDR); - //int chipIndex = -1; // for all chips - //if (ASIC_Driver_Set(chipIndex, sizeof(buffer), buffer) == FAIL) { - // return FAIL; - //} + int chipIndex = -1; // for all chips + if (ASIC_Driver_Set(chipIndex, sizeof(buffer), buffer) == FAIL) { + return FAIL; + } injectedChannelsOffset = offset; injectedChannelsIncrement = increment; diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h index 5431a3d2b..256e9a226 100644 --- a/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h @@ -78,6 +78,11 @@ enum CLKINDEX {READOUT_C0, READOUT_C1, SYSTEM_C0, SYSTEM_C enum PLLINDEX {READOUT_PLL, SYSTEM_PLL}; + +/** Chip Definitions */ +#define ASIC_CURRENT_INJECT_ADDR (0x9) + + /* Struct Definitions */ typedef struct udp_header_struct { uint32_t udp_destmac_msb; diff --git a/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c b/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c index 39af05e55..b8494e3be 100755 --- a/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c +++ b/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c @@ -30,22 +30,12 @@ int ASIC_Driver_Set (int index, int length, char* buffer) { sprintf(fname, "%s%d", ASIC_Driver_DriverFileName, index + 1); FILE_LOG(logDEBUG1, ("\t[chip index: %d, length: %d, fname: %s]\n", index, length, fname)); { - char printbuffer[2 * length + 15]; - memset(printbuffer, 0, 2 * length); - strcpy(printbuffer, "\t[values: "); + FILE_LOG(logDEBUG1, ("\t[values: \n")); int i; for (i = 0; i < length; ++i) { - char bytes[10]=""; - sprintf(bytes, "0x%02hhx", buffer[i]); - strcat(printbuffer, bytes); - if (i < length - 1) { - strcat(printbuffer, "\t"); - } + FILE_LOG(logDEBUG1, ("\t%d: 0x%02hhx\n", i, buffer[i])); } - int len = strlen(printbuffer); - printbuffer[len - 1] = ']'; - printbuffer[len] = '\0'; - FILE_LOG(logDEBUG1, ("%s\n", printbuffer)); + FILE_LOG(logDEBUG1, ("\t]\n")); } int fd=open(fname, O_RDWR); diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index acdda0e2d..dcde8320a 100755 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -6177,7 +6177,7 @@ int set_inject_channel(int file_des) { ret = setInjectChannel(offset, increment); if (ret == FAIL) { ret = FAIL; - sprintf(mess, "Could not inject channel\n", offset, increment); + strcpy(mess, "Could not inject channel\n"); FILE_LOG(logERROR, (mess)); } } diff --git a/slsDetectorSoftware/include/CmdProxy.h b/slsDetectorSoftware/include/CmdProxy.h index 60ebb3708..9eaac65f1 100644 --- a/slsDetectorSoftware/include/CmdProxy.h +++ b/slsDetectorSoftware/include/CmdProxy.h @@ -925,6 +925,7 @@ class CmdProxy { std::string ROI(int action); std::string ClearROI(int action); /* Gotthard2 Specific */ + std::string InjectChannel(int action); /* CTB Specific */ std::string Samples(int action); std::string Dbitphase(int action); diff --git a/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp b/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp index 0ea597571..ac50f4123 100644 --- a/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp +++ b/slsDetectorSoftware/tests/test-multiSlsDetectorClient.cpp @@ -9,6 +9,26 @@ auto GET = slsDetectorDefs::GET_ACTION; auto PUT = slsDetectorDefs::PUT_ACTION; +TEST_CASE("inj_ch", "[.cmd][.gotthard2]") { + if (test::type == slsDetectorDefs::GOTTHARD2) { + { + std::ostringstream oss; + REQUIRE_NOTHROW(multiSlsDetectorClient("inj_ch 0 1", PUT, nullptr, oss)); + REQUIRE(oss.str() == "inj_ch [0, 1]\n"); + } + { + std::ostringstream oss; + REQUIRE_NOTHROW(multiSlsDetectorClient("inj_ch", GET, nullptr, oss)); + REQUIRE(oss.str() == "inj_ch [0, 1]\n"); + } + REQUIRE_THROWS(multiSlsDetectorClient("inj_ch -1 1", PUT)); + REQUIRE_THROWS(multiSlsDetectorClient("inj_ch 0 1", PUT)); + } else { + REQUIRE_THROWS(multiSlsDetectorClient("inj_ch", GET)); + } +} + + TEST_CASE("vchip", "[.cmd]") { int prev_val = 0;