56def main(dump_packet, unpack_frames, words, count, ip, port, gap, frame_type):
57 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
68 frame_class = fddetdataformats.WIBEthFrame
69 port = port
if not port
is None else 0x4444
70 gap = gap
if not gap
is None else FRAME_TS_GAP_BDE
73 frame_class = fddetdataformats.TDEEthFrame
74 port = port
if not port
is None else 54323
75 gap = gap
if not gap
is None else FRAME_TS_GAP_TDE
78 frame_class = fddetdataformats.DAPHNEEthFrame
79 port = port
if not port
is None else 0x4444
85 print(
'Receiver started')
88 while (count==
None or i<count):
90 data, address = s.recvfrom(20000)
93 header = detdataformats.DAQEthHeader(data)
96 hdr_id = (header.det_id, header.crate_id, header.slot_id, header.stream_id)
99 stream_ts = header.timestamp
104 print(f
'Frame (size {len(data)}) from (DetID, Crate, Slot, Stream) = (0x{header.det_id}, 0x{header.crate_id:x}, 0x{header.slot_id:x}, 0x{header.stream_id:x})')
105 print(f
' Timestamp: 0x{header.timestamp:x}')
106 print(f
' Seq ID: {header.seq_id}, Block length: {header.block_length*8:d} (0x{header.block_length:x})')
112 if hdr_id
not in prev_stream:
115 prev_strm_ts = prev_stream[hdr_id]
116 if (
not gap
is None)
and (stream_ts - prev_strm_ts) != gap:
117 print(f
'delta_ts {stream_ts-prev_strm_ts} for {hdr_id} ')
136 h = detdataformats.DAQEthHeader(d_blk)
137 print(f
"len(data) = {l_pkt} block_len = {h.block_length*8:d} 0x{h.block_length:x} [l = {l}]")
138 l_frm = (h.block_length+1)*8
139 frames += [d_blk[:l_frm]]
143 print(f
"Scanning complete (scanned {l} over {l_pkt} bytes)")
146 for j,f
in enumerate(frames):
150 prev_stream[hdr_id] = stream_ts
157 avg_throughput = FRAME_SIZE*i/(1000000*(dtnow-dtstart))
158 throughput = FRAME_SIZE*sampling/(1000000*(dtnow-dtlast))
160 print(f
'Received {i} packets ({sampling/(dtnow-dtlast):.2f} pps over {dtnow-dtlast:.2f}); throughput = {throughput:.3f} MB/s [avg = {avg_throughput:.3f} MB/s]')
163 for k,ts
in prev_stream.items():
166 print(f
"stream {k}: last_ts {ts}")