diff --git a/.gitattributes b/.gitattributes index b2dc3537ca998137aee816f951da0a09ff912228..f7ae8f52a5c0090473c078740cfbc8cd54e6089e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3640,7 +3640,7 @@ RTCP/InputProc/src/StationStreams.h -text RTCP/InputProc/src/TimeSync.h -text RTCP/InputProc/src/newInputSection.cc -text RTCP/InputProc/src/shmtest.cc -text -RTCP/InputProc/src/tRSPTimeStamp.cc -text +RTCP/InputProc/test/tRSPTimeStamp2.cc -text RTCP/Interface/include/Interface/BGPAsm.h -text RTCP/Interface/include/Interface/BeamCoordinates.h -text RTCP/Interface/include/Interface/BeamFormedData.h -text diff --git a/RTCP/InputProc/CMakeLists.txt b/RTCP/InputProc/CMakeLists.txt index 1d8f8ec0b21145683adaeed8b98de73aae1d73ca..18ab5405e0d2971349d32a5fde59c26b876fef46 100644 --- a/RTCP/InputProc/CMakeLists.txt +++ b/RTCP/InputProc/CMakeLists.txt @@ -4,10 +4,10 @@ lofar_package(InputProc 1.0 DEPENDS Common Stream Interface IONProc) include(LofarFindPackage) -#lofar_find_package(Boost REQUIRED) +lofar_find_package(Boost REQUIRED COMPONENTS date_time) #lofar_find_package(Libssh2) #lofar_find_package(Valgrind) #lofar_find_package(Casacore COMPONENTS measures REQUIRED) add_subdirectory(src) -#add_subdirectory(test) +add_subdirectory(test) diff --git a/RTCP/InputProc/src/CMakeLists.txt b/RTCP/InputProc/src/CMakeLists.txt index 250df246cb3375e8a879efb717677e7a63bad08a..dc079a180dc02d0325765317a225eb191749efda 100644 --- a/RTCP/InputProc/src/CMakeLists.txt +++ b/RTCP/InputProc/src/CMakeLists.txt @@ -1 +1,12 @@ -lofar_add_test(newInputSection newInputSection.cc Generator.cc StationStreams.cc SharedMemory.cc StationID.cc BufferSettings.cc) +include(LofarPackageVersion) + +lofar_add_library(inputproc + Package__Version.cc + BufferSettings.cc + Generator.cc + SharedMemory.cc + StationID.cc + StationStreams.cc + ) + +lofar_add_bin_program(newInputSection newInputSection.cc) diff --git a/RTCP/InputProc/src/SharedMemory.h b/RTCP/InputProc/src/SharedMemory.h index bb42aadc831c88d47e19d8e717371c4f9717c5a3..c5e4a299e174732a40dbeaa00febb7d49e1cdcb7 100644 --- a/RTCP/InputProc/src/SharedMemory.h +++ b/RTCP/InputProc/src/SharedMemory.h @@ -12,6 +12,10 @@ namespace LOFAR { namespace RTCP { +/* + * A memory region manager for shared memory, to be used by + * allocators defined in Interface/Allocator.h + */ class SharedMemoryArena: public FixedArena { public: EXCEPTION_CLASS(TimeOutException, LOFAR::Exception); @@ -23,6 +27,10 @@ public: READWRITE }; + /* Create a shared memory region, or attach to an existing one. The timeout + * specifies how long the constructor will wait for the memory region to + * appear if mode == READ or mode == READWRITE. + */ SharedMemoryArena( key_t key, size_t size, Mode mode = CREATE, time_t timeout = 60 ); ~SharedMemoryArena(); @@ -36,6 +44,9 @@ private: int shmid; }; +/* + * Provides an interface for any struct stored as a shared memory region. + */ template<typename T> class SharedStruct { public: SharedStruct( key_t key, bool create = false, time_t timeout = 60 ); diff --git a/RTCP/InputProc/src/Station.h b/RTCP/InputProc/src/Station.h index f968b2235c98bb59fe60a4bf32e36357d7c30457..86accef73c72370ee570e33eea7749d037bf8535 100644 --- a/RTCP/InputProc/src/Station.h +++ b/RTCP/InputProc/src/Station.h @@ -129,9 +129,10 @@ template<typename T> void Station<T>::processBoard( size_t nr ) template<typename T> void Station<T>::logStatistics() { - ASSERT(readers.size() == writers.size()); + ASSERT(readers.size() == nrBoards); + ASSERT(writers.size() == nrBoards); - for (size_t nr = 0; nr < readers.size(); nr++) { + for (size_t nr = 0; nr < nrBoards; nr++) { if (readers[nr].get()) readers[nr]->logStatistics(); diff --git a/RTCP/InputProc/src/tRSPTimeStamp.cc b/RTCP/InputProc/test/tRSPTimeStamp2.cc similarity index 55% rename from RTCP/InputProc/src/tRSPTimeStamp.cc rename to RTCP/InputProc/test/tRSPTimeStamp2.cc index e4085cf3f05a5bd1d1d7e3697b2541a555bdceac..7ea31fe4cf35b3e897cc8045c7c124309214ca24 100644 --- a/RTCP/InputProc/src/tRSPTimeStamp.cc +++ b/RTCP/InputProc/test/tRSPTimeStamp2.cc @@ -3,6 +3,9 @@ #include <Common/LofarLogger.h> #include <Interface/RSPTimeStamp.h> +using namespace LOFAR; +using namespace RTCP; + int main( int, char **argv ) { INIT_LOGGER(argv[0]); @@ -10,18 +13,16 @@ int main( int, char **argv ) unsigned clock = 200 * 1000 * 1000; { - TimeStamp ts(0,0,clock); - - for (int64 i = 0; i < clock * 3; ++i) { - ++ts; + TimeStamp ts(0, 0, clock); + for (int64 i = 0; i < clock * 3; ++i, ++ts) { #define REPORT "(ts == " << ts << ", i == " << i << ")" ASSERTSTR( (int64)ts == i, REPORT ); - ASSERTSTR( ts.getSeqId() == i / clock, REPORT ); + ASSERTSTR( ts.getSeqId() == 1024 * i / clock, REPORT ); - ASSERTSTR( ts.getBlockId() == i % clock, REPORT ); + ASSERTSTR( ts.getBlockId() == 1024 * i % clock / 1024, REPORT ); } } }