From 619b9e857228b805665800c92a72cadc72fc898a Mon Sep 17 00:00:00 2001 From: Sparronator9999 <86388887+Sparronator9999@users.noreply.github.com> Date: Sun, 16 Feb 2025 08:20:03 +1100 Subject: [PATCH] Fix service crash if EC date parsing fails This is a workaround for issue #61, where certain EC firmware dates appear to be causing FormatExceptions which crashes the YAMDCC service. --- YAMDCC.Service/FanControlService.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/YAMDCC.Service/FanControlService.cs b/YAMDCC.Service/FanControlService.cs index 03cbfde..b84673c 100644 --- a/YAMDCC.Service/FanControlService.cs +++ b/YAMDCC.Service/FanControlService.cs @@ -120,10 +120,18 @@ protected override void OnStart(string[] args) } if (_EC.ReadString(0xAC, 0x10, out string ecDate) && ecDate.Length == 0x10) { - string temp = $"{ecDate.Substring(4, 4)}-{ecDate.Substring(0, 2)}-{ecDate.Substring(2, 2)}" + + try + { + string temp = $"{ecDate.Substring(4, 4)}-{ecDate.Substring(0, 2)}-{ecDate.Substring(2, 2)}" + $"T{ecDate.Substring(8, 2)}:{ecDate.Substring(11, 2)}:{ecDate.Substring(14, 2)}"; - EcInfo.Date = DateTime.ParseExact(temp, "s", CultureInfo.InvariantCulture); - Log.Debug($"EC firmware date: {EcInfo.Date:G}"); + EcInfo.Date = DateTime.ParseExact(temp, "s", CultureInfo.InvariantCulture); + Log.Debug($"EC firmware date: {EcInfo.Date:G}"); + } + catch (FormatException ex) + { + Log.Error($"Failed to parse EC firmware date: {ex.Message}"); + Log.Debug($"EC firmware date (raw): {ecDate}"); + } } }