Library of components to support development of ASCOM clients, drivers and Alpaca devices.
The version history only contains entries when a change is made.
Release 4.0.0
- SECURITY-CHANGE - The XMLprofile component now explicitly ignores DTDs in XML files to prevent potential XML External Entity (XXE) attacks. This is a security best practice to mitigate the risk of XXE vulnerabilities when processing XML data.
- CHANGE - XMLProfile now handles the case where the profile file is empty or contains invalid XML more gracefully. Instead of throwing an unhandled exception, it will now log a warning and create a new profile file with default settings. This allows the application to recover gracefully from this situation.
- CHANGE - Utilities.DMSToDegrees and Utilities.HMSToHours now throw InvalidValueException when passed null values instead of a Framework exception.
- CHANGE - Added the static TraceLogger.GetDefaultTraceLoggerPath() method that will return the default path for the TraceLogger log file. This is useful for applications that want to write their own files to the default log file directory.
- BUG-FIX - The XMLProfile overload that accepts a default value returned it when the key was absent but did not write it to the profile. The value is now written to the profile when the key is absent.
- BUG-FIX - Numerous improvements to the internal operation of the TraceLogger and ConsoleLogger components to improve their resilience and reliability in edge case scenarios.
- BUG-FIX - Utilities.Range now handles cases where the input value is more than one cycle outside the range. Previously it would only handle values that were up to one cycle outside the range.
- BUG-FIX - Utilities.Range now handles input non-real values (+Infinity, -Infinity, NaN) more gracefully. It now throws an InvalidValueException with a descriptive message instead of an unhandled internal exception.
Release 3.1.0
- REVISED - TraceLogger locking is now handled by a reliable lock mechanic eliminating the possibility of AbandonedMutexExceptions disrupting client operation.
Release 3.0.1
- REVISED - Improved TraceLogger resilience in the face of abandoned mutexes. If an abandoned mutex is detected, a warning is logged to the log file and the logger continues to operate as normal. This should prevent the logger from becoming unusable after an abandoned mutex and should allow it to recover gracefully from this situation.
Release 3.0.0
- ADDED - Support for .NET 8.0, 9.0 and 10.0 target frameworks. It will no longer be necessary for applications that use these frameworks to rely on the .NET Standard 2.0 component.
Release 2.0.0
- Moved astrometry functions to new ASCOM.AstrometryTools package to reduced size and complexity of the ASCOM.Tools package.
- The ASCOM global default log file location can now be customised to a value other than Documents\ASCOM (Documents/ascom on Unix based OS) by setting the ASCOM_LOGPATH variable.
Release 1.0.108
- Added a NOVAS3.1 component to Utilities.
- Added MoonPhase, MoonIllumination and EventTimes astrometry functions to Utilities.
- Added an Almanac generator to Utilities. This writes a whole year almanac for a particular event to an ILogger instance. Supported events are:
- Rise and set times for the planets, sun and moon
- Start and end times for Civil, Nautical and Astronomical twilight
Release 1.0.107
- Added missing linux-arm32 native SOFA library.
- ConsoleLogger is an ILogger implementation that logs out to the console, using color coding messages
- Logger is a static class which contains an ILogger. ASCOM Standard logs out here, but a developer can switch the logging provider. This allows the platform to use the same logger as the developed software. All methods are safe, they should never be able to throw.
- TraceLogger is a cross platform implementation of the ASCOM Platform's TraceLogger that exposes ILogger. This is the default logger for ASCOM Standard
- XMLProfile is a IProfile implementation that stores settings in an xml file. By default this is stored in $HOME/.config/stuff on Linux and User/.ASCOM/stuff on Windows. You can see the full paths and how they are created in the class. The reason Windows uses .ASCOM instead of .config is that .config is created by third party software on Windows and could be removed by that software. The locations need to be approved and this needs to be tested on MacOS (coming soon).
- Sofa is a cross platform release of the ASCOM Platform's SOFA component.
- Utilities contains a variety of astronomy oriented helper functions to complement the general purpose routines that are available in standard .NET namespaces.
- Novas is a cross platform release of the ASCOM Platform's NOVAS3.1 component.