generated from gemstone/gemtem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PhasorDefinition.cs
139 lines (121 loc) · 6 KB
/
PhasorDefinition.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//******************************************************************************************************
// PhasorDefinition.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:
// ----------------------------------------------------------------------------------------------------
// 05/05/2009 - J. Ritchie Carroll
// Generated original version of source code.
// 09/15/2009 - Stephen C. Wills
// Added new header and license agreement.
// 12/17/2012 - Starlynn Danyelle Gilliam
// Modified Header.
//
//******************************************************************************************************
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Gemstone.Numeric.EE;
// ReSharper disable VirtualMemberCallInConstructor
namespace Gemstone.PhasorProtocols.Anonymous
{
/// <summary>
/// Represents a protocol independent implementation of a <see cref="IPhasorDefinition"/>.
/// </summary>
[Serializable]
public class PhasorDefinition : PhasorDefinitionBase
{
#region [ Constructors ]
/// <summary>
/// Creates a new <see cref="PhasorDefinition"/> from specified parameters.
/// </summary>
/// <param name="parent">The <see cref="ConfigurationCell"/> parent of this <see cref="PhasorDefinition"/>.</param>
/// <param name="label">The label of this <see cref="PhasorDefinition"/>.</param>
/// <param name="scale">The integer scaling value of this <see cref="PhasorDefinition"/>.</param>
/// <param name="type">The <see cref="PhasorType"/> of this <see cref="PhasorDefinition"/>.</param>
/// <param name="voltageReference">The associated <see cref="IPhasorDefinition"/> that represents the voltage reference (if any).</param>
/// <param name="originalSourceIndex">The original source phasor index, if applicable.</param>
/// <param name="phase">The phase of this <see cref="PhasorDefinition"/>.</param>
public PhasorDefinition(ConfigurationCell parent, string label, uint scale, PhasorType type, PhasorDefinition voltageReference, int originalSourceIndex = -1, char phase = '+')
: base(parent, label, scale, 0.0D, type, voltageReference)
{
OriginalSourceIndex = originalSourceIndex;
Phase = phase;
}
/// <summary>
/// Creates a new <see cref="PhasorDefinition"/> from serialization parameters.
/// </summary>
/// <param name="info">The <see cref="SerializationInfo"/> with populated with data.</param>
/// <param name="context">The source <see cref="StreamingContext"/> for this deserialization.</param>
protected PhasorDefinition(SerializationInfo info, StreamingContext context)
: base(info, context)
{
OriginalSourceIndex = info.GetInt32("originalSourceIndex");
Phase = info.GetChar("phase");
}
#endregion
#region [ Properties ]
/// <summary>
/// Gets or sets the <see cref="ConfigurationCell"/> parent of this <see cref="PhasorDefinition"/>.
/// </summary>
public new virtual ConfigurationCell Parent
{
get => base.Parent as ConfigurationCell;
set => base.Parent = value;
}
/// <summary>
/// Gets the maximum length of the <see cref="ChannelDefinitionBase.Label"/> of this <see cref="PhasorDefinition"/>.
/// </summary>
/// <remarks>
/// This length is not restricted for anonymous protocol definitions.
/// </remarks>
public override int MaximumLabelLength => int.MaxValue;
/// <summary>
/// Gets the original source index of the phasor.
/// </summary>
public int OriginalSourceIndex { get; }
/// <summary>
/// Gets or sets the phase, e.g., A, B, C, +, - or 0, of this <see cref="PhasorDefinition"/>.
/// </summary>
public virtual char Phase { get; set; }
/// <summary>
/// Gets a <see cref="Dictionary{TKey,TValue}"/> of string based property names and values for this <see cref="PhasorDefinition"/> object.
/// </summary>
public override Dictionary<string, string> Attributes
{
get
{
Dictionary<string, string> baseAttributes = base.Attributes;
baseAttributes.Add("Original Source Index", $"{OriginalSourceIndex}");
baseAttributes.Add("Phase", $"{Phase}");
return baseAttributes;
}
}
#endregion
#region [ Methods ]
/// <summary>
/// Populates a <see cref="SerializationInfo"/> with the data needed to serialize the target object.
/// </summary>
/// <param name="info">The <see cref="SerializationInfo"/> to populate with data.</param>
/// <param name="context">The destination <see cref="StreamingContext"/> for this serialization.</param>
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
info.AddValue("originalSourceIndex", OriginalSourceIndex);
info.AddValue("phase", Phase);
}
#endregion
}
}