Skip to content

Commit 3a21bb8

Browse files
committed
Merge branch 'develop'
2 parents eba611d + be5fd01 commit 3a21bb8

File tree

10 files changed

+65
-13
lines changed

10 files changed

+65
-13
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ The soruce code also provides an easy way to write your own **speed controller**
4848
| Riing Plus 12/14/20 | :heavy_check_mark: | :heavy_check_mark: |
4949
| Pure Plus 12/14 | :heavy_check_mark: | :heavy_check_mark: |
5050
| Floe Riing RGB 240/280/360 | :heavy_check_mark: | :heavy_check_mark: |
51+
| Pacific PR22-D5 Plus | :heavy_check_mark: | :heavy_check_mark: |
52+
| Pacific W4 | :heavy_check_mark: | :heavy_check_mark: |
5153
| WaterRam RGB | :heavy_check_mark: | :x: |
52-
| Pacific PR22-D5 Plus | :heavy_check_mark: | :x: |
5354
| Pacific CL360/RL360 | :heavy_check_mark: | :x: |
54-
| Pacific W4 | :heavy_check_mark: | :x: |
5555
| Pacific V-GTX/V-RTX | :heavy_check_mark: | :x: |
5656
| Pacific Lumi/Rad/R1/Fitting | :heavy_check_mark: | :x: |
5757
| Pacific W5/W6 | :heavy_minus_sign: | :x: | temperature sensor unsupported
@@ -191,7 +191,8 @@ The soruce code also provides an easy way to write your own **speed controller**
191191
"Name of the profile"
192192
"Name": "<string>",
193193

194-
"GUID string"
194+
"Unique GUID string (8-4-4-4-12 format)"
195+
"Can be generated here: https://www.guidgen.com/"
195196
"Guid": "<string>",
196197

197198
"List of port identifiers that this profile controls"

Source/TTController.Service/App.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
maxArchiveFiles="8" />
2121
</targets>
2222
<rules>
23-
<logger name="*" minLevel="Trace" writeTo="console" enabled="true" />
23+
<logger name="*" minLevel="Debug" writeTo="console" enabled="true" />
2424
<logger name="*" minLevel="Info" writeTo="file" enabled="true" />
2525
</rules>
2626
</nlog>

Source/TTController.Service/Hardware/HidDeviceProxy.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using HidLibrary;
5+
using NLog;
56

67
namespace TTController.Service.Hardware
78
{
89
public class HidDeviceProxy : IHidDeviceProxy
910
{
11+
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
12+
1013
private readonly HidDevice _device;
1114

1215
public int VendorId => _device.Attributes.VendorId;
@@ -24,6 +27,9 @@ public bool WriteBytes(params byte[] bytes)
2427

2528
var data = new byte[_device.Capabilities.OutputReportByteLength];
2629
Array.Copy(bytes, 0, data, 1, Math.Min(bytes.Length, _device.Capabilities.OutputReportByteLength - 1));
30+
31+
Logger.Trace("W[{vid}, {pid}] {data}", _device.Attributes.VendorId, _device.Attributes.ProductId, data);
32+
2733
return _device.Write(data);
2834
}
2935

@@ -36,6 +42,8 @@ public byte[] ReadBytes()
3642
if (data.Status != HidDeviceData.ReadStatus.Success)
3743
return null;
3844

45+
Logger.Trace("R[{vid}, {pid}] {data}", _device.Attributes.VendorId, _device.Attributes.ProductId, data.Data);
46+
3947
return data.Data;
4048
}
4149

Source/TTController.Service/Manager/EffectManager.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ private void Dispose(bool disposing)
4949
foreach (var effect in effects)
5050
effect.Dispose();
5151
Logger.Info("Disposed effects: {0}", count);
52+
53+
_effectsGuidMap.Clear();
5254
}
5355
}
5456
}

Source/TTController.Service/Manager/SensorManager.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ private void Dispose(bool disposing)
5151
{
5252
Logger.Info("Disposing SensorManager...");
5353
_computer?.Close();
54+
55+
_sensors.Clear();
5456
}
5557
}
5658
}

Source/TTController.Service/Manager/SpeedControllerManager.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ private void Dispose(bool disposing)
4949
foreach (var controller in controllers)
5050
controller.Dispose();
5151
Logger.Info("Disposed speed controllers: {0}", count);
52+
53+
_speedControllerGuidMap.Clear();
5254
}
5355
}
5456
}

Source/TTController.Service/Manager/TemperatureManager.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ public void Dispose()
110110
private void Dispose(bool disposing)
111111
{
112112
Logger.Info("Disposing TemperatureManager...");
113+
_providerMap.Clear();
114+
_hardware.Clear();
115+
_sensors.Clear();
113116
}
114117
}
115118
}

Source/TTController.Service/Manager/TimerManager.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ private void Dispose(bool disposing)
5959
Logger.Info("Stopping {0} timers...", _timers.Count);
6060
foreach (var timer in _timers)
6161
timer.Stop();
62+
63+
_timers.Clear();
6264
}
6365

6466
#region Timer

Source/TTController.Service/Program.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,16 @@ void StartService()
6565
{
6666
Console.WriteLine("Starting the service...");
6767
Service?.Start();
68-
Service?.WaitForStatus(ServiceControllerStatus.Running);
68+
try
69+
{
70+
Service?.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(15));
71+
}
72+
catch (Exception e)
73+
{
74+
Console.WriteLine("Failed to start the service...");
75+
Console.WriteLine("Press any key to return to the menu...");
76+
Console.ReadKey(true);
77+
}
6978
}
7079

7180
var menu = new MenuPage("Main Menu > Manage Service");

Source/TTController.Service/TTService.cs

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,20 @@ public bool Initialize()
106106

107107
protected override void OnStart(string[] args)
108108
{
109-
if (!Initialize())
109+
try
110110
{
111+
if (!Initialize())
112+
throw new Exception("Service failed to start!");
113+
114+
IsDisposed = false;
115+
}
116+
catch (Exception e)
117+
{
118+
Logger.Fatal(e);
111119
ExitCode = 1;
112120
Stop();
113-
throw new Exception("Service failed to start!");
121+
throw;
114122
}
115-
116-
IsDisposed = false;
117123
}
118124

119125
protected override void OnStop()
@@ -136,16 +142,20 @@ protected void OnSuspend()
136142

137143
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
138144
{
145+
Logger.Debug("Power Event: {0}", powerStatus);
146+
139147
switch (powerStatus)
140148
{
141149
case PowerBroadcastStatus.QuerySuspendFailed:
142150
OnStart(null);
143151
break;
144152

145153
case PowerBroadcastStatus.ResumeAutomatic:
154+
OnStart(null);
155+
break;
156+
146157
case PowerBroadcastStatus.ResumeCritical:
147158
case PowerBroadcastStatus.ResumeSuspend:
148-
OnStart(null);
149159
break;
150160

151161
case PowerBroadcastStatus.QuerySuspend:
@@ -181,6 +191,16 @@ public void Finalize(ComputerStateType state = ComputerStateType.Shutdown)
181191
_configManager?.Dispose();
182192
_cache?.Clear();
183193

194+
_timerManager = null;
195+
_deviceManager = null;
196+
_temperatureManager = null;
197+
_sensorManager = null;
198+
_deviceManager = null;
199+
_effectManager = null;
200+
_speedControllerManager = null;
201+
_configManager = null;
202+
_cache = null;
203+
184204
Dispose();
185205
IsDisposed = true;
186206

@@ -219,7 +239,7 @@ private void ApplyComputerStateProfile(ComputerStateType state)
219239
controller.SetSpeed(port.Id, profile.Speed.Value);
220240

221241
var effectByte = controller.GetEffectByte(profile.EffectType);
222-
if (effectByte.HasValue)
242+
if (effectByte.HasValue && profile.EffectColors != null)
223243
controller.SetRgb(port.Id, effectByte.Value, profile.EffectColors);
224244

225245
if(state == ComputerStateType.Boot && (profile.Speed.HasValue || effectByte.HasValue))
@@ -326,6 +346,9 @@ public bool DeviceRgbTimerCallback()
326346
{
327347
foreach (var (port, colors) in colorMap)
328348
{
349+
if (colors == null)
350+
continue;
351+
329352
var controller = _deviceManager.GetController(port);
330353
var effectByte = controller?.GetEffectByte(effect.EffectType);
331354
if (effectByte == null)
@@ -349,7 +372,7 @@ public bool LoggingTimerCallback()
349372
if (data == null)
350373
continue;
351374

352-
Logger.Trace("Port {0} data: {1}", port, data);
375+
Logger.Debug("Port {0} data: {1}", port, data);
353376
}
354377
}
355378

@@ -360,7 +383,7 @@ public bool LoggingTimerCallback()
360383
var value = _temperatureManager.GetSensorValue(sensor.Identifier);
361384
if (float.IsNaN(value))
362385
continue;
363-
Logger.Trace("Sensor \"{0}\" value: {1}", sensor.Identifier, value);
386+
Logger.Debug("Sensor \"{0}\" value: {1}", sensor.Identifier, value);
364387
}
365388
}
366389

0 commit comments

Comments
 (0)