@@ -103,14 +103,29 @@ impl PsMoveController {
103
103
self . last_led_effect = current_effect;
104
104
self . setting . last_led = current_led;
105
105
106
+ let last_led_effect = & mut self . last_led_effect ;
107
+
108
+ if let Some ( duration) = last_led_effect. duration {
109
+ if last_led_effect. start . elapsed ( ) >= duration {
110
+ info ! ( "Last led effect '{}' of '{}' has already expired, setting to off" , last_led_effect, self . bt_address) ;
111
+ let off_effect = LedEffect :: off ( ) ;
112
+
113
+ self . led_effect = off_effect;
114
+ self . setting . led = off_effect. kind . get_initial_hsv ( )
115
+ }
116
+ }
117
+
106
118
info ! ( "Reverted '{:?}' to '{}'" , self . bt_address, self . led_effect) ;
107
119
}
108
120
109
121
pub fn set_led_effect ( & mut self , effect : LedEffect ) {
122
+ self . last_led_effect = self . led_effect ;
123
+ self . setting . last_led = self . setting . led ;
124
+
110
125
let mut kind = effect. kind ;
111
126
112
- self . setting . led = kind. get_updated_hsv ( self . setting . led ) ;
113
127
self . led_effect = effect;
128
+ self . setting . led = kind. get_updated_hsv ( self . setting . led ) ;
114
129
}
115
130
116
131
pub fn set_led_effect_with_hsv ( & mut self , effect : LedEffect , hsv : Hsv ) {
@@ -185,20 +200,6 @@ impl PsMoveController {
185
200
}
186
201
187
202
pub fn transform_led ( & mut self ) {
188
- let last_led_effect = & mut self . last_led_effect ;
189
-
190
- if last_led_effect. duration . is_some ( ) {
191
- let duration = last_led_effect. duration . unwrap ( ) ;
192
-
193
- if last_led_effect. start . elapsed ( ) >= duration {
194
- info ! ( "Last led effect '{}' of '{}' expired" , last_led_effect, self . bt_address) ;
195
- let off_effect = LedEffect :: off ( ) ;
196
-
197
- self . last_led_effect = off_effect;
198
- self . setting . last_led = off_effect. kind . get_initial_hsv ( )
199
- }
200
- } ;
201
-
202
203
let led_effect = & mut self . led_effect ;
203
204
let current_hsv = self . setting . led ;
204
205
0 commit comments