From 0ee11cffb399e0cae6d5e9a43577ec087e65b3ef Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Wed, 28 May 2014 18:04:26 +0200 Subject: [PATCH] merged Ians section of the code and added a few functionalities --- .../eigerDetectorServer/BebServer.cxx | 3 ++- .../EigerHighLevelFunctions.c | 9 +++---- .../eigerDetectorServer/FebServer.cxx | 4 +-- .../eigerDetectorServer/Makefile | 22 ++++++++++----- .../eigerDetectorServer/Makefile.virtual | 2 +- .../bin/eigerDetectorServer | Bin 129122 -> 133046 bytes .../bin/eigerDetectorServerVirtual | Bin 40420 -> 56085 bytes .../slsDetectorFunctionList.c | 25 ++++++++++++------ .../slsDetectorServer_defs.h | 4 ++- .../slsDetectorServer_funcs.c | 16 +++++++++-- 10 files changed, 59 insertions(+), 26 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/BebServer.cxx b/slsDetectorSoftware/eigerDetectorServer/BebServer.cxx index ace1f2afe..52a8e1719 100755 --- a/slsDetectorSoftware/eigerDetectorServer/BebServer.cxx +++ b/slsDetectorSoftware/eigerDetectorServer/BebServer.cxx @@ -18,6 +18,7 @@ #include #include "Beb.h" +#include "slsDetectorServer_defs.h" //include port number using namespace std; @@ -72,7 +73,7 @@ int main(int argc, char* argv[]){ // unsigned short int port_number = atoi(argv[1]); - unsigned short int port_number = 43212; + unsigned short int port_number = BEB_PORT; if(!SetupListenSocket(port_number)) return 1; diff --git a/slsDetectorSoftware/eigerDetectorServer/EigerHighLevelFunctions.c b/slsDetectorSoftware/eigerDetectorServer/EigerHighLevelFunctions.c index 69e2782d5..860bd8574 100644 --- a/slsDetectorSoftware/eigerDetectorServer/EigerHighLevelFunctions.c +++ b/slsDetectorSoftware/eigerDetectorServer/EigerHighLevelFunctions.c @@ -10,7 +10,7 @@ #include #include - +#include "slsDetectorServer_defs.h" //include port number struct sockaddr_in eiger_socket_addr; int eiger_max_message_length = 1024; @@ -32,8 +32,8 @@ float eiger_exposureperiod = 1; float EigerGetExposurePeriod(){return eiger_exposureperiod;} unsigned int eigerdynamicrange = 16; unsigned int EigerGetDynamicRange(){return eigerdynamicrange;} -unsigned int eigergetphotonenergy = 8000; -unsigned int EigerGetPhotonEnergy(){return eigergetphotonenergy;} +int eigergetphotonenergy = 8000; +int EigerGetPhotonEnergy(){return eigergetphotonenergy;} /* for later */ int eigernumberofexposureseries = 1; int EigerGetNumberOfExposureSeries(){return eigernumberofexposureseries;} @@ -47,12 +47,11 @@ int EigerInit(){ if(!passed){ struct hostent *dst_host; if((dst_host = gethostbyname("localhost")) == NULL){ //or look into getaddrinfo(3) - /*if((dst_host = gethostbyname("beb026")) == NULL){ //or look into getaddrinfo(3)*/ fprintf(stderr,"ERROR, no such host\n"); return 0; }else{ //struct sockaddr_in eiger_socket_addr; - int port = 43210; + int port = FEB_PORT; bzero((char *) &eiger_socket_addr, sizeof(eiger_socket_addr)); eiger_socket_addr.sin_family = AF_INET; bcopy((char *)dst_host->h_addr,(char *)&eiger_socket_addr.sin_addr.s_addr,dst_host->h_length); diff --git a/slsDetectorSoftware/eigerDetectorServer/FebServer.cxx b/slsDetectorSoftware/eigerDetectorServer/FebServer.cxx index c67347b7c..4e26a4dc9 100755 --- a/slsDetectorSoftware/eigerDetectorServer/FebServer.cxx +++ b/slsDetectorSoftware/eigerDetectorServer/FebServer.cxx @@ -19,7 +19,7 @@ #include #include "FebControl.h" - +#include "slsDetectorServer_defs.h" //include port number using namespace std; @@ -122,7 +122,7 @@ int main(int argc, char* argv[]){ FebControl *feb_controler = new FebControl(); - unsigned short int port_number = 43210; + unsigned short int port_number = FEB_PORT; if(!SetupListenSocket(port_number)) return 1; diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index 27d59aeaa..565220a7f 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -7,22 +7,32 @@ PROGS = eigerDetectorServer DESTDIR ?= bin INSTMODE = 0777 + SRC_CLNT = communication_funcs.c slsDetectorServer.c slsDetectorServer_funcs.c slsDetectorFunctionList.c -#SRC_CLNT2 = Eiger.cxx HardwareIO.cxx LocalLinkInterface.cxx Feb.cxx +SRC_CLNT2 = FebServer.cxx FebControl.cxx FebInterface.cxx LocalLinkInterface.cxx HardwareIO.cxx +SRC_CLNT3 = BebServer.cxx Beb.cxx LocalLinkInterface.cxx HardwareIO.cxx + OBJS = $(SRC_CLNT:.c=.o) -OBJS2 = $(SRC_CLNT2:.cpp=.o) -all: clean $(PROGS) +all: clean $(PROGS) feb_debug beb_debug -boot: $(OBJS) $(OBJS2) +boot: $(OBJS) $(PROGS): - echo $(OBJS) $(OBJS2) + echo $(OBJS) mkdir -p $(DESTDIR) - $(CC) -o $@ $(SRC_CLNT) $(CFLAGS) $(LDLIBS) + $(CC) -o $@ $(SRC_CLNT) $(CFLAGS) $(LDLIBS) mv $(PROGS) $(DESTDIR) + +feb_debug:$(SRC_CLNT2) + $(CCX) -o feb_debug $(SRC_CLNT2) -I. + mv feb_debug $(DESTDIR) + +beb_debug:$(SRC_CLNT3) + $(CCX) -o beb_debug $(SRC_CLNT3) -I. + mv beb_debug $(DESTDIR) clean: rm -rf $(DESTDIR)/$(PROGS) *.o diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile.virtual b/slsDetectorSoftware/eigerDetectorServer/Makefile.virtual index dc9d676d9..9d3bc6223 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile.virtual +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile.virtual @@ -1,5 +1,5 @@ CC = gcc -CFLAGS += -Wall -DDACS_INT -DEIGERD -DDACS_INT -DSTOP_SERVER -DPCCOMPILE#-DVERBOSE #-DVIRTUAL -DPCCOMPILE +CFLAGS += -Wall -DDACS_INT -DEIGERD -DDACS_INT -DPCCOMPILE -DSLS_DETECTOR_FUNCTION_LIST #-DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServerVirtual diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index bb654089eada43d09703e568f5012c0bbe9505d7..e21e2139455b5d44c85023e6b7f77d3ab4467c1c 100755 GIT binary patch delta 24457 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 G_J09@!bD&I delta 20902 zcmb_^4R}<=)&I=hWwY6QaDkA75W^Zn2oNxVfB^yt5MU({14fKA-~s^yL=6fyVsIA> z78Gn?z{Ls}ELf<}1_1*WH1>ryC}>pdiwYPhDpuNtmX82|{r}Frb2qyS*#4jAz0Y$q zbLPyPuQ}(;%)NK>&M&Q}n?tG-m5(>AOqw>#vWs!tjJ0DNe;NJ)Ru%mQxRf!q0qr3Y zuK<4xclLM#!N>20ApsOei(F&`ccSZ)Q>Y}HR@*=3pMKJ7_)U|E{(DE0%KtYqLs05 zSr0Wc7Gc!G8H+UP5V*Zjk7uldQBPv5qft*~tdmjCU@Xe0XE7FS)N{c<#sKmei#6(n zjCC>U#f-%n^%BP7jd~elcNq0~j3pTLO2)bw^(w~fMtwPBcN+E8j3rXNC(ItYj==jaF<9;RsDgw(J{n(o&z@q$;ix%>|3HZTYT~(d9!_<2RO7yO`D8jai8^21R8tm8Ut+?{n}QN5lbJ zcNf30JrkZ%+l|F$IvGRz=1OPRit27GzNQ;XDP-nhl_pb#gI~W$?dTVmiN0>otu&h| zGHaNMF+B+hd7rtE8WgGb*QwNDpvNgW>I}nHslBc+}oN%eAAuhj~aazp^u@%!s$P& zSeTSoQQ6K^;r@nZp!HJ?7iu1+_19^r4mcgrNn_{F>Uy_sbwmD2@!+Tg(f-d7!oE9H zoC=?n9A>6*B<#Z8pc@KXFy{8>w1qKMEx>)?V5W6G+&Wg^;8%~32}yN#7-JY?hGS)t=>6;e6%PD% z4G*#0T|>b{o5QO+sL}O5|E{391L2+`C9}}%1|YW6j;=o zG3uJeWLv1|&2etCU2Ajxs~khVz`Qg`xC-z=z>N}K4tO`hgKAdnM~zUdj0Cq41bNvk(WzRU;hw zS#uU;vv8N&L1ArOXxII!I@Fqjk=8UU1Qd2)py)ng%@M^NCdcs0y9s|2Wtw;}uy!1e zE}eg>%a)Fb2-tMH*J}_*>}3geOxK;4I}T}QY2Ht6AZq($h}sydm=~L@Si{A-*nUd$ zaM2h$G1)ec^vRrME76^>xdRbObJ_~E(rqho@a7pJze`-S)d4F}ASi?E@L@eh9inD% zrl{?fxbrVvVy%`7nBVW$iwk#7Qoc_Y1&NC--`$5uf2$IwL#ZjuJqPj?^J*FwABgDKOiXMZfVkXiNaDqOm@k$hUDxkq1c@VOgQwds zmW#sPiIFFVBO%1=ad~30sOp_O?qUU{*1!~Uq6?W*i@*&m7N$V@zF6ttC-xFmnCBd| zf$Ek(t|uNAExr3G)&h~58fUo(6Py?&@>Aoer8ISPw6%a(=Xt+fC}|#Z@Z(q#Qb%`O z@pnn`3`%6UuqqMXXQ1uk1s${%isC*Awu`M2ED=?GFvq!~{1T$U5;JEf>L+vUX)H7qXKDAoNf+5iMyQ6*R%qofArE>(j zzz;p7P@?zw&~88U$W)0w>_gZ3p~oDSXf0MW-c5e!yaN(Vv8s!vrnQMyuur0CW^{Cp zAG)wXqAB!sbh#gTN{K{g_|P?e=;?;u+DfO1*64?RRLlM=d$W9F^s4kW$!1@Ww2KU^ zNb^I_HCUJU&`v*e#V$Fz+=s6ALoY0o=n5aY-azv~Js0IjwA+Vn_Cr_Aljx;Bw7s8{ z9HW0>jIQ>f3;fV8ospy0`q1uv(JsxGFnVRFMAsPTp>`GR!tjz!f$g5Pvj3LA_FpB* z_HBXf8){|yfq-^b&o>M|YY0H}+*~aO91U#WV%YFlVEb>4cHgWI)f9NENz%y)?7v-8 zOswud!geV|Mk9&6pi`DM!Z~osR)X9+wJy18X17 z3dcq*R%>vhf5w1Swo6VQzHz{FBdocUkFej+dR1Dm$FNu(GDk%rhehe+KbsY>gV?~9 zOLmo_df>3J8X2CmfoXY$wn6R?jSRIlQr9$gY3ZPBQ>&3gG%0Fqg%1ANcBDR<8j`+7 z#NN}_a%oFuH&ZJ#PZO2*yllH9=K(5||2jj|jO;8XXD$p>#Tl+~ab9Y2@W$byU{Jy^ zpKiGtvw&5pvAdCrp?i`ao~OAlVpVT!C$I=aqvmkS-|6-8F zE}Qi}m@DkaG?JQrpKPbPVH1%$8>!VDBPI-vr#UPioInY;dhj&G>JS$OV^>fpQii;E zYwa#4Irx!TA|-2J5T4QwmXpg42S2>uPcCE2KvPO{q3I*1Iaf3-igsOEdTX%{uYij4 zkoV*7cALDz*E5Ypy8Ut)wGDN`9CN~|jEy+hPR60b=HMSK@nero{N<`e*({dE1g?f3 z9i+BGv2ti1(!73XqU-Y7Ta*51KWPWn8s6|Auo?=|;W(FEaxKH2Z3Ck?qkgrwp(A5N z$G6e>@FMzKtHsn|187Rt4jU0?tf`-m2T3}bgv+B!fhZU?SoFOKk(M)1aUB$;D4zRN)Z`3P7IhF!IinT#AyGcOhq!-u zH^sdORkRG!TE0Px>-?$_qZQXy^h_3ykBCpyof$gDlR!AD1bO72){AW;-mzT{4i%&l z|A;RYwWDp=j7fJWBw{{yXdIo~>vryNupQiircqA_?D>nrK4zFuMrmGbAN7Lma+59@ zELb}VLHmEg_K#Zw*)IA3Y$wqyRgQVV*1~)&bEamBf(`M)>9BRQMq!JlYO3LU>9$!N zt14oIaLmEDRrfw=Ymqk8B+U|g?wt_bk~P#$0j>wH`+eHEzyGSRkL~O7!q&{L92$g zlE6WWvF50{S``;X!Trh8T58}oN&YE=42-jTlzw1-_fA+t&rJHtVJu2HhP5EqPgr&D zDRJ!nzGNVEMvUlIpef`ofI`RGj8qV(?CB}0$G}MA1C2EPIpyiSqH+8JvP1raCv8{S z+^TkOmM}li*WV6}1Lla|JP@Ola#8<4T*oU>P%geLne3h+&OLxlwB~d7&$f#D$FvtC z3LQjzdEsK)6><>-Fu(Rvyo$cDrfXz54c0Ke{ zbgO4}y@Qr`Ei}^YS1M_2o4sl`irOO0tur2m>G%1pQ~U7j0BK?NUrrhl*i>qEusJ70 z&d(A?UpY*g_(gE6ga2+6ctxc#@2TEy)*fqEb781D7#!eCSDiOMw7BXNn|}6L-z(>6 zSeuC34#^?rAQn*$zP+>9RGb)`QKcJ;$-LCDrcNB5VnoSSxH~_0PedxUJ%^Gan*CS&xEHwI89U{SB2? z8XU5bHMFT|v%9{%v>LC8t#gT{3hWsfD>u5I$! z)BgA);@V?fZP)7kniklu9ruB?PZh6vBEfd8#jj;ba*_5}91C=YgFW=ApKu_uRZB@so>T5@T-hLE>=D$o24KSa{~9uYfs=LR<7BJjWhHO z^uyHoy~Xd#H5anZO^owgq*d6#J%2}uH0AjgB{HJtgvgyccIL!80}bUlCDnlOAKV*+ zJ1B8@&N(q62&YXV%mU+2>>Pw!0poWS?Vk+0c>>hV1<<%0Cg$n(fVp_0bDF|B z&8k=ZS^t0U$X5-5p-M?MaKzj=){E+&4^vuGMB~q+m6fwZO=YyU4Z-UG>}x9C^N(8W zF|bD5w_doPNyxr(I5@M?yA=no=G3mc-6-uP1T3rGB(%Pbe5OCKNm~%aW{#NtY>bk( zQB*#gFySUEz%yT_bpv^})hY9=W;|>T;jJr{+{Ek_N7&n*Sys>rOYgVjc68)sky_bL zY2758mC?PHe@Tqf?X8=jWx#)8L zMgtDpehDD)b_w96xsVjGH)5zLcrM!3+UDWq&uI?^su%Yaic3Fhxn|q0N0DKCt6R;; zC~@57cdpY@k1matdTz^k86ES%IcL4b`Fg64Fq9Ho+>x~W68G=i8h7&|aCi7R>1%70 zs9*F`+(+C_?_bdI4%~-b$KxgA?It~^aO!h&ok~Mbhj1^J;%F{?d@)3+@O3D7ewZ?J ztEhfHF8ca%2Va8MvU07KPqjq-^V+!Zsuw5uPQYtvybOOjb`bL_Y8zx{Tz^bwrGpU5*^dP!H{{A84~ons<7R4<6?)-Fi?8Iq z$FI8~k+y*S_Yyr%u5HjQ6tx*~u9fMOy{I`2j{@7ITiFF|h=S`ieryZd_P)<+uXLn{ zB>gdshEo@vXhEB)z7wndUMF9pB@Kd{VRefoFWebzEtD$S{bdpRUWglK)raW2M+(_k z%;anEowyu|GtaPW!70Z_myzOz!bwV6p7QE$3bVb07P9z<5Q8tTR^oaiI zXkqufiiM*esBo}*){DXy6XUMeQy2gJuAY@$IK{pg9c?@ker}^Cj(*~x6L6Ghd@*vM z4?PQLJQ=)x%)y^qPj$>Soo{YI`MJ#^>ZQcQ8)ic;gE<{eeDd+- z2J{it)x&Hz=K1&`b0_;Al;9~PGf^Zs*nm%c(V~C-5G!)VBq%Qo70xknk^ZsyLT9mM zWjBt8C@)X2-Kh3a&YAj_Xgg&KQ%+tzS5)T zxAHB7aYjpWyDX)eT>_Gtd;cm=557jEc={@CjP%5aCm)OtWYih9aO>15JgW$$n82pK?n!y(?B7-AJ+fwbqhe>+!T9K9&tt=b_ z!}kzx{i=Vo7kiy2(jf$b)0^cJhMs9Uw{{bGuSNCw0Ap$E1$%gl9Q^Ukj-V+MtJLoVt)M|wqPUo z*Z{xjJV#3SP3JA&J=`{LmVGHo*5esklvut#VMI?Z?Ut|W>1_g|w6-OxOxr=ia$38Q zvyAn_!OO;rru$=~;7}BtH=DR%!{BIdYmh?W4nAkSsM$bUXzj7$CmUjWenAG5T9QVz zj%AXjfop2TcA>sL%_f&yT6k!iRQr0b#EMa%Kv^SJPFBA%vd=4ibkfjgfbaV%2QPh0cA^&x z2BEAVLiajY@-h*-F=61X9HW%JfHA&>s&p{>R63Z!0PSExB*bn%h_a0%lVMCzc)!MN_RyQS&F(DJMg7G;S0)MX_VzY**2lGW zRF)|G-H`uk;hywNoBg_pkFwhCq6x<`{;r`9U#ULSozeuIJd9DqZAWjW5Io3tJhSPWHq9+;1;YJKnmGJ6K8`99 zXWve6P25h42T_(8*N~qU&0EReS(kqzy+w!oycVfIm)qT`O#epq!5?G-qYw5BdVc38 zKYL8CVI3sF$0R|g##r~_A|gK2j-_;2r%K%n5ALT$rcF3&{4M(IMV}~Yckqc3;_S{| z{j9~Be(PBSv7wzNkw{~mDq$(@d%IVA>)+g_IXmH_vj;bd++E2^r%F+_E0K!oU4xT5 zJqJW*-}Y2L%oP(Mg9ttlEE3JT#&)#Y@y3%rUZ#agNw~Aj3WP446~v?{&)fP1Srzk_A?)u&_Vtly2qxj+51bDkE{fm5i-KZ| z9x=?SiR34-A~6Rar^-(P2qLjQW+44Y%c%2-nQ;$0QSNHVDFz`y-Y zNE5ajIC5FdW;JyaCRtN&O;$1MWc#1`4`f4w$>w>l&eyEg_+gSL-;+4ZnszG|X-tW~ zS@-b^gUN};Jz4pSvfDm3h3MqpH<W?iXM&z)f_R(~)gqQD|_m4oLG9h9v_HvCknHnx-4?O63d%sU~r zG<@i~bchU$u2!RqgXcYlgo5v4a7tOn$XAHOYPoNTHAukKM( z7JYGLm3`v#yq6AUhRFu#Hb}G{`dG0#@pUFXfZEeZR3A;jQ;ty4{iDtaN<*Hvc{hpL z_D%S`+tIes=O6Syr1~RUg3=^8SRMS{2g&vFye)Ilb-31*0&R!wkfcUNqf(RMFcFz9HArzyTu3L@PmUfJ4F7G-zA#LKq9JbN=DNrGm2Q`dH=m5 z&-?eDBL3s#NYirYCm;WYtPuqtcjI$K`Nz?bqv!h}#uFmFj}d)Dbzv?&is`Anc#>2X z=6TP(N+u%M!BTL3`#2#wHvQ&d?beIfPZAlK5CI4W-?*=wI6gd zos@?Sc2KHMp7%%X&6Cc)$0&_`%+Q;MnYW7Y#)L!@Jw)*{QSJwACOX#+)V>h;jd78t zGei*Y5a15E%f!6KC&c@`qQ&*pkkp*@`Z*+xnOR$>k>7%j=B0Vwf6dSH{!MqWf+MM` zj>hk-`E+K4vU9m8{=U!70pE1DDsN@&EdKsvl=6yGWVMb~V(%1HtuH8+JtF-2w8WV8 zZjNcQn%>O3ld0p}%&sa+!&TPng36jpRCYdgXZ7`o+!cSu>%F5Y@Q&Z5!||I?7Rvh3 zz&OAv$j1F}Qz z?n-{c99P`p^-gXKyr)>b-YIs^>UR9iVN(md-l@g7OL0T^scziMaj(U_33n~-eYhKN zAI05-`y6i2oo249u<)ZMkK4xM>ypCwS(A0ty<Tt`!RlO#-Q654UBON{L5LCv0m@-T9mNGxA?IeU+49H7ljgb z_^uJ<0k8La>VM4Z{aY5wb6)R{Mfh7-0$ieoMG28V}7@9_NCnRiqUnLXalJV80M&C@L! z<%b!bY^|*EJVNE?sU8=VUzK=Xr}AsJ=Y1+q<$J!N@`q-Rm&(7@db-7+{ISfFP35@~ z&m&a+BiG~7%443_sr=^!&-+w1J3ZgT@R#wsP|p*w{7%~;v&s(PmxruJT|^dtNAVPN z<@px9)$>MI{;1{9HkEytQP)16cQ8r7liZEJVEZrwh#LG3^dJpwP(05i@&b$A>N%Ro z=h{B3QQ7CI_(kYS&j*8eyyxRo{$>aBOnw*rxOFOxCVX9D5|81Nj-+(N?@Rvz3$w$u zRDD*fE~V;p zHveM>%iFph-DxnP>ZbSRqqya3x5_X}zf0wxTE52kQ~7mE`Vi%>51`jk&zpVu`<9d7 zaTXjGk(gtz$fHyJTIkln?=Xey_U|q@JWAd=>YXK zTb)j!s%ERxjH;TgzHg+eW~;wuQB||m>0MOSY<0Svs+z67-9}Z-R;TMdk^T8@%MZ;e zgJ&J;&yO4Rw=(z-w!hV??8h>^h`8Vr?@f<$AZ(~(JaY%~A1ptXsq9=yo%0@k4>y4I znLLhL&cRUs$gSHyh%gekI+%xY%Rh2~IaU{%MP8-@9(y+2?;poh2IpOo4Rh-Cx{@3| zl-vGEOSTg~vVGihq(48>A!4pRAN{F6p*+h*@I$s{CsuW2phTAkUTXJLj)b)OQtw$Y zl8>}BZ$syEp1+Lb_%UrPb*_ud<)u*w(YlHv-l!l(>&E_!f2dH9Mo;0Fln-m_A|K(M z%(lI~E>q-{zSEegxD?P0zc!K5pQpS+)>?e7m z?fe$had*7n$v+94c^%e^b)ItIEbXlLjj`3Umg@LHI(~%isn_cJP~S)O7?1ZPENMA_ zh65h;8|v7AdV{Cw6p;6SL&#%jIOcH@GNhLAkXp}Dt=@uqi>DTKn>Czq+;}DDIsOe# z=!@+;$IVy@ZsVfNPuG*Ut++!}WNYf@NofKN{E}T86OrjD1gxOFq6wMZI^9!4rER*W zfy#m3dYY+pM0#RRp`26W$)U2W$x}+@g7-YtR37-FXAhM}dXX|H2Yalid2-~@Gl z<}YEaS{Scb_DL84s=)^&jO3=l4HDLW#qYwBBO9=`QwJCw7Z}LjmDA7vH8`3|7*P`x z_!tS3;i-SDgpn^bxQh=?0jL_s1Z*AL~Ky zqk9H$ndboLxNHUJZ`SGaSwxdAGxMGY_5TDvrT6yruMC2h1i>qU;8*miMyq7_x~Jwl z-p#c)sNbK1;9$9q2H}qf!QTbJ=P}n>6ZFR1D+nNcp3sPSaw)Na4N7monloVloJql2 z|63$}J`b~oiBd*_U=aqJF{^MErO0qLyXI`lbV}#wAKy{Y`p;3>d+X4DiyS{6b?wqz z*~OHVDtq?=T5@EE4JxZU3z*h_Vz?8FXB9RZ4U(YdRYXA}z?4r_HXGylS=s+9m31M8 z%@Y1jW$)Ag-X!5`sB0IE$4|OVk^1()kk}L*sDUX#_LmGz{Zv+n_%ln5OxbWTSb~{# z2B!N}w!IL7ONC6+V6hCs!(s?G)6Z3QkOWLYe-|_~{Q|K-@t7nDysWYYXw1?iycPuV zB>^xp{Tdn(Lunz?ew9r}e;>n-5IYcnsbGj$GGQTYI1ZQ?62Bi+HWf~xRCa{^)Noa0 ze{i;SFo&q@{lkEZ^#SHMmHi?IaDjyHQrQwGOx`5nzA9T;3izCabHH#H`b&o9u__w^ zflT!h|A5Nsmja*L5%z}w<{8ki7!A^?%ulI!Xb)IwVD?3q9gXO=S}X9!u2sxiRQ9I} zs7ec(-_x4$2MlqUztlHZtX}sa^S9_<1VoNYO7t(4Z2?1t20);87R)J0NN_mdaFs2} zfriH<-j@ae<7$_x75F3JY$%iiP%6}JR1kh5@J_V3j1CB!LuNE=(Iss6n94R+Lm=AD zl0a^iWsuf~CA?f^k5&L5F5$JnX_pk>w}DRG?rkuPMF;7G?e?jx3_js9ODAggXL=q& z6p$6*rR_dLT<-yx11G{F((bs*9xlgt+JKWlXW(Qd)LnP7c9dvR080iIv&#PLHzk%k zRAz@o72369yrn1lYVjvcW*M#GOCLDNS)HIIPi6C4Fkqh?fJ9@B@?-F*%4&~dN}Liu zS0ji&fN@zCt86#uvDFffs2T+Y6zSBKH>el<&o|(0m3;u^4JWd^k0{6mEWOxr2yqL6 zSgIuW8S2_48Dgoi6@fvy#Qzfl(|9?>7DQS7VZgaMJ|ql2<{}eQ2W%8V;xM3~Z9oXt zP`m^15eVrAlg|SzO&*eix_0RTgcQK!S!j?^5Q5bE4-#Ot?o%N+ZuGAOd`1eeNM){$ zm?LwJYt76?IVey`jQeph9`Kj#M{HSZ^Zr3FJy zBGprvua)%vt-9Eh5}0h0Y`CVf`_{q-qz2X~B$6Bq$kp*yvIt}|oJ?~#fW{PB2WvnZ zoKL42fcta{SSP9MWeB85C$^Tk=$MAB=0EHM{;WEc)l7Klu=nQfM#KwF`J$p;@q45-Kt*L+`_s!~>T6T%pA(>vI?l zO_E@l%AUs@a~UR~&#FumV!YHS^m&yAEc7$vVv;aJ5;(20yaN~@oi4N$Ye6L#(l!zr+H5K-fJwPDsjZjF zeueRdK(-;!I2`n(#x`g?xE}CooxaTpC*K8_bx>Gm#J>%x_QMRoa!zf}s4RvgER_R% ziw|I2Hbljrx1l1P)V2dVrh33c5Hi}{Q`z2i0PE%WBl^=4>vG*^Y=5CA&cM?Y()w@n z?b#%Q79vKM4u`?z|3CuDISW$}hQuIKXApL`$~+KQky8>j2oEyS5WX2Y!>|!Vi!MnI zdu{EY1q#!HFKY$OI3#CBS zD%-Uj_zDTv;5j>{%qQ@hsB0Ik|G2{TK%-n#3=NNH&G;iFJ{bfzt1R^l+RjP_Hz4o< zz!^Fm-cDtE$^kExFlE*(qM>TL{qSU}(?#n)uJBAaAxvn@X*d?2eORpwrwN}7f-QhI zNrF$o2b_TOB@B%#;8gsKgf}D1D0NGP!fRFbRuk~^B;MGdxTJ>RU#Kkc0_LnicK9oD zbFm*mJlObvd_c}|1XtMt2&^2{`$u5YdaeZhoAfD+xC{NyAq-x^N)@;8{XdOwCpowI=F zazhdME^yif0=ObS*9!cRFm|*nh*uFw#_rgMo48!)= zf>C!?DCxbXKA>3R{RZqp9Mc?@$_@vpH(h{nwf|pwVFv-^V$vR)QfmWYfVTmUwWB_z z?!YBJm)8w%;VYH8rmK7v_bhAW-+Go_=i}8pW*OEMr+F5+CchBFQD^fgGw^%20ln8vbs$&Yz)P5G%(yqI4VnDhq`o|5b4 zb?z{wT2KJ%Wja7L3hASe#%nKNUQA~lye>o~7ou)n9>Bb8+TvGZWm|rt)RxJ)ZeC-M z#>=K(jC6qgezyEGs)8kFRF$1x6%55|Cr87Rr|G;PP1-i^qGHKQI+^DPT;$1kTx`3v zbKS6$5R|x6ao_maSDI$N*)Zns<4W@x@BD2vz{hYu2G>mnz6b>qt}!tCgz$|9zSh9! z8isE&@R25+HxI5888AN&?ysBhD%@G#*9}ZDA$+_k?>dwIU6X#UfxRaEdj|h1lRna< zZ!@sXUu)oR82o&b|9pdgseylH(kC0(w(k;?-`4*zlfKU6Z#L=VGwJ`lf!P6suQBjU z13zwHTi(g0ywgnjeJ1@515YsNVFMp$U?1)*|3!np-N3_5dV|5g-K5`Y(tl@QTYrmz zZU0)~JRI>X|80|gpUHowDWCGj^m({?Jh^Vl_t9#k`YY~5(=0q%tpq$}oz~N1RGw0h z?`q2RrD7UlipCbw>hWyn53rRR0tqKHcRQZZX zFcwfHrC}86kA;J(v??48D1T{b0A;gX)iu27R``76gyCGZKNwQwkw8GrTQGn29N)Cb zQ^50Kseb@c;dJa!LpjLHF3-Wg^Khpf;;$eWJc{LBVdS9$w(>9-B=&voDUb=khcj&| z?l4v^-eIWRyhB*>c!#kn;2rr!@$Ob?H1DuIV|X6{8^Sw`N+ItMp9#F9=1IIm>8J1x zt2Ui?5I2MOqm??BcL-<^@38N4c^?J4&HJ%RE#Un)r55vkyi&_}AFb4K-cL~K3f^J7 zuH^lrN|o_GMyX2PKL#=8{o}BYypL5X#=A$UTHePgbv^Ge0;_pHS*f+W7b;bpc(ty> zos5Ge$sYc>>6=PDxn1?1*#(aEj_<}_^0#+9IatYHTT3r~;}uG%WLn!Efn9{z9c@hl zle3j*fogkDU~;(9LwKFQ&PRUr2bd zz=ebt6D|^%JyW@y@DzdBLzPz&_6W?Ls$_%O3It}4Rn`zz0<-5TYYBJ$2NC1hgO#fZ zw+LKB_-4X;1fEOyHo{E;vu7*sCj6kl?BU9Fgx3kop02!~@NELK$15Ksyjo!PeC1}s zH3CxtDw_yjDe#qqcM)DJa2eq}go^~GWK`}YJVjtiNM#FQkHD0a$|T_efhjSSorIOZ zl$^?L!kzzS`zb+{)V;PAfmaiD6W$~6TEYc{n*bx9n)boAV%&r@QfIYxl6m<-P0YB7WxfYsWS|42@T+t|?~&qk2cx6Uij6NbbyK z0XcO$T$g`-dt>Yr)wtzU;%i-4UjW?trr0s$y+YuKW>+EOdiQ`3;9OeQF}K0%E>C#( z=08%rcm2I+_{?qbyk_rn?||^O3h6m$yTZ=N1-l{A%=eB<2?8u`Fh`Wi@y^6RyJKXOOGB*}HET3rDg_E=Nql z+mio?cP|nC2{wYrKR0^!v4{eopg5Pw-T+GKn^umtM6?5L_I9EHy=~t!wb6Mq=wC%) z^-b~X*DnC;5Ew1odDH`pCz=q|^VW|O3%e4lx{1GS>ub5V*R_nz|FP>XCQCN<2eTt- z!)>^edksgK7`8OAtk9iUQ0M|pA17m8K&5QW2C}$457AQ?-GpdX<9)8d`&`|QxxUYD zm#%Zwt#YfCM>KnT$i?=<5x^ZS=y_5jEN}L9vw_Xtz2t_VquX{#qyGpVKU(z3T=!!n zc=Ku?fF?I+awYN#lc%9laC`OF??yMZAW^Mn8yXkqfWJU20FN;qNH?Xrp2a0b6(-L| z=7hJWZdH$pv)hZh~0)<%b08XzmRL9 z$(4W0ScICrU97lm7{U$SuEe&w17mUDn#|4LFshz3wkdz@pTHMEkpAgn|2*Wn ziwKRyt&NZx(_Z4BYB#D%c)ROXb*ucuEaXkT^G}koKOhRKM1{zX0%@k=s$%1N@xk7 z!$DQ@MM84{9Yg3hggyo6L_&`fngD1Vp`Q{u5zwiG))S(zPA2p6NV5lg7rIo_`PTmJ^FmOQ%}yt|ARxGDFwN5X`$BOhYtAgFcLZDfKfkQIIHLD5Yk zwWcSvrb`i*UIGj6VIAJ2{Oypxoz31>v{ohcUb<~9Yi=F zV%wV2l-N3aA&Nj~xHp;qh`M_`$C<4ypgtp3A$n`K`-nZ|iJS&+UR`on!kgFjeO=7f zmSHRhM6@C}+}qKhOIULN*}#f)Y_}Wb_o^fIuoOo3%?G9(D9FfBFrGu7&VhO%@p)~Z zu=NgaDDKSJmVnV?X~TzmI~x|e8dUzh+uUr!&NY7_1&J5d{53^M8foJm_ttmaiLGm1 zCQXUouX#o8ok#3SynDn;4GZ@sauOHAxU*za&%S>36l`rNNbD^C6-?U;iw?AGn@T>b@X-$yri3uvOyrBoS85d?T5M8JsZgo7f$ z_@;+}?B(3^c5kmO$5>PuAWE9ONf{u1go@U?U?&og8BpSFZSZ!?^tRq`814eK!df;g z>~1K|g9UAL4Z~RGc2HW28q6pVI|k%T^g?)ga=cx2s|wVO_tvfIQa6l(X>idrz<%6` zTXH)xF^&M@Rx|Ea_!)3a@|tt+2MF;}?IUy;L9y`Ev}C$9W*np|kw84Mj5KAB3Hsb>Km}htWdiIkJeWlNRDJ7Tt1T27Ey<3Z02ud2kse0MYA` zz$i+Z6eyBC5XD>JX5>&}2kF>vI`9VK)HM#gf$E*_z#E8D;~aRD{(}kVKQVCIc8neX z@0k={L(v%GaXFHL*GJ$VaNv0cz+2y=s z3T>lYRQA zWEF*e#F?+djIxx~*pQ@&h_+4sA!Q5?M`;8d`Kg@AQA&%+S5=B zdD=rA+lw`gbG&;*$GWLwOFB3~)3Ua&p%~(}k9crCTh8(B6TH!d!25*7gD55&iXn|j z;=$l_oa0Rj-r2+(X7M1YU6>nY(e35Ld#Rne-KlOo2PLI-`(Q)M7rTVpvS3#Ea`XrW+psbHsIr zli^8LfZ?&0Ds;S**`Ws;8GarRj$rLVy85Tmx-MwohWpRrx~MF>O@XFhc6TgF`4&sL zSW4L|D@eX%IZA6kV?FUncA==1tkKYKx*gLm`+TFnN7lNrH^fOWmg0L>z^ln^!dhWjyt=wMcLzc%J=KBc z++7GoqyCEW=G@%~27ty{YA75E?95$@5F$8xWdv~UMsO;k?qv#ovUK2Z1<5VjX}F6U z)df;P`B2=-Bp)Q0@-pNomLgRNa)PvCS zrxJ4l5kk2K7@CXF>{l4N5TUbL8CrnQ>k?XwQ1CB|TZT}*gq9<8 z>T8U<0->8a7`hUn%l^(#8A4~g!B8ba-+h~*DulZJ!O&WSuKpK8HzRb`#O+}!cJ84C&mkBZu`~C1+_|_-#Y+D56)0k#8AKxlGA;UD7`%yL=d?)#0K1so z7^-K0vYFaGs7^Tx{uT>%74D-RTuCxS)w%1h8x;&yc#NtCBG+0~kL=9-oit!zlFrW{ zX-!8rOr=?3Yp(aejVD*JH=}Q|SkKkt+}=L*Yg4vJpFrM(9%Nx^wdDzsxdO6rlL^ zXsDa!lD*gg?(0Hm#vf?GmcbRa&m_ot_Sudu}q zyk#0scC_a7@0Atk0rpBTmhP1p`izR-d44*(U?!x@rmJn}-zWD)l% ziI0CA`8QC)`sRCTKf3>9YhxTz@(EptSd98V_x2jGj2%U;$GPiC>mUPJ7dtGYV>1TQ zAHcJafwU(lF0R=CX5~7K+kQ&lB1t#tH>_Wx@lbugjuZX1)LJ_G7S{+L1|^!(T=ab$ z#>H%&xyV6-@-n=abZuBSHD*NCX21;kP5mozt`Ib#1k8n~@gKOfTu5oT6}<$yOh@$T z5b+pITRwFNDXAhQxoJvLCg=NuPd4hlg4kaja)=r%eAsn?^XJ_&%?2>1k3DO(7v z%PMvj{aN42*%D1V7s%<0P-Bwgt2l`m#DE0Sc}2KQ-nOfUkawcVYx3->8A6`7;hBKe z_4ngE$e_gS(#UL>*Z@<}W7VvvyMGTj?ao(CUXy30X|t5A`qhE*pY9%33OG3Oq% z7z$nTlpz-LHr%c3jlz*lmE12fJ2-ECqKh#@c6<~?#5rUy+6xyN1v))_g8gO2=|V3@ zsiqGrdQ$E;R1=F>G=fG$wN7gH+8;VqJFGEJ)Htj$Pqkk=tUP#ZT%+Nwy(OYmU%;flk_KW3MRchEcD>ZDK4i~1byElg6Lr_3q*5PCCA25831TqcT4WbTQ z`#@IlS}5M)wTOb4!O~3sox^qKe$&Dscr80LZu|KDOmnU%d`F{YxDoHM*P<(RuZ2o0 z?KC44yiWHTPiyO0M#xi*&_48JSzxf9oM_wG{ejPL{@b1$`JAICf2Bu?_tBH5$Y>8Y zeF#1I?w_RB2kXh-YqWGv;y6LZyi)Jk={dn1hyK|)K`b6I6Gl&2Ag1*XhwssA)W3)) zhJNOJu?GFO{$WhmFb<`3!aB7g#)J3`6G3SXPuKP2#7-SpJpTh%1gP5gwnKTAssHmD zFWq<;pH?wk)-PxgNQ{rO@oD1|ifb{hE=d`ma5-lFY^k4DI;@cipi(pKq8IJ zL99$f7f1Wiek?lz#@#H8UR=r{xHWlIP^k^{A+XSVj<-8@7)y+w2qMUyR7F_(>ms*# zHc4jOoG*J@`uA0fu0tHOCGaGr#a&suwbg-oDp0XAJ7~A|z9e|*xp3Ou)03Qj{aMj( zFsb#hXF1Q-J0LI>BguLE@`dKS`n8G0t7lTx=9@C$3)oTF#gvp}uZGmP{QV&mr0)M6j?oyg^#cP79-G^ z#)FGZGFcC16TU!ftHoku3M_4mrIL$oxAxaQHq1WQ~`h+j0m$ zo4@!TM9D0rg{!NL$qofeAyiaxK01b70)*g8|Gwt=7vD z7P?+G!seGzlse@g|4^O7-^0fgvy@%iou2ajKpl#oQc3$<$ZOl_8pdg(|W?i`|vQv_2_LpjL~m? z>70Fi?b$=tD)F&w3#4~03di7ka#PJ;Q-hIE_6|z@C3@_v3Y-x%K21#(JRb2;10nPi zdnZulfo-F~3&U&I2Cp(0MR~M$@a>T!i4c7I2oO6E9HH8N0rq{!BuoPda7?L`zr9Sn zpSH22s$aJ_4MxwN|H<9bK8_60CTTfM(&IZFCdtZ;9>xb>vHj`OeJqew8SUjd$Gf#a z9f}3ILgS?^(1mvK)lR_l>d!%KPRuiR7Nn2|DCWStq;^#;Y1-f0M;@3prV-K#y~p(d z`+IVt0_V&y_`)~Ky3opJ#VjSOe@A{EI!cm%yj&@qJH7EFbJ&Caf$<6NcKC#~+qnSO zS(hA(2c+s&?at4?iAP}?@O+f(u1TkgZPR15e#Xq(!wzrThCgQIs%?`Fb4Y6A^B#z& zRJHN74+!&t$hJFlm@AHLU)EvlXRG#AKwvku#}GJzfvXY7W1s{9ZilpAh5()(SM7@t zIEsOJ2#jRld<6J9jP^72JekAqBb4=LbhB)W_c&Vo8`p}9V-6$)R>U5I=9!X z&I#hdeB`rHRyz(W;sBy>7e}^LT=g!GCOLJ=NGE4slzo^$wYm*z6i{9LT^$l!o4x&A0 zH;ML8udU==x-}(Uj=`Ifi26%ee3#j)MgrW5ta&Ll|rYU?yO(8B+{-lmuA> z;OyVp445w0{SN87>2WQx-sHf}(XX1#fZv(bXk@szKpo0}f3?PgS~#X0A}eOowckkZ zuoe&$IVmZE!ZkT9DD+#t4cXJ3$Y&Nsgf)S+~KNaMk-rAG`i(bUU;{W{-HEn}Y2O5OQ> zy!ZzWAA7$FM&eoaeIuN$v|F|RDP!omRV|LWN(EdC(K9@A`*6A_^_)Lke7M2aZk2MlS^zBgR?s@XLMRYG(Fs$)u0C=cJ zJ<3YCn+!iyzsbVRPUd0F1N6YV7D@Zi+1dAu-XP{{7<@2scn4q5d;uQSP~4rLYCJLv ztUKlr4x;w79(-T3lOf}C@~Vr-=~lQ7hSM8>4tCOg&s^!#UX4>jDp8M+{=xgYX3GCz z4pY{3freny5_UPgjWEcL)EQ40zFEAaXidlc z^jM7-;%%W%lH9R?ugMTic?Gzb*C)S~j@lzpUCH~?QIAVhck+Abs2@obeAI5msUMbE zn%Y03x424q{#cgj;+>+1AC7YlGEV9f9=#a&V|OwR8AqGW%lU&+Z)pQYA4 zn0)6myl+g76!_s}f!sGYdhc}%L^H*~>EJYsenJO(oPI)TSs=fjj~%7P?2PlC11<@i z`g1s4H4UiERoLLYU)Q-2H}wC5xWO-f7&q+KY{m`G#BITCG+s@E+n5IL4%|F=?+k9p zz8kj*c$f{hNqh)xZs8OxAmBEgD@}6?XC%Mq6x${$c zcsY1WJ^V;I>OzU?N_x^!XG&Ce^7wSrNfPDM!!7SaU$W_8D+fsKz)`=Uhwn$fv+1EJ zH>HO={tIo%)I(EpN)P`V4bRj=DLMJ|d0G$G%6((9T<-TLZxa7^ zt+#D7>tH;AuTL~Egi}sEa->pkxS|f{Q$lwAtsa@%mzlY;@djQjqR@88N=pyVHesy* zHId19^6WWaIo|NoF>@Qc z+ibCu1Ub0k?C#(Hh=MO?n_j_7pTVaTkF(6R2Js|ceVCl)STH!J9|bOF(}Ns^y+fmA zOs2)9utS-H(|H&#GACPcAxNM1`+!x?EN}0XX&$zwi~=TqH7liN1|_SSUH$<1PHBhG zcV!CwVha6L=$KSj4BbZ>j&gae{O2>1CpS@4%$W6miCqda>-ryl2(>|`N(2Mu`Uq2!0?Ab0Y> zIqVZ|Qs%_x>1n`Hyy@E>zxTt@CneX!xp+@X@Qfl3{c?RS<3N_l82PwJ$f6pzG1hIx3WK2k}191pN0zdeJE$0&iNgpsgkPl^4# z4~%iH@DEv~_QPGVtr_eIyoZ2$kWtXN6Yy1ymL3HsSbfQ_zX=MPI&rnCId>x-&9jTx z*?hE@zmI{1NT9L*jDaJPb)}C(t;86>B)mm$Q5V+Heta_TES?pTgXcGa1~dD2T3{g$ z6sKf0zkY+G0r~ZJ0UEp!V}{&_i$UQajhLKjgmyajvHxF7*U-`S3lfDyZZbna*x=+- zpTepA#dz>{Xv}=_$A(k-$<~3{`fVV$pCZo{HXO@3Yzycp=#vn_i}LfFV{z;}@jV^IZ5^eCYU@ zx;J|3I(v`Ug)I#XqP8Jf=TuX_heMJ{bPN42IY^WnI|0Xua`V4*D`F8kEPri1LT&5W zcOUA$Li-%uzy`c~9U>sFRl>{4pZ_EcY)hiJwH?zDX{~X3sZ>da7diL4nuD=1mZv3X zzHkz(!mLluKMB{*v=~LeKv+$LQa+5Zqv)d%XVKce1D!epiFjqk1StVe06883&m%1p z92qtvgDgDl>o4J4A+!?ycX)In;X`27SPcJwa4Q)lH zEE<~LLVV8}y4ceH!S9PmS8I)U9b}6H@53?QBl2(B0(djcMq*q3riJ@{e?VSDy?6Y6 zj5hU6`Sp}-p6F`vpuck48UcRDvQ63H+SPZbVL^KkIllf|Mvm!EET&|hNbz&}6Y1At z406WoR(K*qm9J9Za?eesMw#;EoEn|0i_9ipdU7q>k{MH@)Cf>!pDguPV=UkZQ0j@8 z2}!7e4{qpvlmSPDeQ-Mu<*1Ody)#p`SF3*QVCHt)H(_q?72)f`YwPu~^l>Zl^pW&R zbR~|YYxZQ_X5!Hb?I4p;WDmY%WM&zfQDhGoHCdkq_biNKhR4TWVxAJ@L=Ft34VoT}KG#B55?KXJYcq zR1+U&La}s@%ka@9Jwd7tmLiU%NBp4*O?qGmQ%#ZM^uq4PrRcGNTcAbIFrWy}&B zd7g&T#|3)WsRn85OdLJ`st3K5-3G~$>jc8zR`{gWu6s$*&4MN zZ-z6Eu*UIhv0h<{;MromPUb0DiK#yy!wE$BKn@KrOzRSDco)r2ZKs>XQC;Kz_6L7t zt9gv|dp`mvqLWU7WGoj|Ph$rRFq5CCaohAeD!UW)>mXKr zJFQV-9bNacB#Hdq3=f#ILj;_CSJnrp6Y* z^Y&nKEdQ(LQ0h`E#xqRYtjQU`EsA2rk>ZEf>|q$CF}cE)ksR0DdKB^xmjhjVGyi*Yy2lQ5g)pRwrgPBdz zo^z<-WkOaGrez$fy$;pZtxA6Iubi90(#Nn-`UsFy0`-oab27dCZt|2=UCex~w;m#@ zu4L(7M(KtsIlX`l-4=AHJebgv>>7X2$Gp}eH%OF4pW7QrVh0v|evHmcO+1FaWw#gw zv`56^SK%a5UH9-6XUMBuxKfDco1UY8593Yo#ei$}_V^vQy9>qR=ObFuvmj{$+co(X z8Zk!ER=OBxseR?EsV1|=*rE?e)O6prpUqdR+)&7Ec~kl0j>^l^m1j(a)4POwozkJL z<6e|x?bF(?i*(3RB3B0CM{EJX| z5OX3L_;`fR*wDZ)oW*A&W#@%t+rjl+l-pQ;0PCy{%G>WUltaTl;GJkWYSVZZD{QRa zr>m8Ie-W&wm^=ZtYl7;UrX{vD*6(p3?K4RCIFQPSw8Md9ONytEa`{3HqU~~^*|IK5 zqwO+iO%60$+NnTG-f|MPtb^wi%rTP`zjA;1IbNqXkaPF=x2%|H{ zphT636^>3^kAsAgr$O?dOZi>M0)7`VaRszda*)f%j-xWRz=ZHAM4o2Sv+h=Tv$vf8 zfD(3)@>|dt>)R1g`*W>WYv?cjPUBerH6uhg_LSuvP0pi-p9AVp&J#}4cwp_C9n_BW z=gnp$U<>!9w#;S3k{yYf$Eg8k=UOR&LQ5`begDPwz`Im&hhMB@?fs z#?lWbk|BA`Aq~B!q{^JQD7~6fMOhAlkeZn!4-Duxbi*W2)giK3UJv*te2haWsvo+n zqA)Tfw}F! z)brYx=%c1h?;yOr3eM0_d3!!^KOo-XU>ByIWHbpbRF8LW>hjRghnxZSo47_~i9Pz~H=v4$3I)sJO&oaTTs0_99@LC8_o=V#V_*JhHdB=^QK?02zKw z5t)Y@A8o*mi#7_vM~q=uhwkPVVYfZH1E2r}_$2!>_{*FjVY~dARhV62L0^Ak>aFX0 zd&@U$W8t}^oODPN^dkcHq;7I7rs(pj#%0pH8}kf-ZC^nSHiSgrZX3eA?&LctTn_Se zs+ChSntg00_E*{L~wNMBFd zIdveNEy5lt@Cg)%+0ptYzBaypa*HHm6-to5k2dj<&RV_|R;^6&;Y+MwxiII3O0!J8 zGxufG!guDgw&XlyB@b=iE&&?()Q*pQ^yF_^O{8-@aV{+F6hO7-rPso*e`)gpAg~Mn z1By1VE`0k4e^CTC;n;O{b)~Mu#Se4c@X>~1_xb`bW9GJKKIFB*Ro@~n$M0!(uQwr7 zXS#WGb1q9|dHAFtMHE>qM;=Bgwk4-u2Lf1i@=yOxy~^C=)?}oz?Q~>&XQj>d17yQF z60o8Nf`tRv!a69UgBYq8_0>sKs@Oj`iv3=y*hLO%n4KD)&iFf?x9_z?{pw{x_jy~CGak6GV*^zxiD*MuO zc1Jess6l8jJYn!^MJOf*u#*Vs1K1sm!wLGGxt$0pEl^ar zl;@jRUR6~DQ#O_t3I*{MAt|uJlt}eV{_J0ac6t`dd32mL>7)OwNgw@ZO(5Ja+A;b3<73TfWZ>~IK$58V#$0d|HRmL~VN!!xcOq8+}`QJ~mi(r(R4%csd6 zF|B8zK-%FM*^`$`vbDn}qR@ld;VXqXPCJZR#17-0d_o8xzzzc`ZHJk&uN_7l?eMiI zXanoQ_vY{yUDn?Y!zvPkX$}kUDWk$9rzM6`n4dPI4EJOK7Cl9d*Ao=aLYB+NKq_dM z>qo<8Hh2pX^)boNWP0jnC0VC+ZRjQH<4(s5KV3i(Zcq-$a5#r8L=s%Gh!V?=Lym2R438>VzU#? zBC--)zl15EyD&yGW@UAW&{ZP0MurC zjg|5LgVbiE5KU?RKTB;c35(jiMe%)?ZAiW7TGXaOqA15HwONL!K58?IQT^2BG(pTz zo6&;US8awN_P-hcE}o4O9im_@xadgv-RJ*{`Ar3xrT0mkW~R*nNw z@^LUyX2p__o*z3x5RTr*_{UD1u`)x@%m_GEdRwubI6UUTUsvoC_&W?A5?Gw{fgUmR z@Z=K3J$y52^0B96=q07?XQQNvhZB}_Q1rcudlK6=GcmDs&687dMtKqoyAyj>@5Tlp zW*m}^u9lCY<8crndQHd8z&B-p3$8MNjo!OyUVn$iWA<{C0iOog&WBDWv+Y}}DH3ut zfZ5JQoWW}bo}J$aHII=bX}^GdLUkPz$OY7Q+M6)zD67%?4#B5UL*1%8ReQ3Tr7<4; zL~Jda=aG=jKx;p-U)txG_HA1PzFW+J&ldgm8zf$8nSe@l_ob)=MTQ}G3H(BA5a3_| zzg>=_jtzK^ZV$W&p@7@3=b$h3sPr7(ojjdQtHex9)Og=eu6?cD*>JFj>sv zu0e4o*OM=KRV^=8zbP+W7SgiR@M+fY^i>C`VH#^VY0w(l zFYVj%D_CqTiZw0IM;S?#*>b*g-0IsZ;$H}S9A?o*td%#MJ!mM_?VJ=!zVJ?lUV&CkEc7qw z0iX>8)u(@Ja&+9%_iC}Mcn56VLkct+Z$u2sKza)5)m*w&g2&mT(kW?)Lz#yCi%;97}UA~6bcUOz(jB7 z)>WOu@IXlYv$4~r_9k{Va;+G8Ur^Va173r(Vv{w2y~ow~Q-US5X3BUAw2)5byW zkf$n$ZxM!6G*E>vp-q_Ri3O_zWga{SKTh$R+YwJNgzp#X#Irr)@rZXS+Fx24s6ieb zt#rcKo)y7ZC9*`Yb%i$u5M>hfh4D&MejYu94_KGSqo_itSb@iW%5XFQTf+f=g+CZl zff9dNxe73YzXUV~%2c4-AFqn3Krj@G@b9($Dix?M$LRqTz)>=}g=1{03M^WD(V}Hb zix)3e-isE^F1}zX?+d*Pd0V^b*rKfA?%OhX@zl0*&rWT=!1;ci4B;p3p;oTWq6U{!BhQs9U)XM zTob^8X$1v57761sUs~=V=SJa1K(#~_MApWsdEszb$;tpo7v0s$6sY9^WR?@F#2K!5 zNUO?uRM-)!v??5Bnl5Ovnv3t7@XID1>J2ohWToh(QB1zfg4pGeaJA8Y&jeylRH1Mv zpq3iVtRmvd_fSSnY-LSgBIwpMXRW6Oy){uS3x`qe3e5u3e^hrqDQE2v-l@(g?%VRk zl6YP(h;Q?xn6}uME59KVS*_*CR`GZ`_}*H6agEF->UAb~%F*XBe&>c? zxS<4$KySuGZXm3r871?3f2eVM87y%mj4=SwY%tlTOCP?&<<7_TQCz3u`XsJTx;P7;%db8bzI-WWr?0OHGy6{c?6H|a8l(mia;ll35Eyvc^{-r99%V#s@$Z zsbF0m9MQuAoSG2G<($`D?#KR?dG(F!3lE0hH+?XeN=0f*e325lRh5`n6jEA)E2J(7Mim98sxlmn zDesaciTUcate7Q5KCJ+h20_ez+U`(@Fa@ACZV;BRqCZj$SltL&|}*A-WuWlZra~m;pSl zJE>VC-Sxv}AH}f5<30&#L1)^Wy4)|jZsL^jf838Ve>TeA8Rm+Ky(XJ5-rlIVCpGFO zmz&?{+Uv=6zx|)yaOE18o4gyf*5&5czwQJ~V_S{_j>Mhzl;@uKBLh1zb!UHZ1&w{g zGZM$+>Zy0R8ScRS7~GlfBe=K@kB#B*Zp4GeFzLbqSNJ->2)^gvDAaE=%|=_6;3~lt z!Sy9vci{RyuAk%DhU-~e2XMWKYuL@84cAGyrs0~6YYDCrToGJf!gU9(@8kM8u5GxU z#dQGJo4D|nvQK#x)1mXK^jTbr~){t^lqeF7jKc)t~0YJ}DZjWka#vd2{BR?U^v|qT-33 z>652Up5~c0Wy*{xXHA*znXn{K=DE-x)A6UDISm8-p~9Z}p345e1DpJw99>zB5fS%T zMBgiI2rEK?NR66|`D0-6tl9HVkNGRqp%_Gnk<&;E$U5XDmW3Z=u4(<0*pi!P_f2PAu@w_E%jQwd@SL$R$U@J}VE(G3% zNbp!B+^xz@MHoxEVU|ZbSP8sIj&$Pj!dq6w77~y4@lN2a20*)spx{uq=HQ}@Bp&VQ zC}gG`wLcrg2M=hkrC!>>>rl{Q#96wSpVx9+w4Dsoe(naI2VrNu096I9BXALq_O}BF zq{o)WI}KC~E{jKd%}+nljx(LM-r}u9n6z>{;CL|#%%qLCKU*%l&f-l1-X!1^kqGl6 z9HCkLgU~&(_<3F!5MbH}JaGDYb)xn)z8{ z{58N9Zwodmw)`Y}dFvf`dx5tXc;vnP*?NDB2$sh_=F+u#Q1g`_e-`iO2wOZi@Z1N% zBybj=XWGRohyB&BO&pUy4 zH{$G%IK2LV%a*qe2XNQ@OsQ{MB-}kF{72kbKj|yNmgTu%z&bhu=I1f@7Tj5${SoiG zjtCoMR^hQheCZ+V_1R3gTRh$!;-(gWp)JTvKM?QLlr|LLPMLR>H|aMhk7qB<&z5Il z=bd(j@NiQr?TLnU&9oaD)-}*RXqX(-c0j|rx2)eYTzXXNwN8if;79${u-wG2(lA@0 z^-;sxqoCetm>LWnH@?Vl@%FTzr_;59P+v4Wk~c-Y(6D9*@rD~OlJchE<9Jh)D-CN4L;2D0Xx>u4;pznGfjdq6hM|29 z5kp_U(aV0f^yVP-696r}IqDcS1F)qx2P20U@Lbf#p31?@Vkzzy0;W6=F2TLYQC}@! z&sQ|Rv(>*A=`Pbg)_*(TNoVNx6K?MV=Q;$J z>HMNLABV8*ISnw69fUP{_ z3>&3(0iKwf>%Ic_W6<6gaOZh^(swlY&4&T3Ja{nT`~&dVkLJ2BLOSttjIw`BV5L3= z_`DNx-6xpzPXL}b5@zO+c0*4M;5YAZxqoW%Uk~`n zqtfNwZt`Di^51J@BTCOC7GUT|MBYI zfSW$fhp{yNQ7|c1pP7FY;D3+JmH8Fnj{{zu%0F671pE~Ty>kFBe+v6@roM{-uLeFf zoBaL);1fWft?wGZ<9A_Q9CWb!)qr>9=enOa^xOjYO7Pp_e+%$8(Lbk|^q&9@{>9~{ z9y0$UfM0LLTDqx!8{o_S?s7kG;O7A6JL>;4;QbG{-0ztB{|fjOl#e$tNO}JR%tt+} zyc~`|6Aqu-_ME^3^Yh?7p$~j6VA?-MAFW2JISAYWe%kh21~>`+-->k7Uk=zmJl9RR zC43!V`XxvPe3V)ZIQM|deV$3b1u%cBa8VxC88}DMm3j#9Z4UY$HR;zG{HFl($Pc60 zKQACKJtx+<)&XldfoxdWA3*7Tm)(Tt;_w4q2~lWJ zJ~fFCZj<&RW<09-U8Esy&F^9Z`G zf3*51VE#C=k^dv$G@S!|SR`j;^8kOhAlLnn z!Cwxz8uDo6r3CPE4t>2EFn`}L?OO$SF2)ND=c$`b`uV^iefI#q*Fpb%fOAm4mG@16 zdmQrmYryy8t>L!4y9qn;{|WF$z*ZjG0rU4WL(jhef8WtR$HC?J4CLvDz+wN71suE8 z<(_BwKLN0{#|5y*X98|KG1q;w!9N#p0s6!8<6^+aI{333@V}49b<;Co`C-6y$Zzql z2Ye&!%Y2i5JK&RdVx7g*|4qQfo3TG<;GYA24fNaco&bEWL!Ng6=Fi&ay#}`O{~F+% zI`A3#d;xqF_)kxd?aRZs_?`7w^D^)lz_VX* zx!*SMX@Jjo!{rX60^)xXa1Z!%n4xDb;9-!LGYtMRz-#Zryxj2D54dW-%YCt-HwyTU zZ=}c9F9H6uLx1i7yknEgeY?Tm2$&Co!TAw>JO+5(V=ngwll~Imu7BXXgrTP$uxp&< z$4JPYQrBQS2^snd$Y`YFuR40zNcAzm`)JM3nYh@0I}L2* z_j$mVIL6;U1D*{1BQERzH{kES?Q&mY_Z(oaJ1)WERY`w{qO;Y^q&m)*C=nXfoB5V2>jy=djgdYRUXQ`}yZwEXP<3pL` z&r^E*4ZUH&n}6tXKWfVRBH%{!-&uyfdcePUIxSzf0Os#L!B^^s1|E+% z%G0BOe|V?M-EP{u18@`c*V><_0RJ2Msr`>U^*rFthcG{o{CO$~c(+3za?o+>zXp46 z=o8W%26jm9`%5MRTQ^3vdX<>$4E6vEg(< zvbZh>O^AQE<(W{ znF>$)Z2+09gmUUQyf8O|6%dgOGlGc$I0&Ql*eV8MfAi{h~ha5gZi z(#!!VI7MJjTk(*wZT>}a1a(olC7Q=V{bk_1KES4`{L$E)svtIT<}YRiOILH4LieT+dR4nIYmrHUlZ zgMOpG*jv#)f=d~5;tOp?eRPc!%_T(=3#=v<5HlRyaz7X9%1{@R;vXo?DKo zcoe6cGOP%XDN|zOXe$g%hVc64FM_V(XtR%x4=DB_M4~KMULJ@*^ECUTN`{wIUzA4z z0cY(XF)gzC0602B*uT&h3Ueq?(G~uhx!mT(D27|wK#)r*jyWwNN=3J((yW<4$vB9n z>|xzyG+UB?DcUy6ahwVHp@66vckDLHA!eUG#4PH~1RQQ&D#x19@uJ@P(F$kdv{+}v zpg^+$?UMsXrhXnWlT&P79x{_7W9&UWY|8O&RZ<$RS?MfGQ=XZVr{9b^`$IH{u!=NQ zY)G{>M<~|H>3lih*Vn#Tj@o{)+|x!DC80EwZH{`fWOFzY6_-K0oHSMks!KDe4v3Kp zS#6B6nU)?}sWLoiQWg-eK+c@8EAVYYcDhI*!EjJ%X3t4I#Uf|&0}hzyO=0Y+tHB4$ z5l0WF^jsSnb2@dIJ)Fu~Vd8utF%rITxlfy#Xy%}vDIl3%5Hi5P%X0()pFLu#S%=D{ z^l0$90Nd~5c;zdV0ShM*Dd*9!4+C@=jGLiU6aa&8A9f#WwNS zKU8wQ9FbK1SUBh`E=X-6x9FjWoYNR!>||V887Yr)>@U>hx%aFj~pRqzVf z#d>T*i>yv)u9h4;A6G@&eItd|GGL^lu|{?yLi5{mlQGWPHbt6gu&B?5hkRWEjlmiYY)Tw5W0p+=7~;3 N>(!%*rPf9K{{Yz;^PB(x literal 40420 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 diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 1482e33ab..91bc9c81e 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -9,14 +9,13 @@ #include "slsDetectorFunctionList.h" #include "svnInfoEiger.h" #include "EigerHighLevelFunctions.c" - +#include "EigerBackEndFunctions.c" enum detectorSettings thisSettings = STANDARD; //static const string dacNames[16] = {"Svp","Svn","Vtr","Vrf","Vrs","Vtgstv","Vcmp_ll","Vcmp_lr","Cal","Vcmp_rl","Vcmp_rr","Rxb_rb","Rxb_lb","Vcp","Vcn","Vis"}; - int initDetector(){ - printf("EIGER 10\n"); + printf("EIGER Server\n"); return 1; } @@ -250,10 +249,11 @@ enum runStatus getRunStatus(){ char *readFrame(int *ret, char *mess){ - //template fifo_read_event() from firmware_funcs.c - //checks if state machine running and if fifo has data(look_at_me_reg) and accordingly reads frame - // memcpy(now_ptr, values, dataBytes); - //returns ptr to values + EigerStartAcquisition(); /**polling should be done inside feb server */ + RequestImages(); + while(EigerRunStatus()) + usleep(50000); + *ret = (int)FINISHED; return NULL; } @@ -317,10 +317,17 @@ int64_t getTimeLeft(enum timerIndex ind){ int setDynamicRange(int dr){ + int r; if(dr > 0){ printf(" Setting dynamic range: %d\n",dr); EigerSetDynamicRange(dr); - }return EigerGetDynamicRange(); + EigerSetBitMode(dr); + } + //make sure back end and front end have the same bit mode + r= EigerGetDynamicRange(); + if(r != EigerGetBitMode()) + EigerSetBitMode(r); + return r; } @@ -360,6 +367,8 @@ int executeTrimming(enum trimMode mode, int par1, int par2, int imod){ int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int udpport, int ival){ + EigerSetupTableEntryLeft(ipad, macad, detectormacadd, detipad, udpport); + EigerSetupTableEntryRight(ipad, macad, detectormacadd, detipad, udpport); return 0; } diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h index 8326873df..889e32fd8 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h @@ -8,10 +8,12 @@ #ifndef SLSDETECTORSERVER_DEFS_H_ #define SLSDETECTORSERVER_DEFS_H_ -#include "sls_detector_defs.h" +//#include "sls_detector_defs.h" #include #define GOODBYE -200 +#define FEB_PORT 43210 +#define BEB_PORT 43212 diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index 880f6e244..a7313f3af 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -2307,6 +2307,8 @@ int read_frame(int file_des) { #ifdef SLS_DETECTOR_FUNCTION_LIST dataretval=readFrame(&dataret, mess); #endif + + //dataret could be swapped during sendData dataret1 = dataret; sendData(file_des,&dataret1,sizeof(dataret),INT32); @@ -2535,8 +2537,17 @@ int set_dynamic_range(int file_des) { ret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); } else { - retval=setDynamicRange(dr); +#ifdef EIGERD + switch(dr){ + case -1:case 4: case 8: case 16:case 32:break; + default: + strcpy(mess,"could not set dynamic range. Must be 4,8,16 or 32.\n"); + ret = FAIL; + } +#endif } + if(ret == OK) + retval=setDynamicRange(dr); #endif if (dr>=0 && retval!=dr) ret=FAIL; @@ -2961,6 +2972,7 @@ int configure_mac(int file_des) { printf("\n"); printf("Configuring MAC of module %d at port %x\n", imod, udpport); #endif + printf("ret:%d\n",ret); #ifdef SLS_DETECTOR_FUNCTION_LIST if (ret==OK) { if(getRunStatus() == RUNNING) @@ -2971,7 +2983,7 @@ int configure_mac(int file_des) { #endif #ifdef VERBOSE printf("Configured MAC with retval %d\n", retval); -#endif +#endif if (ret==FAIL) { printf("configuring MAC of mod %d failed\n", imod); }