diff --git a/RELEASE.txt b/RELEASE.txt index ff46ed073..521e0aaeb 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -7,8 +7,8 @@ This document describes the differences between 4.2.0 and 4.1.1 releases. CONTENTS -------- 1. Topics Concerning - 2. Resolved Issues - 3. Known Issues + 2. New Features + 3. Resolved Issues 4. Firmware Requirements 5. Download, Documentation & Support @@ -17,41 +17,65 @@ This document describes the differences between 4.2.0 and 4.1.1 releases. 1. Topics Concerning ==================== - - (Eiger) detector server startup with vcal = 0 to reduce noise - - Deactivate will deactivate a module even if FEB does not work. - - trimbits check - - zmqsocket - - fifo size (memory allocation print to mb) - - subexptime also sets subperiod in master fle - - minor check if no detectors ()xxxxxxxxxxxxxxxxxxxxxxx - - setflippeddatax in users xxxxx - - memory alignment in receiver + - (Eiger) Change in vcal dac value + - (Eiger) Deactivate a module + - (Eiger) Setting all trimbits argument check + - (Receiver) rx_fifodepth has a higher range + - (Receiver) subperiod in master file + - (Receiver) performance (memory allocation and alignment, file buffering) + - (Package) Removed warnings including memory overlap copy + - (Users) Added setflippeddatax to users class + + Compared to 4.1.1, + - no firmware update required for this release + - eiger on-board detector server update required for this release -2. Resolved Issues +2. New Features +=============== + + Receiver + -------- + 1. Memory in receiver is now byte aligned and write to every page + at memory allocation to ensure complete memory allocated right + from start. Removed file buffering when writing to file. Replaced + pausing on keepRunning variable with semaphore to reduce cpu + load. + + Client + ------ + 1. Added setflippeddatax to users class. + + + +3. Resolved Issues ================== Detector Server (Eiger) ----------------------- - 1. Vcal dac set to 0 at on-board detector server start up to reduce noise. - 2. Deactivate will deactivate a module even if FEB does not work. + 2. Setting activate to 0 sent to both control and stop server. + So, deactivate a module can be done even if FEB communication fails. + Restarting the server will activate the module again. - 3. Trimbits values checked for values 0 - 63. + 3. Setting all trimbits values checked for values 0 - 63. Receiver -------- + 1. Earlier, setting rx_fifodepth to a high value would set to + a lower value, printing this low value to console, + but not giving an error. Memory allocated can now take in 64 bits. + + 2. Modifying subexptime now also updates subperiod in master file. + Also, the print for subperiod name to console is corrected. - 1. zmq socket send memory not overlapping - 2. fifo size not be large (and memory allocated print to mb) - - - subexptime also sets subperiod in master fle - -3. Known Issues -=============== + Package + ------- + 1. Many warnings have been fixed, including those with overlapping + memory copies for source and destination. diff --git a/slsReceiverSoftware/include/BinaryFileStatic.h b/slsReceiverSoftware/include/BinaryFileStatic.h index 02c4f98e3..0fcefce8f 100644 --- a/slsReceiverSoftware/include/BinaryFileStatic.h +++ b/slsReceiverSoftware/include/BinaryFileStatic.h @@ -188,10 +188,9 @@ class BinaryFileStatic { * @param fd file pointer * @param owenable overwrite enable * @param fname complete file name - * @param filebuffersize file buffer size * @returns 0 for success and 1 for fail */ - static int CreateDataFile(FILE*& fd, bool owenable, std::string fname, size_t filebuffersize) + static int CreateDataFile(FILE*& fd, bool owenable, std::string fname) { if(!owenable){ if (NULL == (fd = fopen((const char *) fname.c_str(), "wx"))){ @@ -204,8 +203,8 @@ class BinaryFileStatic { fd = 0; return 1; } - //setting file buffer size to 16mb - setvbuf(fd,NULL,_IOFBF,filebuffersize); + //setting to no file buffering + setvbuf(fd,NULL, _IONBF, 0); return 0; } diff --git a/slsReceiverSoftware/include/receiver_defs.h b/slsReceiverSoftware/include/receiver_defs.h index 60bdcf877..9ea4ade3d 100755 --- a/slsReceiverSoftware/include/receiver_defs.h +++ b/slsReceiverSoftware/include/receiver_defs.h @@ -17,9 +17,6 @@ #define STATISTIC_FRAMENUMBER_INFINITE 20000 -//binary -#define FILE_BUFFER_SIZE (16*1024*1024) //16mb - //fifo #define FIFO_HEADER_NUMBYTES 8 diff --git a/slsReceiverSoftware/src/BinaryFile.cpp b/slsReceiverSoftware/src/BinaryFile.cpp index 1c4ef6e21..d072c7a4e 100644 --- a/slsReceiverSoftware/src/BinaryFile.cpp +++ b/slsReceiverSoftware/src/BinaryFile.cpp @@ -49,7 +49,7 @@ int BinaryFile::CreateFile(uint64_t fnum) { currentFileName = BinaryFileStatic::CreateFileName(filePath, fileNamePrefix, *fileIndex, (*numImages > 1), fnum, *detIndex, *numUnitsPerDetector, index); - if (BinaryFileStatic::CreateDataFile(filefd, *overWriteEnable, currentFileName, FILE_BUFFER_SIZE) == FAIL) + if (BinaryFileStatic::CreateDataFile(filefd, *overWriteEnable, currentFileName) == FAIL) return FAIL; if(!(*silentMode)) { diff --git a/slsReceiverSoftware/src/Fifo.cpp b/slsReceiverSoftware/src/Fifo.cpp index 8c4c9b93f..a6c49c511 100644 --- a/slsReceiverSoftware/src/Fifo.cpp +++ b/slsReceiverSoftware/src/Fifo.cpp @@ -53,6 +53,10 @@ int Fifo::CreateFifos(uint32_t fifoItemSize) { return FAIL; } memset(memory, 0, mem_len); + int pagesize = getpagesize(); + for (size_t i = 0; i < mem_len; i += pagesize) { + strcpy(memory + i, "memory"); + } FILE_LOG(logDEBUG) << "Memory Allocated " << index << ": " << (double)mem_len/(double)(1024 * 1024) << " MB"; { //push free addresses into fifoFree fifo diff --git a/slsReceiverSoftware/src/UDPStandardImplementation.cpp b/slsReceiverSoftware/src/UDPStandardImplementation.cpp index 6b7600983..dde02f2ed 100644 --- a/slsReceiverSoftware/src/UDPStandardImplementation.cpp +++ b/slsReceiverSoftware/src/UDPStandardImplementation.cpp @@ -836,7 +836,9 @@ int UDPStandardImplementation::SetupFifoStructure() { if(dataStreamer.size())dataStreamer[i]->SetFifo(fifo[i]); } - FILE_LOG(logINFO) << "Memory Allocated Per Fifo: " << (double)( ((generalData->imageSize) * numberofJobs + (generalData->fifoBufferHeaderSize)) * fifoDepth)/ (double)(1024 * 1024) << " MB" ; + FILE_LOG(logINFO) << "Memory Allocated Per Fifo: " << (double)( ((size_t)(generalData->imageSize) * numberofJobs + + (size_t)(generalData->fifoBufferHeaderSize)) * (size_t)fifoDepth)/ + (double)(1024 * 1024) << " MB" ; FILE_LOG(logINFO) << numThreads << " Fifo structure(s) reconstructed"; return OK; }