forked from amkovkov/GranuSightSoftware2
refactor: hardware services
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
using System.Device.Gpio;
|
||||
using System.Device.Pwm;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
using GSS2.Core.Abstractions;
|
||||
|
||||
namespace GSS2.Core.Hardware;
|
||||
|
||||
public class IlluminatorService : IDisposable
|
||||
{
|
||||
public class IlluminatorServiceConfiguration
|
||||
public record IlluminatorServiceConfiguration : ServiceConfigurationBase
|
||||
{
|
||||
public static IlluminatorServiceConfiguration Default => new IlluminatorServiceConfiguration
|
||||
{
|
||||
@@ -76,38 +79,22 @@ public class IlluminatorService : IDisposable
|
||||
{
|
||||
_logger = logger;
|
||||
|
||||
_logger.LogInformation("Illuminator initialization");
|
||||
|
||||
if (configuration is null)
|
||||
{
|
||||
_logger.LogWarning("Illuminator configuration not set. Using default configuration.");
|
||||
_configuration = IlluminatorServiceConfiguration.Default;
|
||||
}
|
||||
else
|
||||
{
|
||||
_configuration = configuration;
|
||||
}
|
||||
|
||||
_logger.LogDebug(@$"Illuminator use following configuration:
|
||||
WhitePwmPin: {_configuration.WhitePwmPin}
|
||||
Uv254PwmPin: {_configuration.Uv254PwmPin}
|
||||
Uv365PwmPin: {_configuration.Uv365PwmPin}
|
||||
WhiteRelayPin: {_configuration.WhiteRelayPin}
|
||||
Uv254RelayPin: {_configuration.Uv254RelayPin}
|
||||
Uv365RelayPin: {_configuration.Uv365RelayPin}
|
||||
FanPin: {_configuration.FanPin}
|
||||
PwmFrequency: {_configuration.PwmFrequency}
|
||||
MaxWhitePwmDuty: {_configuration.MaxWhitePwmDuty}
|
||||
MaxUv254PwmDuty: {_configuration.MaxUv254PwmDuty}
|
||||
MaxUv365PwmDuty: {_configuration.MaxUv365PwmDuty}
|
||||
");
|
||||
|
||||
CheckPwmPin(_configuration.WhitePwmPin);
|
||||
CheckPwmPin(_configuration.Uv254PwmPin);
|
||||
CheckPwmPin(_configuration.Uv365PwmPin);
|
||||
_logger.LogInformation("Initialization");
|
||||
|
||||
try
|
||||
{
|
||||
if (configuration is null)
|
||||
{
|
||||
configuration = IlluminatorServiceConfiguration.Default;
|
||||
_logger.LogWarning("Configuration not set. Using default configuration.");
|
||||
}
|
||||
_configuration = configuration;
|
||||
_logger.LogInformation("Using following configuration: \n{}", _configuration.ToString("\n", 4));
|
||||
|
||||
CheckPwmPin(_configuration.WhitePwmPin);
|
||||
CheckPwmPin(_configuration.Uv254PwmPin);
|
||||
CheckPwmPin(_configuration.Uv365PwmPin);
|
||||
|
||||
_gpio = new GpioController();
|
||||
_whitePwm = PwmChannel.Create(PinPwmChips[_configuration.WhitePwmPin], PinPwmChannels[_configuration.WhitePwmPin], _configuration.PwmFrequency, CalculateDuty(0, _configuration.MaxWhitePwmDuty));
|
||||
_uv254Pwm = PwmChannel.Create(PinPwmChips[_configuration.Uv254PwmPin], PinPwmChannels[_configuration.Uv254PwmPin], _configuration.PwmFrequency, CalculateDuty(0, _configuration.MaxUv254PwmDuty));
|
||||
@@ -120,9 +107,11 @@ public class IlluminatorService : IDisposable
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogCritical(e, "An exception occurred while illuminator initialization");
|
||||
_logger.LogCritical(e, "An exception occurred while initialization");
|
||||
throw;
|
||||
}
|
||||
|
||||
_logger.LogInformation("Initialized");
|
||||
}
|
||||
|
||||
public void SetIntensity(double? white = null, double? uv365 = null, double? uv254 = null)
|
||||
|
||||
Reference in New Issue
Block a user