public Task ConfigureService(IHwSettings settings, CancellationToken ct) { _hwSettings = (RelayHwSettings)settings; try { _relayDevice.Configure(_hwSettings); switch (_hwSettings.ActivateOn) { case Activators.Sunset: _sunsetService.Sunset += OnSunsetActivateEventHandler; break; case Activators.TimeOn: break; default: _logger.LogError("Relay {Name} activation not configured.", _hwSettings.Name); break; } _logger.LogDebug("Relay {Name} activating configured for {Event}.", _hwSettings.Name, _hwSettings.ActivateOn); return(Task.CompletedTask); } catch (Exception e) { return(Task.FromException(e)); } }
public bool Configure(RelayHwSettings settings) { _pin = settings.GpioPin; // First use of the method initialises GPIO controller with hardware _isGpioInitialised = _gpio.Initialise(); // This sets which output state (high or low) is configured as 'active' state. _activeState = settings.ActiveState; try { if (_isGpioInitialised) { _gpio.OpenPin(settings.GpioPin, _activeState); return(true); } _logger.LogError("GPIO not initialised."); return(false); } catch (Exception e) { _logger.LogError(e, "Open pin {Pin} failed", _pin); return(false); } }