SlaveId

Struct SlaveId 

Source
pub struct SlaveId(/* private fields */);
Expand description

A u8 wrapper type to represent slave ids

Implementations§

Source§

impl SlaveId

Source

pub const fn new(id: u8) -> Self

Source

pub const fn new_default_tcp() -> Self

The default TCP slave id is 255 decimal or 0xFF hex.

Addressing in TCP is normally done through the ip address so the slave id just set to 0xFF. In many cases this rule is ignored and a certain slave address is expected. See https://modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf espacially page 23 for more details.

Source

pub const fn new_broadcast() -> Self

Creates a new broadcast slave id. The broadcast id is 0 and every slave device MUST react to it.

Source

pub const fn is_device(self) -> bool

Check if this id is for a normal device. Only false if this is a reserved function code (> 248) or broadcast (0)

Source

pub const fn is_reserved(self) -> bool

Checks if this function is any reserved slave address other than broadcast. (id > 248)

Source

pub const fn is_broadcast(self) -> bool

Checks if this is a broadcast slave id. The broadcast id is 0 and every slave device MUST react to it.

Source

pub const fn is_default_tcp(self) -> bool

Checks if this is the default TCP slave id (0xFF)

Source

pub const fn must_react(self, other: SlaveId) -> bool

Checks if a device with this slave id has to react to the given slave id other

Source

pub fn from_data(data: &[u8]) -> (Option<Self>, Option<&[u8]>)

Gets the slave id of the given modbus data.

None is returned if data contains less than 1 byte

Source

pub unsafe fn from_data_unchecked(data: &[u8]) -> (Self, &[u8])

Gets the slave id of the given modbus data.

§Safety

Providing data with less than one byte is undefined behavior

Trait Implementations§

Source§

impl Clone for SlaveId

Source§

fn clone(&self) -> SlaveId

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SlaveId

Source§

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

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

impl Default for SlaveId

Source§

fn default() -> SlaveId

Returns the “default value” for a type. Read more
Source§

impl From<u8> for SlaveId

Source§

fn from(sid: u8) -> Self

Converts to this type from the input type.
Source§

impl Hash for SlaveId

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Into<u8> for SlaveId

Source§

fn into(self) -> u8

Converts this type into the (usually inferred) input type.
Source§

impl Ord for SlaveId

Source§

fn cmp(&self, other: &SlaveId) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for SlaveId

Source§

fn eq(&self, other: &SlaveId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for SlaveId

Source§

fn partial_cmp(&self, other: &SlaveId) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for SlaveId

Source§

impl Eq for SlaveId

Source§

impl StructuralPartialEq for SlaveId

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.