From c95e7bd8ad7deb731ab31b1972fac89e847c069a Mon Sep 17 00:00:00 2001 From: eikaramba Date: Sun, 10 Jan 2021 17:13:59 +0100 Subject: [PATCH] Add D5Next Pump from AquaComputer to supported devices (#358) * Add D5Next Pump from AquaComputer to supported devices * improve formatting and removing of unnecessary lines/variables * Update D5Next.cs Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com> --- .../AquaComputer/AquaComputerGroup.cs | 9 +++ .../Controller/AquaComputer/D5Next.cs | 66 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/D5Next.cs diff --git a/LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/AquaComputerGroup.cs b/LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/AquaComputerGroup.cs index c4da937..44fc1e3 100644 --- a/LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/AquaComputerGroup.cs +++ b/LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/AquaComputerGroup.cs @@ -26,6 +26,15 @@ namespace LibreHardwareMonitor.Hardware.Controller.AquaComputer switch (dev.ProductID) { + case 0xF00E: + { + var device = new D5Next(dev, settings); + _report.AppendLine($"Device name: {productName}"); + _report.AppendLine($"Firmware version: {device.FirmwareVersion}"); + _report.AppendLine(); + _hardware.Add(device); + break; + } case 0xf0b6: { var device = new AquastreamXT(dev, settings); diff --git a/LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/D5Next.cs b/LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/D5Next.cs new file mode 100644 index 0000000..cd1d011 --- /dev/null +++ b/LibreHardwareMonitorLib/Hardware/Controller/AquaComputer/D5Next.cs @@ -0,0 +1,66 @@ +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. +// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. +// Copyright (C) LibreHardwareMonitor and Contributors. +// All Rights Reserved. + +using System; +using HidSharp; + +namespace LibreHardwareMonitor.Hardware.Controller.AquaComputer +{ + internal sealed class D5Next : Hardware + { + //Available Reports, found them by looking at the below methods + //var test = dev.GetRawReportDescriptor(); + //var test2 = dev.GetReportDescriptor(); + + // ID 1; Length 158; INPUT + // ID 2; Length 11; OUTPUT + // ID 3; Length 1025; <-- works FEATURE + // ID 8; Length 1025; <-- works FEATURE + // ID 12; Length 1025; <-- 0xC FEATURE + + private readonly byte[] _rawData = new byte[1025]; + private readonly Sensor[] _rpmSensors = new Sensor[1]; + private readonly HidStream _stream; + private readonly Sensor[] _temperatures = new Sensor[1]; + + public D5Next(HidDevice dev, ISettings settings) : base("D5Next", new Identifier(dev.DevicePath), settings) + { + if (dev.TryOpen(out _stream)) + { + //Reading output report instead of feature report, as the measurements are in the output report + _stream.Read(_rawData); + + Name = $"D5Next"; + FirmwareVersion = Convert.ToUInt16(_rawData[14] | (_rawData[13] << 8)); + _temperatures[0] = new Sensor("Water Temperature", 0, SensorType.Temperature, this, new ParameterDescription[0], settings); + ActivateSensor(_temperatures[0]); + + _rpmSensors[0] = new Sensor("Pump", 0, SensorType.Fan, this, new ParameterDescription[0], settings); + ActivateSensor(_rpmSensors[0]); + } + } + + public ushort FirmwareVersion { get; private set; } + + public override HardwareType HardwareType + { + get { return HardwareType.Cooler; } + } + + public override void Close() + { + _stream.Close(); + base.Close(); + } + + public override void Update() + { + //Reading output report instead of feature report, as the measurements are in the output report + _stream.Read(_rawData); + _temperatures[0].Value = (_rawData[88] | (_rawData[87] << 8)) / 100f; //Water Temp + _rpmSensors[0].Value = (_rawData[117] | (_rawData[116] << 8)); //Pump RPM + } + } +}