@@ -43,15 +43,14 @@ func (m *Model) AddEvent(e Event) {
4343
4444// Update method
4545func (m * Model ) Update (newState State ) {
46- prevState := m .State
47- m .PrevState = prevState
46+ m .PrevState = m .State
4847 m .State = newState
4948
5049 m .updateStatusCounts ()
5150 m .updateTransferOnbatt ()
5251 m .updateEvents ()
5352
54- _ , diff := prevState .Compare (newState )
53+ _ , diff := m . PrevState .Compare (newState )
5554 m .ChangedFields = diff
5655
5756 if len (diff ) > 0 || len (m .NewEvents ) > 0 {
@@ -65,39 +64,39 @@ func (m *Model) Update(newState State) {
6564
6665// updateStatusCounts method
6766func (m * Model ) updateStatusCounts () {
68- old := m .PrevState
69- curr := m .State
70- curr .UpsStatus .FlagChangeCounts = old .UpsStatus .CloneFlagChangeCounts ()
71- flags := curr .UpsStatus .GetFlags ()
72- prevFlags := old .UpsStatus .GetFlags ()
73- for flagName := range StatusFlags {
74- if flags [flagName ] != prevFlags [flagName ] {
75- curr .UpsStatus .FlagChangeCounts [flagName ]++
67+ m .State .UpsStatus .FlagChangeCounts = m .PrevState .UpsStatus .CloneFlagChangeCounts ()
68+
69+ if m .State .UpsStatus .Flag != m .PrevState .UpsStatus .Flag {
70+ flags := m .State .UpsStatus .GetFlags ()
71+ prevFlags := m .PrevState .UpsStatus .GetFlags ()
72+ for flagName := range StatusFlags {
73+ if flags [flagName ] != prevFlags [flagName ] {
74+ m .State .UpsStatus .FlagChangeCounts [flagName ]++
75+ }
7676 }
7777 }
7878}
7979
8080// updateTransferOnbatt method
8181func (m * Model ) updateTransferOnbatt () {
82- old := m .PrevState
83- curr := m .State
84-
8582 // Reveal hidden quick transfers on battery and back
86- transDelta := int64 (curr .UpsTransferOnBatteryCount ) - int64 (old .UpsTransferOnBatteryCount )
83+ transDelta := int64 (m .State .UpsTransferOnBatteryCount ) -
84+ int64 (m .PrevState .UpsTransferOnBatteryCount )
85+
8786 if transDelta > 0 {
8887 minIncr := uint64 (transDelta - 1 ) * 2
89- curr .UpsStatus .FlagChangeCounts ["online" ] += minIncr
90- curr .UpsStatus .FlagChangeCounts ["onbatt" ] += minIncr
88+ m . State .UpsStatus .FlagChangeCounts ["online" ] += minIncr
89+ m . State .UpsStatus .FlagChangeCounts ["onbatt" ] += minIncr
9190
92- flag := curr .UpsStatus .Flag
91+ flag := m . State .UpsStatus .Flag
9392 if flag & StatusFlags ["online" ] != 0 {
94- curr .UpsStatus .FlagChangeCounts ["online" ] += 2
93+ m . State .UpsStatus .FlagChangeCounts ["online" ] += 2
9594 }
9695 if flag & StatusFlags ["onbatt" ] == 0 {
97- curr .UpsStatus .FlagChangeCounts ["onbatt" ] += 2
96+ m . State .UpsStatus .FlagChangeCounts ["onbatt" ] += 2
9897
99- m .AddEvent (eventFromType (EventTypeOnbatt , old , curr ))
100- m .AddEvent (eventFromType (EventTypeOnbattEnd , old , curr ))
98+ m .AddEvent (eventFromType (EventTypeOnbatt , m . PrevState , m . State ))
99+ m .AddEvent (eventFromType (EventTypeOnbattEnd , m . PrevState , m . State ))
101100 }
102101 }
103102}
0 commit comments