rsiot::components_config::master_device

Struct DeviceBase

Source
pub struct DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TFieldbusRequest: RequestResponseBound<TAddress>, TAddress: AddressBound,
{ pub address: TAddress, pub fn_init_requests: fn() -> Vec<TFieldbusRequest>, pub periodic_requests: Vec<ConfigPeriodicRequest<TFieldbusRequest, TBuffer>>, pub fn_msgs_to_buffer: fn(_: &Message<TMsg>, _: &mut TBuffer), pub fn_buffer_to_request: fn(_: &TBuffer) -> Vec<TFieldbusRequest>, pub fn_response_to_buffer: fn(_: TFieldbusResponse, _: &mut TBuffer), pub fn_buffer_to_msgs: fn(_: &TBuffer) -> Vec<Message<TMsg>>, pub buffer_default: TBuffer, }
Expand description

Базовое устройство для опроса по шине

Fields§

§address: TAddress

Адрес

§fn_init_requests: fn() -> Vec<TFieldbusRequest>

Запросы при инициализации устройства

§periodic_requests: Vec<ConfigPeriodicRequest<TFieldbusRequest, TBuffer>>

Периодические запросы

§fn_msgs_to_buffer: fn(_: &Message<TMsg>, _: &mut TBuffer)

Обновление буфера на основе входящих сообщений

Обычно соответствует параметру fn_input конфигурации устройства

§Пример

let msgs = [Custom::AllInputs(buffer.all_inputs)];
let msgs = msgs.iter().map(|m| Message::new_custom(*m)).collect();
msgs
§fn_buffer_to_request: fn(_: &TBuffer) -> Vec<TFieldbusRequest>

Преобразование данных из буфера в массив запросов на шине

§fn_response_to_buffer: fn(_: TFieldbusResponse, _: &mut TBuffer)

Обновление буфера на основе данных, полученных с устройства

§fn_buffer_to_msgs: fn(_: &TBuffer) -> Vec<Message<TMsg>>

Функция создания сообщений на основе буфера

Обычно соответствует параметру fn_output кофигурации устройства

Пример:

|buffer| {vec![]}
§buffer_default: TBuffer

Значения в буфере при инициализации

Implementations§

Source§

impl<TMsg, TRequest, TResponse, TBuffer, TAddress> DeviceBase<TMsg, TRequest, TResponse, TBuffer, TAddress>
where TRequest: 'static + RequestResponseBound<TAddress>, TResponse: 'static + RequestResponseBound<TAddress>, TMsg: MsgDataBound + 'static, TBuffer: 'static + BufferBound, TAddress: 'static + AddressBound,

Source

pub async fn spawn( self, ch_rx_msgbus_to_device: Receiver<Message<TMsg>>, ch_tx_device_to_fieldbus: Sender<TRequest>, ch_rx_fieldbus_to_device: Receiver<TResponse>, ch_tx_device_to_msgbus: Sender<Message<TMsg>>, ) -> Result<()>

Запустить работу

Trait Implementations§

Source§

impl<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress> Default for DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TFieldbusRequest: RequestResponseBound<TAddress>, TBuffer: Default, TAddress: AddressBound,

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress> Freeze for DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TAddress: Freeze, TBuffer: Freeze,

§

impl<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress> RefUnwindSafe for DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TAddress: RefUnwindSafe, TBuffer: RefUnwindSafe,

§

impl<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress> Send for DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TBuffer: Send,

§

impl<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress> Sync for DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TBuffer: Sync,

§

impl<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress> Unpin for DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TAddress: Unpin, TBuffer: Unpin,

§

impl<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress> UnwindSafe for DeviceBase<TMsg, TFieldbusRequest, TFieldbusResponse, TBuffer, TAddress>
where TAddress: UnwindSafe, TBuffer: UnwindSafe,

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
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T