From 5788f707f949f448f3e372cf70125fcefb099ac8 Mon Sep 17 00:00:00 2001 From: lhdamiani Date: Tue, 20 Jul 2021 17:22:20 +0200 Subject: [PATCH] assembler name frame instead of module --- eiger/test/trimbit.py | 9 ++++++--- jf-assembler/include/EigerAssembler.hpp | 6 +++--- jf-assembler/src/EigerAssembler.cpp | 16 ++++++++-------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/eiger/test/trimbit.py b/eiger/test/trimbit.py index e050532..7cc00ae 100644 --- a/eiger/test/trimbit.py +++ b/eiger/test/trimbit.py @@ -8,19 +8,22 @@ plt.ion() dacs = np.array([ 0, 2480, 2900, 1400, 4000, 2556, 898, 848, 0, 855, 1100, 1100, 982, 895, 2000, 1550, 570, 0], dtype=np.int32) -tb = np.zeros((512,1024), dtype = np.int32) +tb = np.zeros((256,1024), dtype = np.int32) # Create the desired pattern -for row in range(0,512,64): +for row in range(0,256,64): for col in range(0,1024,64): print(f'{row}, {col}') tb[row:row+32, col:col+32] = 63 fig, ax = plt.subplots() + im = ax.imshow(tb) +fig.savefig('trim.png') -with open('trimbits.sn000', 'wb') as f: + +with open('trimbits.sn001', 'wb') as f: dacs.tofile(f) tb.tofile(f) \ No newline at end of file diff --git a/jf-assembler/include/EigerAssembler.hpp b/jf-assembler/include/EigerAssembler.hpp index 350b050..b07bd8d 100644 --- a/jf-assembler/include/EigerAssembler.hpp +++ b/jf-assembler/include/EigerAssembler.hpp @@ -13,7 +13,7 @@ class EigerAssembler { int last_image_status_; const uint32_t n_bytes_per_frame_; - const uint32_t n_bytes_per_module_line_; + const uint32_t n_bytes_per_frame_line_; const uint32_t n_packets_per_frame_; const uint32_t n_bytes_per_x_gap_; const uint32_t n_bytes_per_y_gap_; @@ -36,8 +36,8 @@ public: friend std::ostream& operator<<(std::ostream& os, const EigerAssembler& p) { return os << "( n_bytes_per_frame_" - << p.n_bytes_per_frame_ << ", n_bytes_per_module_line_" - << p.n_bytes_per_module_line_ << ", n_packets_per_frame_" + << p.n_bytes_per_frame_ << ", n_bytes_per_frame_line_" + << p.n_bytes_per_frame_line_ << ", n_packets_per_frame_" << p.n_packets_per_frame_ << ", n_bytes_per_x_gap_" << p.n_bytes_per_x_gap_ << ", n_bytes_per_y_gap_" << p.n_bytes_per_y_gap_ << ", n_bytes_per_eiger_x_gap_" diff --git a/jf-assembler/src/EigerAssembler.cpp b/jf-assembler/src/EigerAssembler.cpp index afc4c0a..934f667 100644 --- a/jf-assembler/src/EigerAssembler.cpp +++ b/jf-assembler/src/EigerAssembler.cpp @@ -17,16 +17,15 @@ EigerAssembler::EigerAssembler(const int n_modules, const int bit_depth): n_eiger_modules_(n_modules/4), bit_depth_(bit_depth), n_bytes_per_frame_(MODULE_N_PIXELS * bit_depth / 8), - n_bytes_per_module_line_(N_BYTES_PER_MODULE_LINE(bit_depth)), + n_bytes_per_frame_line_(N_BYTES_PER_MODULE_LINE(bit_depth)), n_packets_per_frame_(n_bytes_per_frame_ / DATA_BYTES_PER_PACKET), n_bytes_per_x_gap_(GAP_X_MODULE_PIXELS * bit_depth / 8), n_bytes_per_y_gap_(GAP_Y_MODULE_PIXELS * bit_depth / 8), n_bytes_per_eiger_x_gap_(GAP_X_EIGERMOD_PIXELS * bit_depth / 8), n_bytes_per_eiger_y_gap_(GAP_Y_EIGERMOD_PIXELS * bit_depth / 8), - n_bytes_per_image_line_(n_bytes_per_module_line_ * 2 + n_bytes_per_x_gap_), - n_lines_per_frame_(DATA_BYTES_PER_PACKET / n_bytes_per_module_line_ - * n_packets_per_frame_), - image_bytes_((n_modules_ * MODULE_N_PIXELS * bit_depth_ / 8) + ((n_eiger_modules_) * (MODULE_Y_SIZE * 2) * bit_depth_ / 8) + ((n_eiger_modules_) * (2 * n_bytes_per_image_line_))) + n_bytes_per_image_line_(n_bytes_per_frame_line_ * 2 + n_bytes_per_x_gap_), + n_lines_per_frame_(DATA_BYTES_PER_PACKET / n_bytes_per_frame_line_ * n_packets_per_frame_), + image_bytes_((n_modules_ * n_bytes_per_frame_) + (2 * (MODULE_Y_SIZE * 2) * bit_depth_ / 8) + ((n_eiger_modules_) * (2 * n_bytes_per_image_line_))) { } @@ -69,6 +68,7 @@ void EigerAssembler::assemble_image(const char* src_meta, image_meta->dtype = (bit_depth_ <= 8) ? 1 : bit_depth_ / 8; image_meta->encoding = 0; image_meta->source_id = 0; + // TODO: proper user ids image_meta->user_1 = 0; image_meta->user_2 = 0; is_pulse_init = 1; @@ -104,7 +104,7 @@ void EigerAssembler::assemble_image(const char* src_meta, reverse_factor = MODULE_Y_SIZE - 1; dest_offset += n_bytes_per_image_line_ * (MODULE_Y_SIZE + GAP_Y_MODULE_PIXELS); - source_offset = (MODULE_Y_SIZE-1) * n_bytes_per_module_line_; + source_offset = (MODULE_Y_SIZE-1) * n_bytes_per_frame_line_; } const auto i_module_row = frame_meta->pos_x; @@ -114,7 +114,7 @@ void EigerAssembler::assemble_image(const char* src_meta, uint32_t dest_module_line = line_number; if (i_module_column == 1) { - dest_offset += n_bytes_per_module_line_ + n_bytes_per_x_gap_; + dest_offset += n_bytes_per_frame_line_ + n_bytes_per_x_gap_; } int counter = 0; @@ -125,7 +125,7 @@ void EigerAssembler::assemble_image(const char* src_meta, memcpy ( (char*)(dst_data + dest_offset), (char*)(src_data + source_offset), - n_bytes_per_module_line_ + n_bytes_per_frame_line_ ); counter += 1;