Index: sample_scripts/import_signal.py
===================================================================
--- sample_scripts/import_signal.py	(revision bfab5ea359bbc1630806a8538ad1f6c9e40e1b14)
+++ sample_scripts/import_signal.py	(revision 6808525582661c6d31f305687f23660c7fa1110f)
@@ -5,5 +5,5 @@
 from pathlib import Path
 from ammosreader.AmmosIFReader import AmmosIFReader
-from ammosreader.PDW import PDW
+from ammosreader.PPDWReader import PPDWReader
 
 parser = argparse.ArgumentParser()
@@ -59,2 +59,6 @@
 ammos_reader.read_all_frames_left()
 print(ammos_reader.container)
+
+ppdw_reader = PPDWReader(ppdw_file)
+ppdw_reader.read_all_frames_left()
+print(ppdw_reader.container)
Index: src/_version.py
===================================================================
--- src/_version.py	(revision bfab5ea359bbc1630806a8538ad1f6c9e40e1b14)
+++ src/_version.py	(revision 6808525582661c6d31f305687f23660c7fa1110f)
@@ -2,4 +2,4 @@
 # file generated by setuptools_scm
 # don't change, don't track in version control
-version = '0.1.dev33+gcaee9d8.d20220504'
-version_tuple = (0, 1, 'dev33', 'gcaee9d8.d20220504')
+version = '0.1.dev57+gbfab5ea.d20220505'
+version_tuple = (0, 1, 'dev57', 'gbfab5ea.d20220505')
Index: src/ammosreader.egg-info/PKG-INFO
===================================================================
--- src/ammosreader.egg-info/PKG-INFO	(revision bfab5ea359bbc1630806a8538ad1f6c9e40e1b14)
+++ src/ammosreader.egg-info/PKG-INFO	(revision 6808525582661c6d31f305687f23660c7fa1110f)
@@ -1,5 +1,5 @@
 Metadata-Version: 2.1
 Name: ammosreader
-Version: 0.1.dev33+gcaee9d8.d20220504
+Version: 0.1.dev57+gbfab5ea.d20220505
 Summary: ammosreader: tool to parse R&S Ammos files
 Home-page: http://gitlab.kid.local/kidzg/ammosreader
@@ -19,5 +19,5 @@
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Topic :: Utilities
-Requires-Python: >=3.8
+Requires-Python: >=3.10
 Description-Content-Type: text/text
 Provides-Extra: testing
Index: src/ammosreader.egg-info/SOURCES.txt
===================================================================
--- src/ammosreader.egg-info/SOURCES.txt	(revision bfab5ea359bbc1630806a8538ad1f6c9e40e1b14)
+++ src/ammosreader.egg-info/SOURCES.txt	(revision 6808525582661c6d31f305687f23660c7fa1110f)
@@ -115,4 +115,5 @@
 sample_scripts/audio_socket_reader_test.py
 sample_scripts/audio_socket_reader_test_streamer.py
+sample_scripts/import_signal.py
 sample_scripts/iqdw_reader.py
 sample_scripts/pdw_reader.py
@@ -134,4 +135,5 @@
 src/ammosreader/PDW.py
 src/ammosreader/PPDWContainer.py
+src/ammosreader/PPDWReader.py
 src/ammosreader/__init__.py
 src/ammosreader.egg-info/PKG-INFO
Index: src/ammosreader/PDW.py
===================================================================
--- src/ammosreader/PDW.py	(revision bfab5ea359bbc1630806a8538ad1f6c9e40e1b14)
+++ src/ammosreader/PDW.py	(revision 6808525582661c6d31f305687f23660c7fa1110f)
@@ -1,8 +1,8 @@
+"""I store the information of a single PDW block."""
+
 import struct
 import math
 import numpy as np
 
-# TODO: Use BitArray module in future versions
-
 
 class PDW():
@@ -11,13 +11,10 @@
 
     .. automethod:: __init__
-
     """
 
     @classmethod
     def from_bytes(cls, byte_string):
-
-        """
-
-        I create an instance of class PDW from data body (8 * 32 bits)
+        """
+        I create an instance of class PDW from data body (8 * 32 bits).
 
         :param byte_string: a byte string containing a single data body read from a ppdw file
@@ -26,7 +23,5 @@
         :return: an instance of class PDW with attributes set according to the data of a data body
         :rtype: PDW
-
-        """
-
+        """
         assert(len(byte_string) == 32)
 
@@ -165,4 +160,9 @@
 
     def __str__(self):
+        """
+        I return the string representation of myself.
+
+        :rtype: str
+        """
         output = ("Time of arrival: " + str(self.time_of_arrival) + "\n" +
                   "PDW Format identifier: " + str(self.pdw_format_identifier) + "\n" +
Index: src/ammosreader/PPDWContainer.py
===================================================================
--- src/ammosreader/PPDWContainer.py	(revision bfab5ea359bbc1630806a8538ad1f6c9e40e1b14)
+++ src/ammosreader/PPDWContainer.py	(revision 6808525582661c6d31f305687f23660c7fa1110f)
@@ -12,7 +12,17 @@
             self.signals = signals
 
+    def __str__(self):
+        return "\n".join(["Number of pulses:" + str(len(self.signals)),
+                          "Start time:" + str(self.start_time()),
+                          "End time:" + str(self.end_time())])
+
     def add(self, a_pdw):
         self.signals.append(a_pdw)
 
+    def start_time(self):
+        return min([each.time_of_arrival for each in self.signals])
+
+    def end_time(self):
+        return max([each.time_of_arrival for each in self.signals])
 
 if __name__ == '__main__':
Index: src/ammosreader/PPDWReader.py
===================================================================
--- src/ammosreader/PPDWReader.py	(revision bfab5ea359bbc1630806a8538ad1f6c9e40e1b14)
+++ src/ammosreader/PPDWReader.py	(revision 6808525582661c6d31f305687f23660c7fa1110f)
@@ -6,19 +6,23 @@
 class PPDWReader():
 
-    def __init__(self, file_name):
+    def __init__(self, a_file):
 
-        self.file = Path(file_name)
+        self.file = a_file
         assert self.file.is_file()
+        self.content = self.file.read_bytes()
+        self.cursor = 0
         self.container = PPDWContainer(self.file.stem)
 
     def read_all_frames_left(self):
-        with self.file.open() as f:
-            while True:
-                current_bytes = f.read(32)
-                if current_bytes == '':
-                    print('End of file detected')
-                    break
-                if len(current_bytes) != 32:
-                    print('Can not read all 32 bytes of next PDW')
-                    break
-                self.container.add(PDW.from_bytes(current_bytes))
+        while self.cursor <= len(self.content) - 32:
+            current_bytes = self.content[self.cursor:self.cursor+32]
+            assert len(current_bytes) == 32
+            if not current_bytes:
+                print('End of file detected')
+                break
+            if self.cursor + 32 >= len(self.content):
+                print('Can not read all 32 bytes of next PDW')
+                break
+            self.container.add(PDW.from_bytes(current_bytes))
+            self.cursor += 32
+        return self.container
