// 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 Role Type.
///
/// This type describes the role a device can assume on a network.
enum Role : int32 {
    /// Detached role. The interface is not
    /// currently participating on the network,
    /// either because it cannot find a parent
    //// or the interface is not currently provisioned.
    DETACHED = 1;

    /// End-device role. End devices do not route
    /// traffic on behalf of other nodes.
    END_DEVICE = 2;

    /// Router role. Routers help route traffic
    /// around the mesh network.
    ///
    /// Note that this role is independent of the
    /// device being a "border router".
    ///
    /// Not all network types support this role.
    ROUTER = 3;

    /// Sleepy End-Device role.
    ///
    /// End devices with this role are nominally asleep,
    /// waking up periodically to check in with their
    /// parent to see if there are packets destined for
    /// them. Such devices are capable of extraordinarily
    /// low power consumption, but packet latency can be
    /// on the order of dozens of seconds(depending on how
    /// the node is configured). Not all network types
    /// support this role.
    ///
    /// Not all network types support this role.
    SLEEPY_END_DEVICE = 4;

    /// Sleepy-router role.
    ///
    /// Routers with this role are nominally asleep,
    /// waking up periodically to check in with
    /// other routers and their children.
    ///
    /// Not all network types support this role.
    SLEEPY_ROUTER = 5;

    /// Leader role.
    ///
    /// On Thread networks, for each partition/fragment
    /// one router is designated as the "leader", which
    /// means that it is considered authoritative for
    /// all network data. In most cases this role can be
    /// considered as a synonym to Role::ROUTER.
    ///
    /// Not all network types support this role.
    LEADER = 6;

    /// Coordinator role.
    ///
    /// Not all network types support this role.
    COORDINATOR = 7;
};
