Skip to content

Commit 46f62ac

Browse files
committed
Catch exceptions in speed controllers and effects
1 parent eface7d commit 46f62ac

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

Source/TTController.Service/TTService.cs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,15 @@ private bool DeviceSpeedTimerCallback()
269269
if (speedController == null)
270270
continue;
271271

272-
speedMap = speedController.GenerateSpeeds(profile.Ports, _cache.AsReadOnly());
272+
try
273+
{
274+
speedMap = speedController.GenerateSpeeds(profile.Ports, _cache.AsReadOnly());
275+
}
276+
catch(Exception e)
277+
{
278+
Logger.Fatal("{0} failed with {1}", speedController.GetType().Name, e);
279+
speedMap = profile.Ports.ToDictionary(p => p, _ => (byte)100);
280+
}
273281
}
274282

275283
if (speedMap == null)
@@ -300,7 +308,21 @@ public bool DeviceRgbTimerCallback()
300308
if (effect == null)
301309
continue;
302310

303-
var colorMap = effect.GenerateColors(profile.Ports, _cache.AsReadOnly());
311+
IDictionary<PortIdentifier, List<LedColor>> colorMap;
312+
string effectType;
313+
314+
try
315+
{
316+
colorMap = effect.GenerateColors(profile.Ports, _cache.AsReadOnly());
317+
effectType = effect.EffectType;
318+
}
319+
catch (Exception e)
320+
{
321+
Logger.Fatal("{0} failed with {1}", effect.GetType().Name, e);
322+
colorMap = profile.Ports.ToDictionary(p => p, _ => new List<LedColor>() { new LedColor(255, 0, 0) } );
323+
effectType = "Full";
324+
}
325+
304326
if (colorMap == null)
305327
continue;
306328

@@ -360,7 +382,7 @@ public bool DeviceRgbTimerCallback()
360382
continue;
361383

362384
var controller = _deviceManager.GetController(port);
363-
var effectByte = controller?.GetEffectByte(effect.EffectType);
385+
var effectByte = controller?.GetEffectByte(effectType);
364386
if (effectByte == null)
365387
continue;
366388

0 commit comments

Comments
 (0)