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

const MAX_PROVISION_URL_LEN uint16 = 64;
const MAX_VENDOR_NAME_LEN uint16 = 32;
const MAX_VENDOR_MODEL_LEN uint16 = 32;
const MAX_VENDOR_SW_VER_LEN uint16 = 16;
const MAX_VENDOR_DATA_LEN uint16 = 64;
const PSKD_LEN uint16 = 32;

/// Parameters for joiner commissioning.
///
/// More information:
/// https://www.threadgroup.org/Portals/0/documents/support/CommissioningWhitePaper_658_2.pdf
type JoinerCommissioningParams = table {
    /// Commissioning PSKd. Required.
    1: pskd string:PSKD_LEN;

    /// Provisioning URL. Optional.
    2: provisioning_url string:MAX_PROVISION_URL_LEN;

    /// Vendor name. Optional.
    3: vendor_name string:MAX_VENDOR_NAME_LEN;

    /// Vendor model. Optional.
    4: vendor_model string:MAX_VENDOR_MODEL_LEN;

    /// Vendor Software Version. Optional.
    5: vendor_sw_version string:MAX_VENDOR_SW_VER_LEN;

    /// Vendor data string. Optional.
    6: vendor_data_string string:MAX_VENDOR_DATA_LEN;
};
