// 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.device;

using fuchsia.lowpan;

/// The maximum number of items that can be returned at one
/// time by a scan stream.
const uint16 MAX_STREAM_SET_SIZE = 32;

/// Maximum number of distinct network types that a LoWPAN
/// device can support.
///
/// The choice of 16 is an arbitrary upper bound. Most devices will only support one,
/// and maybe one day a device might support two. Sixteen was chosen because it's
/// large enough to account for any failure of imagination, yet small enough to not
/// cause system stability issues.
const uint16 MAX_NETWORK_TYPES = 16;

/// Type for describing a channel index.
// TODO(fxb/65218): Replace with an alias.
using ChannelIndex = fuchsia.lowpan.ChannelIndex;

/// Used with `DeviceExtra.CommissionNetwork()`.
alias JoinerSecret = bytes:32;
