| // Copyright 2023 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; |
| |
| @available(added=12) |
| type DetailedLoggingLevel = flexible enum { |
| LOWPAN_LOG_UNSPECIFIED = 0; // Zero value enum is UNSPECIFIED |
| LOWPAN_LOG_EMERG = 1; // System is unusable |
| LOWPAN_LOG_ALERT = 2; // Action must be taken immediately |
| LOWPAN_LOG_CRIT = 3; // Critical conditions |
| LOWPAN_LOG_ERR = 4; // Error conditions |
| LOWPAN_LOG_WARNING = 5; // Warning conditions |
| LOWPAN_LOG_NOTICE = 6; // Normal but significant condition |
| LOWPAN_LOG_INFO = 7; // Informational |
| LOWPAN_LOG_DEBUG = 8; // Debug level messages |
| }; |
| |
| /// OpenThread feature configuration. |
| /// |
| /// This table describes what OpenThread features are enabled or disabled |
| /// for a given interface. See the [`Feature`] protocol for more information. |
| @available(added=11) |
| type FeatureConfig = table { |
| /// Determines if TREL is enabled or disabled. |
| 1: trel_enabled bool; |
| |
| /// Determines if NAT64 is enabled or disabled. |
| 2: nat64_enabled bool; |
| |
| /// Determines if SRP replication is enabled or disabled. |
| 3: srp_replication_enabled bool; |
| |
| /// Determines if detailed logging is enabled. If set to |
| /// false, default logging level set in config file should |
| /// be used in lowpan-ot-driver. |
| @available(added=12) |
| 4: detailed_logging_enabled bool; |
| |
| /// Set target log level. The value will be used only if |
| /// `detailed_logging_enabled` is set to true. |
| @available(added=12) |
| 5: detailed_logging_level DetailedLoggingLevel; |
| |
| /// Determines if DHCPv6-PD is enabled or disabled. |
| @available(added=18) |
| 6: dhcpv6_pd_enabled bool; |
| |
| /// Determines if DNS upstream query is enabled or disabled. |
| @available(added=19) |
| 7: dns_upstream_query_enabled bool; |
| |
| /// Determines if Link Metrics Manager is enabled or disabled. |
| @available(added=20) |
| 8: link_metrics_manager_enabled bool; |
| }; |
| |
| /// Protocol for connecting to [`Feature`] on a LoWPAN device. |
| @discoverable |
| @available(added=11) |
| closed protocol FeatureConnector { |
| /// Connects to the [`Feature`] 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:Feature; |
| }); |
| }; |
| |
| /// Protocol for fetching and updating the OpenThread feature configuration |
| /// for a specific LoWPAN interface. |
| @available(added=11) |
| closed protocol Feature { |
| /// Updates the current OpenThread feature configuration for this |
| /// interface. |
| /// |
| /// Any unset field in `config` will leave that field unchanged. |
| strict UpdateFeatureConfig(struct { |
| config FeatureConfig; |
| }) -> (); |
| |
| /// Returns the current OpenThread feature configuration for this |
| /// interface. |
| /// |
| /// A unset field in the returned value means that feature is not |
| /// supported. |
| strict GetFeatureConfig() -> (struct { |
| config FeatureConfig; |
| }); |
| }; |