SerialTransport

Struct SerialTransport 

Source
pub struct SerialTransport { /* private fields */ }
Expand description

Serial port transport for USB CDC ACM and Bluetooth SPP connections.

Port naming by platform:

  • Linux: /dev/ttyACM* (USB), /dev/rfcomm* (BT)
  • macOS: /dev/cu.usbmodem* (USB), /dev/cu.TH-D75 (BT)
  • Windows: COM* for both

Implementations§

Source§

impl SerialTransport

Source

pub const DEFAULT_BAUD: u32 = 115_200

Default baud rate for USB CDC ACM.

Source

pub const USB_VID: u16 = 0x2166

USB Vendor ID (VID) for JVCKENWOOD Corporation.

Source

pub const USB_PID: u16 = 0x9023

USB Product ID (PID) for the TH-D75 transceiver.

Source

pub fn is_bluetooth_port(path: &str) -> bool

Returns true if the port path looks like a Bluetooth SPP device.

Source

pub fn open(path: &str, baud: u32) -> Result<Self, TransportError>

Open a serial port by path.

Bluetooth SPP ports are auto-detected by name and configured with 9600 baud and RTS/CTS flow control. USB ports use the provided baud rate with no flow control.

§Errors

Returns TransportError::Open if the port cannot be opened.

Source

pub fn discover_usb() -> Result<Vec<SerialPortInfo>, TransportError>

Discover TH-D75 radios connected via USB.

Filters available serial ports by VID:PID 2166:9023.

§Errors

Returns TransportError::Open if port enumeration fails.

Source

pub fn discover_bluetooth() -> Result<Vec<SerialPortInfo>, TransportError>

Discover TH-D75 radios available via Bluetooth SPP.

Looks for serial ports matching known BT naming patterns.

§Errors

Returns TransportError::Open if port enumeration fails.

Trait Implementations§

Source§

impl Debug for SerialTransport

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Transport for SerialTransport

Source§

fn set_baud_rate(&mut self, baud: u32) -> Result<(), TransportError>

Change the transport baud rate. Read more
Source§

async fn write(&mut self, data: &[u8]) -> Result<(), TransportError>

Send raw bytes to the radio.
Source§

async fn read(&mut self, buf: &mut [u8]) -> Result<usize, TransportError>

Read available bytes into buffer, return count of bytes read.
Source§

async fn close(&mut self) -> Result<(), TransportError>

Close the connection.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more