Source code for basil.HL.gpio

#
# ------------------------------------------------------------
# Copyright (c) All rights reserved
# SiLab, Institute of Physics, University of Bonn
# ------------------------------------------------------------
#

from basil.HL.RegisterHardwareLayer import RegisterHardwareLayer


[docs]class gpio(RegisterHardwareLayer): '''GPIO interface ''' def __init__(self, intf, conf): self._registers = {'RESET': {'descr': {'addr': 0, 'size': 8, 'properties': ['writeonly']}}, 'VERSION': {'descr': {'addr': 0, 'size': 8, 'properties': ['ro']}}} self._require_version = "==0" self._size = 8 if 'size' in conf.keys(): self._size = conf['size'] io_bytes = int(((self._size - 1) / 8) + 1) self._registers['INPUT'] = {'descr': {'addr': 1, 'size': io_bytes, 'properties': ['ro', 'byte_array']}} self._registers['OUTPUT'] = {'descr': {'addr': 2 + io_bytes - 1, 'size': io_bytes, 'properties': ['byte_array']}} self._registers['OUTPUT_EN'] = {'descr': {'addr': 3 + 2 * (io_bytes - 1), 'size': io_bytes, 'properties': ['byte_array']}} # __init__() after updating register super(gpio, self).__init__(intf, conf) def init(self): super(gpio, self).init() if 'output_en' in self._init: self.OUTPUT_EN = self._init['output_en']
[docs] def reset(self): '''Soft reset the module.''' self.RESET = 0
def set_output_en(self, value): self.OUTPUT_EN = value def get_output_en(self): return self.OUTPUT_EN def set_data(self, value): self.OUTPUT = value def get_data(self): return self.INPUT