@@ -86,19 +86,35 @@ private async Task OnVRMonitorConnected()
8686 }
8787
8888 var managedDevices = _lighthouseSettingsService . Devices . Where ( d => d . IsManaged ) . ToArray ( ) ;
89+ var tasks = new List < Func < Task > > ( ) ;
8990 foreach ( var d in managedDevices )
90- {
91- Log . Information ( $ "Power On { d . Name } ") ;
92- try
91+ {
92+ tasks . Add ( async ( ) =>
9393 {
94- await _lighthouseGattService . PowerOnAsync ( d ) ;
95- Log . Information ( $ "Done { d . Name } ") ;
96- }
97- catch ( Exception e )
94+ Log . Information ( $ "Power On { d . Name } ") ;
95+ try
96+ {
97+ await _lighthouseGattService . PowerOnAsync ( d ) ;
98+ Log . Information ( $ "Done { d . Name } ") ;
99+ }
100+ catch ( Exception e )
101+ {
102+ Log . Error ( e , $ "Failed to power on { d . Name } ") ;
103+ }
104+ } ) ;
105+ }
106+
107+ if ( _lighthouseSettingsService . SendSimultaneously )
108+ {
109+ await Task . WhenAll ( tasks . Select ( t => t ( ) ) ) ;
110+ }
111+ else
112+ {
113+ foreach ( var task in tasks )
98114 {
99- Log . Error ( e , $ "Failed to power on { d . Name } ") ;
115+ await task ( ) ;
116+ await Task . Delay ( 200 ) ;
100117 }
101- await Task . Delay ( 200 ) ;
102118 }
103119
104120 Log . Information ( "OnVRMonitorConnected Done" ) ;
@@ -119,40 +135,56 @@ private async Task OnVRSystemQuit()
119135 }
120136
121137 var managedDevices = _lighthouseSettingsService . Devices . Where ( d => d . IsManaged ) . ToArray ( ) ;
138+ var tasks = new List < Func < Task > > ( ) ;
122139 foreach ( var d in managedDevices )
123140 {
124- var powerDownMode = _lighthouseSettingsService . PowerDownMode ;
125- if ( powerDownMode == PowerDownMode . Sleep || d . Version == LighthouseVersion . V1 )
141+ tasks . Add ( async ( ) =>
126142 {
127- Log . Information ( $ "Sleep { d . Name } ") ;
128- try
129- {
130- await _lighthouseGattService . SleepAsync ( d ) ;
131- Log . Information ( $ "Done { d . Name } ") ;
132- }
133- catch ( Exception e )
143+ var powerDownMode = _lighthouseSettingsService . PowerDownMode ;
144+ if ( powerDownMode == PowerDownMode . Sleep || d . Version == LighthouseVersion . V1 )
134145 {
135- Log . Error ( e , $ "Failed to sleep { d . Name } ") ;
146+ Log . Information ( $ "Sleep { d . Name } ") ;
147+ try
148+ {
149+ await _lighthouseGattService . SleepAsync ( d ) ;
150+ Log . Information ( $ "Done { d . Name } ") ;
151+ }
152+ catch ( Exception e )
153+ {
154+ Log . Error ( e , $ "Failed to sleep { d . Name } ") ;
155+ }
136156 }
137- }
138- else if ( powerDownMode == PowerDownMode . Standby )
139- {
140- Log . Information ( $ "Standby { d . Name } ") ;
141- try
157+ else if ( powerDownMode == PowerDownMode . Standby )
142158 {
143- await _lighthouseGattService . StandbyAsync ( d ) ;
144- Log . Information ( $ "Done { d . Name } ") ;
159+ Log . Information ( $ "Standby { d . Name } ") ;
160+ try
161+ {
162+ await _lighthouseGattService . StandbyAsync ( d ) ;
163+ Log . Information ( $ "Done { d . Name } ") ;
164+ }
165+ catch ( Exception e )
166+ {
167+ Log . Error ( e , $ "Failed to standby { d . Name } ") ;
168+ }
145169 }
146- catch ( Exception e )
170+ else
147171 {
148- Log . Error ( e , $ "Failed to standby { d . Name } ") ;
172+ throw new InvalidProgramException ( "Unknown PowerDownMode ") ;
149173 }
150- }
151- else
174+ } ) ;
175+ }
176+
177+ if ( _lighthouseSettingsService . SendSimultaneously )
178+ {
179+ await Task . WhenAll ( tasks . Select ( t => t ( ) ) ) ;
180+ }
181+ else
182+ {
183+ foreach ( var task in tasks )
152184 {
153- throw new InvalidProgramException ( "Unknown PowerDownMode" ) ;
185+ await task ( ) ;
186+ await Task . Delay ( 200 ) ;
154187 }
155- await Task . Delay ( 200 ) ;
156188 }
157189
158190 await _scanCommand . StopScan ( ) ;
0 commit comments