Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
8168edb
Added SEL CWS protocol implementation
ritchiecarroll Nov 26, 2025
fee6f41
[CFG-3] Assign appropriate values to ConversionFactor and MagnitudeMu…
StephenCWills Nov 26, 2025
27f476e
Improved frame offset calculations
ritchiecarroll Nov 26, 2025
cd45e8b
Updates to SEL CWS
ritchiecarroll Dec 9, 2025
7461779
Minor updates to SWL CWS protocol
ritchiecarroll Dec 9, 2025
33e95f9
Updated SEL CWS test code
ritchiecarroll Dec 9, 2025
8b75fa8
Code cleanup
ritchiecarroll Dec 9, 2025
5a85cbb
Updated SEL CWS to consistently parse 3000 samples per second
ritchiecarroll Dec 16, 2025
bd2920a
Added SEL CWS channel ID validation
ritchiecarroll Dec 16, 2025
493336c
Fixed config frame check
ritchiecarroll Dec 16, 2025
8c317ff
Updated SelCWS to improve sub-data frame processing
ritchiecarroll Dec 16, 2025
9c56463
Updated reference
ritchiecarroll Dec 16, 2025
c88df13
Improved SEL CWS measurement timestamp distribution
ritchiecarroll Dec 23, 2025
e064bae
Code clean up
ritchiecarroll Dec 23, 2025
9311f8f
Added SEL CWS analog definition Scalar for serialization
ritchiecarroll Dec 23, 2025
de1d0af
Update SEL CWS to carry configured line frequency into config frame a…
ritchiecarroll Dec 24, 2025
568171d
Updated parse only SEL CWS to properly handle null image generation
ritchiecarroll Dec 29, 2025
264ef3b
Improved SEL CWS config serialization, phase estimator and replay opt…
ritchiecarroll Jan 2, 2026
34cf1ca
Improved MPFP for high-speed playback
ritchiecarroll Jan 5, 2026
0c2e13a
Updated UserInterfaces
gsfbuildbot Jan 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/Gemstone.PhasorProtocols.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=IEEEC/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CWS/@EntryIndexedValue">CWS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PI/@EntryIndexedValue">PI</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=dfdt/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=IEEEC/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Jian/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Phasor/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=phasors/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Starlynn/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

Large diffs are not rendered by default.

Large diffs are not rendered by default.

11 changes: 9 additions & 2 deletions src/Gemstone.PhasorProtocols/ChannelFrameBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ public ushort Checksum
/// <remarks>
/// The body image of the <see cref="ChannelFrameBase{T}"/> is the combined images of all the <see cref="Cells"/>.
/// </remarks>
protected override byte[] BodyImage => m_cells.BinaryImage();
protected override byte[]? BodyImage => m_cells.BinaryImage();

/// <summary>
/// Gets the parsed binary length derived from the parsing state, if any.
Expand Down Expand Up @@ -454,7 +454,14 @@ protected virtual bool ChecksumIsValid(byte[] buffer, int startIndex)
/// </remarks>
protected virtual void AppendChecksum(byte[] buffer, int startIndex)
{
BigEndian.CopyBytes(CalculateChecksum(buffer, 0, startIndex), buffer, startIndex);
try
{
BigEndian.CopyBytes(CalculateChecksum(buffer, 0, startIndex), buffer, startIndex);
}
catch (NotImplementedException)
{
// Ignore unimplemented checksum calculations
}
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion src/Gemstone.PhasorProtocols/FNET/UI/FNET.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/Gemstone.PhasorProtocols/FNET/UI/FNETChunk.js

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

13 changes: 12 additions & 1 deletion src/Gemstone.PhasorProtocols/IEEEC37_118/PhasorDefinition3.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ public sealed class PhasorDefinition3 : ChannelDefinitionBase3, IPhasorDefinitio
public PhasorDefinition3(IConfigurationCell parent)
: base(parent)
{
// In CFG-3, ConversionFactor for phasors is replaced by MagnitudeMultiplier.
// MagnitudeMultiplier should be applied to measurement metadata during stream configuration.
// The value of 1 exposes the raw, unscaled phasor magnitudes from the data stream
ConversionFactor = 1.0D;
}

/// <summary>
Expand All @@ -71,6 +75,13 @@ public PhasorDefinition3(IConfigurationCell parent)
public PhasorDefinition3(ConfigurationCell3 parent, string label, uint scale, double offset, PhasorType type, PhasorDefinition3 voltageReference, char phase)
: base(parent, label, scale, offset)
{
if (DataFormat == DataFormat.FixedInteger)
{
// ConversionFactor represents the multiplier used to encode values.
// This needs to be assigned to MagnitudeMultiplier so it can be encoded into the configuration cell
MagnitudeMultiplier = (float)ConversionFactor;
}

PhasorType = type;
m_voltageReference = type == PhasorType.Voltage ? this : voltageReference;

Expand Down Expand Up @@ -302,4 +313,4 @@ internal static IPhasorDefinition CreateNewDefinition(IConfigurationCell parent,

#endregion
}
}
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/Gemstone.PhasorProtocols/Macrodyne/UI/Macrodyne.js

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Loading
Loading