Add Microcontrollers

This commit is contained in:
Dan Clark
2025-02-07 09:20:43 +00:00
parent a08f86eb74
commit f2e501454e
19 changed files with 213 additions and 10 deletions
@@ -0,0 +1,24 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Collections.ObjectModel;
namespace Toolkit.Foundation;
public class MicrocontrollerBuilderConfiguration<TConfiguration, TSerialReader, TRead, TReadDeserializer>(IConfiguration configuration) :
IMicrocontrollerBuilderConfiguration<TConfiguration, TSerialReader, TRead, TReadDeserializer>
where TConfiguration : IMicrocontrollerConfiguration, new()
where TSerialReader : SerialReader<TRead> where TReadDeserializer : IMicrocontrollerModuleDeserializer<TRead>, new()
{
private readonly List<IMicrocontrollerModuleDescriptor> modules = new();
public Func<IServiceProvider, IMicrocontrollerContext> Factory => (IServiceProvider provider) => provider.GetService<IMicrocontrollerFactory>()!.Create<TSerialReader, TRead, TReadDeserializer>(configuration.Get<TConfiguration>(), Modules);
public IReadOnlyCollection<IMicrocontrollerModuleDescriptor> Modules => new ReadOnlyCollection<IMicrocontrollerModuleDescriptor>(modules);
public IMicrocontrollerBuilderConfiguration<TConfiguration, TSerialReader, TRead, TReadDeserializer> AddModule<TModule>()
where TModule : IMicrocontrollerModule, new()
{
modules.Add(new MicrocontrollerModuleDescriptor<TModule>());
return this;
}
}