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

/// Maximum length of a network type string.
///
/// Chosen arbitrarily to be large enough to accommodate any reasonable future
/// net types.
const MAX_NET_TYPE_LEN uint16 = 64;

/// String describing a network type.
alias NetworkType = string:MAX_NET_TYPE_LEN;

const NET_TYPE_THREAD_1_X string = "org.threadgroup.std.thread.1";
const NET_TYPE_ZIGBEE_IP_1_X string = "org.zigbee.std.zigbee-ip.1";
const NET_TYPE_UNKNOWN_802_15_4_PID string = "fuchsia.lowpan.net_type.802.15.4.pid";
const NET_TYPE_RAW_6LOWPAN string = "fuchsia.lowpan.net_type.6lowpan";

/// The maximum number of items that can be returned at one
/// time by a scan stream.
const MAX_STREAM_SET_SIZE uint16 = 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 MAX_NETWORK_TYPES uint16 = 16;

/// Maximum number of channels that can be returned by
/// [`Device.GetSupportedChannels`].
///
/// Value was chosen arbitrarily to be large enough to accommodate any
/// reasonable future use case.
const MAX_CHANNELS uint16 = 200;
