-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathantminer.go
51 lines (44 loc) · 1.06 KB
/
antminer.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
package minerinfo
import (
"strings"
"slices"
)
type antminer struct {
genericMiner
}
func (a antminer) Type() string {
return "Antminer"
}
func (a antminer) Model() string {
if len(a.data.Stats) > 0 {
typemodel := a.data.Stats[0].Type
modelver := strings.Join(strings.Fields(typemodel)[1:], " ")
return strings.TrimSpace(strings.Split(modelver, "(")[0])
} else {
return a.genericMiner.Model()
}
}
func (a antminer) Version() string {
var version string
if len(a.data.Stats) > 0 {
typemodel := a.data.Stats[0].Type
modelversion := strings.Fields(typemodel)
if len(modelversion) > 1 {
mvSplitted := strings.Split(strings.Join(modelversion[1:], " "), "(")
if len(mvSplitted) > 1 {
version = strings.TrimSuffix(strings.Join(mvSplitted[1:], "("), ")")
}
}
}
return version
}
func (a antminer) Hashrate() float64 {
h := a.genericMiner.Hashrate()
mhsAsGhsModels := []string{"L3+", "L7"} //L3+ and L7 returns MHS as GHS
currentModel := a.Model()
if slices.Contains(mhsAsGhsModels, currentModel) {
return h / 1000
} else {
return h
}
}