Kind of working

This commit is contained in:
Mohacsi Istvan
2021-06-28 10:41:21 +02:00
parent 500ed354f0
commit 35cebb59e4
4 changed files with 17 additions and 16 deletions
+2 -2
View File
@@ -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; }
};
+9 -10
View File
@@ -23,9 +23,9 @@
**/
class FrameCache{
public:
FrameCache(uint64_t _C, uint64_t _MX, uint64_t _MY, std::function<void(ImageBinaryFormat&)> 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<void(ImageBinaryFormat&)> 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<void(ImageBinaryFormat&)> f_send;
+1 -1
View File
@@ -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);
+5 -3
View File
@@ -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<void(uint64_t, uint64_t, BufferBinaryFormat&)> 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;
}