docs: def unpack_ihex(record):
      """Unpack given Intel HEX record into variables.
  
      """
  
      # Minimum :SSAAAATTCC, where SS is size, AAAA is address, TT is
      # type and CC is crc.
      if len(record) < 11:
          raise Error("record '{}' too short".format(record))
  
      if record[0] != ':':
          raise Error("record '{}' not starting with a ':'".format(record))
  
      size = int(record[1:3], 16)
      address = int(record[3:7], 16)
      type_ = int(record[7:9], 16)
  
      if size > 0:
          data = binascii.unhexlify(record[9:9 + 2 * size])
      else:
          data = b''
  
      actual_crc = int(record[9 + 2 * size:], 16)
      expected_crc = crc_ihex(record[1:9 + 2 * size])
  
      if actual_crc != expected_crc:
          raise Error(
              "expected crc '{:02X}' in record {}, but got '{:02X}'".format(
                  expected_crc,
                  record,
                  actual_crc))
  
      return (type_, address, size, data)