#region Copyright (c) 2011-2023 Technosoftware GmbH. All rights reserved
//-----------------------------------------------------------------------------
// Copyright (c) 2011-2023 Technosoftware GmbH. All rights reserved
// Web: https://www.technosoftware.com
//
// The source code in this file is covered under a dual-license scenario:
// - Owner of a purchased license: SCLA 1.0
// - GPL V3: everybody else
//
// SCLA license terms accompanied with this source code.
// See SCLA 1.0: https://technosoftware.com/license/Source_Code_License_Agreement.pdf
//
// GNU General Public License as published by the Free Software Foundation;
// version 3 of the License are accompanied with this source code.
// See https://technosoftware.com/license/GPLv3License.txt
//
// This source code is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.
//-----------------------------------------------------------------------------
#endregion Copyright (c) 2011-2023 Technosoftware GmbH. All rights reserved
#region Using Directives
using System;
#endregion
namespace Technosoftware.DaAeHdaClient.Da
{
///
/// Contains the value for a single item.
///
[Serializable]
public class TsCDaItemValue : OpcItem
{
#region Fields
private TsCDaQuality daQuality_ = TsCDaQuality.Bad;
private DateTime timestamp_ = DateTime.MinValue;
#endregion
#region Constructors, Destructor, Initialization
///
/// Initializes the object with default values.
///
public TsCDaItemValue() { }
///
/// Initializes the object with and ItemIdentifier object.
///
public TsCDaItemValue(OpcItem item)
{
if (item == null)
{
return;
}
ItemName = item.ItemName;
ItemPath = item.ItemPath;
ClientHandle = item.ClientHandle;
ServerHandle = item.ServerHandle;
}
///
/// Initializes the object with the specified item name.
///
public TsCDaItemValue(string itemName)
: base(itemName)
{
}
///
/// Initializes object with the specified ItemValue object.
///
public TsCDaItemValue(TsCDaItemValue item)
: base(item)
{
if (item == null)
{
return;
}
Value = OpcConvert.Clone(item.Value);
Quality = item.Quality;
QualitySpecified = item.QualitySpecified;
Timestamp = item.Timestamp;
TimestampSpecified = item.TimestampSpecified;
}
#endregion
#region Properties
///
/// The item value.
///
public object Value { get; set; }
///
/// The quality of the item value.
///
public TsCDaQuality Quality
{
get => daQuality_;
set => daQuality_ = value;
}
///
/// Whether the quality is specified.
///
public bool QualitySpecified { get; set; }
///
/// The timestamp for the item value.
/// The ApplicationInstance.TimeAsUtc property defines
/// the time format (UTC or local time).
///
public DateTime Timestamp
{
get => timestamp_;
set => timestamp_ = value;
}
///
/// Whether the timestamp is specified.
///
public bool TimestampSpecified { get; set; }
#endregion
#region ICloneable Members
///
/// Creates a deep copy of the object.
///
public override object Clone()
{
var clone = (TsCDaItemValue)MemberwiseClone();
clone.Value = OpcConvert.Clone(Value);
return clone;
}
#endregion
}
}