]>
code.octet-stream.net Git - m17rt/blob - m17app/src/serial.rs
1 use serialport
::SerialPort
;
3 use crate::{error
::SoundmodemError
, soundmodem
::Ptt
};
5 /// The pin on the serial port which is driving PTT
9 // Data Terminal ready (DTR)
13 pub struct SerialPtt
{
14 port
: Box
<dyn SerialPort
>,
19 pub fn available_ports() -> impl Iterator
<Item
= String
> {
20 serialport
::available_ports()
21 .unwrap
_or
_else
(|_
| vec
![])
26 pub fn new(port_name
: &str, pin
: PttPin
) -> Result
<Self, SoundmodemError
> {
27 let port
= serialport
::new(port_name
, 9600).open()?
;
28 let mut s
= Self { port
, pin
};
34 impl Ptt
for SerialPtt
{
35 fn ptt_on(&mut self) -> Result
<(), SoundmodemError
> {
37 PttPin
::Rts
=> self.port
.write_request_to_send(true),
38 PttPin
::Dtr
=> self.port
.write_data_terminal_ready(true),
42 fn ptt_off(&mut self) -> Result
<(), SoundmodemError
> {
44 PttPin
::Rts
=> self.port
.write_request_to_send(false),
45 PttPin
::Dtr
=> self.port
.write_data_terminal_ready(false),