blob: 675c3b6bd2849cd214543f1078c3169d88c947e0 [file] [log] [blame]
// Copyright 2024 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.lowpan.thread;
using fuchsia.lowpan;
/// Openthread capabilities.
///
/// Capabilities refers to features supported by openthread. For
/// instance, nat64 refers to, if openthread has the required
/// software support for nat64, which is determined by macros defined in openthread.
/// It doesn't refer to if the feature is enabled or disabled.
/// The table describes the capabilities of openthread that are supported/not-supported.
/// For every new feature that's added, the table below should be updated.
@available(added=18)
type Capabilities = table {
/// The fields cannot be absent. They are set to true or false.
/// Describes if nat64 is supported.
/// If nat64 is true, Openthread supports nat64, false otherwise.
1: nat64 bool;
/// Describes if dhcpv6 prefix delegation is supported.
/// If dhcpv6_pd is true, Openthread supports dhcpv6pd, false otherwise.
2: dhcpv6_pd bool;
};
/// Protocol for connecting to [`Capabilities`] on a LoWPAN device.
@discoverable
@available(added=18)
closed protocol CapabilitiesConnector {
/// Connects to the [`ThreadCapabilities`] protocol on the
/// named LoWPAN device.
///
/// The name of the interface can be learned by calling
/// [`fuchsia.lowpan/Lookup.GetDevices`].
///
/// If there is an error in processing this request
/// the given channel is closed and an epitaph code used
/// to describe the reason for the failure:
///
/// * `ZX_ERR_INVALID_ARGUMENT`: The given interface name
/// was not formatted correctly or otherwise invalid.
/// * `ZX_ERR_NOT_FOUND`: No interface was found with the
/// given name.
/// * `ZX_ERR_NOT_SUPPORTED`: The interface exists but
/// does not support this protocol.
strict Connect(resource struct {
name fuchsia.lowpan.InterfaceName;
server_end server_end:ThreadCapabilities;
});
};
/// Protocol for retrieving supported capabilities of the thread stack.
@available(added=18)
closed protocol ThreadCapabilities {
/// Returns the current capabilities of Openthread for this interface.
///
/// capabilities is not expected to change for the lifetime of the
/// interface.
strict GetCapabilities() -> (struct {
capabilities Capabilities;
});
};