소스 검색

Added support for the AVERAGE variable

Malte Veerman 6 년 전
부모
커밋
0cc84ab8c1
4개의 변경된 파일54개의 추가작업 그리고 0개의 파일을 삭제
  1. 32 0
      import/qml/FanControls.qml
  2. 15 0
      import/src/loader.cpp
  3. 2 0
      import/src/pwmfan.cpp
  4. 5 0
      import/src/pwmfan.h

+ 32 - 0
import/qml/FanControls.qml

@@ -82,6 +82,38 @@ ColumnLayout {
         }
     }
 
+    RowLayout {
+        Label {
+            text: i18n("Number of cycles to average temperature")
+            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+            renderType: Text.NativeRendering
+        }
+        SpinBox {
+            id: averageInput
+
+            Layout.fillWidth: true
+            from: 1
+            to: 100
+            editable: true
+            value: !!fan ? fan.average : 1
+            textFromValue: function(value, locale) { return Number(value).toLocaleString(locale, 'f', 1) }
+            onValueModified: {
+                if (!!fan) {
+                    fan.average = value
+                }
+            }
+
+            Connections {
+                target: root
+                onFanChanged: if (!!fan) averageInput.value = fan.average
+            }
+            Connections {
+                target: fan
+                onAverageChanged: averageInput.value = fan.average
+            }
+        }
+    }
+
     CheckBox {
         id: fanOffCheckBox
 

+ 15 - 0
import/src/loader.cpp

@@ -363,6 +363,11 @@ bool Loader::parseConfig(QString config)
             line.remove(QStringLiteral("MAXPWM="));
             parseConfigLine(line.simplified(), &PwmFan::setMaxPwm);
         }
+        else if (line.startsWith(QStringLiteral("AVERAGE=")))
+        {
+            line.remove(QStringLiteral("AVERAGE="));
+            parseConfigLine(line.simplified(), &PwmFan::setAverage);
+        }
         else if (!line.startsWith(QStringLiteral("DEVPATH=")) &&
             !line.startsWith(QStringLiteral("FCFANS=")))
         {
@@ -761,6 +766,16 @@ QString Loader::createConfig() const
                 configFile += QString::number(pwmFan->maxPwm()) + QChar(QChar::Space);
             }
             configFile += QChar(QChar::LineFeed);
+
+            configFile += QLatin1String("AVERAGE=");
+
+            for (const auto &pwmFan : qAsConst(usedFans))
+            {
+                configFile += "hwmon" + QString::number(pwmFan->parent()->index()) + "/";
+                configFile += "pwm" + QString::number(pwmFan->index()) + "=";
+                configFile += QString::number(pwmFan->average()) + QChar(QChar::Space);
+            }
+            configFile += QChar(QChar::LineFeed);
         }
     }
 

+ 2 - 0
import/src/pwmfan.cpp

@@ -56,6 +56,7 @@ PwmFan::PwmFan(uint index, Hwmon *parent) : Fan(index, parent),
     m_maxPwm(255),
     m_minStart(255),
     m_minStop(255),
+    m_average(1),
     m_zeroRpm(0),
     m_testStatus(NotStarted)
 {
@@ -69,6 +70,7 @@ PwmFan::PwmFan(uint index, Hwmon *parent) : Fan(index, parent),
         connect(this, &PwmFan::maxPwmChanged, parent, &Hwmon::configUpdateNeeded);
         connect(this, &PwmFan::minStartChanged, parent, &Hwmon::configUpdateNeeded);
         connect(this, &PwmFan::minStopChanged, parent, &Hwmon::configUpdateNeeded);
+        connect(this, &PwmFan::averageChanged, parent, &Hwmon::configUpdateNeeded);
         connect(this, &PwmFan::testStatusChanged, parent, &Hwmon::configUpdateNeeded);
 
         if (QDir(parent->path()).isReadable())

+ 5 - 0
import/src/pwmfan.h

@@ -45,6 +45,7 @@ class PwmFan : public Fan
     Q_PROPERTY(int maxPwm READ maxPwm WRITE setMaxPwm NOTIFY maxPwmChanged)
     Q_PROPERTY(int minStart READ minStart WRITE setMinStart NOTIFY minStartChanged)
     Q_PROPERTY(int minStop READ minStop WRITE setMinStop NOTIFY minStopChanged)
+    Q_PROPERTY(int average READ average WRITE setAverage NOTIFY averageChanged)
     Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
     Q_PROPERTY(bool testing READ testing NOTIFY testStatusChanged)
     Q_PROPERTY(TestStatus testStatus READ testStatus NOTIFY testStatusChanged)
@@ -84,6 +85,7 @@ public:
     int maxPwm() const { return m_maxPwm; }
     int minStart() const { return m_minStart; }
     int minStop() const { return m_minStop; }
+    int average() const { return m_average; }
     PwmEnable pwmEnable() const { return m_pwmEnable; }
     TestStatus testStatus() const { return m_testStatus; }
     bool active() const;
@@ -97,6 +99,7 @@ public:
     void setMaxPwm(int maxPwm);
     void setMinStart(int minStart) { if (minStart != m_minStart) { m_minStart = minStart; emit minStartChanged(); } }
     void setMinStop(int minStop) { if (minStop != m_minStop) { m_minStop = minStop; emit minStopChanged(); } }
+    void setAverage(int average) { if (average != m_average) { m_average = average; emit averageChanged(); } }
     bool setPwmEnable(PwmEnable pwmEnable, bool write = true);
     void setActive(bool active);
     void toDefault() Q_DECL_OVERRIDE;
@@ -119,6 +122,7 @@ signals:
     void maxPwmChanged();
     void minStartChanged();
     void minStopChanged();
+    void averageChanged();
     void activeChanged();
     void testStatusChanged(bool = false);
     void pwmEnableChanged();
@@ -142,6 +146,7 @@ private:
     int m_maxPwm;
     int m_minStart;
     int m_minStop;
+    int m_average;
     int m_zeroRpm;
     TestStatus m_testStatus;
 };