Device providers - Let's actually include the SDKs!

Core - Enable exceptions during device provider init so that they can be logged
This commit is contained in:
Robert committed 2020-03-02 23:42:33 +01:00
1 parent c3b2c981da
commit 16b221d2f8
13 files changed
+89 -24

No files matched your search

@@ -33,13 +33,7 @@ namespace Artemis.Core.Services.Interfaces
/// </summary>
/// <param name="deviceProvider"></param>
void AddDeviceProvider(IRGBDeviceProvider deviceProvider);
/// <summary>
/// Removes the given device provider from the <see cref="Surface" /> by recreating it without the device provider
/// </summary>
/// <param name="deviceProvider"></param>
void RemoveDeviceProvider(IRGBDeviceProvider deviceProvider);
void Dispose();
/// <summary>
+10 -15
View File
@@ -18,14 +18,13 @@ namespace Artemis.Core.Services
public class RgbService : IRgbService, IDisposable
{
private readonly List<IRGBDevice> _loadedDevices;
private readonly List<IRGBDeviceProvider> _loadedDeviceProviders;
private readonly ILogger _logger;
private readonly PluginSetting<double> _renderScaleSetting;
private readonly PluginSetting<int> _sampleSizeSetting;
private readonly PluginSetting<int> _targetFrameRateSetting;
private readonly TimerUpdateTrigger _updateTrigger;
private ListLedGroup _surfaceLedGroup;
internal RgbService(ILogger logger, ISettingsService settingsService)
{
_logger = logger;
@@ -40,7 +39,6 @@ namespace Artemis.Core.Services
_renderScaleSetting.SettingChanged += RenderScaleSettingOnSettingChanged;
_targetFrameRateSetting.SettingChanged += TargetFrameRateSettingOnSettingChanged;
_loadedDevices = new List<IRGBDevice>();
_loadedDeviceProviders = new List<IRGBDeviceProvider>();
_updateTrigger = new TimerUpdateTrigger {UpdateFrequency = 1.0 / _targetFrameRateSetting.Value};
Surface.RegisterUpdateTrigger(_updateTrigger);
}
@@ -56,15 +54,18 @@ namespace Artemis.Core.Services
public void AddDeviceProvider(IRGBDeviceProvider deviceProvider)
{
if (_loadedDeviceProviders.Contains(deviceProvider))
return;
Surface.LoadDevices(deviceProvider);
_loadedDeviceProviders.Add(deviceProvider);
try
{
Surface.LoadDevices(deviceProvider, RGBDeviceType.All, false, true);
}
catch (Exception e)
{
_logger.Error(e, "Exception during device loading for device provider {deviceProvider}", deviceProvider.GetType().Name);
}
if (deviceProvider.Devices == null)
{
_logger.Warning("RgbDevice provider {deviceProvider} has no devices", deviceProvider.GetType().Name);
_logger.Warning("Device provider {deviceProvider} has no devices", deviceProvider.GetType().Name);
return;
}
@@ -80,12 +81,6 @@ namespace Artemis.Core.Services
}
}
public void RemoveDeviceProvider(IRGBDeviceProvider deviceProvider)
{
if (!_loadedDeviceProviders.Contains(deviceProvider))
return;
}
public void Dispose()
{
Surface.UnregisterUpdateTrigger(_updateTrigger);