---
name: "lxi_discover"
section: "3"
platform: "linux"
package: "liblxi-dev"
version: "1.22-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/lxi_discover"
---

# lxi\_discover(3)

search for LXI devices on network

## NAME

lxi\_discover - search for LXI devices on network

## SYNOPSIS

**#include \<lxi.h\>**

**int lxi\_discover(lxi\_info\_t \*info, int timeout, lxi\_discover\_t type);**

## DESCRIPTION

The **lxi\_discover()** function searches for LXI devices or services on the local network using VXI-11 or mDNS/DNS-SD respectively. Which discover *type* is used is defined as follows:

```
typedef enum
{
    DISCOVER_VXI11,
    DISCOVER_MDNS
} lxi_discover_t;
```

During the discover operation events and results are returned by callbacks registered via the *info* structure, defined as follows:

```
typedef struct
{
    void (*broadcast)(char *address, char *interface);
    void (*device)(char *address, char *id);
    void (*service)(char *address, char *id, char *service, int port);
} lxi_info_t;
```

The *broadcast* callback is called whenever a new network interface is searched (DISCOVER\_VXI11 only).

The *device* callback is called whenever a new LXI device is found (DISCOVER\_VXI11 only).

The *service* callback is called whenever a new LXI service is found (DISCOVER\_MDNS only).

The *timeout* is in milliseconds.

## RETURN VALUE

Upon successful completion **lxi\_discover()** returns **LXI\_OK** , or **LXI\_ERROR** if an error occurred.

## EXAMPLE

The following example searches for LXI devices using VXI-11 and prints the ID and IP addresses of found devices:

```
#include <stdio.h>
#include <lxi.h>
void broadcast(char *address, char *interface)
{
    printf("Broadcasting on interface %s\n", interface);
}
void device(char *address, char *id)
{
    printf(" Found %s on address %s\n", id, address);
}
int main()
{
    lxi_info_t info;
    // Initialize LXI library
    lxi_init();
    // Set up search information callbacks
    info.broadcast = &broadcast;
    info.device = &device;
    printf("Searching for LXI devices - please wait...\n");
    // Search for LXI devices, 1 second timeout
    lxi_discover(&info, 1000, DISCOVER_VXI11);
    return 0;
}
```

## SEE ALSO

[**lxi\_discover\_if**(3)](/lxi_discover_if/3.md) [**lxi\_init**(3)](/lxi_init/3.md) **lxi\_open**(3), **lxi\_close**(3) [**lxi\_receive**(3)](/lxi_receive/3.md), [**lxi\_disconnect**(3)](/lxi_disconnect/3.md),
