pub struct InMemoryModbusService { /* private fields */ }Expand description
Thread-safe in-memory Modbus device simulator.
Implements ModbusService with support for all standard function codes
(FC01–FC08, FC15–FC16, FC22–FC24) plus FC17 (Report Server ID) and
FC43/0x0E (Read Device Identification).
Useful for testing client code without physical hardware.
Implementations§
Source§impl InMemoryModbusService
impl InMemoryModbusService
Sourcepub fn new(
coil_count: usize,
discrete_input_count: usize,
holding_register_count: usize,
input_register_count: usize,
) -> Self
pub fn new( coil_count: usize, discrete_input_count: usize, holding_register_count: usize, input_register_count: usize, ) -> Self
Create a new simulator with the given address space sizes.
Sourcepub fn with_model(model: InMemoryPointModel) -> Self
pub fn with_model(model: InMemoryPointModel) -> Self
Create a simulator from an existing InMemoryPointModel.
Sourcepub fn snapshot(&self) -> Result<InMemoryPointModel, ServiceError>
pub fn snapshot(&self) -> Result<InMemoryPointModel, ServiceError>
Clone the current state of all address spaces.
Sourcepub fn set_coil(&self, address: u16, value: bool) -> Result<(), ServiceError>
pub fn set_coil(&self, address: u16, value: bool) -> Result<(), ServiceError>
Set a coil value at the given address.
Sourcepub fn set_discrete_input(
&self,
address: u16,
value: bool,
) -> Result<(), ServiceError>
pub fn set_discrete_input( &self, address: u16, value: bool, ) -> Result<(), ServiceError>
Set a discrete input value at the given address.
Sourcepub fn set_holding_register(
&self,
address: u16,
value: u16,
) -> Result<(), ServiceError>
pub fn set_holding_register( &self, address: u16, value: u16, ) -> Result<(), ServiceError>
Set a holding register value at the given address.
Sourcepub fn set_input_register(
&self,
address: u16,
value: u16,
) -> Result<(), ServiceError>
pub fn set_input_register( &self, address: u16, value: u16, ) -> Result<(), ServiceError>
Set an input register value at the given address.
Sourcepub fn coil(&self, address: u16) -> Result<Option<bool>, ServiceError>
pub fn coil(&self, address: u16) -> Result<Option<bool>, ServiceError>
Read a coil value at the given address.
Sourcepub fn holding_register(
&self,
address: u16,
) -> Result<Option<u16>, ServiceError>
pub fn holding_register( &self, address: u16, ) -> Result<Option<u16>, ServiceError>
Read a holding register value at the given address.
Trait Implementations§
Source§impl Debug for InMemoryModbusService
impl Debug for InMemoryModbusService
Source§impl ModbusService for InMemoryModbusService
impl ModbusService for InMemoryModbusService
Source§fn handle(
&self,
unit_id: UnitId,
request: DecodedRequest<'_>,
response_pdu: &mut [u8],
) -> Result<usize, ServiceError>
fn handle( &self, unit_id: UnitId, request: DecodedRequest<'_>, response_pdu: &mut [u8], ) -> Result<usize, ServiceError>
Handle a decoded request and write a response PDU into
response_pdu. Read moreAuto Trait Implementations§
impl !Freeze for InMemoryModbusService
impl RefUnwindSafe for InMemoryModbusService
impl Send for InMemoryModbusService
impl Sync for InMemoryModbusService
impl Unpin for InMemoryModbusService
impl UnsafeUnpin for InMemoryModbusService
impl UnwindSafe for InMemoryModbusService
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more