Categorygithub.com/arduino/board-discovery
repositorypackage
0.0.0-20250424094412-9dbf40e6ef7d
Repository: https://github.com/arduino/board-discovery.git
Documentation: pkg.go.dev

# README

= Arduino Board Discovery (Golang) Alessandro Sanino [email protected]

IMPORTANT: this repo has been archived + The board-discovery project has been superseded by the https://github.com/arduino/pluggable-discovery-protocol-handler[pluggable-discovery-protocol-handler], more directly by the https://github.com/arduino/serial-discovery[serial] and https://github.com/arduino/mdns-discovery[mdns] discovery plugins.

This package allows to discover and monitor Arduino boards connected to the network or the serial ports.

=== Getting the package [source, bash]

$ go get github.com/arduino/board-discovery

Then import it to use it: [source, go]

import "github.com/arduino/board-discovery"

====== GODOC can be found link:https://godoc.org/github.com/arduino/board-discovery[HERE]

== Discovering devices To discover devices you must first create a new Monitor (specifying the polling interval): [source, go]

monitor := discovery.New(time.Millisecond)

Then start, get data and stop it when you don't need it anymore: [source, go]

monitor.Start() //Get devices connected monitor.Stop()

You can get connected devices (via Serial or Network ports) by using the following functions: [source, go]

serialDevices := monitor.Serial() networkDevices := monitor.Network()

=== The Monitor

Monitor periodically (period specified by Interval) checks the serial ports and the network in order to have an updated list of Serial and Network ports.

You can subscribe to the Events channel to get realtime notification of what's changed. [source, go]

type Monitor struct { Interval time.Duration Events chan Event }

You can Start, Stop and Restart a Monitor, using the specified functions. [source, go]

monitor.Start() // Starts monitoring monitor.Stop() // Stops monitoring monitor.Restart // Restarts the monitor (Stop, then Start)

To have the list of devices discovered, you can use (assuming a started monitor m):

. m.Serial() to get the list of devices connected via serial interface. . m.Network() to get the list of devices connected via the network.

=== The device types

SerialDevice represents a device connected via serial port: [source, go]

type SerialDevice struct { Port string SerialNumber string ProductID string VendorID string Serial *serial.Info }

type SerialDevices map[string]*SerialDevice

NetworkDevice represents a device connected via the network: [source, go]

type NetworkDevice struct { Address string Info string Name string Port int }

type NetworkDevices map[string]*NetworkDevice

== Security

If you think you found a vulnerability or other security-related bug in this project, please read our https://github.com/arduino/board-discovery/security/policy[security policy] and report the bug to our Security Team 🛡️ Thank you!

e-mail contact: [email protected]