Smdn.Net.EchonetLite.RouteB version 2.2.0
·
15 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-12-23 update assembly version
- 2025-12-23 add target framework net10.0
- 2025-11-26 fix warning IDE0340
- 2025-07-08 remove redundant properties that have the same as default values
- 2025-07-06 suppress warnings
API changes
API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net10.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net10.0.apilist.cs
new file mode 100644
index 0000000..e96b449
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net10.0.apilist.cs
@@ -0,0 +1,173 @@
+// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.2.0)
+// Name: Smdn.Net.EchonetLite.RouteB
+// AssemblyVersion: 2.2.0.0
+// InformationalVersion: 2.2.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+// TargetFramework: .NETCoreApp,Version=v10.0
+// Configuration: Release
+// Metadata: IsTrimmable=True
+// Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+// Metadata: RepositoryBranch=main
+// Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+// Referenced assemblies:
+// Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+// Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+// Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+// Smdn.Net.EchonetLite, Version=2.1.0.0, Culture=neutral
+// Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+// Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
+// System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+// System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Polly;
+using Smdn.Net.EchonetLite;
+using Smdn.Net.EchonetLite.ObjectModel;
+using Smdn.Net.EchonetLite.RouteB;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB {
+ public class HemsController :
+ IAsyncDisposable,
+ IDisposable,
+ IRouteBCredentialIdentity
+ {
+ public HemsController(IRouteBEchonetLiteHandlerFactory echonetLiteHandlerFactory, IRouteBCredentialProvider routeBCredentialProvider, ILogger? logger, ILoggerFactory? loggerFactoryForEchonetClient) {}
+ public HemsController(IServiceProvider serviceProvider) {}
+
+ protected EchonetClient Client { get; }
+ public EchonetObject Controller { get; }
+ public bool IsConnected { get; }
+ protected bool IsDisposed { get; }
+ protected ILogger? Logger { get; }
+ public LowVoltageSmartElectricEnergyMeter SmartMeter { get; }
+ public ISynchronizeInvoke? SynchronizingObject { get; set; }
+ public TimeSpan TimeoutWaitingProactiveNotification { get; set; }
+ public TimeSpan TimeoutWaitingResponse1 { get; set; }
+ public TimeSpan TimeoutWaitingResponse2 { get; set; }
+
+ public ValueTask ConnectAsync(ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
+ public async ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
+ protected virtual void Dispose(bool disposing) {}
+ public void Dispose() {}
+ public async ValueTask DisposeAsync() {}
+ protected virtual async ValueTask DisposeAsyncCore() {}
+ public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, TResult resultForTimeout, CancellationToken cancellationToken = default) {}
+ public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
+ public ValueTask<TResult> RunWithResponseWaitTimer2Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
+ protected void ThrowIfDisconnected() {}
+ protected void ThrowIfDisposed() {}
+ }
+
+ public sealed class LowVoltageSmartElectricEnergyMeter : DeviceSuperClass {
+ public IEchonetPropertyGetAccessor<int> Coefficient { get; }
+ public IEchonetPropertyGetAccessor<IReadOnlyList<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)>> CumulativeElectricEnergyLog2 { get; }
+ public IEchonetPropertySetGetAccessor<DateTime> DayForTheHistoricalDataOfCumulativeElectricEnergy1 { get; }
+ public IEchonetPropertySetGetAccessor<(DateTime DateAndTime, int NumberOfItems)> DayForTheHistoricalDataOfCumulativeElectricEnergy2 { get; }
+ public IEchonetPropertyGetAccessor<(ElectricCurrentValue RPhase, ElectricCurrentValue TPhase)> InstantaneousCurrent { get; }
+ public IEchonetPropertyGetAccessor<int> InstantaneousElectricPower { get; }
+ public IEchonetPropertyGetAccessor<ElectricEnergyValue> NormalDirectionCumulativeElectricEnergy { get; }
+ public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> NormalDirectionCumulativeElectricEnergyAtEvery30Min { get; }
+ public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> NormalDirectionCumulativeElectricEnergyLog1 { get; }
+ public IEchonetPropertyGetAccessor<int> NumberOfEffectiveDigitsCumulativeElectricEnergy { get; }
+ public IEchonetPropertyGetAccessor<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)> OneMinuteMeasuredCumulativeAmountsOfElectricEnergy { get; }
+ public IEchonetPropertyGetAccessor<ElectricEnergyValue> ReverseDirectionCumulativeElectricEnergy { get; }
+ public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> ReverseDirectionCumulativeElectricEnergyAtEvery30Min { get; }
+ public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> ReverseDirectionCumulativeElectricEnergyLog1 { get; }
+ public IEchonetPropertyGetAccessor<ReadOnlyMemory<byte>> RouteBIdentificationNumber { get; }
+ public IEchonetPropertyGetAccessor<decimal> UnitForCumulativeElectricEnergy { get; }
+ }
+
+ public static class MeasurementValue {
+ public static MeasurementValue<TValue> Create<TValue>(TValue @value, DateTime measuredAt) where TValue : struct {}
+ }
+
+ public sealed class RouteBDeviceFactory : IEchonetDeviceFactory {
+ public static RouteBDeviceFactory Instance { get; }
+
+ public RouteBDeviceFactory() {}
+
+ public EchonetDevice? Create(byte classGroupCode, byte classCode, byte instanceCode) {}
+ }
+
+ public readonly struct ElectricCurrentValue {
+ public ElectricCurrentValue(short rawValue) {}
+
+ public decimal Amperes { get; }
+ public bool IsValid { get; }
+ public short RawValue { get; }
+
+ public override string ToString() {}
+ }
+
+ public readonly struct ElectricEnergyValue {
+ public static readonly ElectricEnergyValue NoMeasurementData; // = "(no data)"
+ public static readonly ElectricEnergyValue Zero; // = "0 [kWh]"
+
+ public ElectricEnergyValue(int rawValue, decimal multiplierToKiloWattHours) {}
+
+ public bool IsValid { get; }
+ public decimal KiloWattHours { get; }
+ public int RawValue { get; }
+ public decimal WattHours { get; }
+
+ public override string ToString() {}
+ public bool TryGetValueAsKiloWattHours(out decimal @value) {}
+ }
+
+ public readonly struct MeasurementValue<TValue> where TValue : struct {
+ public MeasurementValue(TValue @value, DateTime measuredAt) {}
+
+ public DateTime MeasuredAt { get; }
+ public TValue Value { get; }
+
+ public void Deconstruct(out TValue @value, out DateTime measuredAt) {}
+ public override string ToString() {}
+ }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+ public static class RouteBCredentialServiceCollectionExtensions {
+ public static IServiceCollection AddRouteBCredential(this IServiceCollection services, object? serviceKey, string id, string password) {}
+ public static IServiceCollection AddRouteBCredential(this IServiceCollection services, string id, string password) {}
+ public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, object? serviceKey, string envVarForId, string envVarForPassword) {}
+ public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, string envVarForId, string envVarForPassword) {}
+ public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
+ public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, object? serviceKey, IRouteBCredentialProvider credentialProvider) {}
+ }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
+ public static class CredentialProviderRouteBServiceBuilderExtensions {
+ public static IRouteBServiceBuilder<TServiceKey> AddCredential<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, string id, string password) {}
+ public static IRouteBServiceBuilder<TServiceKey> AddCredentialFromEnvironmentVariable<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, string envVarForId, string envVarForPassword) {}
+ public static IRouteBServiceBuilder<TServiceKey> AddCredentialProvider<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, IRouteBCredentialProvider credentialProvider) {}
+ }
+
+ public static class RouteBServiceCollectionExtensions {
+ public static IServiceCollection AddRouteB(this IServiceCollection services, Action<IRouteBServiceBuilder<object?>> configure) {}
+ public static IServiceCollection AddRouteB<TServiceKey>(this IServiceCollection services, TServiceKey serviceKey, Func<TServiceKey, string?>? selectOptionsNameForServiceKey, Action<IRouteBServiceBuilder<TServiceKey>> configure) {}
+ }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+ [Obsolete("Use RouteBServiceCollectionExtensions instead.")]
+ public static class RouteBEchonetLiteHandlerBuilderServiceCollectionExtensions {
+ public static IServiceCollection AddRouteBHandler(this IServiceCollection services, Action<IRouteBEchonetLiteHandlerBuilder> configure) {}
+ }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net8.0.apilist.cs
index 540b42f..f0a3f4b 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net8.0.apilist.cs
@@ -1,169 +1,173 @@
-// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.1.0)
+// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.2.0)
// Name: Smdn.Net.EchonetLite.RouteB
-// AssemblyVersion: 2.1.0.0
-// InformationalVersion: 2.1.0+befaca421b43357fbc3b9cbd7d5824a66044d7c6
+// AssemblyVersion: 2.2.0.0
+// InformationalVersion: 2.2.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
// TargetFramework: .NETCoreApp,Version=v8.0
// Configuration: Release
+// Metadata: IsTrimmable=True
+// Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+// Metadata: RepositoryBranch=main
+// Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
// Referenced assemblies:
// Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
// Smdn.Net.EchonetLite, Version=2.1.0.0, Culture=neutral
// Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
// Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
// System.Collections, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.ComponentModel.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
// System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
#nullable enable annotations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Polly;
using Smdn.Net.EchonetLite;
using Smdn.Net.EchonetLite.ObjectModel;
using Smdn.Net.EchonetLite.RouteB;
using Smdn.Net.EchonetLite.RouteB.Credentials;
using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
using Smdn.Net.EchonetLite.RouteB.Transport;
namespace Smdn.Net.EchonetLite.RouteB {
public class HemsController :
IAsyncDisposable,
IDisposable,
IRouteBCredentialIdentity
{
public HemsController(IRouteBEchonetLiteHandlerFactory echonetLiteHandlerFactory, IRouteBCredentialProvider routeBCredentialProvider, ILogger? logger, ILoggerFactory? loggerFactoryForEchonetClient) {}
public HemsController(IServiceProvider serviceProvider) {}
protected EchonetClient Client { get; }
public EchonetObject Controller { get; }
public bool IsConnected { get; }
protected bool IsDisposed { get; }
protected ILogger? Logger { get; }
public LowVoltageSmartElectricEnergyMeter SmartMeter { get; }
public ISynchronizeInvoke? SynchronizingObject { get; set; }
public TimeSpan TimeoutWaitingProactiveNotification { get; set; }
public TimeSpan TimeoutWaitingResponse1 { get; set; }
public TimeSpan TimeoutWaitingResponse2 { get; set; }
public ValueTask ConnectAsync(ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
public async ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
protected virtual void Dispose(bool disposing) {}
public void Dispose() {}
public async ValueTask DisposeAsync() {}
protected virtual async ValueTask DisposeAsyncCore() {}
public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, TResult resultForTimeout, CancellationToken cancellationToken = default) {}
public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
public ValueTask<TResult> RunWithResponseWaitTimer2Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
protected void ThrowIfDisconnected() {}
protected void ThrowIfDisposed() {}
}
public sealed class LowVoltageSmartElectricEnergyMeter : DeviceSuperClass {
public IEchonetPropertyGetAccessor<int> Coefficient { get; }
public IEchonetPropertyGetAccessor<IReadOnlyList<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)>> CumulativeElectricEnergyLog2 { get; }
public IEchonetPropertySetGetAccessor<DateTime> DayForTheHistoricalDataOfCumulativeElectricEnergy1 { get; }
public IEchonetPropertySetGetAccessor<(DateTime DateAndTime, int NumberOfItems)> DayForTheHistoricalDataOfCumulativeElectricEnergy2 { get; }
public IEchonetPropertyGetAccessor<(ElectricCurrentValue RPhase, ElectricCurrentValue TPhase)> InstantaneousCurrent { get; }
public IEchonetPropertyGetAccessor<int> InstantaneousElectricPower { get; }
public IEchonetPropertyGetAccessor<ElectricEnergyValue> NormalDirectionCumulativeElectricEnergy { get; }
public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> NormalDirectionCumulativeElectricEnergyAtEvery30Min { get; }
public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> NormalDirectionCumulativeElectricEnergyLog1 { get; }
public IEchonetPropertyGetAccessor<int> NumberOfEffectiveDigitsCumulativeElectricEnergy { get; }
public IEchonetPropertyGetAccessor<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)> OneMinuteMeasuredCumulativeAmountsOfElectricEnergy { get; }
public IEchonetPropertyGetAccessor<ElectricEnergyValue> ReverseDirectionCumulativeElectricEnergy { get; }
public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> ReverseDirectionCumulativeElectricEnergyAtEvery30Min { get; }
public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> ReverseDirectionCumulativeElectricEnergyLog1 { get; }
public IEchonetPropertyGetAccessor<ReadOnlyMemory<byte>> RouteBIdentificationNumber { get; }
public IEchonetPropertyGetAccessor<decimal> UnitForCumulativeElectricEnergy { get; }
}
public static class MeasurementValue {
public static MeasurementValue<TValue> Create<TValue>(TValue @value, DateTime measuredAt) where TValue : struct {}
}
public sealed class RouteBDeviceFactory : IEchonetDeviceFactory {
public static RouteBDeviceFactory Instance { get; }
public RouteBDeviceFactory() {}
public EchonetDevice? Create(byte classGroupCode, byte classCode, byte instanceCode) {}
}
public readonly struct ElectricCurrentValue {
public ElectricCurrentValue(short rawValue) {}
public decimal Amperes { get; }
public bool IsValid { get; }
public short RawValue { get; }
public override string ToString() {}
}
public readonly struct ElectricEnergyValue {
public static readonly ElectricEnergyValue NoMeasurementData; // = "(no data)"
public static readonly ElectricEnergyValue Zero; // = "0 [kWh]"
public ElectricEnergyValue(int rawValue, decimal multiplierToKiloWattHours) {}
public bool IsValid { get; }
public decimal KiloWattHours { get; }
public int RawValue { get; }
public decimal WattHours { get; }
public override string ToString() {}
public bool TryGetValueAsKiloWattHours(out decimal @value) {}
}
public readonly struct MeasurementValue<TValue> where TValue : struct {
public MeasurementValue(TValue @value, DateTime measuredAt) {}
public DateTime MeasuredAt { get; }
public TValue Value { get; }
public void Deconstruct(out TValue @value, out DateTime measuredAt) {}
public override string ToString() {}
}
}
namespace Smdn.Net.EchonetLite.RouteB.Credentials {
public static class RouteBCredentialServiceCollectionExtensions {
public static IServiceCollection AddRouteBCredential(this IServiceCollection services, object? serviceKey, string id, string password) {}
public static IServiceCollection AddRouteBCredential(this IServiceCollection services, string id, string password) {}
public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, object? serviceKey, string envVarForId, string envVarForPassword) {}
public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, string envVarForId, string envVarForPassword) {}
public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, object? serviceKey, IRouteBCredentialProvider credentialProvider) {}
}
}
namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
public static class CredentialProviderRouteBServiceBuilderExtensions {
public static IRouteBServiceBuilder<TServiceKey> AddCredential<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, string id, string password) {}
public static IRouteBServiceBuilder<TServiceKey> AddCredentialFromEnvironmentVariable<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, string envVarForId, string envVarForPassword) {}
public static IRouteBServiceBuilder<TServiceKey> AddCredentialProvider<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, IRouteBCredentialProvider credentialProvider) {}
}
public static class RouteBServiceCollectionExtensions {
public static IServiceCollection AddRouteB(this IServiceCollection services, Action<IRouteBServiceBuilder<object?>> configure) {}
public static IServiceCollection AddRouteB<TServiceKey>(this IServiceCollection services, TServiceKey serviceKey, Func<TServiceKey, string?>? selectOptionsNameForServiceKey, Action<IRouteBServiceBuilder<TServiceKey>> configure) {}
}
}
namespace Smdn.Net.EchonetLite.RouteB.Transport {
[Obsolete("Use RouteBServiceCollectionExtensions instead.")]
public static class RouteBEchonetLiteHandlerBuilderServiceCollectionExtensions {
public static IServiceCollection AddRouteBHandler(this IServiceCollection services, Action<IRouteBEchonetLiteHandlerBuilder> configure) {}
}
}
-// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.6.0.0.
-// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.4.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-netstandard2.1.apilist.cs
index 18e61e6..52c68dd 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-netstandard2.1.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-netstandard2.1.apilist.cs
@@ -1,163 +1,166 @@
-// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.1.0)
+// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.2.0)
// Name: Smdn.Net.EchonetLite.RouteB
-// AssemblyVersion: 2.1.0.0
-// InformationalVersion: 2.1.0+befaca421b43357fbc3b9cbd7d5824a66044d7c6
+// AssemblyVersion: 2.2.0.0
+// InformationalVersion: 2.2.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
// TargetFramework: .NETStandard,Version=v2.1
// Configuration: Release
+// Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+// Metadata: RepositoryBranch=main
+// Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
// Referenced assemblies:
// Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
// Smdn.Net.EchonetLite, Version=2.1.0.0, Culture=neutral
// Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
// Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
// netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
#nullable enable annotations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Polly;
using Smdn.Net.EchonetLite;
using Smdn.Net.EchonetLite.ObjectModel;
using Smdn.Net.EchonetLite.RouteB;
using Smdn.Net.EchonetLite.RouteB.Credentials;
using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
using Smdn.Net.EchonetLite.RouteB.Transport;
namespace Smdn.Net.EchonetLite.RouteB {
public class HemsController :
IAsyncDisposable,
IDisposable,
IRouteBCredentialIdentity
{
public HemsController(IRouteBEchonetLiteHandlerFactory echonetLiteHandlerFactory, IRouteBCredentialProvider routeBCredentialProvider, ILogger? logger, ILoggerFactory? loggerFactoryForEchonetClient) {}
public HemsController(IServiceProvider serviceProvider) {}
protected EchonetClient Client { get; }
public EchonetObject Controller { get; }
public bool IsConnected { get; }
protected bool IsDisposed { get; }
protected ILogger? Logger { get; }
public LowVoltageSmartElectricEnergyMeter SmartMeter { get; }
public ISynchronizeInvoke? SynchronizingObject { get; set; }
public TimeSpan TimeoutWaitingProactiveNotification { get; set; }
public TimeSpan TimeoutWaitingResponse1 { get; set; }
public TimeSpan TimeoutWaitingResponse2 { get; set; }
public ValueTask ConnectAsync(ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
public async ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
protected virtual void Dispose(bool disposing) {}
public void Dispose() {}
public async ValueTask DisposeAsync() {}
protected virtual async ValueTask DisposeAsyncCore() {}
public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, TResult resultForTimeout, CancellationToken cancellationToken = default) {}
public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
public ValueTask<TResult> RunWithResponseWaitTimer2Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
protected void ThrowIfDisconnected() {}
protected void ThrowIfDisposed() {}
}
public sealed class LowVoltageSmartElectricEnergyMeter : DeviceSuperClass {
public IEchonetPropertyGetAccessor<int> Coefficient { get; }
public IEchonetPropertyGetAccessor<IReadOnlyList<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)>> CumulativeElectricEnergyLog2 { get; }
public IEchonetPropertySetGetAccessor<DateTime> DayForTheHistoricalDataOfCumulativeElectricEnergy1 { get; }
public IEchonetPropertySetGetAccessor<(DateTime DateAndTime, int NumberOfItems)> DayForTheHistoricalDataOfCumulativeElectricEnergy2 { get; }
public IEchonetPropertyGetAccessor<(ElectricCurrentValue RPhase, ElectricCurrentValue TPhase)> InstantaneousCurrent { get; }
public IEchonetPropertyGetAccessor<int> InstantaneousElectricPower { get; }
public IEchonetPropertyGetAccessor<ElectricEnergyValue> NormalDirectionCumulativeElectricEnergy { get; }
public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> NormalDirectionCumulativeElectricEnergyAtEvery30Min { get; }
public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> NormalDirectionCumulativeElectricEnergyLog1 { get; }
public IEchonetPropertyGetAccessor<int> NumberOfEffectiveDigitsCumulativeElectricEnergy { get; }
public IEchonetPropertyGetAccessor<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)> OneMinuteMeasuredCumulativeAmountsOfElectricEnergy { get; }
public IEchonetPropertyGetAccessor<ElectricEnergyValue> ReverseDirectionCumulativeElectricEnergy { get; }
public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> ReverseDirectionCumulativeElectricEnergyAtEvery30Min { get; }
public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> ReverseDirectionCumulativeElectricEnergyLog1 { get; }
public IEchonetPropertyGetAccessor<ReadOnlyMemory<byte>> RouteBIdentificationNumber { get; }
public IEchonetPropertyGetAccessor<decimal> UnitForCumulativeElectricEnergy { get; }
}
public static class MeasurementValue {
public static MeasurementValue<TValue> Create<TValue>(TValue @value, DateTime measuredAt) where TValue : struct {}
}
public sealed class RouteBDeviceFactory : IEchonetDeviceFactory {
public static RouteBDeviceFactory Instance { get; }
public RouteBDeviceFactory() {}
public EchonetDevice? Create(byte classGroupCode, byte classCode, byte instanceCode) {}
}
public readonly struct ElectricCurrentValue {
public ElectricCurrentValue(short rawValue) {}
public decimal Amperes { get; }
public bool IsValid { get; }
public short RawValue { get; }
public override string ToString() {}
}
public readonly struct ElectricEnergyValue {
public static readonly ElectricEnergyValue NoMeasurementData; // = "(no data)"
public static readonly ElectricEnergyValue Zero; // = "0 [kWh]"
public ElectricEnergyValue(int rawValue, decimal multiplierToKiloWattHours) {}
public bool IsValid { get; }
public decimal KiloWattHours { get; }
public int RawValue { get; }
public decimal WattHours { get; }
public override string ToString() {}
public bool TryGetValueAsKiloWattHours(out decimal @value) {}
}
public readonly struct MeasurementValue<TValue> where TValue : struct {
public MeasurementValue(TValue @value, DateTime measuredAt) {}
public DateTime MeasuredAt { get; }
public TValue Value { get; }
public void Deconstruct(out TValue @value, out DateTime measuredAt) {}
public override string ToString() {}
}
}
namespace Smdn.Net.EchonetLite.RouteB.Credentials {
public static class RouteBCredentialServiceCollectionExtensions {
public static IServiceCollection AddRouteBCredential(this IServiceCollection services, object? serviceKey, string id, string password) {}
public static IServiceCollection AddRouteBCredential(this IServiceCollection services, string id, string password) {}
public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, object? serviceKey, string envVarForId, string envVarForPassword) {}
public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, string envVarForId, string envVarForPassword) {}
public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, object? serviceKey, IRouteBCredentialProvider credentialProvider) {}
}
}
namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
public static class CredentialProviderRouteBServiceBuilderExtensions {
public static IRouteBServiceBuilder<TServiceKey> AddCredential<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, string id, string password) {}
public static IRouteBServiceBuilder<TServiceKey> AddCredentialFromEnvironmentVariable<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, string envVarForId, string envVarForPassword) {}
public static IRouteBServiceBuilder<TServiceKey> AddCredentialProvider<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, IRouteBCredentialProvider credentialProvider) {}
}
public static class RouteBServiceCollectionExtensions {
public static IServiceCollection AddRouteB(this IServiceCollection services, Action<IRouteBServiceBuilder<object?>> configure) {}
public static IServiceCollection AddRouteB<TServiceKey>(this IServiceCollection services, TServiceKey serviceKey, Func<TServiceKey, string?>? selectOptionsNameForServiceKey, Action<IRouteBServiceBuilder<TServiceKey>> configure) {}
}
}
namespace Smdn.Net.EchonetLite.RouteB.Transport {
[Obsolete("Use RouteBServiceCollectionExtensions instead.")]
public static class RouteBEchonetLiteHandlerBuilderServiceCollectionExtensions {
public static IServiceCollection AddRouteBHandler(this IServiceCollection services, Action<IRouteBEchonetLiteHandlerBuilder> configure) {}
}
}
-// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.6.0.0.
-// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.4.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)Full changes
Full changes in this release:
diff --git a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.Transport/RouteBEchonetLiteHandlerBuilder.cs b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.Transport/RouteBEchonetLiteHandlerBuilder.cs
index 9ead046..53c5b0f 100644
--- a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.Transport/RouteBEchonetLiteHandlerBuilder.cs
+++ b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.Transport/RouteBEchonetLiteHandlerBuilder.cs
@@ -8,7 +8,7 @@ using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
namespace Smdn.Net.EchonetLite.RouteB.Transport;
-[Obsolete($"Use {nameof(RouteBServiceBuilder<object>)} instead.")] // TODO: use nameof with open generic type
+[Obsolete($"Use {nameof(RouteBServiceBuilder<>)} instead.")]
internal sealed class RouteBEchonetLiteHandlerBuilder(IServiceCollection services) : IRouteBEchonetLiteHandlerBuilder {
public IServiceCollection Services { get; } = services ?? throw new ArgumentNullException(nameof(services));
}
diff --git a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.csproj b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.csproj
index 60a922a..03d7f00 100644
--- a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.csproj
+++ b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB.csproj
@@ -5,12 +5,10 @@ SPDX-License-Identifier: MIT
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
- <TargetFrameworks>netstandard2.1;net8.0</TargetFrameworks>
- <VersionPrefix>2.1.0</VersionPrefix>
+ <TargetFrameworks>netstandard2.1;net8.0;net10.0</TargetFrameworks>
+ <VersionPrefix>2.2.0</VersionPrefix>
<VersionSuffix></VersionSuffix>
<PackageValidationBaselineVersion>2.0.0</PackageValidationBaselineVersion>
- <Nullable>enable</Nullable>
- <RootNamespace/> <!-- empty the root namespace so that the namespace is determined only by the directory name, for code style rule IDE0130 -->
<NoWarn>CS1591;$(NoWarn)</NoWarn> <!-- CS1591: Missing XML comment for publicly visible type or member 'Type_or_Member' -->
</PropertyGroup>
diff --git a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricCurrentValue.cs b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricCurrentValue.cs
index cc7874d..0c6a349 100644
--- a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricCurrentValue.cs
+++ b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricCurrentValue.cs
@@ -1,5 +1,7 @@
// SPDX-FileCopyrightText: 2023 smdn <smdn@smdn.jp>
// SPDX-License-Identifier: MIT
+#pragma warning disable CA1815 // TODO: implement equality comparison
+
namespace Smdn.Net.EchonetLite.RouteB;
/// <summary>
diff --git a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricEnergyValue.cs b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricEnergyValue.cs
index 5f3b02a..bef1e9c 100644
--- a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricEnergyValue.cs
+++ b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/ElectricEnergyValue.cs
@@ -1,5 +1,7 @@
// SPDX-FileCopyrightText: 2023 smdn <smdn@smdn.jp>
// SPDX-License-Identifier: MIT
+#pragma warning disable CA1815 // TODO: implement equality comparison
+
using System;
namespace Smdn.Net.EchonetLite.RouteB;
diff --git a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/MeasurementValue.TValue.cs b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/MeasurementValue.TValue.cs
index 12337dc..be5baa9 100644
--- a/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/MeasurementValue.TValue.cs
+++ b/src/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB/MeasurementValue.TValue.cs
@@ -1,5 +1,7 @@
// SPDX-FileCopyrightText: 2023 smdn <smdn@smdn.jp>
// SPDX-License-Identifier: MIT
+#pragma warning disable CA1815 // TODO: implement equality comparison
+
using System;
namespace Smdn.Net.EchonetLite.RouteB;Notes
What's Changed
Dependencies
- Bump smdn/Smdn.Fundamentals/.github/workflows/test.yml@workflows/test/v1.4.1 from 1.4.1 to 1.4.2 by @dependabot[bot] in #18
- Bump smdn/Smdn.Fundamentals/.github/workflows/generate-release-target.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot[bot] in #19
- Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release-target.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot[bot] in #20
- Bump actions/checkout from 4.2.2 to 5.0.0 by @dependabot[bot] in #22
- Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #23
- Bump actions/checkout from 5.0.0 to 5.0.1 in the github-actions-workflows group by @dependabot[bot] in #24
New Contributors
- @dependabot[bot] made their first contribution in #18
Full Changelog: releases/Smdn.Net.EchonetLite.RouteB-2.1.0...releases/Smdn.Net.EchonetLite.RouteB-2.2.0