diff --git a/interface_handler.py b/interface_handler.py index 8b6226b..6c3e014 100644 --- a/interface_handler.py +++ b/interface_handler.py @@ -5,6 +5,8 @@ import sys sys.path.append('/home/pi/aped_device') from xml_reader import Xml_reader +from ring_buffer import Ring_buffer + class Interface_handler: """handles the access to the various interfaces (e.g. GPIO) """ @@ -51,7 +53,9 @@ class Interface_handler: self.xml_reader = xml_reader self.pwms = [None] * 41 self.pwm_dutycycles = [None] * 41 + self.buffers = [None] * 41 self.init_gpio() + self.init_buffer() def init_gpio(self): @@ -79,6 +83,15 @@ class Interface_handler: self.pwms[self.Pin[pin].value] = pwm else: raise NotImplementedError('the protocol of the device %s is not implemented' % device_name) + + def init_buffer(self): + for device_name in self.xml_reader.get_device_names(): + port_info = self.xml_reader.get_port(device_name) + pins = port_info["pins"] + buffer_size = self.xml_reader.get_buffer_size(device_name) + if buffer_size != 0: + for pin in pins: + self.buffers[self.Pin[pin].value] = Ring_buffer(buffer_size) def read(self, device_name:str) -> dict: diff --git a/ring_buffer.py b/ring_buffer.py new file mode 100644 index 0000000..40ca564 --- /dev/null +++ b/ring_buffer.py @@ -0,0 +1,9 @@ +class Ring_buffer: + def __init__(self,size): + self.size = size + self.data = [] + + def append(self, data): + self.data.append(data) + if len(self.data) == self.size: + self.data.pop(0) \ No newline at end of file