-
Notifications
You must be signed in to change notification settings - Fork 91
/
manager_tlp.go
112 lines (94 loc) · 2.33 KB
/
manager_tlp.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later
package power
import (
"strings"
dbus "github.com/godbus/dbus/v5"
"github.com/linuxdeepin/go-lib/dbusutil"
)
const lowBatteryThreshold = 20.0
func modifyLMTConfig(lines []string, dict map[string]string) ([]string, bool) {
var changed bool
for _, line := range lines {
for key, value := range dict {
if strings.HasPrefix(line, key) {
newLine := key + "=" + value
if line != newLine {
changed = true
line = newLine
}
delete(dict, key)
}
}
if len(dict) == 0 {
break
}
}
if len(dict) > 0 {
for key, value := range dict {
newLine := key + "=" + value
lines = append(lines, newLine)
}
changed = true
}
return lines, changed
}
func (m *Manager) writePowerSavingModeEnabledCb(write *dbusutil.PropertyWrite) *dbus.Error {
logger.Debug("set laptop mode enabled", write.Value)
m.PropsMu.Lock()
m.setPropPowerSavingModeAuto(false)
m.setPropPowerSavingModeAutoWhenBatteryLow(false)
m.PropsMu.Unlock()
// TODO: add tlp part
return nil
}
func (m *Manager) updatePowerSavingMode() { // 根据用户设置以及当前状态,修改节能模式
if !m.initDone {
// 初始化未完成时,暂不提供功能
return
}
var enable bool
var err error
if !m.IsPowerSaveSupported {
enable = false
logger.Debug("IsPowerSaveSupported is false.")
} else if m.PowerSavingModeAuto && m.PowerSavingModeAutoWhenBatteryLow {
if m.OnBattery || m.batteryLow {
enable = true
} else {
enable = false
}
} else if m.PowerSavingModeAuto && !m.PowerSavingModeAutoWhenBatteryLow {
if m.OnBattery {
enable = true
} else {
enable = false
}
} else if !m.PowerSavingModeAuto && m.PowerSavingModeAutoWhenBatteryLow {
if m.batteryLow {
enable = true
} else {
enable = false
}
} else {
return // 未开启两个自动节能开关
}
if enable {
logger.Debug("auto switch to powersave mode")
err = m.doSetMode("powersave")
} else {
if m.IsBalanceSupported {
logger.Debug("auto switch to balance mode")
err = m.doSetMode("balance")
}
}
if err != nil {
logger.Warning(err)
}
logger.Info("updatePowerSavingMode PowerSavingModeEnabled: ", enable)
m.PropsMu.Lock()
m.setPropPowerSavingModeEnabled(enable)
m.PropsMu.Unlock()
// TODO: add tlp mode part
}