/* ======================================================================== * Copyright (c) 2005-2025 The OPC Foundation, Inc. All rights reserved. * * OPC Foundation MIT License 1.00 * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * The complete license agreement can be found here: * http://opcfoundation.org/License/MIT/1.00/ * ======================================================================*/ namespace Opc.Ua.Di.Server.Builders { /// /// Mutable property bag used by /// /// to populate the standard DI nameplate properties defined in /// OPC 10000-100 §5.10–§5.11 (IVendorNameplateType and /// ITagNameplateType). /// /// /// All members are by default; only properties /// that are assigned by the configuration delegate are written back /// onto the underlying . This keeps the /// builder additive and lets callers populate a partial nameplate /// without overwriting existing values. /// public sealed class DeviceIdentificationData { /// /// Manufacturer of the device. The default value (an /// empty whose IsNull is /// ) means "not assigned" and is skipped /// during configuration. /// public LocalizedText Manufacturer { get; set; } /// /// Globally unique manufacturer URI. /// public string? ManufacturerUri { get; set; } /// /// Model designation of the device. The default value /// means "not assigned" (see ). /// public LocalizedText Model { get; set; } /// /// Hardware revision level. /// public string? HardwareRevision { get; set; } /// /// Software revision level. /// public string? SoftwareRevision { get; set; } /// /// Overall device revision level. /// public string? DeviceRevision { get; set; } /// /// Manufacturer-defined product code. /// public string? ProductCode { get; set; } /// /// URI of the device manual. /// public string? DeviceManual { get; set; } /// Device class — for example, "Pump" or "Sensor". public string? DeviceClass { get; set; } /// /// Manufacturer-assigned serial number. /// public string? SerialNumber { get; set; } /// /// Globally unique product-instance URI. /// public string? ProductInstanceUri { get; set; } /// /// Revision counter incremented by the device firmware. /// public int? RevisionCounter { get; set; } } }