| // 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; |
| |
| enum State : int32 { |
| /// Offline state. |
| /// |
| /// This is the initial state of the LoWPAN |
| /// interface when the underlying driver starts. |
| /// In this state the NCP is idle and not |
| /// connected to any network. |
| /// |
| /// This state can be explicitly entered by |
| /// calling `Reset`, `Leave`, or `setUp(false)`, |
| /// with the later two only working if we were not |
| /// previously in `State::FAULT`. |
| OFFLINE = 1; |
| |
| /// Attaching state. |
| /// |
| /// 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. |
| /// |
| /// The interface may stay in this state for a |
| /// prolonged period of time (or may spontaneously |
| /// enter this state from `State::ATTACHED` if the |
| /// underlying network technology is hierarchical |
| /// (like ZigBee IP) or if the device role is that |
| /// of an "end-device" (`Role::END_DEVICE`). This |
| /// is because such roles cannot create their own |
| /// network fragments. |
| ATTACHING = 2; |
| |
| /// Attached state. |
| /// |
| /// This state indicates that we are an active |
| /// participant on a network that has at least one |
| /// other peer node in range. |
| /// |
| /// The Interface can enter this state from |
| /// `State::ATTACHING`. |
| ATTACHED = 3; |
| |
| /// Isolated state. |
| /// |
| /// This state indicates that there are no nearby |
| /// nodes for the provisioned network in range. |
| /// Once other nodes come into range, the |
| /// interface will automatically switch to |
| /// `State::ATTACHED`. |
| /// |
| /// The interface can enter this state from either |
| /// `State::ATTACHING` or `State::ATTACHED`. |
| ISOLATED = 4; |
| |
| /// Fault state. |
| /// |
| /// The interface will enter this state when |
| /// the driver has detected some sort of problem |
| /// from which it was not immediately able to |
| /// recover. |
| /// |
| /// This state can be entered spontaneously from |
| /// any other state. Calling `Reset` will cause |
| /// the device to return to `State::OFFLINE`. |
| FAULT = 5; |
| |
| /// Commissioning state. |
| /// |
| /// The interface enters this state after a call |
| /// to `startCommissioningSession(LowpanBeaconInfo)`. |
| /// This state may only be entered directly from |
| /// `State::OFFLINE`. |
| COMMISSIONING = 6; |
| }; |