NUTSCAN_SCAN_USB(3)
====================

NAME
----

nutscan_scan_usb - Scan NUT compatible USB devices.

SYNOPSIS
--------

 #include <nut-scan.h>

 nutscan_device_t * nutscan_scan_usb(nutscan_usb_t * scanopts);

NOTE
----

Before `libnutscan` version 2.5.0 there was no argument:

 nutscan_device_t * nutscan_scan_usb(void);

After the API update to have an argument, equivalent default activity can
be achieved by passing `NULL` value for the argument.

DESCRIPTION
-----------

The *nutscan_scan_usb()* function tries to detect NUT compatible USB devices.

The `scanopts` argument contains toggles about values that would be reported
into the generated device section. Currently they regard physical link details
which can change over time (e.g. USB re-enumeration due to software or hardware
re-connections); see `nut-scan.h` for current details:

----
/* USB scan options structure */
typedef struct nutscan_usb {
    /* Hardware link related values below are not reliable for run-time
     * matching (they can change over time) but can be useful if e.g.
     * "serial" is not available or unique */
    int report_bus;
    int report_busport;
    int report_device;

    /* The value is not currently used for device matching, but might be
     * used later, and it is available from discovery */
    int report_bcdDevice;
} nutscan_usb_t;
----

You MUST call linkman:nutscan_init[3] before using this function.

RETURN VALUE
------------

The *nutscan_scan_usb()* function returns a pointer to a `nutscan_device_t`
structure containing all found devices or NULL if an error occurs or no
device is found.

SEE ALSO
--------

linkman:nutscan_init[3],
linkman:nutscan_scan_snmp[3], linkman:nutscan_scan_xml_http_range[3],
linkman:nutscan_scan_nut[3], linkman:nutscan_scan_avahi[3],
linkman:nutscan_scan_ipmi[3],
linkman:nutscan_display_sanity_check[3],
linkman:nutscan_display_sanity_check_serial[3],
linkman:nutscan_display_ups_conf_with_sanity_check[3],
linkman:nutscan_display_ups_conf[3],
linkman:nutscan_display_parsable[3], linkman:nutscan_new_device[3],
linkman:nutscan_free_device[3], linkman:nutscan_add_option_to_device[3],
linkman:nutscan_add_device_to_device[3], linkman:nutscan_scan_eaton_serial[3]
