@@ -154,41 +154,64 @@ pub enum Orientation {
154154
155155#[ derive( Clone , Debug , Serialize , Deserialize , PartialEq ) ]
156156pub struct RecoveryOutputSettings {
157- /// time to enable recovery outputs (after warning tone, ms)
158- pub output_high_time : u32 ,
159- /// time delay between recovery output pulses (ms)
160- pub output_low_time : u32 ,
157+ /// Duration for each pulse.
158+ pub pulse_high_duration : u32 ,
159+ /// Time delay between recovery output pulses (ms)
160+ pub pause_duration : u32 ,
161161 /// number of recovery output pulses
162162 pub num_pulses : u32 ,
163163 // TODO: unused for actual sound duration
164- /// duration of warning tone to play before enabling outputs (ms)
165- pub output_warning_time : u32 ,
164+ /// Duration of warning tone to play before enabling outputs (ms)
165+ pub forewarning_duration : u32 ,
166166 /// Warning sound frequency
167167 pub output_warning_frequency : f32 ,
168168}
169169
170+ // FIXME: fix/remove this
170171impl RecoveryOutputSettings {
171172 pub fn total_duration ( & self ) -> u32 {
172- self . output_warning_time
173- + self . num_pulses * self . output_high_time
174- + ( self . num_pulses - 1 ) * self . output_low_time
173+ self . forewarning_duration
174+ + self . num_pulses * self . pulse_high_duration
175+ + ( self . num_pulses - 1 ) * self . pause_duration
175176 }
176177
177178 pub fn currently_high ( & self , time_in_mode : u32 ) -> bool {
178- let phase_duration = self . output_high_time + self . output_low_time ;
179- time_in_mode > self . output_warning_time
179+ let phase_duration = self . pulse_high_duration + self . pause_duration ;
180+ time_in_mode > self . forewarning_duration
180181 && time_in_mode < self . total_duration ( )
181- && ( time_in_mode - self . output_warning_time ) % phase_duration < self . output_high_time
182+ && ( time_in_mode - self . forewarning_duration ) % phase_duration < self . pulse_high_duration
182183 }
183184}
184-
185+ /*
185186impl Default for RecoveryOutputSettings {
186187 fn default() -> Self {
187188 Self {
188- output_high_time : 500 ,
189- output_low_time : 0 ,
189+ pulse_high_duration : 500,
190+ pause_duration : 0,
190191 num_pulses: 1,
191- output_warning_time : 500 ,
192+ forewarning_duration: 500,
193+ output_warning_frequency: 500.0,
194+ }
195+ }
196+ }
197+
198+ */
199+ impl RecoveryOutputSettings {
200+ fn default_main ( ) -> Self {
201+ Self {
202+ pulse_high_duration : 200 ,
203+ pause_duration : 500 ,
204+ num_pulses : 2 ,
205+ forewarning_duration : 500 ,
206+ output_warning_frequency : 500.0 ,
207+ }
208+ }
209+ fn default_parabreaks ( ) -> Self {
210+ Self {
211+ pulse_high_duration : 16_000 ,
212+ pause_duration : 0 ,
213+ num_pulses : 1 ,
214+ forewarning_duration : 500 ,
192215 output_warning_frequency : 500.0 ,
193216 }
194217 }
@@ -312,19 +335,8 @@ impl Default for Settings {
312335 apogee_min_falling_time : 100 ,
313336 main_output_mode : MainOutputMode :: default ( ) ,
314337 main_output_deployment_altitude : 450.0 ,
315- drogue_output_settings : RecoveryOutputSettings {
316- output_high_time : 300 ,
317- output_low_time : 200 ,
318- num_pulses : 3 ,
319- output_warning_time : 200 ,
320- ..Default :: default ( )
321- } ,
322- main_output_settings : RecoveryOutputSettings {
323- output_high_time : 200 ,
324- output_low_time : 500 ,
325- num_pulses : 3 ,
326- ..Default :: default ( )
327- } ,
338+ drogue_output_settings : RecoveryOutputSettings :: default_parabreaks ( ) ,
339+ main_output_settings : RecoveryOutputSettings :: default_main ( ) ,
328340 lora : LoRaSettings :: default ( ) ,
329341 lora_downlink_settings : LoraLinkSettings :: default_downlink ( ) ,
330342 lora_uplink_settings : LoraLinkSettings :: default_uplink ( ) ,
0 commit comments