From 35cebb59e49a3bfc470ef6b696028a92fa4b8a3d Mon Sep 17 00:00:00 2001 From: Mohacsi Istvan Date: Mon, 28 Jun 2021 10:41:21 +0200 Subject: [PATCH] Kind of working --- core-buffer/include/formats.hpp | 4 ++-- jfj-combined/include/JfjFrameCache.hpp | 19 +++++++++---------- jfj-combined/src/JfjFrameWorker.cpp | 2 +- jfj-combined/src/main.cpp | 8 +++++--- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/core-buffer/include/formats.hpp b/core-buffer/include/formats.hpp index 9535562..5945074 100644 --- a/core-buffer/include/formats.hpp +++ b/core-buffer/include/formats.hpp @@ -44,8 +44,8 @@ struct BufferBinaryFormat { struct ImageBinaryFormat { ImageMetadata meta; char* data = nullptr; - size_t size; - ImageBinaryFormat(size_t H, size_t W, size_t D): size(H*W*D) { data = (char*) malloc(H*W*D); }; + const size_t size; + ImageBinaryFormat(size_t H, size_t W, size_t D): size(H*W*D) { data = (char*) calloc(8*H*W*D, sizeof(int)); }; ~ImageBinaryFormat(){ free(data); std::cout << "ImageBinaryFormat destructor called!" << std::endl; } }; diff --git a/jfj-combined/include/JfjFrameCache.hpp b/jfj-combined/include/JfjFrameCache.hpp index d4f366d..633e354 100644 --- a/jfj-combined/include/JfjFrameCache.hpp +++ b/jfj-combined/include/JfjFrameCache.hpp @@ -23,9 +23,9 @@ **/ class FrameCache{ public: - FrameCache(uint64_t _C, uint64_t _MX, uint64_t _MY, std::function callback): - m_CAP(_C), m_MX(_MX), m_MY(_MY), m_M(_MX*_MY), m_PX(1024*_MX), m_PY(512*_MY), - m_buffer(_C, ImageBinaryFormat(512*_MY, 1024*_MX, sizeof(uint16_t))), + FrameCache(uint64_t _C, uint64_t N_MOD, std::function callback): + m_CAP(_C), m_M(N_MOD), + m_buffer(_C, ImageBinaryFormat(512*9, 1024, sizeof(uint16_t))), f_send(callback), m_vlock(_C), m_valid(_C), m_fill(_C) { }; @@ -56,14 +56,17 @@ public: std::cout << " fill/cpy" << std::endl; m_fill[idx]++; - char* ptr_dest = m_buffer[idx].data + moduleIDX * m_blocksize; - std::cout << " target:" << (void*)ptr_dest << "\tsize: " << m_blocksize << std::endl; + //char* ptr_dest = m_buffer[idx].data + moduleIDX * m_blocksize; + char* ptr_dest = m_buffer[idx].data; + // std::cout << " Root: " << (void*)m_buffer[idx].data << " ( " << m_buffer[idx].size << " )" << "\ttarget:" << (void*)ptr_dest << "\tsize: " << m_blocksize << std::endl; + std::cout << "Module: " << moduleIDX << std::endl; m_buffer[idx].meta.pulse_id = ref_frame.meta.pulse_id; m_buffer[idx].meta.frame_index = ref_frame.meta.frame_index; m_buffer[idx].meta.daq_rec = ref_frame.meta.daq_rec; std::cout << "NI " << std::endl; - std::memcpy((void*)ptr_dest, (void*)&ref_frame.data, m_blocksize); + //std::memcpy((void*)ptr_dest, (void*)&ref_frame.data, m_blocksize); + std::memcpy((void*)&ptr_dest[moduleIDX * m_blocksize], (void*)&ref_frame.data, m_blocksize); std::cout << " Fill ctr: " << m_fill[idx] << std::endl; @@ -99,10 +102,6 @@ public: private: const uint64_t m_CAP; - const uint64_t m_PX; - const uint64_t m_PY; - const uint64_t m_MX; - const uint64_t m_MY; const uint64_t m_M; const uint64_t m_blocksize = 1024*512*sizeof(uint16_t); std::function f_send; diff --git a/jfj-combined/src/JfjFrameWorker.cpp b/jfj-combined/src/JfjFrameWorker.cpp index 73d676d..f1d5056 100644 --- a/jfj-combined/src/JfjFrameWorker.cpp +++ b/jfj-combined/src/JfjFrameWorker.cpp @@ -82,7 +82,7 @@ uint64_t JfjFrameWorker::get_frame(BufferBinaryFormat& buffer){ //std::cout << "New packages" << std::endl; m_buffer.fill_from(m_udp_receiver); if (m_buffer.is_empty()) { continue; } - std::cout << "\tGot " << m_buffer.size() << std::endl; + // std::cout << "\tGot " << m_buffer.size() << std::endl; // ... and process them auto pulse_id = process_packets(buffer); diff --git a/jfj-combined/src/main.cpp b/jfj-combined/src/main.cpp index d062297..ee0393a 100644 --- a/jfj-combined/src/main.cpp +++ b/jfj-combined/src/main.cpp @@ -15,20 +15,22 @@ void dummy_sender(ImageBinaryFormat& image){ int main (int argc, char *argv[]) { std::cout << "Creating frame cache..." << std::endl; - FrameCache cache(32, 1, 3, &dummy_sender); + FrameCache cache(32, 3, &dummy_sender); std::function push_cb = std::bind(&FrameCache::emplace, &cache, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); std::cout << "Creating workers..." << std::endl; - JfjFrameWorker W0(5005, 0, push_cb); - //JfjFrameWorker W1(5006, 1, push_cb); + JfjFrameWorker W0(5005, 1, push_cb); + //JfjFrameWorker W1(5005, 0, push_cb); // JfjFrameWorker W2(5007, 2, push_cb); std::thread T0(&JfjFrameWorker::run, &W0); + //std::thread T1(&JfjFrameWorker::run, &W1); T0.join(); + //T1.join(); std::cout << "Exiting program..." << std::endl; return 0; }