code: def read(self, addr, size):
          '''
          Parameters
          ----------
          addr : int
              The register address.
          size : int
              Length of data to be read (number of bytes).
  
          Returns
          -------
          array : array
              Data (byte array) read from memory. Returns 0 for each byte if it hasn't been written to.
          '''
          logger.debug("Dummy SiTransferLayer.read addr: %s size: %s" % (hex(addr), size))
          return array.array('B', [self.mem[curr_addr] if curr_addr in self.mem else 0 for curr_addr in range(addr, addr + size)]f read(self, addr, size):
          '''
          Parameters
          ----------
          addr : int
              The register address.
          size : int
              Length of data to be read (number of bytes).
  
          Returns
          -------
          array : array
              Data (byte array) read from memory. Returns 0 for each byte if it hasn't been written to.
          '''
          logger.debug("Dummy SiTransferLayer.read addr: %s size: %s" % (hex(addr), size))
          return array.array('B', [self.mem[curr_addr] if curr_addr in self.mem else 0 for curr_addr in range(addr, addr + size)])
docs: Parameters
          ----------
          addr : int
              The register address.
          size : int
              Length of data to be read (number of bytes).
  
          Returns
          -------
          array : array
              Data (byte array) read from memory. Returns 0 for each byte if it hasn't been written to.