Skip to content

Releases: smdn/Smdn.Net.EchonetLite

Smdn.Net.EchonetLite.RouteB.SkStackIP version 2.0.0-preview3

11 Dec 13:49
beb92f6
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs
index df2879e..d6a2c77 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs
@@ -1,101 +1,107 @@
-// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview2)
+// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview3)
 //   Name: Smdn.Net.EchonetLite.RouteB.SkStackIP
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview2+4d034f0903ea62ea00625815ef039b64f3ec2917
+//   InformationalVersion: 2.0.0-preview3+370bdac018b42e5e04f531669d50f03b3bb6922f
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
-//     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
-//     Smdn.Net.EchonetLite.Transport, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.NetworkInformation, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Threading, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Buffers;
 using System.ComponentModel;
 using System.Net;
 using System.Net.NetworkInformation;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
+using Polly;
 using Smdn.Net.EchonetLite.RouteB.Credentials;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP {
   public interface ISkStackRouteBEchonetLiteHandlerFactory : IRouteBEchonetLiteHandlerFactory {
     Action<SkStackRouteBSessionConfiguration>? ConfigureRouteBSessionConfiguration { get; set; }
+    Action<SkStackClient>? ConfigureSkStackClient { get; set; }
   }
 
   public enum SkStackRouteBTransportProtocol : int {
     Tcp = 0,
     Udp = 1,
   }
 
   public abstract class SkStackRouteBEchonetLiteHandler : RouteBEchonetLiteHandler {
+    public static readonly string ResiliencePipelineKeyForAuthenticate = "SkStackRouteBEchonetLiteHandler.resiliencePipelineAuthenticate";
     public static readonly string ResiliencePipelineKeyForSend = "SkStackRouteBEchonetLiteHandler.resiliencePipelineSend";
+    public static readonly ResiliencePropertyKey<SkStackClient?> ResiliencePropertyKeyForClient; // = "ResiliencePropertyKeyForClient"
 
     public override IPAddress? LocalAddress { get; }
     public override IPAddress? PeerAddress { get; }
     public override ISynchronizeInvoke? SynchronizingObject { get; set; }
 
     protected override ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken) {}
     protected override async ValueTask DisconnectAsyncCore(CancellationToken cancellationToken) {}
     protected override void Dispose(bool disposing) {}
     protected override async ValueTask DisposeAsyncCore() {}
     protected override ValueTask<IPAddress> ReceiveAsyncCore(IBufferWriter<byte> buffer, CancellationToken cancellationToken) {}
     protected override ValueTask SendAsyncCore(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken) {}
     protected override ValueTask SendToAsyncCore(IPAddress remoteAddress, ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken) {}
     [MemberNotNull("client")]
     protected override void ThrowIfDisposed() {}
   }
 
   public static class SkStackRouteBEchonetLiteHandlerBuilderExtensions {
+    public static ISkStackRouteBEchonetLiteHandlerFactory ConfigureClient(this ISkStackRouteBEchonetLiteHandlerFactory factory, Action<SkStackClient> configureSkStackClient) {}
     public static ISkStackRouteBEchonetLiteHandlerFactory ConfigureSession(this ISkStackRouteBEchonetLiteHandlerFactory factory, Action<SkStackRouteBSessionConfiguration> configureRouteBSessionConfiguration) {}
   }
 
   public abstract class SkStackRouteBEchonetLiteHandlerFactory : ISkStackRouteBEchonetLiteHandlerFactory {
     protected SkStackRouteBEchonetLiteHandlerFactory(IServiceCollection services) {}
 
     public Action<SkStackRouteBSessionConfiguration>? ConfigureRouteBSessionConfiguration { get; set; }
+    public Action<SkStackClient>? ConfigureSkStackClient { get; set; }
     protected abstract SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     public virtual async ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken) {}
     protected abstract ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken);
   }
 
   public sealed class SkStackRouteBSessionConfiguration : ICloneable {
     public SkStackRouteBSessionConfiguration() {}
 
     public SkStackActiveScanOptions? ActiveScanOptions { get; set; }
     public SkStackChannel? Channel { get; set; }
     public IPAddress? PaaAddress { get; set; }
     public PhysicalAddress? PaaMacAddress { get; set; }
     public int? PanId { get; set; }
 
     public SkStackRouteBSessionConfiguration Clone() {}
     object ICloneable.Clone() {}
   }
 
   public sealed class SkStackRouteBTcpEchonetLiteHandler : SkStackRouteBEchonetLiteHandler {
     public SkStackRouteBTcpEchonetLiteHandler(SkStackClient client, SkStackRouteBSessionConfiguration sessionConfiguration, bool shouldDisposeClient = false, IServiceProvider? serviceProvider = null) {}
   }
 
   public sealed class SkStackRouteBUdpEchonetLiteHandler : SkStackRouteBEchonetLiteHandler {
     public SkStackRouteBUdpEchonetLiteHandler(SkStackClient client, SkStackRouteBSessionConfiguration sessionConfiguration, bool shouldDisposeClient = false, IServiceProvider? serviceProvider = null) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs
index 6e83ac1..ccb5285 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs
@@ -1,101 +1,107 @@
-// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview2)
+// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview3)
 //   Name: Smdn.Net.EchonetLite.RouteB.SkStackIP
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview2+4d034f0903ea62ea00625815ef039b64f3ec2917
+//   InformationalVersion: 2.0.0-preview3+370bdac018b42e5e04f531669d50f03b3bb6922f
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft....
Read more

Smdn.Net.EchonetLite.RouteB.Primitives version 2.0.0-preview1

11 Dec 13:46
4e068ac
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net6.0.apilist.cs
new file mode 100644
index 0000000..b9ba083
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net6.0.apilist.cs
@@ -0,0 +1,65 @@
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.0.0-preview1)
+//   Name: Smdn.Net.EchonetLite.RouteB.Primitives
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0-preview1+60a8ce3520b765b1bcab669a662cfb615f41a1f5
+//   TargetFramework: .NETCoreApp,Version=v6.0
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+//     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public interface IRouteBCredential : IDisposable {
+    void WriteIdTo(IBufferWriter<byte> buffer);
+    void WritePasswordTo(IBufferWriter<byte> buffer);
+  }
+
+  public interface IRouteBCredentialIdentity {
+  }
+
+  public interface IRouteBCredentialProvider {
+    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  }
+
+  public static class RouteBCredentials {
+    public const int AuthenticationIdLength = 32;
+    public const int PasswordLength = 12;
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+  public interface IRouteBEchonetLiteHandlerBuilder {
+    IServiceCollection Services { get; }
+  }
+
+  public interface IRouteBEchonetLiteHandlerFactory {
+    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
+  }
+
+  public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
+    protected RouteBEchonetLiteHandler() {}
+
+    public abstract IPAddress? PeerAddress { get; }
+
+    public ValueTask ConnectAsync(IRouteBCredential credential, CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken);
+    public ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask DisconnectAsyncCore(CancellationToken cancellationToken);
+  }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs
new file mode 100644
index 0000000..6ad7338
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs
@@ -0,0 +1,65 @@
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.0.0-preview1)
+//   Name: Smdn.Net.EchonetLite.RouteB.Primitives
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0-preview1+60a8ce3520b765b1bcab669a662cfb615f41a1f5
+//   TargetFramework: .NETCoreApp,Version=v8.0
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     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.Buffers;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public interface IRouteBCredential : IDisposable {
+    void WriteIdTo(IBufferWriter<byte> buffer);
+    void WritePasswordTo(IBufferWriter<byte> buffer);
+  }
+
+  public interface IRouteBCredentialIdentity {
+  }
+
+  public interface IRouteBCredentialProvider {
+    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  }
+
+  public static class RouteBCredentials {
+    public const int AuthenticationIdLength = 32;
+    public const int PasswordLength = 12;
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+  public interface IRouteBEchonetLiteHandlerBuilder {
+    IServiceCollection Services { get; }
+  }
+
+  public interface IRouteBEchonetLiteHandlerFactory {
+    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
+  }
+
+  public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
+    protected RouteBEchonetLiteHandler() {}
+
+    public abstract IPAddress? PeerAddress { get; }
+
+    public ValueTask ConnectAsync(IRouteBCredential credential, CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken);
+    public ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask DisconnectAsyncCore(CancellationToken cancellationToken);
+  }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-netstandard2.1.apilist.cs
new file mode 100644
index 0000000..23438af
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-netstandard2.1.apilist.cs
@@ -0,0 +1,63 @@
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.0.0-preview1)
+//   Name: Smdn.Net.EchonetLite.RouteB.Primitives
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0-preview1+60a8ce3520b765b1bcab669a662cfb615f41a1f5
+//   TargetFramework: .NETStandard,Version=v2.1
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public interface IRouteBCredential : IDisposable {
+    void WriteIdTo(IBufferWriter<byte> buffer);
+    void WritePasswordTo(IBufferWriter<byte> buffer);
+  }
+
+  public interface IRouteBCredentialIdentity {
+  }
+
+  public interface IRouteBCredentialProvider {
+    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  }
+
+  public static class RouteBCredentials {
+    public const int AuthenticationIdLength = 32;
+    public const int PasswordLength = 12;
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+  public interface IRouteBEchonetLiteHandlerBuilder {
+    IServiceCollection Services { get; }
+  }
+
+  public interface IRouteBEchonetLiteHandlerFactory {
+    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
+  }
+
+  public abstract class Ro...
Read more

Smdn.Net.EchonetLite.RouteB.BP35XX version 2.0.0-preview4

11 Dec 13:50
d30b613
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
index c29c7fa..ae61224 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
@@ -1,40 +1,40 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview3)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview4)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview3+f083b2de6dc07603893bff9d4a263609fd1a919e
+//   InformationalVersion: 2.0.0-preview4+c7a206f316403313ee223391269df5de9d965d32
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
-//     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
index dc058d1..2cd12b0 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
@@ -1,40 +1,40 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview3)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview4)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview3+f083b2de6dc07603893bff9d4a263609fd1a919e
+//   InformationalVersion: 2.0.0-preview4+c7a206f316403313ee223391269df5de9d965d32
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
-//     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, 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.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
index 47befa8..ff3f9e8 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
@@ -1,39 +1,39 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview3)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview4)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview3+f083b2de6dc07603893bff9d4a263609fd1a919e
+//   InformationalVersion: 2.0.0-preview4+c7a206f316403313ee223391269df5de9d965d32
 //   TargetFramework: .NETStandard,Version=v2.1
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
-//     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 #nullable enable annotations
 
 using System;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)

Full changes

Full changes in this release:
diff --git a/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj b/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
index ecfcb9b..db99666 100644
--- a/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
+++ b/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
@@ -6,7 +6,7 @@ SPDX-License-Ident...
Read more

Smdn.Net.EchonetLite.RouteB version 2.0.0-preview3

11 Dec 13:47
1a4d3e6
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs
index ed9997a..1282c31 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs
@@ -1,75 +1,142 @@
-// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.0.0-preview2)
+// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.0.0-preview3)
 //   Name: Smdn.Net.EchonetLite.RouteB
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview2+c9161acca48757584c059440b4e2b704c3a80505
+//   InformationalVersion: 2.0.0-preview3+2612dc0eb7dba458048cbe65c5e156d272f8ee87
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
-//     Smdn.Net.EchonetLite.Transport, Version=2.0.0.0, Culture=neutral
+//     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.0.0.0, Culture=neutral
+//     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
-using System.Buffers;
-using System.Net;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+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.Transport;
-using Smdn.Net.EchonetLite.Transport;
 
-namespace Smdn.Net.EchonetLite.RouteB.Credentials {
-  public interface IRouteBCredential : IDisposable {
-    void WriteIdTo(IBufferWriter<byte> buffer);
-    void WritePasswordTo(IBufferWriter<byte> buffer);
-  }
+namespace Smdn.Net.EchonetLite.RouteB {
+  public class HemsController :
+    IAsyncDisposable,
+    IDisposable,
+    IRouteBCredentialIdentity
+  {
+    public HemsController(IRouteBEchonetLiteHandlerFactory echonetLiteHandlerFactory, IRouteBCredentialProvider routeBCredentialProvider, ILoggerFactory? loggerFactory = null) {}
+    public HemsController(IServiceProvider serviceProvider) {}
+
+    protected EchonetClient Client { get; }
+    public EchonetObject Controller { get; }
+    [MemberNotNullWhen(false, "echonetLiteHandler")]
+    protected bool IsDisposed { [MemberNotNullWhen(false, "echonetLiteHandler")] get; }
+    public LowVoltageSmartElectricEnergyMeter SmartMeter { get; }
+    public TimeSpan TimeoutWaitingProactiveNotification { get; set; }
+    public TimeSpan TimeoutWaitingResponse1 { get; set; }
+    public TimeSpan TimeoutWaitingResponse2 { get; set; }
 
-  public interface IRouteBCredentialIdentity {
+    public ValueTask ConnectAsync(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() {}
+    [MemberNotNull("client")]
+    [MemberNotNull("Client")]
+    [MemberNotNull("smartMeterObject")]
+    [MemberNotNull("controllerObject")]
+    protected void ThrowIfDisconnected() {}
   }
 
-  public interface IRouteBCredentialProvider {
-    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  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 RouteBCredentialServiceCollectionExtensions {
-    public static IServiceCollection AddRouteBCredential(this IServiceCollection services, string id, string password) {}
-    public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, string envVarForId, string envVarForPassword) {}
-    public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
+  public static class MeasurementValue {
+    public static MeasurementValue<TValue> Create<TValue>(TValue @value, DateTime measuredAt) where TValue : struct {}
   }
 
-  public static class RouteBCredentials {
-    public const int AuthenticationIdLength = 32;
-    public const int PasswordLength = 12;
+  public sealed class RouteBDeviceFactory : IEchonetDeviceFactory {
+    public static RouteBDeviceFactory Instance { get; }
+
+    public RouteBDeviceFactory() {}
+
+    public EchonetDevice? Create(byte classGroupCode, byte classCode, byte instanceCode) {}
   }
-}
 
-namespace Smdn.Net.EchonetLite.RouteB.Transport {
-  public interface IRouteBEchonetLiteHandlerBuilder {
-    IServiceCollection Services { get; }
+  public readonly struct ElectricCurrentValue {
+    public decimal Amperes { get; }
+    public bool IsValid { get; }
+    public short RawValue { get; }
+
+    public override string ToString() {}
   }
 
-  public interface IRouteBEchonetLiteHandlerFactory {
-    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToke...
Read more

Smdn.Net.EchonetLite.Primitives version 2.0.0-preview1

11 Dec 13:44
60a8ce3
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net6.0.apilist.cs
new file mode 100644
index 0000000..b9ba083
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net6.0.apilist.cs
@@ -0,0 +1,65 @@
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.0.0-preview1)
+//   Name: Smdn.Net.EchonetLite.RouteB.Primitives
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0-preview1+60a8ce3520b765b1bcab669a662cfb615f41a1f5
+//   TargetFramework: .NETCoreApp,Version=v6.0
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+//     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public interface IRouteBCredential : IDisposable {
+    void WriteIdTo(IBufferWriter<byte> buffer);
+    void WritePasswordTo(IBufferWriter<byte> buffer);
+  }
+
+  public interface IRouteBCredentialIdentity {
+  }
+
+  public interface IRouteBCredentialProvider {
+    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  }
+
+  public static class RouteBCredentials {
+    public const int AuthenticationIdLength = 32;
+    public const int PasswordLength = 12;
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+  public interface IRouteBEchonetLiteHandlerBuilder {
+    IServiceCollection Services { get; }
+  }
+
+  public interface IRouteBEchonetLiteHandlerFactory {
+    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
+  }
+
+  public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
+    protected RouteBEchonetLiteHandler() {}
+
+    public abstract IPAddress? PeerAddress { get; }
+
+    public ValueTask ConnectAsync(IRouteBCredential credential, CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken);
+    public ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask DisconnectAsyncCore(CancellationToken cancellationToken);
+  }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs
new file mode 100644
index 0000000..6ad7338
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs
@@ -0,0 +1,65 @@
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.0.0-preview1)
+//   Name: Smdn.Net.EchonetLite.RouteB.Primitives
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0-preview1+60a8ce3520b765b1bcab669a662cfb615f41a1f5
+//   TargetFramework: .NETCoreApp,Version=v8.0
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     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.Buffers;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public interface IRouteBCredential : IDisposable {
+    void WriteIdTo(IBufferWriter<byte> buffer);
+    void WritePasswordTo(IBufferWriter<byte> buffer);
+  }
+
+  public interface IRouteBCredentialIdentity {
+  }
+
+  public interface IRouteBCredentialProvider {
+    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  }
+
+  public static class RouteBCredentials {
+    public const int AuthenticationIdLength = 32;
+    public const int PasswordLength = 12;
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+  public interface IRouteBEchonetLiteHandlerBuilder {
+    IServiceCollection Services { get; }
+  }
+
+  public interface IRouteBEchonetLiteHandlerFactory {
+    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
+  }
+
+  public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
+    protected RouteBEchonetLiteHandler() {}
+
+    public abstract IPAddress? PeerAddress { get; }
+
+    public ValueTask ConnectAsync(IRouteBCredential credential, CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken);
+    public ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask DisconnectAsyncCore(CancellationToken cancellationToken);
+  }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-netstandard2.1.apilist.cs
new file mode 100644
index 0000000..23438af
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-netstandard2.1.apilist.cs
@@ -0,0 +1,63 @@
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.0.0-preview1)
+//   Name: Smdn.Net.EchonetLite.RouteB.Primitives
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0-preview1+60a8ce3520b765b1bcab669a662cfb615f41a1f5
+//   TargetFramework: .NETStandard,Version=v2.1
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public interface IRouteBCredential : IDisposable {
+    void WriteIdTo(IBufferWriter<byte> buffer);
+    void WritePasswordTo(IBufferWriter<byte> buffer);
+  }
+
+  public interface IRouteBCredentialIdentity {
+  }
+
+  public interface IRouteBCredentialProvider {
+    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  }
+
+  public static class RouteBCredentials {
+    public const int AuthenticationIdLength = 32;
+    public const int PasswordLength = 12;
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+  public interface IRouteBEchonetLiteHandlerBuilder {
+    IServiceCollection Services { get; }
+  }
+
+  public interface IRouteBEchonetLiteHandlerFactory {
+    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
+  }
+
+  public abstract class RouteBEchonetLit...
Read more

Smdn.Net.EchonetLite version 2.0.0-preview2

11 Dec 13:45
e0187c4
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:
Read more

Smdn.Net.EchonetLite.RouteB.BP35XX version 2.0.0-preview3

11 Dec 13:43
5be1235
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
index d7bbd88..c29c7fa 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
@@ -1,40 +1,40 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview2)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview3)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview2+aaf89dd76b82384b6126644a027a919432f09930
+//   InformationalVersion: 2.0.0-preview3+f083b2de6dc07603893bff9d4a263609fd1a919e
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
index 66dfe2d..dc058d1 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
@@ -1,40 +1,40 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview2)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview3)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview2+aaf89dd76b82384b6126644a027a919432f09930
+//   InformationalVersion: 2.0.0-preview3+f083b2de6dc07603893bff9d4a263609fd1a919e
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, 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.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
index 1dd5b39..47befa8 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
@@ -1,39 +1,39 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview2)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview3)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview2+aaf89dd76b82384b6126644a027a919432f09930
+//   InformationalVersion: 2.0.0-preview3+f083b2de6dc07603893bff9d4a263609fd1a919e
 //   TargetFramework: .NETStandard,Version=v2.1
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 #nullable enable annotations
 
 using System;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)

Full changes

Full changes in this release:
diff --git a/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj b/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
index acaae6c..ecfcb9b 100644
--- a/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
+++ b/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
   <PropertyGroup>
     <TargetFrameworks>netstandard2.1;net6.0;net8.0</TargetFrameworks>
     <VersionPrefix>2.0.0</VersionPrefix>
-    <VersionSuffix>preview2</VersionSuffix>
+    <VersionSuffix>preview3</VersionSuffix>
     <!-- ...
Read more

Smdn.Net.EchonetLite.RouteB.SkStackIP version 2.0.0-preview2

11 Dec 13:40
aaf89dd
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs
index b635de6..df2879e 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net6.0.apilist.cs
@@ -1,101 +1,101 @@
-// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview1)
+// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview2)
 //   Name: Smdn.Net.EchonetLite.RouteB.SkStackIP
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview1+93509882219e05b5d6a8c897a8bdfee251761d59
+//   InformationalVersion: 2.0.0-preview2+4d034f0903ea62ea00625815ef039b64f3ec2917
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.Transport, Version=2.0.0.0, Culture=neutral
-//     Smdn.Net.SkStackIP, Version=1.0.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.NetworkInformation, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Threading, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Buffers;
 using System.ComponentModel;
 using System.Net;
 using System.Net.NetworkInformation;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Net.EchonetLite.RouteB.Credentials;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP {
   public interface ISkStackRouteBEchonetLiteHandlerFactory : IRouteBEchonetLiteHandlerFactory {
     Action<SkStackRouteBSessionConfiguration>? ConfigureRouteBSessionConfiguration { get; set; }
   }
 
   public enum SkStackRouteBTransportProtocol : int {
     Tcp = 0,
     Udp = 1,
   }
 
   public abstract class SkStackRouteBEchonetLiteHandler : RouteBEchonetLiteHandler {
     public static readonly string ResiliencePipelineKeyForSend = "SkStackRouteBEchonetLiteHandler.resiliencePipelineSend";
 
     public override IPAddress? LocalAddress { get; }
     public override IPAddress? PeerAddress { get; }
     public override ISynchronizeInvoke? SynchronizingObject { get; set; }
 
     protected override ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken) {}
     protected override async ValueTask DisconnectAsyncCore(CancellationToken cancellationToken) {}
     protected override void Dispose(bool disposing) {}
     protected override async ValueTask DisposeAsyncCore() {}
     protected override ValueTask<IPAddress> ReceiveAsyncCore(IBufferWriter<byte> buffer, CancellationToken cancellationToken) {}
     protected override ValueTask SendAsyncCore(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken) {}
     protected override ValueTask SendToAsyncCore(IPAddress remoteAddress, ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken) {}
     [MemberNotNull("client")]
     protected override void ThrowIfDisposed() {}
   }
 
   public static class SkStackRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory ConfigureSession(this ISkStackRouteBEchonetLiteHandlerFactory factory, Action<SkStackRouteBSessionConfiguration> configureRouteBSessionConfiguration) {}
   }
 
   public abstract class SkStackRouteBEchonetLiteHandlerFactory : ISkStackRouteBEchonetLiteHandlerFactory {
     protected SkStackRouteBEchonetLiteHandlerFactory(IServiceCollection services) {}
 
     public Action<SkStackRouteBSessionConfiguration>? ConfigureRouteBSessionConfiguration { get; set; }
     protected abstract SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     public virtual async ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken) {}
     protected abstract ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken);
   }
 
   public sealed class SkStackRouteBSessionConfiguration : ICloneable {
     public SkStackRouteBSessionConfiguration() {}
 
     public SkStackActiveScanOptions? ActiveScanOptions { get; set; }
     public SkStackChannel? Channel { get; set; }
     public IPAddress? PaaAddress { get; set; }
     public PhysicalAddress? PaaMacAddress { get; set; }
     public int? PanId { get; set; }
 
     public SkStackRouteBSessionConfiguration Clone() {}
     object ICloneable.Clone() {}
   }
 
   public sealed class SkStackRouteBTcpEchonetLiteHandler : SkStackRouteBEchonetLiteHandler {
     public SkStackRouteBTcpEchonetLiteHandler(SkStackClient client, SkStackRouteBSessionConfiguration sessionConfiguration, bool shouldDisposeClient = false, IServiceProvider? serviceProvider = null) {}
   }
 
   public sealed class SkStackRouteBUdpEchonetLiteHandler : SkStackRouteBEchonetLiteHandler {
     public SkStackRouteBUdpEchonetLiteHandler(SkStackClient client, SkStackRouteBSessionConfiguration sessionConfiguration, bool shouldDisposeClient = false, IServiceProvider? serviceProvider = null) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs
index 6e971f0..6e83ac1 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net8.0.apilist.cs
@@ -1,101 +1,101 @@
-// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview1)
+// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.0.0-preview2)
 //   Name: Smdn.Net.EchonetLite.RouteB.SkStackIP
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview1+93509882219e05b5d6a8c897a8bdfee251761d59
+//   InformationalVersion: 2.0.0-preview2+4d034f0903ea62ea00625815ef039b64f3ec2917
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.Transport, Version=2.0.0.0, Culture=neutral
-//     Smdn.Net.SkStackIP, Version=1.0.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.NetworkInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d5...
Read more

Smdn.Net.EchonetLite.RouteB.BP35XX version 2.0.0-preview2

11 Dec 13:42
c9fd9bd
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
index 1957e48..d7bbd88 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net6.0.apilist.cs
@@ -1,40 +1,40 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview1)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview2)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview1+7e4ec0f9f1fc7e96046c9643ab2a9a07aa113c90
+//   InformationalVersion: 2.0.0-preview2+aaf89dd76b82384b6126644a027a919432f09930
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
-//     Smdn.Net.SkStackIP, Version=1.0.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
index 17124ad..66dfe2d 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
@@ -1,40 +1,40 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview1)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview2)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview1+7e4ec0f9f1fc7e96046c9643ab2a9a07aa113c90
+//   InformationalVersion: 2.0.0-preview2+aaf89dd76b82384b6126644a027a919432f09930
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
-//     Smdn.Net.SkStackIP, Version=1.0.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     System.ComponentModel, 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.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
index d6a5ff0..1dd5b39 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-netstandard2.1.apilist.cs
@@ -1,39 +1,39 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview1)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview2)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview1+7e4ec0f9f1fc7e96046c9643ab2a9a07aa113c90
+//   InformationalVersion: 2.0.0-preview2+aaf89dd76b82384b6126644a027a919432f09930
 //   TargetFramework: .NETStandard,Version=v2.1
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Devices.BP35XX, Version=1.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
-//     Smdn.Net.SkStackIP, Version=1.0.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.2.0.0, Culture=neutral
 //     netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 #nullable enable annotations
 
 using System;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Devices.BP35XX;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
 using Smdn.Net.SkStackIP;
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
   public sealed class BP35A1RouteBEchonetLiteHandlerFactory : SkStackRouteBEchonetLiteHandlerFactory {
     public BP35A1RouteBEchonetLiteHandlerFactory(IServiceCollection services, Action<BP35A1Configurations> configure) {}
 
     protected override SkStackRouteBTransportProtocol TransportProtocol { get; }
 
     protected override async ValueTask<SkStackClient> CreateClientAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken) {}
   }
 
   public static class IRouteBEchonetLiteHandlerBuilderExtensions {
     public static ISkStackRouteBEchonetLiteHandlerFactory AddBP35A1(this IRouteBEchonetLiteHandlerBuilder builder, Action<BP35A1Configurations> configure) {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)

Full changes

Full changes in this release:
diff --git a/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj b/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
index c86ec8a..acaae6c 100644
--- a/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
+++ b/src/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX.csproj
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
   <PropertyGroup>
     <TargetFrameworks>netstan...
Read more

Smdn.Net.EchonetLite.RouteB version 2.0.0-preview2

11 Dec 13:38
4d034f0
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs
index ed56b16..ed9997a 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net6.0.apilist.cs
@@ -1,74 +1,75 @@
-// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.0.0-preview1)
+// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.0.0-preview2)
 //   Name: Smdn.Net.EchonetLite.RouteB
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview1+72e57d7daf6b52fc6ecc4ed745e175a1893e8d90
+//   InformationalVersion: 2.0.0-preview2+c9161acca48757584c059440b4e2b704c3a80505
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
-//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Net.EchonetLite.Transport, Version=2.0.0.0, Culture=neutral
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Buffers;
 using System.Net;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Net.EchonetLite.RouteB.Credentials;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.Transport;
 
 namespace Smdn.Net.EchonetLite.RouteB.Credentials {
   public interface IRouteBCredential : IDisposable {
     void WriteIdTo(IBufferWriter<byte> buffer);
     void WritePasswordTo(IBufferWriter<byte> buffer);
   }
 
   public interface IRouteBCredentialIdentity {
   }
 
   public interface IRouteBCredentialProvider {
     IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
   }
 
   public static class RouteBCredentialServiceCollectionExtensions {
-    public static IServiceCollection AddRouteBCredential(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
     public static IServiceCollection AddRouteBCredential(this IServiceCollection services, string id, string password) {}
+    public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, string envVarForId, string envVarForPassword) {}
+    public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
   }
 
   public static class RouteBCredentials {
     public const int AuthenticationIdLength = 32;
     public const int PasswordLength = 12;
   }
 }
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport {
   public interface IRouteBEchonetLiteHandlerBuilder {
     IServiceCollection Services { get; }
   }
 
   public interface IRouteBEchonetLiteHandlerFactory {
     ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
   }
 
   public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
     protected RouteBEchonetLiteHandler() {}
 
     public abstract IPAddress? PeerAddress { get; }
 
     public ValueTask ConnectAsync(IRouteBCredential credential, CancellationToken cancellationToken = default) {}
     protected abstract ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken);
     public ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
     protected abstract ValueTask DisconnectAsyncCore(CancellationToken cancellationToken);
   }
 
   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.4.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.3.1.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 b9ccbb0..4dbf84a 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,74 +1,75 @@
-// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.0.0-preview1)
+// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.0.0-preview2)
 //   Name: Smdn.Net.EchonetLite.RouteB
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview1+72e57d7daf6b52fc6ecc4ed745e175a1893e8d90
+//   InformationalVersion: 2.0.0-preview2+c9161acca48757584c059440b4e2b704c3a80505
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
-//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Net.EchonetLite.Transport, Version=2.0.0.0, Culture=neutral
 //     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.Buffers;
 using System.Net;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Smdn.Net.EchonetLite.RouteB.Credentials;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.Transport;
 
 namespace Smdn.Net.EchonetLite.RouteB.Credentials {
   public interface IRouteBCredential : IDisposable {
     void WriteIdTo(IBufferWriter<byte> buffer);
     void WritePasswordTo(IBufferWriter<byte> buffer);
   }
 
   public interface IRouteBCredentialIdentity {
   }
 
   public interface IRouteBCredentialProvider {
     IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
   }
 
   public static class RouteBCredentialServiceCollectionExtensions {
-    public static IServiceCollection AddRouteBCredential(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
     public static IServiceCollection AddRouteBCredential(this IServiceCollection services, string id, string password) {}
+    public static IServiceCollection AddRouteBCredentialFromEnvironmentVariable(this IServiceCollection services, string envVarForId, string envVarForPassword) {}
+    public static IServiceCollection AddRouteBCredentialProvider(this IServiceCollection services, IRouteBCredentialProvider credentialProvider) {}
   }
 
   public static class RouteBCredentials {
     public const int AuthenticationIdLength = 32;
     public const int PasswordLength = 12;
   }
 }
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport {
   public interface IRouteBEchonetLiteHandlerBuilder {
     IServiceCollection Services { get; }
   }
 
   public interface IRouteBEchonetLiteHandlerFactory {
     ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
   }
 
   public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
     protected RouteBEchonetLiteHandler() {}
 
     public abstract IPAddress? PeerAddress { get; }
 
 ...
Read more