//******************************************************************************************************
// ConnectionSettings.cs - Gbtc
//
// Copyright © 2012, Grid Protection Alliance. All Rights Reserved.
//
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may
// not use this file except in compliance with the License. You may obtain a copy of the License at:
//
// http://www.opensource.org/licenses/MIT
//
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
// License for the specific language governing permissions and limitations.
//
// Code Modification History:
// ----------------------------------------------------------------------------------------------------
// 06/06/2012 - J. Ritchie Carroll
// Generated original version of source code.
// 12/17/2012 - Starlynn Danyelle Gilliam
// Modified Header.
//
//******************************************************************************************************
using System;
using System.Runtime.Serialization;
using GSF.Communication;
namespace GSF.PhasorProtocols
{
///
/// Represents information defined in a PMU Connection Tester connection file.
///
[Serializable]
public class ConnectionSettings : ISerializable
{
#region [ Members ]
// Fields
///
/// Defines from PmuConnection file.
///
public PhasorProtocol PhasorProtocol;
///
/// Defines from PmuConnection file.
///
public TransportProtocol TransportProtocol;
///
/// Defines connection string from PmuConnection file.
///
public string ConnectionString;
///
/// Defines ID of the source from PmuConnection file.
///
public int PmuID;
///
/// Defines frame rate from PmuConnection file.
///
public int FrameRate;
///
/// Defines boolean flag if data needs to be repeated again and again.
///
public bool AutoRepeatPlayback;
///
/// Defines byte encoding format from PmuConnection file.
///
public int ByteEncodingDisplayFormat;
///
/// Defines additional connection information such as alternate command channel from PmuConnection file.
///
public IConnectionParameters ConnectionParameters;
#endregion
#region [ Constructors ]
///
/// Creates a new instance.
///
public ConnectionSettings()
{
}
///
/// Creates a new instance from serialization parameters.
///
/// The with populated with data.
/// The source for this deserialization.
protected ConnectionSettings(SerializationInfo info, StreamingContext context)
{
// Deserialize connection settings values
if (!Enum.TryParse(info.GetOrDefault("PhasorProtocol", "IEEEC37_118V1"), true, out PhasorProtocol))
PhasorProtocol = PhasorProtocol.IEEEC37_118V1;
if (!Enum.TryParse(info.GetOrDefault("TransportProtocol", "Tcp"), true, out TransportProtocol))
TransportProtocol = TransportProtocol.Tcp;
ConnectionString = info.GetOrDefault("ConnectionString", (string)null);
if (!int.TryParse(info.GetOrDefault("PmuID", "1"), out PmuID))
PmuID = 1;
if (!int.TryParse(info.GetOrDefault("FrameRate", "30"), out FrameRate))
FrameRate = 30;
if (!info.GetOrDefault("AutoRepeatPlayback", "false").ParseBoolean())
AutoRepeatPlayback = false;
if (!int.TryParse(info.GetOrDefault("ByteEncodingDisplayFormat", "0"), out ByteEncodingDisplayFormat))
ByteEncodingDisplayFormat = 0;
ConnectionParameters = info.GetOrDefault("ConnectionParameters", (IConnectionParameters)null);
}
#endregion
#region [ Methods ]
///
/// Populates a with the data needed to serialize the target object.
///
/// The to populate with data.
/// The destination for this serialization.
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
// Serialize connection settings values
info.AddValue("PhasorProtocol", PhasorProtocol, typeof(PhasorProtocol));
info.AddValue("TransportProtocol", TransportProtocol, typeof(TransportProtocol));
info.AddValue("ConnectionString", ConnectionString);
info.AddValue("PmuID", PmuID);
info.AddValue("FrameRate", FrameRate);
info.AddValue("AutoRepeatPlayback", AutoRepeatPlayback);
info.AddValue("ByteEncodingDisplayFormat", ByteEncodingDisplayFormat);
info.AddValue("ConnectionParameters", ConnectionParameters, typeof(IConnectionParameters));
}
#endregion
}
}