blob: f220a4b711e6cc5c0369b45ae72dd4f7e9ef3a73 [file] [log] [blame]
// Copyright 2020 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;
/// LoWPAN Provisioning Error
///
/// Returned by `ProvisioningMonitor.WatchProgress()`.
enum ProvisionError : int32 {
/// Provisioning did not successfully complete because the
/// credential was rejected. For example, the key was incorrect.
///
/// This may be interpreted as an argument error.
CREDENTIAL_REJECTED = 1;
/// Provisioning did not successfully complete because the
/// no peers on the requested network are in range.
NETWORK_NOT_FOUND = 2;
/// Forming a new network did not successfully complete because the
/// a peer with the requested network identity is in range.
NETWORK_ALREADY_EXISTS = 3;
/// This operation was canceled due to an incompatible operation
/// being started before this one was finished.
CANCELED = 4;
};
/// Indicates the current status of the form/join operation.
///
/// Returned by `ProvisioningMonitor.WatchProgress()`.
union ProvisioningProgress {
/// Approximate percent complete indication for a user interface.
1: float32 progress;
/// The final Identity when the operation has completed successfully.
2: fuchsia.lowpan.Identity identity;
};
/// Reports the progress of a provisioning operation like Join or Form.
///
/// If there was a problem with the arguments passed to the originating
/// function (Join/Form) then the channel will be closed with `ZX_ERR_INVALID_ARGS`.
protocol ProvisioningMonitor {
/// Call this method to receive an update on the provisioning progress.
///
/// When first called, this method will return immediately with the
/// current status. On subsequent calls, it will block until the status
/// changes.
///
/// If provisioning error is encountered, it is returned as a `ProvisionError`. See
/// the documentation for `ProvisionError` details on error handling.
///
/// Once the method has either returned an identity or indicated a `ProvisionError`,
/// the ProvisioningMonitor will close with `ZX_OK`.
WatchProgress() -> (ProvisioningProgress progress) error ProvisionError;
};