parent
b272738d8e
commit
f506dfdbcd
@ -0,0 +1,105 @@
|
|||||||
|
package m9z
|
||||||
|
|
||||||
|
import (
|
||||||
|
"math"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBuildLoopFaults(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
loopIdx uint
|
||||||
|
alarmStatus uint16
|
||||||
|
alarmCode string
|
||||||
|
want []LoopFault
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "short circuit",
|
||||||
|
loopIdx: 1,
|
||||||
|
alarmStatus: 0x01,
|
||||||
|
alarmCode: "01 00",
|
||||||
|
want: []LoopFault{{
|
||||||
|
LoopIdx: 1,
|
||||||
|
Type: "short_circuit",
|
||||||
|
Message: "回路1短路故障",
|
||||||
|
Code: "01",
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "open circuit",
|
||||||
|
loopIdx: 2,
|
||||||
|
alarmStatus: 0x02,
|
||||||
|
alarmCode: "02 00",
|
||||||
|
want: []LoopFault{{
|
||||||
|
LoopIdx: 2,
|
||||||
|
Type: "open_circuit",
|
||||||
|
Message: "回路2开路故障",
|
||||||
|
Code: "02",
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "power mask",
|
||||||
|
loopIdx: 3,
|
||||||
|
alarmStatus: 0x04,
|
||||||
|
alarmCode: "04 03",
|
||||||
|
want: []LoopFault{{
|
||||||
|
LoopIdx: 3,
|
||||||
|
Type: "power",
|
||||||
|
Message: "回路3设备1/2电源故障",
|
||||||
|
Code: "04 03",
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "combined faults",
|
||||||
|
loopIdx: 4,
|
||||||
|
alarmStatus: 0x05,
|
||||||
|
alarmCode: "04 02",
|
||||||
|
want: []LoopFault{
|
||||||
|
{
|
||||||
|
LoopIdx: 4,
|
||||||
|
Type: "short_circuit",
|
||||||
|
Message: "回路4短路故障",
|
||||||
|
Code: "01",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
LoopIdx: 4,
|
||||||
|
Type: "power",
|
||||||
|
Message: "回路4设备2电源故障",
|
||||||
|
Code: "04 02",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
got := BuildLoopFaults(tt.loopIdx, tt.alarmStatus, tt.alarmCode)
|
||||||
|
if len(got) != len(tt.want) {
|
||||||
|
t.Fatalf("len(got) = %d, want %d; got=%+v", len(got), len(tt.want), got)
|
||||||
|
}
|
||||||
|
for i := range got {
|
||||||
|
if got[i] != tt.want[i] {
|
||||||
|
t.Fatalf("got[%d] = %+v, want %+v", i, got[i], tt.want[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseLoopFullParametersDCCurrentScale(t *testing.T) {
|
||||||
|
data := make([]byte, 238)
|
||||||
|
data[2] = 0xBF
|
||||||
|
data[3] = 0x01
|
||||||
|
data[10] = 0x01
|
||||||
|
|
||||||
|
params, err := ParseLoopFullParameters(data)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if params == nil {
|
||||||
|
t.Fatal("expected params, got nil")
|
||||||
|
}
|
||||||
|
if math.Abs(float64(params.DCCurrent-0.447)) > 0.0001 {
|
||||||
|
t.Fatalf("DCCurrent = %v, want 0.447", params.DCCurrent)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package m9zApi
|
||||||
|
|
||||||
|
import g "tgk-touch/internal/global"
|
||||||
|
|
||||||
|
const (
|
||||||
|
defaultLoopCount = 10
|
||||||
|
maxLoopCount = 10
|
||||||
|
)
|
||||||
|
|
||||||
|
func configuredLoopCount() int {
|
||||||
|
loopCount := g.Config().DeviceInfo.LoopCount
|
||||||
|
if loopCount <= 0 {
|
||||||
|
return defaultLoopCount
|
||||||
|
}
|
||||||
|
if loopCount > maxLoopCount {
|
||||||
|
return maxLoopCount
|
||||||
|
}
|
||||||
|
return loopCount
|
||||||
|
}
|
||||||
Loading…
Reference in new issue