blob: 7aaaed0f1481e42753c7092865f496f0af115202 [file] [log] [blame]
// Copyright 2019 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;
/// LoWPAN Connectivity State
///
/// This enum describes the level of connectivity being provided
/// by a device.
enum ConnectivityState : int32 {
/// Inactive state.
///
/// In this state the device is unprovisioned and administratively
/// disabled (inactive).
///
/// This state can always be explicitly entered by calling `Leave`
/// followed by `SetActive(false)`.
INACTIVE = 1;
/// Ready state.
///
/// In this state the device is provisioned for a network, but is
/// administratively disabled (inactive).
///
/// This state can be directly entered with the following actions
/// based on the current connectivity state:
///
/// * `INACTIVE`: by calling `ProvisionNetwork(...)`.
/// * `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`: by calling `SetActive(false)`.
READY = 2;
/// Offline state.
///
/// In this state the device is administratively enabled (active)
/// but is not provisioned and thus has no network to attach to.
///
/// This state can be directly entered with the following actions
/// based on the current connectivity state:
///
/// * `INACTIVE`: by calling `SetActive(true)`.
/// * `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`: by calling `Leave()`.
OFFLINE = 3;
/// Attaching state.
///
/// In this state the device is administratively enabled
/// (active) and either provisioned for a network or shortly
/// about to become provisioned for a network.
///
/// The interface enters this state when it starts the process
/// of trying to find other nodes so that it can attach to any
/// pre-existing network fragment, or when it is in the process
/// of calculating the optimal values for unspecified parameters
/// when forming a new network.
///
/// This state can be directly entered with the following actions
/// based on the current connectivity state:
///
/// * `READY`: by calling `SetActive(true)`
/// * `OFFLINE`, `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`:
/// by calling `ProvisionNetwork(...)`, `FormNetwork(...)`, or `JoinNetwork(...)`
ATTACHING = 4;
/// Attached state.
///
/// In this state the device is both administratively enabled
/// (active) and provisioned for a network. The device is an
/// active participant on the network and can communicate with
/// peers.
///
/// This state usually implies that peers are available, but that
/// may not actually be the case due to current network conditions
/// or privacy-protecting measures.
///
/// This state cannot generally be entered directly, rather
/// the device will enter this state automatically from the
/// `ATTACHING` or `ISOLATED` states once connectivity has been
/// (re)established.
ATTACHED = 5;
/// Isolated state.
///
/// In this state the device is both administratively enabled
/// (active) and provisioned for a network. However, the device
/// has no connectivity because there are no peers in range on
/// the provisioned network.
///
/// Once peer devices on the same network come into range
/// the connectivity state will eventually switch back to
/// `ATTACHED`, indicating restored connectivity with at least
/// one peer.
///
/// This state cannot generally be entered directly, rather
/// the device may enter this state automatically from the
/// `ATTACHING` or `ATTACHED` states.
ISOLATED = 6;
/// Commissioning state.
///
/// Currently unused, but will later be used to
/// support in-band commissioning. It is usually appropriate
/// to consider this as a synonym for the `ATTACHING` state
/// except that the device remains unprovisioned.
COMMISSIONING = 7;
};