// Copyright 2022 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.experimental;

using fuchsia.lowpan.device;

/// Parameters for DeviceExtra::JoinNetwork command.
type JoinParams = flexible union {
    /// Attempts to find and join a known pre-existing network.
    1: provisioning_parameter fuchsia.lowpan.device.ProvisioningParams;

    /// Attempts to find and join an unknown pre-existing network
    /// that is configured to accept and provision devices with
    /// the given shared secret, or PSKd. This allows new devices to
    /// join existing networks without knowing the credentials for
    /// the specific network.
    2: joiner_parameter JoinerCommissioningParams;
};
