rsiot/components_config/uart_general/
calculate_transmission_time.rs

1use std::time::Duration;
2
3/// Расчет скорости передачи с учетом служебных битов
4pub 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
20/// Расчет времени передачи определенного количества байт
21pub 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}