def METHOD_NAME():
    channel = None
    interface = None
    source = 0x7e0
    destination = 0x7df
    timeout = 0.1
    full_scan = False
    verbose = False
    python_can_args = None
    enumerators = []
    conf.verb = -1
    options = getopt.getopt(
        sys.argv[1:],
        'i:c:s:d:a:t:hfv1236789A',
        ['interface=', 'channel=', 'source=', 'destination=',
         'help', 'timeout=', 'python-can_args=', 'full',
         'verbose'])
    try:
        for opt, arg in options[0]:
            if opt in ('-i', '--interface'):
                interface = arg
            elif opt in ('-c', '--channel'):
                channel = arg
            elif opt in ('-a', '--python-can_args'):
                python_can_args = arg
            elif opt in ('-s', '--source'):
                source = int(arg, 16)
            elif opt in ('-d', '--destination'):
                destination = int(arg, 16)
            elif opt in ('-h', '--help'):
                usage(False)
                sys.exit(0)
            elif opt in ('-t', '--timeout'):
                timeout = float(arg)
            elif opt in ('-f', '--full'):
                full_scan = True
            elif opt == '-1':
                enumerators += [OBD_S01_Enumerator]
            elif opt == '-2':
                enumerators += [OBD_S02_Enumerator]
            elif opt == '-3':
                enumerators += [OBD_S03_Enumerator]
            elif opt == '-6':
                enumerators += [OBD_S06_Enumerator]
            elif opt == '-7':
                enumerators += [OBD_S07_Enumerator]
            elif opt == '-8':
                enumerators += [OBD_S08_Enumerator]
            elif opt == '-9':
                enumerators += [OBD_S09_Enumerator]
            elif opt == '-A':
                enumerators += [OBD_S0A_Enumerator]
            elif opt in ('-v', '--verbose'):
                verbose = True
    except getopt.GetoptError as msg:
        usage(True)
        print("ERROR:", msg, file=sys.stderr)
        raise SystemExit
    if channel is None or \
            (PYTHON_CAN and interface is None):
        usage(True)
        print("\nPlease provide all required arguments.\n",
              file=sys.stderr)
        sys.exit(1)
    if 0 > source >= 0x800 or 0 > destination >= 0x800\
            or source == destination:
        print("The ids must be >= 0 and < 0x800 and not equal.",
              file=sys.stderr)
        sys.exit(1)
    if 0 > timeout:
        print("The timeout must be a positive value")
        sys.exit(1)
    csock = None
    isock = None
    try:
        csock = get_can_socket(channel, interface, python_can_args)
        isock = get_isotp_socket(csock, source, destination)
        signal.signal(signal.SIGINT, signal_handler)
        run_scan(isock, enumerators, full_scan, verbose, timeout)
    except Exception as e:
        usage(True)
        print("\nSocket couldn't be created. Check your arguments.\n",
              file=sys.stderr)
        print(e, file=sys.stderr)
        if verbose:
            traceback.print_exc(file=sys.stderr)
        sys.exit(1)
    finally:
        if isock:
            isock.close()
        if csock:
            csock.close()