Skip to content

GSF v2.3.302 Release Notes

J. Ritchie Carroll edited this page May 6, 2020 · 1 revision

Grid Solutions Framework (GSF) Release v2.3.302

Find GSF on NuGet
Updates to GSF.Core
  • Added additional overload to Common functions IsNumericType that takes explicit Type parameter.
  • Added configuration flag to WindowsUserInfo to allow for legacy group lookups to speed use authentication when using local accounts.
  • Added GetColumn extension for two-dimensional arrays to CollectionExtensions.
  • Added GetRow in addition to GetColumn for two-dimensional arrays - and updated Row context to be first index since I'm in the minority that Column should be first.
  • Added more resharper message suppression for TableOperations.
  • Added optional startIndex field to StringParser.ExpectedFieldNamesMatch() method. (FRR)
  • Added precompiler directives to enable WindowsUserInfo.cs to compile for Mono builds on Linux.
  • Fixed GetColumn extension function to properly validate dimension zero length.
  • Fixed region section alignments.
  • Improved numeric type operations in Common functions class.
  • In FileBackedLookupTable, fixed the setter on the indexer to properly check whether the hashtable needs to grow before adding a new item.
  • In FileProcessor, implemented logic to skip subfolders during file enumeration based on a list of wildcard patterns.
  • Minor clean-up / warning suppression of GSF.Text imported Diff Match and Patch code.
  • Minor updates to component model value expression parser.
  • Simplified boolean logic in CopyPermissions function.
  • Updated char extensions for ToUpper/ToLower to use standard .NET functions
  • Updated SignalReference parsing to use int.TryParse for more reliable parsing when signal reference inputs are malformed.
  • Updated templated expression parser to properly handle multiple eval expressions.
  • Added diff-match-path source code to GSF.Core in the GSF.Text namespace.
Updates to GSF.Communications
  • Added ability to specify ReceivedBytesThreshold for serial clients in the connection string along with improved numeric parameter validation.
  • Added multiple server capability to TCP clients allowing automatic fail-over.
  • Added SerialException class to handle serial-type errors related to the SerialClient.
  • Cleaned up TlsClient code.
  • Exposed SslStream property from TlsClient class.
  • Fixed issue with serialization of IdentifyClientsBy setting in UdpServer. Fixes #57
  • General code clean-up of SerialClient
  • General code update and clean-up.
  • Improved null checks in RadiusPacket.
  • Improved SerialClient status details.
  • Removed automatic adjustment on MaxConnectionAttempts when used with multiple servers.
  • TcpClient general code cleanup.
  • Updated TlsClient on Mono builds to default to Tls1.2 since newer builds of Mono support this.
  • Added multiple server connections to TlsClient.
  • Removed unused code from latest updates.
  • Fix outdated MONO code in TcpClient.cs and TlsClient.cs.
Updates to GSF.Parsing
  • Added improved error message for protocol byte based frame re-alignments in BinaryImageParserBase (plus code cleanup).
  • Fixed stream initialization error in MultiSourceFrameImageParserBase
  • Simplified reserved symbol initialization in TemplatedExpressionParser.
  • Updated default steam initialization state for multi-source frame image parser base class (plus general code cleanup in namespace)
  • Updated templated expression parser to auto-escape reserved symbols in substitution values to prevent unintended expression evaluation errors.
Updates to GSF.PhasorProtocols
  • Added frequency and dF/dt to attributes that are displayed via PMU Connection Tester protocol specific hierarchy.
  • General code update and clean-up.
  • Updated MPFP to include DisableRealTimeDataOnStop setting to allow for handling primary / secondary split serial connections where the data stream needs to stay running for secondary connection when primary connection is shutdown.
  • Added BaseKV field to InputWizardDevicePhasor.
  • Filtered group devices from graph measurements screen.
  • Fixed SQLite operations with input device wizard in WPF Manager tools (BaseKV loads from SQLite needed cast from long to int)
  • Updated AccessID to default a value of 1.
  • Updated Device model to return globally configured company acronym when no company is assigned to a device.
  • Updated InputDeviceWizard to properly update device acronym when updating configuration instead of adding a new device and leaving old one.
  • Updated InputWizardDevices to guess phase for VSPM to be zero and added 161kV to voltage level guesses (plus general code cleanup).
  • Updated InputWizardDevices with improved phase guess operation (like that found in web device wizard).
  • Updated static constructor of Device model to only attempt retrieval of company acronym setting without adding one.
  • Synchronized output stream phase option to those now allowed as inputs.
  • Added base KV to synchrophasor wizard and improved recovery of existing data during configuration updates.
  • Added original values from config as tool-tips on wizard screen and improved operation for PDC-based inputs.
  • Fixed issue with Action Adapter not showing up in OpenPDC
  • Added data forwarding options to phasor measurement mapper.
Updates to GSF.InstallerActions
  • Added additional null checks to TimeSortedArchiveFileScanner
  • Added action to load existing company info (plus code cleanup)
  • Applied a saftey check to GetPropertyValue function.
  • Modified project to depend on the WiX NuGet package instead of the WiX Toolset.
  • Tweaked paths and conditions in csproj so project works with just the WiX NuGet package.
  • Added Option to Load dll from Path in InstallerActions.DatabaseQueryAction
Updates to DeviceStatAdapters
  • Improved status feedback and error handling.
  • Minor formatting updates.
  • Updated adapter comments.
  • Updated to include latency calculations.
  • Added new adapter that will create minute statistic counts for input devices.
Updates to GrafanaAdapters
  • Made superficial changes to support Visual Studio 2019.
  • Added ability to execute SELECT based metadata target searches without an expression to return all records.
  • Added ability to specify table name for label field lookup and direct tag lookup for measurement key and Guid based signal IDs.
  • Added cancellation token check for time slice operations.
  • Added code to verify that series labels are unique for Grafana trends - even if forced to be the same by user.
  • Added optimized location meta-data functions with ability to radially distribute duplicated coordinates,
  • Added series command parameter to hide series with no data called "DropEmptySeries" to be added to filter expression.
  • Cleared PVS Studio warnings.
  • Cleared warnings and removed GSF prefix from DeviceAlarmStateAdapter.
  • Improved operation of "dropEmptySeries" command
  • Improved operation of unique label validation.
  • Updated documentation comments.
  • Updated GrafanaDataSourceBase to allow template target search queries based on expressions with SQL SELECT syntax, e.g.
  • Updated series label uniqueness check to only start after 2 or more items.
  • Exposed GetShortElapsedTimeString as public with comments.
  • Added Grafana Alarm Panel Functionality to Grafana Statistic Data Sources
  • Added Function to check if close Timestamp exists in Distribution
  • Added Function to get status of individual Alarm
  • Added GetAlarms to Grafana Controller
  • Added Grafana Endpoint to get all available Device Alarm States and initial code for Device Groups
  • Added Grafana Endpoint to Get Device Groups
  • Fixed Slicefxn functionality in Grafana Controller
  • Fixed Issue in Grafana Alarm query when PointTag is not trimmed
  • Changed AlarmAdapter to include static functions to get Raised Alarms
  • Removed special label for Grafana SetMode() function since mode can appear in multiple series
  • Updated DeviceAlarm View to include Device ID
  • Udated Location Request and query Request to include information for Alarms
  • Fixed errors in CSV adapters and Metadata adapters which caused base-class connection string parameters to be overwritten by their defaults.
  • Fixed Exception in LocationData due to paralell loop accessing dataTable
  • Fixed Formating of CSVExcludeFieldAttribute
  • Moved Alarm Panel Tables to GSF Schema
  • Moved default Alarmstates to GSF
  • Fixed issues in AlarmAdapter
  • Fixed Reference to CSVExcludeFieldAttribute
  • Moved DeviceAlarmStateAdapter and associated models from OpenPDC into GSF
  • Disabled Compiler Warnings for missing XML comments in GrafanaAlarm Class
  • Added Check fro CSVExclude Attribute when exporting CSV
  • Added CSVExcludeField Attribute to mark data model fields that should not be included in CSV files
  • Added Location request to Grafana OH v1.0 API
  • Added Special case for processing Difference Function from Grafana to avoid issues when applying SLICE
Updates to AzureEventHubAdapters
  • Added configuration flag to control if meta-data push should be allowed to be posted in parallel with data.
  • Updated order of operations in adapter initialization to ensure proper loading of inputs.
Updates to GSF.SELEventParser
  • Added a multiplier of SQRT(2) to the voltage readings to account for SEL dividing by a SQRT(2).
  • Added addition null checks to AnalogSection parser.
  • Added additional null checks fro CommaSeparatedEventReport parser.
  • Various fixes for SEL CEV parser. (FRR)
Updates to GSF.ServiceProcess
  • Added error suppression for badly formatted status messages - errors get logged to event publisher.
  • Fixed authorization logic in ServiceHelper for remote console commands with aliases.
  • Updated ServiceProcess to report total run-time as elapsed time instead of seconds.
Updates to GSF.TimeSeries
  • Added "init" alias for "initialize" and "auth" for "authorize"
  • Added additional timestamp validation checks for temporal measurements and adapter usages.
  • Added independent adapter collection manager base classes.
  • DataSubscriber general code cleanup.
  • Fixed Missmatch of indices in publisher status and enumerate Client
  • Fixed shutdown issue in Iaon session with filter adapters collection being null.
  • Fixed status message for independent adapter collections where config reload timeout and attempt values were swapped.
  • Handled dispose exception due to a race condition in statistics engine.
  • Improved boolean logic for DataPublisher (and general clean up)
  • Improved error response message when PING command fails.
  • Udated process spawn for primary remote console functions from main service to be independent, non-child, processs on Windows
  • Update SignalTypes comments for all independent adapter manager implementations.
  • Updated independent adapter management handler for initialization to fail when SignalTypes is defined and length does not support per adapter output length.
  • Updated independent adapter manager handlers to support custom per output signal types and per adapter custom connection strings.
  • Updated independent adapter managers to allow for minute control of output measurement metadata.
  • Updated initial data scripts to change Entergy acronym to ESI for Entergy Services Inc
  • Updated input / output settings parse in OnSecondDataWindowAdapterBase to use "nameof" for settings.
  • Updated input measurement index used for name to default to zero for BulkSequenceCalculator.
  • Updated OneSecondDataWindowAdapterBase to allow to custom source measurement table defintion.
  • Updated RazorEngine handling of dyanmic assemblies with automated cleanup.
  • Updated ServiceHostBase to allow implementations to intercept data source propagation to IaonSession for customization purposes.
  • Disabled checking for CAS publisher policy for all application config files to speed start time.
  • Restored common class to internal status to prevent ambigous references to common in GSF.Core.
  • Updated ServiceHostBase to properly show system uptime as elapsed time when list adapter collections.
  • Updated subscription creation screens to allow for STTP or GEP and added option to use source prefix names. Includes various UI feedback improvements.
  • Added additional null checks in the ApplicationRole data model.
  • Added additional null checks to the Node data model.
  • Removed dead code expression.
  • Updated Node model to properly match database schema.
Updates to GSF.Web
  • Added "delayedPromise" function to gsf.web.client
  • Added a parse query string function that will return a json object representation of said query string to gsf.web.client.js.
  • Added an upside down triangle to the flot symbols package.
  • Added default polyfill javascript file that will polyfill modern browser function into IE.
  • Added DOM Node paramater to ko.applyBindings function call because now it is required.
  • Added Flot Plugin for dashed Lines
  • Added leaflet.js to shared web scripts.
  • Added mising semicolons to updates in select2-bootstrap CSS.
  • Added PagedViewModelDivTable.cshtml to be used if table issues arise in ie11.
  • Added polyfill script for use of ES6 functionality within IE.
  • Added Select2 library for HTML select customizations with associated bootstrap theme and knockout bindings.
  • Adjusted select2 bootstrap CSS to include matching border radius settings.
  • Cleaned up gsf.web.client code (removed ESLint errors, etc)
  • Fixed leaflet to be marked as embedded resources.
  • Fixed OpenEmbeddedResourceStream for manually added resources.
  • Fixed table scroll issue with primeui.js.
  • Improved operation of replaceAll function in gsf.web.client.js
  • Moved binding to pageContentWrapper to include count field.
  • Restored post functionality to WebPageController.
  • Updated cache-control to better interact with Google chrome caching so that updates to Javascript are always picked-up.
  • Updated embedded Bootstrap 3.4.1
  • Updated embedded jQuery to 3.4.1
  • Updated embedded knockout version to 3.5.0
  • Updated embedded shared Angular script to v1.7.9
  • Updated ko.applyBindings function to use the page body because other node was not present in all applications.
  • Updated reference to Microsoft.AspNet.SignalR.Core NuGet package to match the newly added project.
  • Updated replaceAll function in gsf.web.client to ensure parameters are strings before executing string operations.
  • Bump angular from 1.6.8 to 1.7.9 in /Source
Update to ModBusAdapters
  • Updated rendering related to record count sequence.
  • Minor updates.
  • Removed reference to app.config from library project
  • Synchronized references to SignalR and dependencies with GSF.Web
  • Updated applyBindings to include target DOM element
  • Updated Nuget references
  • Updated project to auto-deploy "bin" folder for improved cshtml development.
  • Updated Status.cshtml page to target first body element for knockout bindings
Update to PhasorWebUI
  • Added IsConcentrator flag to primary device connection which gets set when more than one device is defined in the connection.
  • Fixed access to global settings object view type registry.
  • Updated PhasorHub to include missing functions and improved operation of system frequency calculation creation.
  • Updated GraphMeasurements to display point tag
Updates to PhasorMeasurementMapper
  • General code update and clean-up.
  • Relabled proxy options as data fowarding options to better reflect intended purpose.
  • Reordered initialization of frame parser to follow any forwarding configuration for proper order of operations
Updates to PhasorProtocolAdapters
  • Added after-build signing to protocol adapters project.
  • Fixed issue with reporting "No data mapped" for devices with bad timestamps in GetShortStatus (plus code cleanup)
  • Updated calculated measurement base to better handle null values associated with input and output measurements.
  • Updated common phasor services data operation for phasor source validation to skip automatically adding a device quality measurement when device is configured to only forward data.
  • Updated PhasorMeasurementMapper to properly load specified or cached configuration frames at the appropriate time.
  • Added Config 3 frame header
  • Added "Neutral" with identifier "N" to possible phase list.
  • Added Base KV field to Phasor UI
  • Added "RenameAllPointTags" invokable method to CommonPhasorServices in PhasorProtocolAdapters.
  • Added Command To request CFG3 frame
  • Added Option to round to distribution timestamp sampling with less tahn 1/sec
  • Added Optional base-line to rounding tiemstamp to avoid issues when using less than 1 sample/sec
Updates to PhasorWebUI
  • Added "forward only" option to synchrophasor wizard screen.
  • Added 345 as common base kV level to guess.
  • Added assembly info to project.
  • Added better handling to gateway connection updates and handling of empty connection strings.
  • Added import / export config, serialized section and inital connection builder to wizard screen
  • Added longitude/latitude fields for device definition
  • Added new assembly to hold web-based operations for synchrophasor user interfaces.
  • Added observable connection string and forward only options.
  • Added select2 library implementation for custom associated voltages that include original phasor label.
  • Changed C# target language for project.
  • Corrected case-sensitive issues with SQLite for wizard screen and hid elements that are not currently fully functional.
  • Fixed PDC device name acronym value accessor.
  • Fixed PDC main acronym load during edit mode.
  • Fixed Wizard to point to PPA by default
  • Improved layout and operation of long/lat fields
  • Improved operation of PDC vs direct connect modes in device wizard operation.
  • Improved phase guess operation in device wizard.
  • Minor updates.
  • Operational updates to new device wizard screen.
  • Removed openPDC TODO comment for handling instance names
  • Restore default with types.
  • Synchronized guess code updates and checks for null device connection string from openHistorian.
  • Updated add device screen to include device name, automatic display of what tag names will be and original tag name.
  • Updated CompanyAcronym to read from implementation defined app model.
  • Updated device wizard screen to allow config export when user is not an editor.
  • Updated device wizard to delete un-enabled phasors on save.
  • Updated embedded resource operation of primary view.
  • Updated LoadConfigurationFrame PhasorHub function to support returning a configuration frame a provided a connection string.
  • Updated protocol enum parse to ignore case.
  • Updated synchrophasor wizard to allow for either disabled or deleted phasors with better visual feedback on selected options (attempt 2).
  • Updated synchrophasor wizard to allow for either disabled or deleted phasors with better visual feedback on selected options.
Update to Power Calculations
  • Added CurrentOutputIndex to allow for custom tag naming.
  • Added initial implementation of the BulkSequenceCalculator adapter that will automatically calculate sequence values for all matched A/B/C phasors including automatic creation of output measurements.
  • Simplified BulkSequenceCalculator initialization.
  • Updated 'default literal' to old style to it will compile on BuildBot
  • Updated documentation comments for BulkSequenceCalculator.
  • Updated sequence calculator enumeration and variable names for clarity and consistency.
  • Updated SequenceCalculator adapter to support operation as either a standalone adapter or as part of an independently managed bulk collection adapter.
Updates to UpdateTagNames
  • Added sign build operation to project file.
  • Changed all setting scopes to application since app is admin only and updated build location.
  • Corrected default values and XML encoding.
  • Corrected manager config file save operation.
  • Updated tool to auto-reference SQLite and target a 64-bit executable.
Updates to GSF Tools and General Code Maintenance
  • Added CreateOutputStream tool that will create an output stream based on CSV inputs.
  • Added tool to allow easier updates of point tag name expressions.
  • Suppressed release-level code analysis warnings from recent code additions.
  • Updated deployed tools to use SIGNTOOL.
  • Added iconography to new tool.
Miscellaneous Updates
  • PQDif: Added tags and Guid for DisturbanceCategory
  • COMTRADE: Added owner and location tag per 2019 standard
  • GSF.Net: Added logging for swallowed exception in FtpFileWatcher.
  • OSI-PI: Suppressed debug messages in PI real-time reader unless a debug build is targeted.
  • NoIntUtil: Added Flag to (--checkall) to run all fixes and complete without user interaction
  • StatReportGenerator: Updated NuGet reference to Report.NET
  • GSF: Case sensitive filename issue on Linux.
  • GSF: In MONO the stack is sometimes missing data, prevent logging exceptions.
  • GSF: NuGet on Mono/Linux cannot handle backslashes. Changing to forward slash, please validate on windows.