rsiot/components_config/uart_general/
calculate_transmission_time.rs1use std::time::Duration;
2
3pub fn data_rate(
5 baudrate: &super::Baudrate,
6 data_bits: &super::DataBits,
7 parity: &super::Parity,
8 stop_bits: &super::StopBits,
9) -> f64 {
10 let start_bits: f64 = 1.0;
11 let data_bits: f64 = data_bits.clone().into();
12 let parity: f64 = parity.clone().into();
13 let stop_bits: f64 = stop_bits.clone().into();
14
15 let baudrate: f64 = baudrate.clone().into();
16
17 baudrate * data_bits / (start_bits + data_bits + parity + stop_bits)
18}
19
20pub fn calculate_transmission_time(data_rate: f64, bytes: usize, reserve: Duration) -> Duration {
22 Duration::from_secs_f64(bytes as f64 * 8.0 / data_rate) + reserve
23}