AcquisitionDevice: Improve detection of erroneous frames without killing data acquisition
This commit is contained in:
1 parent
0421e517fc
commit
ac1d358700
8 files changed
+81
-60
No files matched your search
+1
-3
@@ -382,9 +382,7 @@ message FPGAStatus {
|
||||
uint32 git_sha1 = 16;
|
||||
uint32 mailbox_err_reg = 17;
|
||||
uint32 mailbox_status_reg = 18;
|
||||
bool frame_statistics_alignment_err = 21;
|
||||
bool frame_statistics_tlast_err = 22;
|
||||
bool frame_statistics_work_req_err = 23;
|
||||
repeated string host_writer_err = 21;
|
||||
uint64 slowest_head = 24;
|
||||
|
||||
float fpga_temp_degC = 26;
|
||||
|
||||
+46
-46
@@ -13,25 +13,25 @@ _sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cjfjoch.proto\x12\x0eJFJochProtoBuf\"\x07\n\x05\x45mpty\"W\n\x08UnitCell\x12\t\n\x01\x61\x18\x01 \x01(\x02\x12\t\n\x01\x62\x18\x02 \x01(\x02\x12\t\n\x01\x63\x18\x03 \x01(\x02\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x0c\n\x04\x62\x65ta\x18\x05 \x01(\x02\x12\r\n\x05gamma\x18\x06 \x01(\x02\")\n\x06Vector\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"|\n\x10RotationSettings\x12\x17\n\x0fstart_angle_deg\x18\x01 \x01(\x02\x12 \n\x18\x61ngle_incr_per_image_deg\x18\x02 \x01(\x02\x12-\n\rrotation_axis\x18\x03 \x01(\x0b\x32\x16.JFJochProtoBuf.Vector\"\x1c\n\x04Plot\x12\t\n\x01x\x18\x01 \x03(\x02\x12\t\n\x01y\x18\x02 \x03(\x02\"E\n\x0cROIRectangle\x12\n\n\x02x0\x18\x01 \x01(\x05\x12\n\n\x02y0\x18\x02 \x01(\x05\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05\"\xf2\x04\n\x0f\x44\x61tasetSettings\x12\x1a\n\x12images_per_trigger\x18\x01 \x01(\x03\x12\x10\n\x08ntrigger\x18\x02 \x01(\x03\x12\x13\n\tsummation\x18\x03 \x01(\x03H\x00\x12\x17\n\rimage_time_us\x18\x04 \x01(\x03H\x00\x12\x12\n\nbeam_x_pxl\x18\x05 \x01(\x02\x12\x12\n\nbeam_y_pxl\x18\x06 \x01(\x02\x12\x1c\n\x14\x64\x65tector_distance_mm\x18\x07 \x01(\x02\x12\x19\n\x11photon_energy_keV\x18\x08 \x01(\x02\x12\x13\n\x0b\x66ile_prefix\x18\t \x01(\t\x12\x17\n\x0f\x64\x61ta_file_count\x18\n \x01(\x03\x12\x30\n\x0b\x63ompression\x18\x0b \x01(\x0e\x32\x1b.JFJochProtoBuf.Compression\x12\x13\n\x0bsample_name\x18\x0c \x01(\t\x12\x30\n\tunit_cell\x18\r \x01(\x0b\x32\x18.JFJochProtoBuf.UnitCellH\x01\x88\x01\x01\x12\x1a\n\x12space_group_number\x18\x0e \x01(\x03\x12\x12\n\nbinning2x2\x18\x11 \x01(\x08\x12 \n\x18rad_int_solid_angle_corr\x18\x12 \x01(\x08\x12!\n\x19rad_int_polarization_corr\x18\x13 \x01(\x08\x12#\n\x1brad_int_polarization_factor\x18\x14 \x01(\x02\x12\x18\n\x10save_calibration\x18\x15 \x01(\x08\x12/\n\tuser_mask\x18\x16 \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangleB\x08\n\x06timingB\x0c\n\n_unit_cell\"\xb5\x03\n\x10\x44\x65tectorSettings\x12\x15\n\rframe_time_us\x18\x01 \x01(\x03\x12\x1a\n\rcount_time_us\x18\x02 \x01(\x03H\x00\x88\x01\x01\x12\x1a\n\x12storage_cell_count\x18\x03 \x01(\x03\x12%\n\x1duse_internal_packet_generator\x18\x04 \x01(\x08\x12\x18\n\x10\x63ollect_raw_data\x18\x05 \x01(\x08\x12\x1f\n\x12pedestal_g0_frames\x18\x06 \x01(\x03H\x01\x88\x01\x01\x12\x1f\n\x12pedestal_g1_frames\x18\x07 \x01(\x03H\x02\x88\x01\x01\x12\x1f\n\x12pedestal_g2_frames\x18\x08 \x01(\x03H\x03\x88\x01\x01\x12\x19\n\x11\x63onversion_on_cpu\x18\t \x01(\x08\x12\"\n\x15storage_cell_delay_ns\x18\n \x01(\x03H\x04\x88\x01\x01\x42\x10\n\x0e_count_time_usB\x15\n\x13_pedestal_g0_framesB\x15\n\x13_pedestal_g1_framesB\x15\n\x13_pedestal_g2_framesB\x18\n\x16_storage_cell_delay_ns\"b\n\x16\x44\x65tectorModuleGeometry\x12\x0e\n\x06pixel0\x18\x01 \x01(\x03\x12\x1b\n\x13\x66\x61st_direction_step\x18\x02 \x01(\x03\x12\x1b\n\x13slow_direction_step\x18\x03 \x01(\x03\"z\n\x10\x44\x65tectorGeometry\x12\x11\n\twidth_pxl\x18\x01 \x01(\x03\x12\x12\n\nheight_pxl\x18\x02 \x01(\x03\x12?\n\x0fmodule_geometry\x18\x03 \x03(\x0b\x32&.JFJochProtoBuf.DetectorModuleGeometry\"\xc1\x01\n\x08\x44\x65tector\x12\x10\n\x08nmodules\x18\x01 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rpixel_size_mm\x18\x03 \x01(\x02\x12\x17\n\x0fmodule_hostname\x18\x04 \x03(\t\x12\x32\n\x08geometry\x18\x05 \x01(\x0b\x32 .JFJochProtoBuf.DetectorGeometry\x12*\n\x04type\x18\x06 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorType\"\xe2\x06\n\x10InternalSettings\x12\"\n\x1a\x66rame_time_pedestalG1G2_us\x18\x01 \x01(\x03\x12\x15\n\rframe_time_us\x18\x03 \x01(\x03\x12\x15\n\rcount_time_us\x18\x04 \x01(\x03\x12*\n\x08\x64\x65tector\x18\x05 \x01(\x0b\x32\x18.JFJochProtoBuf.Detector\x12\x14\n\x0cndatastreams\x18\x06 \x01(\x03\x12&\n\x1einternal_fpga_packet_generator\x18\t \x01(\x08\x12\x15\n\rstorage_cells\x18\n \x01(\x03\x12\x1a\n\x12storage_cell_start\x18\x0b \x01(\x03\x12\x1d\n\x15storage_cell_delay_ns\x18\' \x01(\x03\x12\x1a\n\x12pedestal_g0_frames\x18\x0c \x01(\x03\x12\x1a\n\x12pedestal_g1_frames\x18\r \x01(\x03\x12\x1a\n\x12pedestal_g2_frames\x18\x0e \x01(\x03\x12\x19\n\x11preview_period_us\x18\x0f \x01(\x03\x12\x1e\n\x16spot_finding_period_us\x18\x10 \x01(\x03\x12*\n\x04mode\x18\x13 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorMode\x12\x19\n\x11mask_module_edges\x18\x14 \x01(\x08\x12\x17\n\x0fmask_chip_edges\x18\x15 \x01(\x08\x12\x16\n\x0eipv4_base_addr\x18\x16 \x01(\x03\x12\r\n\x05low_q\x18\x1a \x01(\x02\x12\x0e\n\x06high_q\x18\x1b \x01(\x02\x12\x11\n\tq_spacing\x18\x1c \x01(\x02\x12\x10\n\x08git_sha1\x18\x1d \x01(\t\x12\x10\n\x08git_date\x18\x1e \x01(\t\x12\x19\n\x11\x63onversion_on_cpu\x18\x1f \x01(\x08\x12\x13\n\x0bsource_name\x18 \x01(\t\x12\x19\n\x11source_name_short\x18! \x01(\t\x12\x17\n\x0finstrument_name\x18\" \x01(\t\x12\x1d\n\x15instrument_name_short\x18# \x01(\t\x12\x33\n\rroi_rectangle\x18$ \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangle\x12\x11\n\troi_apply\x18% \x01(\x08\x12\xLine truncated
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cjfjoch.proto\x12\x0eJFJochProtoBuf\"\x07\n\x05\x45mpty\"W\n\x08UnitCell\x12\t\n\x01\x61\x18\x01 \x01(\x02\x12\t\n\x01\x62\x18\x02 \x01(\x02\x12\t\n\x01\x63\x18\x03 \x01(\x02\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x0c\n\x04\x62\x65ta\x18\x05 \x01(\x02\x12\r\n\x05gamma\x18\x06 \x01(\x02\")\n\x06Vector\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"|\n\x10RotationSettings\x12\x17\n\x0fstart_angle_deg\x18\x01 \x01(\x02\x12 \n\x18\x61ngle_incr_per_image_deg\x18\x02 \x01(\x02\x12-\n\rrotation_axis\x18\x03 \x01(\x0b\x32\x16.JFJochProtoBuf.Vector\"\x1c\n\x04Plot\x12\t\n\x01x\x18\x01 \x03(\x02\x12\t\n\x01y\x18\x02 \x03(\x02\"E\n\x0cROIRectangle\x12\n\n\x02x0\x18\x01 \x01(\x05\x12\n\n\x02y0\x18\x02 \x01(\x05\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05\"\xf2\x04\n\x0f\x44\x61tasetSettings\x12\x1a\n\x12images_per_trigger\x18\x01 \x01(\x03\x12\x10\n\x08ntrigger\x18\x02 \x01(\x03\x12\x13\n\tsummation\x18\x03 \x01(\x03H\x00\x12\x17\n\rimage_time_us\x18\x04 \x01(\x03H\x00\x12\x12\n\nbeam_x_pxl\x18\x05 \x01(\x02\x12\x12\n\nbeam_y_pxl\x18\x06 \x01(\x02\x12\x1c\n\x14\x64\x65tector_distance_mm\x18\x07 \x01(\x02\x12\x19\n\x11photon_energy_keV\x18\x08 \x01(\x02\x12\x13\n\x0b\x66ile_prefix\x18\t \x01(\t\x12\x17\n\x0f\x64\x61ta_file_count\x18\n \x01(\x03\x12\x30\n\x0b\x63ompression\x18\x0b \x01(\x0e\x32\x1b.JFJochProtoBuf.Compression\x12\x13\n\x0bsample_name\x18\x0c \x01(\t\x12\x30\n\tunit_cell\x18\r \x01(\x0b\x32\x18.JFJochProtoBuf.UnitCellH\x01\x88\x01\x01\x12\x1a\n\x12space_group_number\x18\x0e \x01(\x03\x12\x12\n\nbinning2x2\x18\x11 \x01(\x08\x12 \n\x18rad_int_solid_angle_corr\x18\x12 \x01(\x08\x12!\n\x19rad_int_polarization_corr\x18\x13 \x01(\x08\x12#\n\x1brad_int_polarization_factor\x18\x14 \x01(\x02\x12\x18\n\x10save_calibration\x18\x15 \x01(\x08\x12/\n\tuser_mask\x18\x16 \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangleB\x08\n\x06timingB\x0c\n\n_unit_cell\"\xb5\x03\n\x10\x44\x65tectorSettings\x12\x15\n\rframe_time_us\x18\x01 \x01(\x03\x12\x1a\n\rcount_time_us\x18\x02 \x01(\x03H\x00\x88\x01\x01\x12\x1a\n\x12storage_cell_count\x18\x03 \x01(\x03\x12%\n\x1duse_internal_packet_generator\x18\x04 \x01(\x08\x12\x18\n\x10\x63ollect_raw_data\x18\x05 \x01(\x08\x12\x1f\n\x12pedestal_g0_frames\x18\x06 \x01(\x03H\x01\x88\x01\x01\x12\x1f\n\x12pedestal_g1_frames\x18\x07 \x01(\x03H\x02\x88\x01\x01\x12\x1f\n\x12pedestal_g2_frames\x18\x08 \x01(\x03H\x03\x88\x01\x01\x12\x19\n\x11\x63onversion_on_cpu\x18\t \x01(\x08\x12\"\n\x15storage_cell_delay_ns\x18\n \x01(\x03H\x04\x88\x01\x01\x42\x10\n\x0e_count_time_usB\x15\n\x13_pedestal_g0_framesB\x15\n\x13_pedestal_g1_framesB\x15\n\x13_pedestal_g2_framesB\x18\n\x16_storage_cell_delay_ns\"b\n\x16\x44\x65tectorModuleGeometry\x12\x0e\n\x06pixel0\x18\x01 \x01(\x03\x12\x1b\n\x13\x66\x61st_direction_step\x18\x02 \x01(\x03\x12\x1b\n\x13slow_direction_step\x18\x03 \x01(\x03\"z\n\x10\x44\x65tectorGeometry\x12\x11\n\twidth_pxl\x18\x01 \x01(\x03\x12\x12\n\nheight_pxl\x18\x02 \x01(\x03\x12?\n\x0fmodule_geometry\x18\x03 \x03(\x0b\x32&.JFJochProtoBuf.DetectorModuleGeometry\"\xc1\x01\n\x08\x44\x65tector\x12\x10\n\x08nmodules\x18\x01 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rpixel_size_mm\x18\x03 \x01(\x02\x12\x17\n\x0fmodule_hostname\x18\x04 \x03(\t\x12\x32\n\x08geometry\x18\x05 \x01(\x0b\x32 .JFJochProtoBuf.DetectorGeometry\x12*\n\x04type\x18\x06 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorType\"\xe2\x06\n\x10InternalSettings\x12\"\n\x1a\x66rame_time_pedestalG1G2_us\x18\x01 \x01(\x03\x12\x15\n\rframe_time_us\x18\x03 \x01(\x03\x12\x15\n\rcount_time_us\x18\x04 \x01(\x03\x12*\n\x08\x64\x65tector\x18\x05 \x01(\x0b\x32\x18.JFJochProtoBuf.Detector\x12\x14\n\x0cndatastreams\x18\x06 \x01(\x03\x12&\n\x1einternal_fpga_packet_generator\x18\t \x01(\x08\x12\x15\n\rstorage_cells\x18\n \x01(\x03\x12\x1a\n\x12storage_cell_start\x18\x0b \x01(\x03\x12\x1d\n\x15storage_cell_delay_ns\x18\' \x01(\x03\x12\x1a\n\x12pedestal_g0_frames\x18\x0c \x01(\x03\x12\x1a\n\x12pedestal_g1_frames\x18\r \x01(\x03\x12\x1a\n\x12pedestal_g2_frames\x18\x0e \x01(\x03\x12\x19\n\x11preview_period_us\x18\x0f \x01(\x03\x12\x1e\n\x16spot_finding_period_us\x18\x10 \x01(\x03\x12*\n\x04mode\x18\x13 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorMode\x12\x19\n\x11mask_module_edges\x18\x14 \x01(\x08\x12\x17\n\x0fmask_chip_edges\x18\x15 \x01(\x08\x12\x16\n\x0eipv4_base_addr\x18\x16 \x01(\x03\x12\r\n\x05low_q\x18\x1a \x01(\x02\x12\x0e\n\x06high_q\x18\x1b \x01(\x02\x12\x11\n\tq_spacing\x18\x1c \x01(\x02\x12\x10\n\x08git_sha1\x18\x1d \x01(\t\x12\x10\n\x08git_date\x18\x1e \x01(\t\x12\x19\n\x11\x63onversion_on_cpu\x18\x1f \x01(\x08\x12\x13\n\x0bsource_name\x18 \x01(\t\x12\x19\n\x11source_name_short\x18! \x01(\t\x12\x17\n\x0finstrument_name\x18\" \x01(\t\x12\x1d\n\x15instrument_name_short\x18# \x01(\t\x12\x33\n\rroi_rectangle\x18$ \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangle\x12\x11\n\troi_apply\x18% \x01(\x08\x12\xLine truncated
|
||||
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'jfjoch_pb2', globals())
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
|
||||
DESCRIPTOR._options = None
|
||||
_COMPRESSION._serialized_start=9098
|
||||
_COMPRESSION._serialized_end=9182
|
||||
_DETECTORTYPE._serialized_start=9184
|
||||
_DETECTORTYPE._serialized_end=9223
|
||||
_DETECTORMODE._serialized_start=9225
|
||||
_DETECTORMODE._serialized_end=9315
|
||||
_FPGAFIFOSTATUSENUM._serialized_start=9317
|
||||
_FPGAFIFOSTATUSENUM._serialized_end=9371
|
||||
_STATE._serialized_start=9373
|
||||
_STATE._serialized_end=9467
|
||||
_PLOTTYPE._serialized_start=9469
|
||||
_PLOTTYPE._serialized_end=9573
|
||||
_COMPRESSION._serialized_start=9008
|
||||
_COMPRESSION._serialized_end=9092
|
||||
_DETECTORTYPE._serialized_start=9094
|
||||
_DETECTORTYPE._serialized_end=9133
|
||||
_DETECTORMODE._serialized_start=9135
|
||||
_DETECTORMODE._serialized_end=9225
|
||||
_FPGAFIFOSTATUSENUM._serialized_start=9227
|
||||
_FPGAFIFOSTATUSENUM._serialized_end=9281
|
||||
_STATE._serialized_start=9283
|
||||
_STATE._serialized_end=9377
|
||||
_PLOTTYPE._serialized_start=9379
|
||||
_PLOTTYPE._serialized_end=9483
|
||||
_EMPTY._serialized_start=32
|
||||
_EMPTY._serialized_end=39
|
||||
_UNITCELL._serialized_start=41
|
||||
@@ -103,37 +103,37 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_FPGAFIFOSTATUS._serialized_start=5731
|
||||
_FPGAFIFOSTATUS._serialized_end=5812
|
||||
_FPGASTATUS._serialized_start=5815
|
||||
_FPGASTATUS._serialized_end=6776
|
||||
_DATAPROCESSINGSETTINGS._serialized_start=6779
|
||||
_DATAPROCESSINGSETTINGS._serialized_end=7125
|
||||
_PREVIEWFRAMESPOT._serialized_start=7127
|
||||
_PREVIEWFRAMESPOT._serialized_end=7184
|
||||
_PREVIEWFRAME._serialized_start=7187
|
||||
_PREVIEWFRAME._serialized_end=7505
|
||||
_MODULESTATISTICS._serialized_start=7508
|
||||
_MODULESTATISTICS._serialized_end=7745
|
||||
_IMAGE._serialized_start=7747
|
||||
_IMAGE._serialized_end=7820
|
||||
_MASKTOLOAD._serialized_start=7822
|
||||
_MASKTOLOAD._serialized_end=7868
|
||||
_MEASUREMENTSTATISTICS._serialized_start=7871
|
||||
_MEASUREMENTSTATISTICS._serialized_end=8484
|
||||
_BROKERSTATUS._serialized_start=8487
|
||||
_BROKERSTATUS._serialized_end=8702
|
||||
_BROKERFULLSTATUS._serialized_start=8705
|
||||
_BROKERFULLSTATUS._serialized_end=8869
|
||||
_DETECTORLISTELEMENT._serialized_start=8871
|
||||
_DETECTORLISTELEMENT._serialized_end=8943
|
||||
_DETECTORLIST._serialized_start=8945
|
||||
_DETECTORLIST._serialized_end=9063
|
||||
_DETECTORSELECTION._serialized_start=9065
|
||||
_DETECTORSELECTION._serialized_end=9096
|
||||
_GRPC_JFJOCHRECEIVER._serialized_start=9576
|
||||
_GRPC_JFJOCHRECEIVER._serialized_end=10343
|
||||
_GRPC_JFJOCHWRITER._serialized_start=10346
|
||||
_GRPC_JFJOCHWRITER._serialized_end=10548
|
||||
_GRPC_JFJOCHDETECTOR._serialized_start=10551
|
||||
_GRPC_JFJOCHDETECTOR._serialized_end=10937
|
||||
_GRPC_JFJOCHBROKER._serialized_start=10940
|
||||
_GRPC_JFJOCHBROKER._serialized_end=12629
|
||||
_FPGASTATUS._serialized_end=6686
|
||||
_DATAPROCESSINGSETTINGS._serialized_start=6689
|
||||
_DATAPROCESSINGSETTINGS._serialized_end=7035
|
||||
_PREVIEWFRAMESPOT._serialized_start=7037
|
||||
_PREVIEWFRAMESPOT._serialized_end=7094
|
||||
_PREVIEWFRAME._serialized_start=7097
|
||||
_PREVIEWFRAME._serialized_end=7415
|
||||
_MODULESTATISTICS._serialized_start=7418
|
||||
_MODULESTATISTICS._serialized_end=7655
|
||||
_IMAGE._serialized_start=7657
|
||||
_IMAGE._serialized_end=7730
|
||||
_MASKTOLOAD._serialized_start=7732
|
||||
_MASKTOLOAD._serialized_end=7778
|
||||
_MEASUREMENTSTATISTICS._serialized_start=7781
|
||||
_MEASUREMENTSTATISTICS._serialized_end=8394
|
||||
_BROKERSTATUS._serialized_start=8397
|
||||
_BROKERSTATUS._serialized_end=8612
|
||||
_BROKERFULLSTATUS._serialized_start=8615
|
||||
_BROKERFULLSTATUS._serialized_end=8779
|
||||
_DETECTORLISTELEMENT._serialized_start=8781
|
||||
_DETECTORLISTELEMENT._serialized_end=8853
|
||||
_DETECTORLIST._serialized_start=8855
|
||||
_DETECTORLIST._serialized_end=8973
|
||||
_DETECTORSELECTION._serialized_start=8975
|
||||
_DETECTORSELECTION._serialized_end=9006
|
||||
_GRPC_JFJOCHRECEIVER._serialized_start=9486
|
||||
_GRPC_JFJOCHRECEIVER._serialized_end=10253
|
||||
_GRPC_JFJOCHWRITER._serialized_start=10256
|
||||
_GRPC_JFJOCHWRITER._serialized_end=10458
|
||||
_GRPC_JFJOCHDETECTOR._serialized_start=10461
|
||||
_GRPC_JFJOCHDETECTOR._serialized_end=10847
|
||||
_GRPC_JFJOCHBROKER._serialized_start=10850
|
||||
_GRPC_JFJOCHBROKER._serialized_end=12539
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -92,15 +92,18 @@ void AcquisitionDevice::WaitForActionComplete() {
|
||||
Cancel();
|
||||
// this frame is not of any interest, therefore its location can be immediately released
|
||||
SendWorkRequest(c.handle);
|
||||
} else if (c.module_number >= max_modules) {
|
||||
// Module number out of bounds, don't process
|
||||
if (logger != nullptr)
|
||||
logger->Error("Completion with wrong module number data stream {} completion frame number {} module {} handle {} timestamp {} status {}",
|
||||
data_stream, c.frame_number, c.module_number, c.handle, c.timestamp, c.status);
|
||||
SendWorkRequest(c.handle);
|
||||
} else
|
||||
counters.UpdateCounters(&c);
|
||||
|
||||
if (logger != nullptr)
|
||||
logger->Debug("Data stream " + std::to_string(data_stream)
|
||||
+ " completion frame number " + std::to_string(c.frame_number)
|
||||
+ " module " + std::to_string(c.module_number)
|
||||
+ " handle " + std::to_string(c.handle)
|
||||
+ " timestamp " + std::to_string(c.timestamp));
|
||||
logger->Debug("Data stream {} completion frame number {} module {} handle {} timestamp {} status {}",
|
||||
data_stream, c.frame_number, c.module_number, c.handle, c.timestamp, c.status);
|
||||
|
||||
c = work_completion_queue.GetBlocking();
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ Completion parse_hw_completion(uint32_t tmp[16]) {
|
||||
c.handle = tmp[0];
|
||||
c.module_number = tmp[1] & 0xFF;
|
||||
c.packet_count = (tmp[1] & (0xFFFF0000)) >> 16;
|
||||
c.status = (tmp[1] >> 8) & 0xFF;
|
||||
c.data_collection_id = tmp[11] & UINT16_MAX;
|
||||
|
||||
uint64_t detector_frame_number = bit_concat(tmp[2], tmp[3]);
|
||||
@@ -34,7 +35,6 @@ Completion parse_hw_completion(uint32_t tmp[16]) {
|
||||
c.frame_number = detector_frame_number;
|
||||
} else {
|
||||
c.type = Completion::Type::Image;
|
||||
|
||||
if (detector_frame_number == 0)
|
||||
throw JFJochException(JFJochExceptionCategory::HardwareParityError, "Detector frame number cannot be zero");
|
||||
else
|
||||
|
||||
@@ -23,7 +23,8 @@ struct Completion {
|
||||
uint32_t handle;
|
||||
uint16_t packet_count;
|
||||
uint16_t data_collection_id;
|
||||
uint8_t module_number;
|
||||
uint16_t status;
|
||||
uint16_t module_number;
|
||||
};
|
||||
|
||||
Completion parse_hw_completion(uint32_t hw_input[16]);
|
||||
|
||||
@@ -171,6 +171,12 @@ inline void FIFO_check(JFJochProtoBuf::FPGAStatus &fpga_status,
|
||||
fifo_status->set_value(JFJochProtoBuf::FPGAFIFOStatusEnum::PARTIAL);
|
||||
}
|
||||
|
||||
inline void CheckHostWriterErr(JFJochProtoBuf::FPGAStatus &output, uint32_t status_register,
|
||||
uint32_t bit, const std::string &name) {
|
||||
if (status_register & (1 << (24+bit)))
|
||||
output.add_host_writer_err(name);
|
||||
}
|
||||
|
||||
JFJochProtoBuf::FPGAStatus FPGAAcquisitionDevice::GetStatus() const {
|
||||
|
||||
ActionStatus status{};
|
||||
@@ -210,9 +216,12 @@ JFJochProtoBuf::FPGAStatus FPGAAcquisitionDevice::GetStatus() const {
|
||||
ret.set_error_packet_len(status.udp_err_len);
|
||||
ret.set_cancel_bit(full_status_register & (1<<2));
|
||||
ret.set_host_writer_idle(full_status_register & (1<<4));
|
||||
ret.set_frame_statistics_alignment_err(full_status_register & (1 << 24));
|
||||
ret.set_frame_statistics_tlast_err(full_status_register & (1 << 25));
|
||||
ret.set_frame_statistics_work_req_err(full_status_register & (1 << 26));
|
||||
CheckHostWriterErr(ret, full_status_register, 0, "Alignment error");
|
||||
CheckHostWriterErr(ret, full_status_register, 1, "TLAST error");
|
||||
CheckHostWriterErr(ret, full_status_register, 2, "Work request parity error");
|
||||
CheckHostWriterErr(ret, full_status_register, 3, "Handle error");
|
||||
CheckHostWriterErr(ret, full_status_register, 4, "Null pointer");
|
||||
CheckHostWriterErr(ret, full_status_register, 5, "Module number exceeded");
|
||||
|
||||
ret.set_mailbox_status_reg(env.mailbox_status_reg);
|
||||
ret.set_mailbox_err_reg(env.mailbox_err_reg);
|
||||
|
||||
@@ -256,7 +256,11 @@ void JFJochReceiver::AcquireThread(uint16_t data_stream) {
|
||||
} catch (const JFJochException &e) {
|
||||
Cancel(e);
|
||||
}
|
||||
|
||||
auto status = acquisition_device[data_stream]->GetStatus();
|
||||
if (!status.host_writer_err().empty()) {
|
||||
for (const auto &i: status.host_writer_err())
|
||||
logger.Error("Device thread {}: host writer error {}", data_stream, i);
|
||||
}
|
||||
logger.Info("Device thread {} done", data_stream);
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,12 @@ int main(int argc, char **argv) {
|
||||
std::cout << s << std::endl;
|
||||
}
|
||||
|
||||
if (!status.host_writer_err().empty()) {
|
||||
std::cout << "FPGA host writer errors: " << std::endl;
|
||||
for (const auto &i: status.host_writer_err())
|
||||
std::cout << " " << i << std::endl;
|
||||
}
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << "Packet counters - ETH " << status.packets_ether() << std::endl;
|
||||
std::cout << " - UDP " << status.packets_udp() << std::endl;
|
||||
|
||||
Reference in new issue
Block a user