human
I wrote the below code

    import bluetooth
    def see_device(device):
        'Mark    a    device    as    seen.'
        see(mac=(BT_PREFIX + device[0]), host_name=device[1])
    def discover_devices():
        'Discover    Bluetooth    devices.'
        result = bluetooth.discover_devices(duration=8, lookup_names=True, flush_cache=True, lookup_class=False)
        _LOGGER.debug(('Bluetooth    devices    discovered    =    ' + str(len(result))))
        return result
    yaml_path = hass.config.path(YAML_DEVICES)
    devs_to_track = []
    devs_donot_track = []
    for device in load_config(yaml_path, hass, 0):
        if (device.mac and (device.mac[:3].upper() == BT_PREFIX)):
            if device.track:
                devs_to_track.append(device.mac[3:])
            else:
                devs_donot_track.append(device.mac[3:])
    track_new = config.get(CONF_TRACK_NEW, DEFAULT_TRACK_NEW)
    if track_new:
        for dev in discover_devices():
            if ((dev[0] not in devs_to_track) and (dev[0] not in devs_donot_track)):
                devs_to_track.append(dev[0])
                see_device(dev)
    interval = config.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL)
    def update_bluetooth(now):
        'Lookup    Bluetooth    device    and    update    status.'
        try:
            if track_new:
                for dev in discover_devices():
                    if ((dev[0] not in devs_to_track) and (dev[0] not in devs_donot_track)):
                        devs_to_track.append(dev[0])
            for mac in devs_to_track:
                _LOGGER.debug('Scanning    %s', mac)
                result = bluetooth.lookup_name(mac, timeout=5)
                if (not result):
                    continue
                see_device((mac, result))
        except bluetooth.BluetoothError:
            _LOGGER.exception('Error    looking    up    Bluetooth    device')
        track_point_in_utc_time(hass, update_bluetooth, (dt_util.utcnow() + interval))
    update_bluetooth(dt_util.utcnow())
    return True

What's a good function header?
assistant
#Here's a good function header.

def setup_scanner(hass, config, see, discovery_info=None):