From 1cbbf9409f1f7b1c660f28472a8ebeb56f7c450f Mon Sep 17 00:00:00 2001 From: Gemma Tinti Date: Thu, 9 Mar 2017 09:23:57 +0100 Subject: [PATCH 1/4] manual --- manual/manual-client/Eiger_short.tex | 77 ++++++++++++++++++---------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/manual/manual-client/Eiger_short.tex b/manual/manual-client/Eiger_short.tex index aedaa7bec..0be5732c9 100644 --- a/manual/manual-client/Eiger_short.tex +++ b/manual/manual-client/Eiger_short.tex @@ -60,7 +60,6 @@ The command line interface consists in these main functions: \item[sls\_detector\_get] to retrieve detector parameters \end{description} - First, your detector should always be configured for each PC that you might want to use for controlling the detector. All the examples given here show the command {\tt{0-}}, which could be omitted for the EIGER system $0$. In the case more EIGER systems are controlled at once, the call of {\tt{1-}},.. becomes compulsory. To make sure the shared memory is cleaned, before starting, one should do: @@ -132,6 +131,13 @@ To acquire simply type: \begin{verbatim} sls_detector_acquire 0- \end{verbatim} +Note taht acquiring is blocking. + +There is a more complex way of performing an acquisition, that is useful for debugging and in case one wants a non blocking behaviour: +\begin{itemize} +\item {\tt{sls\_detector\_put 0-receiver start}} +\item {\tt{sls\_detector\_put 0-status start}} +\end{itemize} You can poll the detector status using: \begin{verbatim} @@ -139,9 +145,9 @@ sls_detector_get 0-status \end{verbatim} If the receiver has not yet received the finished signal by the detector, the answer will return {\tt{running}}. If the detector has finished and ready for the next acquisition, then it will return {\tt{idle}}. The detector will not accept other commands while acquiring. If an acquisition wishes to be properly aborted, then: -\begin{verbatim} -sls_detector_put 0-status stop -\end{verbatim} +\begin{itemize} +\item {\tt{sls\_detector\_put 0-status stop}} +\end{itemize} this same command can be used after a non proper abortion of the acquisition to reset to normal status the detector. \section{Readout timing- maximum frame rate}\label{timing} @@ -159,7 +165,7 @@ In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from \end{itemize} Note that in the {\tt{continuous}} mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuos one can be achieved. Still, this extra buffering is possible till the memories are not saturated. The number of images that can be stored on memories are: -\ \\ +\begin{table} \begin{tabular}{|c|c|} \hline dynamic range & images\\ @@ -171,12 +177,14 @@ dynamic range & images\\ 16 & 7600\\ \hline \end{tabular} +\caption{Amount of images that can be stored on board.} +\end{table} The maximum frame rate achievable with 10~GbE, {\tt{dr 16}}, {\tt{flags continuous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{6.1~kHz}. This is currently limited by the connection between the Front End Board and the Backend board. We expect the 32 bit mode limit to be \textbf{2~kHz} ({\tt{clkdivider 2}}). In dynamic range {\tt{dr 8}} the frame rate is \textbf{11~kHz} and for{\tt{dr 4}} is \textbf{22~kHz}. For 4 and 8 bit mode the frame rate are directly limited by the speed of the detector chip and not by the readout boards. Here is a list of all the readout times in the different configurations: -\ \\ +\begin{table} \begin{tabular}{|c|c|c|c|c|} \hline dynamic range & clkdivider & mode & readout time ($\mu$s) & max frame rate (kHz)\\ @@ -198,7 +206,8 @@ dynamic range & clkdivider & mode & readout time ($\mu$s) & max frame rate (kHz) 32 & 2 & nonparallel & 504 & $<2$\\ \hline \end{tabular} - +\caption{Readout settings.} +\end{table} \textbf{As if you run too fast, the detector could become noisier, it is important to match the detector settings to your frame rate. This can be done having more parameters files and load the one suitable with your experiment.} We experienced that {\tt{highgain}} settings could not be used at 6~kHz. @@ -283,8 +292,7 @@ You need to use the command specifying from which board you desire the temperatu ./sls_detector_get 1:temp_fpga \end{verbatim} -\section{Advanced functionalities} -\subsection{Autosumming and rate corrections} +\section{Autosumming and rate corrections} In the case of autosumming mode, i.e, {\tt{dr 32}}, the acquisition time ({\tt{exptime}} is broken in as many subframes as they fit into the acquisition time minus all the subframes readout times. By default the {\tt{subexptime}} is set to 2.621440~ms. This implies that 12 bit counter of \E will saturate when the rate is above or equal to 1.57~MHz/pixel. The minimum value is of order of 10~ns (although as explained values smaller than 500~$\mu$s do not make sense). The maximum value is 5.2~s. @@ -310,6 +318,13 @@ sls_detector_put 0-ratecorr -1 \end{verbatim} Every time either the rate corrections are activated, $\tau$ is changed or the subframe length is changed, then a new correction table is evaluated. Note that computing the correction table is time consuming. +\section{1Gb/s, 10Gb/s links} +\subsection{Checking the 1Gb/s, 10Gb/s physical links} +LEDs on the backpanel board at the back of each half module signal: +\begin{itemize} +\item the 1Gb/s physical link is signaled by the most external LED (should be green) +\item the 10Gb/s physical link is signaled by the second most external LED next to the 1Gb/s one (should be green) +\end{itemize} \subsection{Delays in sending for 1Gb/s, 10Gb/s, 10Gb flow control, receiver fifo} @@ -358,6 +373,24 @@ To activate back a module, do: \end{verbatim} \end{itemize} +\subsection{Setting up 10Gb correctly: experience so far} + +For configuring well the 10Gb card not to loose packets, as root, do: +\begin{verbatim} + ethtool -G xth1 rx 4096, ethtool -C xth1 rx-usecs 100 +\end{verbatim} +where {\tt{xth1}} can be replaced with the correct 10Gb device. To minimise loosing packets, priorities are set better as root user, so have the receiver as root. +To try to bypass being root, we trued something like this: +\begin{verbatim} +/etc/security/limits.conf username – rtprio 99 +\end{verbatim} +but somehow it did not fully worked so we kept the trick of being root. + +Very important is to activate the flow control in 10Gb (in 1Gb it is on by default and not configurable) +\begin{verbatim} +./sls_detector_put flowcontrol_10g 1 +\end{verbatim} +Set the transmission delays as explained in the manual. \appendix @@ -406,25 +439,13 @@ sleep 300; #or till the screen over netcat has told you Successuful do the same for the other boards. You can program in parallel many boards, but you cannot load two bitfiles on the same board till loading and copying one process has finished. So load all left febs together, then proceed to the left febs, then the bebs. Power off completely everything. Power it on. -\section{Setting up 10Gb correctly: experience so far} - -For configuring well the 10Gb card not to loose packets, as root, do: -\begin{verbatim} - ethtool -G xth1 rx 4096, ethtool -C xth1 rx-usecs 100 -\end{verbatim} -where {\tt{xth1}} can be replaced with the correct 10Gb device. To minimise loosing packets, priorities are set better as root user, so have the receiver as root. -To try to bypass being root, we trued something like this: -\begin{verbatim} -/etc/security/limits.conf username – rtprio 99 -\end{verbatim} -but somehow it did not fully worked so we kept the trick of being root. - -Very important is to activate the flow control in 10Gb (in 1Gb it is on by default and not configurable) -\begin{verbatim} -./sls_detector_put flowcontrol_10g 1 -\end{verbatim} -Set the transmission delays as explained in the manual. - +\section{Running the (9M at cSAXS. For now)} +\begin{itemize} +\item login as {\tt{x12saop@xbl-daq-27}} +\item {\tt{setup\_eiger}} \#loads environmental variables and brings you to the right directory to execute commands +\item slsReceiverScript3 1991 36 \# from one shell.. opens 36 receivers +\item p config ../../eiger\_9m\_10gb\_xbl-daq-27\_withbottom.config +\end{itemize} \end{document} From 22e0332833b9892d708b20cd642f02900a4933d8 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Tue, 14 Mar 2017 08:21:27 +0100 Subject: [PATCH 2/4] changes to callback --- users/mainReceiver.cpp | 13 +++++++------ users/userClient | Bin 13897 -> 13454 bytes users/userReceiver | Bin 12769 -> 12882 bytes 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/users/mainReceiver.cpp b/users/mainReceiver.cpp index 41ba6446a..0d29055f9 100644 --- a/users/mainReceiver.cpp +++ b/users/mainReceiver.cpp @@ -26,8 +26,8 @@ void closeFile(int p){ -int StartAcq(char* filepath, char*filename,int fileindex, int datasize, void*p){ - printf("--StartAcq: filepath:%s filename:%s fileindex:%d datasize:%d\n", +int StartAcq(char* filepath, char* filename, uint64_t fileindex, uint32_t datasize, void*p){ + printf("--StartAcq: filepath:%s filename:%s fileindex:%llu datasize:%u\n", filepath, filename, fileindex, datasize); printf("--StartAcq: returning 0\n"); @@ -35,14 +35,15 @@ int StartAcq(char* filepath, char*filename,int fileindex, int datasize, void*p){ } -void AcquisitionFinished(int frames, void*p){ - printf("AcquisitionFinished: frames:%d \n",frames); +void AcquisitionFinished(uint64_t frames, void*p){ + printf("AcquisitionFinished: frames:%llu \n",frames); } -void GetData(int framenum, char* datapointer, int datasize, FILE* descriptor, char* gui, void* p){ - printf("GetData: framenum: %d(%d)\n", framenum, *(int*)datapointer); +void GetData(int index, uint64_t framenum, uint64_t timestamp, uint64_t explength, char* datapointer, uint32_t datasize, FILE* descriptor, void* p){ + printf("GetData: index:%d framenum: %llu, timestamp: %llu, explength:%llu, firstbytedata: 0x%x datsize: %u\n", + index, framenum, timestamp, explength,((uint8_t)(*((uint8_t*)(datapointer)))), datasize); } diff --git a/users/userClient b/users/userClient index 80f8c8af2e9d2f4fc44cbd319a4820600dc8f2c6..1e5b114e941e32ae5e4db855857162920ea910d7 100755 GIT binary patch literal 13454 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 XTrH1+HdUe|ycaSNnQMga@}B)~h2rgd literal 13897 zcmcIq3v^pWdLBtuVn||}B!s*Gku{tIh_D?K3T-mHXD=4&aP#|jg)yfWL}XypR)q1W2MXkXg-?+ z#EGAWmk>2`k`4*el9mcN2WSc9?E|TY9GA3&Duh(WD@8dMU3m3KZ%F732|Y=Vl3^rCW&6ks{pO4I&9{5N5$_?w z8u@jcO1I7L>mkZF&o%{`XM1=?(qeiyK#%JAU6ZWmWzop`rL~tuLyM!4SgL1nPu6#2v$Gff_R>>> zEuT=?9QIcJ(V{7ficy{N(-r`Q@EO2e`NH5A6v5v_0}9!B7xIPhrA6>p ziq!KObW|Zbl|}G5MeO`l5&Wql_4&IZ^3_HB))m2TC}QVm*Ku|jV2qzdN`=Z z6S(1-rge11V_H%VBy>$<+I5?>mT*TTsfQB{(Lgd8PBQJLRn<$A<7#cma3Wb#l@MZ$ z0X@(Vh(^~3f*ZZf%OlOzH6h`EiXxHbP2ScTm@a6hIuQQ+6Vr;?;rtU`Js65bTH z1C5Q1FsVsB|g$Z4ER9y^YmoC0g~m zNIa>n4JfXiICnRrAt7_4H`n==yjp5RK@YwM|tp6}zJg*HE;X+S97n zhGU^zCy~Kpqu7yY~?p55vJekyveboVsxbeI!vtt)7!LCYwc5$`i$%y#V5TbqC zgF_H8*kw?c{N#d@f(ZOntN5p_JR%9YUY%z4r7*JdQcp z4}^}sXeS;m?Cb$yuYZ0!iScI!0dZcgQ}ir%0Y}WskdU7Y7H+KcqJo=!U>1!ixcXdp zSi#ljqN55)*-se)rbtW=@kQ!SLS*$O^Q z!CeYorr-+|yj;Pn6r9FfraA>bOM;*t1y`R(dQmUVIdV&Z9PWh*$pfcP@v8RzE`Pg5y-;#&Y0PA8tGQ1&S2&m^9vPIiRz zcH(KuWQREaRT+4i64?RH|0nS@6|()D|A=@R>TH_x$B3sP&Ti%WzY$MEnC<5LtHjgL zW!pLbYvO4tW}Cr-@>Kmvlkv)}KI53L_q`L%Ynq0KnrC^KZ+L$@C&LXD9+r6o3ZJLb zH1@te=VQ}c%y<8gZXX-rL!VYto6mT^l?1n5vlR_wsq3E~nA^^vM&s-I;piUX_J8g0 z^^V$nR~}AQZYVz=FKNEsA)C)|wn1oY<_lb?&$)tBt~{JL_ABQSWNqYb-Ae~IY}nu~ zKmR^ne_!u4t|{0mldW%X;QRxY2hC1a%CGun>&jFpFd zecnvp?x~n$lxytkFGY56Gae!L^<(~LhEI=;H5woIjN#0s$PPY;5@MbPW4ukdvk87k zz`McpwY_Kj3zdBR4NBo>&-k6JKcId{jQC7Pbuc_S z$9S#DIAjVAXMV|j9rXoY8!eL<`5!%Big8z;T4H3nn;eTuypEE=$E+T2BUbj>VKC(W zIqI6hUzD4DdF*QwB}>0T-tZpj-ExHKNthhyYdd1rbtYDp!KW;{r%7ph+kj}vD%H*H zV8-hUk>SkS5ceC@EaHZ!9xzV%LnztHSFsjc(W!Q;Q-4F{A+ydjeide?{syW;qEr9Y ztj3Visox{-R;NO6IMZ%<=bg$iKd|via#xR8Vx%?Zu!QRy7-4% zPSM(xx?tZBUNAEs{1--pUhSUq!0RAk)ECDAoBD$!y^qE#^Ar|kar4Qw;A=&qnY4js9dbL@O{DHxh!svrJM!DE80gW5I!crQ}{FsbBVHq7IqaOl8O_4t^ z*eZ-J$uY{s+H;H^vy_H2%aPCeEu$Zk(Vb>F@&^Xj38Qag6vms+#iryK-EJujXFh{) z_Dc+b+5At)=rv|J@&^V(!l;pBl#4wBXuSD#meO$MaWeWd%jlR5j zG0MdPIY!^Ll!h}aNVwUo=5ez4s9A{ofx+8_#baNpZRcX;ITm+VO2e7oLl|o{{mbQF z-7VAUleC+u`MH`|hf&LRIUqZSrL8=h(q_J6yPFPmSqwp5Kk#RqWfN zrFahL!+w5hEcKb#q0MK7%yDWxJsr}!3GOf@MMBXq3nvos1iJ(8*^yWWqoasqXE?<8 zt6?G)ixHZNZH&e5h;gt%oRwVVVlK8k5$FoLVyUk6;RFDA=HLp76A>7)uvlDo(HX;L z2%5<%>KZ=}aV5k0;#9XQ6pw`&KP(A{TuM1p@-C~kragHMmYLzL{(1-<%g z6W<}IZJy)L@c6^%!8L^L8UQ^BdKh#bmdsMzjI+6BmR{$!lI;%1B!?8| z^}h@9Q?SH&KrOpJFh!_dkK=a<%FkBIo6T~1P^M(NlULg&YfL!l?#A}0&OqvmTKv+$ z4N!K&Hs=GAv@%cc8*z*o#k2{=SI9R#_+5IKX7faYN%EH?6t3g*gZ)9Dde`9lg zU}Jl2PHa=}@cdSL1e3si!J`f~;J_QhR}Sa%C2V_%b5{xbMG58KC^;y`onAdCJt^iL zHHDIijz8y{==d3dP{(~~COYGwBzZcsQ2CRh^JF=lnW*J-21047Nv!i(`7XW?t0$%3 ze>)Z@+HUvYI{t0yl+)zp*~5U{w*~!F&~F7T!y-iKJVD)pUMuJ- zL2nf_Cg|OQJ}l@@1pT?7gMyN692#EbT8J-di(IwtTK5&MnyTuWswLG+Tnk&Ug8Krx zi7&2Ry6C$LFImKxJGr?_53C2(6DIAHxkwD>{N2orttITn`Q&0f&>^^vSjxRV6~Q;c zNQk+K>kK42nLD&O274ye6K2UKoJ!;5K8MjzmIy}!q#$zLQJuN@DZLxVtH|?ndv_wv z_eyuTQ`q1G9KuH;}8r?%mqV7Ob?P<`yUZu)qUL={YOTM**#66lHqAsvTdT-@B7 zX&L9UP>Ofa_X6tc|81HF1GI+7`;yr`;E)7BYqgr>dLyy#Aw&15)SqwnfTQokoG_P3 ztgE~aB~Xows(-cJ!;7vK`h1V%h33FE0JJ+dV*NJ>!J=O=5j>m+Oas*(zjc z4U_tEof{B{u#-@d>!itzuji7#6&YHiq`q929uf=N zav>rcCpaQbyoV9`m+7^<>||H zJ1z9(I#2pj@ypkL7#Q`d+-I!sh+?CXejvhA{`ea}RsGpwotrK62dGdzFM)kiNZ`+i1i;lnffABv9Syi7NV<~+;hZDBjB-S<09D5Zd zgvsXw8P6i)T=K_1zy1H3r%xx9l=jT!gnuV8bLKT)|0rP9KOIw2+AH+)<@5RXAxm>t z)?e=PGT!E>Xt12$QeV!aPob;&m*1QE#lkD)A;y#BB|QmL)tAp%dxU;Q=t&~=B>g5& zKP|p9q|Y@q^5;uFZ-;ZTCEHKuw3K!UeR@w)lS^fgpNw)6k?V{smiph9fS}Txq<9>+ ze5<0L2>&vUK$b~8m6!LP#E1@EBsj5-o(FabezM=>yrg2;cA>$^&}AlP$blDy`TkX% z{JevD#_q|7;m>ZxVX1}my;bg?xp;~7e4mRu*?`@nLOk!ljF$VDTIj$|E%&Efyp+j( zCl^11$^9f3Kht`?&&9D5i}gDfpUULAo{LYj;{0;)iE$@X?qKCiuCKZB6^K{!s1VOP z5RoF+L$%O>h!?re<>E6CpVzKJJnul1nOv9DLI>WK zc>9s}eJ(zS$@@7MACI%i#p!7Nq~JAH2ZHuM1xp)U*za4RJyP=e2WK-cPp)e6PUeecA(@?4PFf*@= zl|z7VdCnl;yD9$6hIu|)%xBpTagI-%C--wlGuXDg_C8t!|9fs{;{5za;4U_CzWpW&#o0Q}l{GPz&a~LngWweN$c~EpoA%$LC1iuz|q58BG!M7B_&A7dZ z>&&l<$R96)mtpfLR3AE{BRoG&ZeNP7jkB+U_V)s>C@@|x0AGN4H6-R6 zolR2uxQLxua5NqA^fi#uBmBzPRU8+LLT)O8$AA}#|GS@XdpV=;Nov~3@tKT1W~=F^ z-2OC1pUWxH`vIk=Id10F>we%AADJHq`P(A$7vV*w(0F-(FMwfr?ks)W47^bMWuSv(g<<-nQo(ZM8x;9Hc-c^m<&GMG|m0nG9J>ym?4{50G2j|weC&cnyQH?&bXxg z)ytQ+dJ!~Pzs&EYuBEDJfkYy(nTP%50Q}1f(;C0Os(xit1OMd9v&bl zA^}BsVKA8z;jF?!u^`oAQM1alC>qa8;i7ro3%U7Y!e;;Ya9}fN7oCw8{z?Iyd6mnL zycESEv{F+dHuFj*TBiWhJnMg2>}#HprqvkUP$Z_MlK5t4#j@r}X*4&-=fT9V>gpx< zWZ23hl-F$T4kLiIV3cyFLo?u2V6uNHu9#wPb44{Rl#FYgxFK;Q zE7lo#&+|xGn#%lsrtsN3lWNGU+5i6+F~oTl#OTX7>)evu`0Tu@Q3NlIpBjCgt6p$O z(5W<7e`*N!ckobySovb1=^_$Yw7AeMG%nC}3?t$gV>x^&7=F)wOO#0*D|Op*)6`nsvvD zZv1xE4dygk*QP0?yNzw##0Ix^ZCb`i0ZlgIV-vQq>ELFQnbkjVx7mPLXV1CwefX{I zA>4C+zjN-n=RW3s_s+K5+&5ILab}%b`9aN8I^&{f#+)1rSnBa#;iuA@IIrmY8V*?{ zm<79eUXC&^d(Fdoq0u~Sjrj~)-Mlgk9}4eVz0(!|d_FT~O_19r<9t|H67wdzWhSOBqO!15 zRt%D^R5%TP(d~vk`f9kZU!m{xzE-=V46f^Q;B9@Ot+TV!+j78L+34BU_@bw-maNY} zR{RTaOrHj6`c(;?2Z$?g9IcPPArvyEWg7e=t<yCW7cW;dyuYlPUqHP$WOKlXJLKvGXF_j6>)Gp;Y#$`L&;7Sb^QWMW1bsp zgxje>Bosw)^%AC~icE8SfG{n8B*^hz!n9bC^BnIcObZ?v=6E|{9pNF4HzW49)2@gd z;l%UgK1GiblK~uOysE*v)YPVOrBj8OND~Y0V-|jxB^!2%9)g zOm_NNJ1tU#aY925v^bHu$4IyyCLyLZiG(=*H(@j3X^#Iz*g`nS@m<2S0+I6^e@&QX zJ~GVlO~N+9LmXdAf;%b83cMCK6DKb>aWxrlafQoH4O@)q-#K@sP!xE6wqy>ChKQ< z?@s8du`1BQ*I&KT*4DPhn0E~GqIN&2Ou&A2iqb!Qmd`kKJm^apn}chqs|?#PFH!n7 zd=Va}I)w?yGur%>qI5VcO8p^G+BqX_yKeE)UyyO&)f-S$Xd(PV5uTqlJ+Ew@E!GF*=BL>jMd zSE7>zc!a@uq2GaPR*MYztiY(B(Uyx;;ty(U9e#hpkwt75&=sJ|CF=3Z5~G_t4`cW- zFS$%`mz}z(LGd{%`+P$_edP0gEXguGp8vk;fRMS~8)` zl9RA2&dKUdy1cN{QX+f|M=iUPr?og(OvdNX7^eb`tIyzhX ze9fKR3eh^yeXzA_zpuS2=FryB+vnT+hOd>ns&bYMxCW?K-l@~opUAei?(gXHwf1&& z?ROe>_?qE%+RyyTJweFQR`0TABJVbl3+TMaj#AN>i{%bJh2DN=)P}?N8 zCmPeK~)?5_$T=&?tI`O%(?_jCeY5_3xp#kj9XiougxVXl->rTj^4 zhg0bD<4FMxSdEenz6c zrFcC1K=z;uA_*OWB>(0751)RIH4VKbm zd}zplls2ysn(5gep<-&Fj6u6qfw?-y+0dU6u$#_>>1imMHY|@C4%=uhq0@+X} z9EOvIPIwfk(M6+BQ$Gh>#wGBMac)6-SG0XmsP(zfv#o6{YXYJ6pSP^}Hf%SRzz>Yo zwkW|sh=rmXqkT|c?}jgpm2f^#aeQa?`@&p3)8UUqk3aR95Qz?_Ne9oFk9Z=5Vb0LB zWo#Vc_&6+LY)G+YBT191N?gM$bIMI48s4BfqaM}plu4Dt8lG~fax}xo7?J95lJSJ5 zf?4%OJ)z+(8vde&&(ZKx8s4knuW5KITmIOR&=_owX_nORxf=eqhR=f%i|DaytV~%) z)IA5RvWT!R$12$2Ob)JNixp;atTvy<#|Ix;M4R$v@Hhb|vx<;J-)3uZYy%FeGX@HWlaiQ^c_dO=@a@6Q7U+bu87(@kfMd4pU){|3sMPF4fNQDZ&=QL5}}GnC2=K z;P`#QR>D4x4-mEywsZVWjxWX{H1;XRiMPoikMQkBNci6(OrxJlaJ-YSgYXo`+Xy=e zPjI}6u#50fj$a{6W1kx3_{W3`2*)|@%z^8+%JP6S$fU_LL9Ql0%L}sPU(o(lJT491 zGD*XRCaB1r7pubYXZ2QlB(EZOGyiFJ z?6GI2wWXMx;!;bb!F%bvUroF|(SH$pq*qcbp+M#Gl~(!OY_!SbE@a!}gw%CKlAV)D zk*cdLm`q0ChGXHfIDYn$V-Il5O!zrH<-@TUBaZU@8|lnckI_tx)5eqh5Qp~C*|;Lm z?kq87XZcv$Za;&5XRYut9B_782lO};*wjAH=`fgFexVK)xK`$N`+VK&`qsS`-L`(Q zzZ+zi7Y@0+CEY#?TfV-p8BL3QJ)72TSiiA?IM^Vq9o-AxTTz0=JnBZ0MXF@Mbi)mr# z_;lgB2B8pkl-8L|xFSeQaI&<)QK+Co+G0@(LGad@A0PJ`y$zPQa`=nq!#3|T=B4f+ zcU=l6y$xpdG`SY;Bce@_q!$`}4dwv_4Zv1Jk585-5k-_was=)p>QxZdD{C+Z@m(Sb z!d67|W|1_*$+BfaGu$s*ru(%A7MFhyySKG`nR&E^+ga1`Gv%8F?D^`70(~BKWp#zv zs&*ygk}36g=u|uPB=2Nu@1EpcY%LtC5HaB~j9tJ6U>ea7M=o`)gn8;KmwO`0II0o$aI1qY zf<2X@M;&F=`T;)Zn2k-rnaVmL4tLP!iX+I)nG%mVn23B_P&QBWR4EfoE0p9%Xcbr? zws19CpKkwl-bfme9cWc&HB*zZy=e6@8iix?XcR8ZTP_5^QB@=O;IiNna$t3pD0pF7 zCkpjcdRlNTI~g9pm8GagTFHHI1*7L~UjCK)f6e`Ej5cc${+^+B!hXHzsm0Th6MJ?w zH%Ladl$VS>4^7pgXERzI4A+K|D@(DyL3LrY+6agA&ib#F81%&;;cq%>JG$GcZ_0|~ zMl4F;a_eW~OD7c)nU{?Hj>o(}W$aU)_fGoh z3(voly7cuU;X4-U2gsMBRySF)k+|`sNV)8azq&bAAitj#v8S(0E4V*{H)|XoI%WR9 z%h(3kQ6skg5v_EQ8&cM>x{}T-wVrPIpEHpeZN^&p4@EQ3wbe Date: Wed, 15 Mar 2017 15:00:01 +0100 Subject: [PATCH 3/4] modified users receiver to have all objects defined in one --- Makefile | 2 +- users/mainReceiver.cpp | 196 ++++++++++++++++++++++++----------------- users/userReceiver | Bin 12882 -> 13780 bytes 3 files changed, 115 insertions(+), 83 deletions(-) diff --git a/Makefile b/Makefile index aa03de7a2..0198450eb 100755 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ $(info ) .PHONY: all nonstatic static lib libreceiver textclient receiver gui stextclient sreceiver -all: lib textclient receiver gui +all: lib textclient receiver#gui nonstatic: lib libreceiver textclient receiver gui diff --git a/users/mainReceiver.cpp b/users/mainReceiver.cpp index 0d29055f9..ac9a02166 100644 --- a/users/mainReceiver.cpp +++ b/users/mainReceiver.cpp @@ -11,16 +11,26 @@ #include "utilities.h" #include "logger.h" + +#include using namespace std; -slsReceiverUsers *receiver; +#define NUM_RECEIVERS 2 +#define START_TCP_PORT 1954 +#define PRINT_IN_COLOR(c,f, ...) printf ("\033[%dm" f RESET, 30 + c+1, ##__VA_ARGS__) -void deleteReceiver(slsReceiverUsers* r){ - if(r){delete r;r=0;} +slsReceiverUsers *receivers[NUM_RECEIVERS]; + +void deleteReceiver(slsReceiverUsers* r[]){ + for (int i = 0; i < NUM_RECEIVERS; ++i) + if (r[i]) { + delete r[i]; + r[i] = 0; + } } void closeFile(int p){ - deleteReceiver(receiver); + deleteReceiver(receivers); } @@ -41,9 +51,18 @@ void AcquisitionFinished(uint64_t frames, void*p){ } -void GetData(int index, uint64_t framenum, uint64_t timestamp, uint64_t explength, char* datapointer, uint32_t datasize, FILE* descriptor, void* p){ - printf("GetData: index:%d framenum: %llu, timestamp: %llu, explength:%llu, firstbytedata: 0x%x datsize: %u\n", - index, framenum, timestamp, explength,((uint8_t)(*((uint8_t*)(datapointer)))), datasize); +void GetData(uint64_t frameNumber, uint32_t expLength, uint32_t packetNumber, uint64_t bunchId, uint64_t timestamp, + uint16_t modId, uint16_t xCoord, uint16_t yCoord, uint16_t zCoord, uint32_t debug, uint16_t roundRNumber, uint8_t detType, uint8_t version, + char* datapointer, uint32_t datasize, FILE* filedescriptor, void* p){ + + PRINT_IN_COLOR (xCoord, + "%d GetData: \n" + "frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu\t\ttimestamp: %llu\t\tmodId: %u\t\t" + "xCoord: %u\t\tyCoord: %u\t\tzCoord: %u\t\tdebug: %u\t\troundRNumber: %u\t\tdetType: %u\t\t" + "version: %u\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n", + xCoord, frameNumber, expLength, packetNumber, bunchId, timestamp, modId, + xCoord, yCoord, zCoord, debug, roundRNumber, detType, version, + ((uint8_t)(*((uint8_t*)(datapointer)))), datasize); } @@ -55,85 +74,98 @@ int main(int argc, char *argv[]) { signal(SIGINT,closeFile); int ret = slsReceiverDefs::OK; - receiver = new slsReceiverUsers(argc, argv, ret); + int narg= 3; - if(ret==slsReceiverDefs::FAIL){ - deleteReceiver(receiver); - return -1; + for (int i = 0; i < NUM_RECEIVERS; ++i) { + + char temp[10]; + sprintf(temp,"%d",START_TCP_PORT + i); + char* args[] = {(char*)"ignored", (char*)"--rx_tcpport", temp}; + + cprintf(BLUE,"Starting Receiver %d\n", i); + receivers[i] = new slsReceiverUsers(narg, args, ret); + if(ret==slsReceiverDefs::FAIL){ + deleteReceiver(receivers); + return -1; + } + + //register callbacks + + /** + * Call back for start acquisition + * callback arguments are + * filepath + * filename + * fileindex + * datasize + * + * return value is + * 0 callback takes care of open,close,wrie file + * 1 callback writes file, we have to open, close it + * 2 we open, close, write file, callback does not do anything + */ + printf("Registering StartAcq()\n"); + receivers[i]->registerCallBackStartAcquisition(StartAcq, NULL); + + /** + * Call back for acquisition finished + * callback argument is + * total frames caught + */ + printf("Registering AcquisitionFinished()\n"); + receivers[i]->registerCallBackAcquisitionFinished(AcquisitionFinished, NULL); + + /** + * Call back for raw data + * args to raw data ready callback are + * frameNumber is the frame number + * expLength is the subframe number (32 bit eiger) or real time exposure time in 100ns (others) + * packetNumber is the packet number + * bunchId is the bunch id from beamline + * timestamp is the time stamp with 10 MHz clock + * modId is the unique module id (unique even for left, right, top, bottom) + * xCoord is the x coordinate in the complete detector system + * yCoord is the y coordinate in the complete detector system + * zCoord is the z coordinate in the complete detector system + * debug is for debugging purposes + * roundRNumber is the round robin set number + * detType is the detector type see :: detectorType + * version is the version number of this structure format + * dataPointer is the pointer to the data + * dataSize in bytes is the size of the data in bytes + * fileDescriptor is the file descriptor + */ + printf("Registering GetData() \n"); + receivers[i]->registerCallBackRawDataReady(GetData,NULL); + + + //start tcp server thread + ret = receivers[i]->start(); + if(ret == slsReceiverDefs::FAIL){ + for (int i = 0; i < i; ++i) + receivers[i]->stop(); + deleteReceiver(receivers); + return -1; + } } - - //register callbacks - - - /** - callback arguments are - filepath - filename - fileindex - datasize - - return value is - 0 raw data ready callback takes care of open,close,write file - 1 callback writes file, we have to open, close it - 2 we open, close, write file, callback does not do anything - - registerCallBackStartAcquisition(int (*func)(char*, char*,int, int, void*),void *arg); - */ - //receiver->registerCallBackStartAcquisition(func,arg); - - printf("Registering StartAcq()\n"); - receiver->registerCallBackStartAcquisition(StartAcq, NULL); - - - - /** - callback argument is - total farmes caught - registerCallBackAcquisitionFinished(void (*func)(int, void*),void *arg); - */ - //receiver->registerCallBackAcquisitionFinished(func,arg); - - printf("Registering AcquisitionFinished()\n"); - receiver->registerCallBackAcquisitionFinished(AcquisitionFinished, NULL); - - - /** - args to raw data ready callback are - framenum - datapointer - file descriptor - guidatapointer (NULL, no data required) - - NEVER DELETE THE DATA POINTER - REMEMBER THAT THE CALLBACK IS BLOCKING - - registerCallBackRawDataReady(void (*func)(int, char*, FILE*, char*, void*),void *arg); - - */ - //receiver->registerCallBackRawDataReady(func,arg); - - printf("Registering GetData() \n"); - receiver->registerCallBackRawDataReady(GetData,NULL); - - - /* start receiver to listen for commands from the client (and data from detectors when expected */ - receiver->start(); - - //start tcp server thread - if(receiver->start() == slsReceiverDefs::OK){ - FILE_LOG(logDEBUG1) << "DONE!" << endl; - string str; + FILE_LOG(logDEBUG1) << "DONE!" << endl; + cprintf( BLUE, "Type \'q\' to exit\n"); + string str; + cin>>str; + //wait and look for an exit keyword + while(str.find("q") == string::npos) cin>>str; - //wait and look for an exit keyword - while(str.find("exit") == string::npos) - cin>>str; - //stop tcp server thread, stop udp socket - receiver->stop(); - } - - - return 0; + //stop tcp server thread, stop udp socket + for (int i = 0; i < NUM_RECEIVERS; ++i) + receivers[i]->stop(); + + + deleteReceiver(receivers); + + + + return 0; } diff --git a/users/userReceiver b/users/userReceiver index 71ceb8aee896727ee289800d52dda3bb1d18c845..2e1fe78864490ca3f6ae7a8e29a2bd26db4ed2ae 100755 GIT binary patch literal 13780 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 TMIocbKCL*(@`Lq14(a_b7~6QQ From fb91ba25f30dfae3f3b0a101626294ea41ec2384 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Mon, 20 Mar 2017 09:26:13 +0100 Subject: [PATCH 4/4] uncomment gui. insignificant --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0198450eb..aa03de7a2 100755 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ $(info ) .PHONY: all nonstatic static lib libreceiver textclient receiver gui stextclient sreceiver -all: lib textclient receiver#gui +all: lib textclient receiver gui nonstatic: lib libreceiver textclient receiver gui