def METHOD_NAME(micp, data, data_len):
    logging.debug('%s %r', METHOD_NAME.__name__, data)
    fmt = '<B6sHHHHHHH'
    if len(data) < struct.calcsize(fmt):
        raise BTPError('Invalid data length')
    addr_type, addr, mute_handle, state_handle, gain_handle, type_handle, \
        status_handle, control_handle, desc_handle = struct.unpack_from(fmt, data)
    addr = binascii.hexlify(addr[::-1]).lower().decode('utf-8')
    logging.debug(f'MICP Discovery completed: addr {addr}, addr_type {addr_type},'
                  f' mute handle {mute_handle}, state handle {state_handle},'
                  f' gain handle {gain_handle}, type handle {type_handle},'
                  f'status handle {status_handle}, control handle {control_handle},'
                  f' description handle {desc_handle}')
    micp.event_received(defs.MICP_DISCOVERED_EV, (addr_type, addr, mute_handle, state_handle,
                                                  gain_handle, type_handle, status_handle,
                                                  control_handle, desc_handle))