code: def read_i2c_block_data(self, i2c_addr, register, length, force=None):
          
          if length > I2C_SMBUS_BLOCK_MAX:
              raise ValueError("Desired block length over %d bytes" % I2C_SMBUS_BLOCK_MAX)
          self._set_address(i2c_addr, force=force)
          msg = i2c_smbus_ioctl_data.create(
              read_write=I2C_SMBUS_READ, command=register, size=I2C_SMBUS_I2C_BLOCK_DATA
          )
          msg.data.contents.byte = length
          ioctl(self.fd, I2C_SMBUS, msg)
          return msg.data.contents.block[1:length + 1]
docs: Read a block of byte data from a given register.
  
          :param i2c_addr: i2c address
          :type i2c_addr: int
          :param register: Start register
          :type register: int
          :param length: Desired block length
          :type length: int
          :param force:
          :type force: Boolean
          :return: List of bytes
          :rtype: list