Struct libmodbus_rs::ModbusMapping
[−]
[src]
pub struct ModbusMapping {
pub modbus_mapping: *mut modbus_mapping_t,
}To handle the mapping of your Modbus data, you must use this struct
Fields
modbus_mapping: *mut modbus_mapping_t
Methods
impl ModbusMapping[src]
fn new(
number_bits: i32,
number_input_bits: i32,
number_registers: i32,
number_input_registers: i32
) -> Result<ModbusMapping>[src]
number_bits: i32,
number_input_bits: i32,
number_registers: i32,
number_input_registers: i32
) -> Result<ModbusMapping>
new - allocate four arrays of bits and registers
Return values
The function returns a Result containing the new allocated structure if successful. Otherwise it contains an Error.
Parameters
number_bits- How many bits sould allocatednumber_input_bits- How many bits sould allocatednumber_registers- How many registers sould allocatednumber_input_registers- How many input registers sould allocated
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(500, 500, 500, 500).unwrap();
fn new_start_address(
start_bits: u16,
number_bits: u16,
start_input_bits: u16,
number_input_bits: u16,
start_registers: u16,
number_registers: u16,
start_input_registers: u16,
number_input_registers: u16
) -> Result<ModbusMapping>[src]
start_bits: u16,
number_bits: u16,
start_input_bits: u16,
number_input_bits: u16,
start_registers: u16,
number_registers: u16,
start_input_registers: u16,
number_input_registers: u16
) -> Result<ModbusMapping>
mapping_new_start_address - allocate four arrays of bits and registers accessible from their starting
addresses
The modbus_mapping_new_start_address() function shall allocate four arrays to store bits, input bits, registers and inputs registers. The pointers are stored in modbus_mapping_t structure. All values of the arrays are initialized to zero. The different starting adresses make it possible to place the mapping at any address in each address space. This way, you can give access to values stored at high adresses without allocating memory from the address zero, for eg. to make available registers from 10000 to 10009, you can use: mb_mapping = modbus_mapping_offset_start_address(0, 0, 0, 0, 10000, 10, 0, 0); With this code, only 10 registers (uint16_t) are allocated. If it isn’t necessary to allocate an array for a specific type of data, you can pass the zero value in argument, the associated pointer will be NULL. This function is convenient to handle requests in a Modbus server/slave.
Return value
The function returns a Result containing the new allocated structure if successful. Otherwise it contains an Error.
Parameters
start_bits- start address of bits arraynumber_bits- How many bits sould allocatedstart_input_bits- start address of input bits arraynumber_input_bits- How many bits sould allocatedstart_registers- start address of register arraynumber_registers- How many registers sould allocatedstart_input_registers- start address of input register arraynumber_input_registers- How many input registers sould allocated
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new_start_address(10, 500, 10, 500, 10, 500, 10, 500).unwrap();
fn free(&mut self)[src]
mapping_free - free a modbus_mapping_t structure
The function shall free the four arrays of mb_mapping_t structure and finally the mb_mapping_t referenced by mb_mapping.
It should not nessesary to call these function. Because rusts drop trait handles that for you!
Examples
use libmodbus_rs::ModbusMapping; let mut modbus_mapping = ModbusMapping::new(500, 500, 500, 500).unwrap(); modbus_mapping.free();
fn get_bits(&self) -> &[u8][src]
get_bits - returns a slice constructed from the tab_bits and nb_bits member of the orig. modbus_mapping_t
struct
tab_bits is an pointer, and this function returns a valid Rust slice to work with.
Return value
This function returns an immutable slice of u8's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_bits(), [0u8, 0, 0, 0, 0])
fn get_bits_mut(&self) -> &mut [u8][src]
get_bits_mut - returns a mutable slice constructed from the tab_bits and nb_bits member of the orig.
modbus_mapping_t struct
tab_bits is an pointer, and this function returns a valid, mutable Rust slice to work with.
Return value
This function returns an mutable slice of u8's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_bits_mut(), [0u8, 0, 0, 0, 0])
fn get_input_bits(&self) -> &[u8][src]
get_input_bits - returns a slice constructed from the tab_input_bits and nb_input_bits member of the
orig. modbus_mapping_t struct
tab_input_bits is an pointer, and this function returns a valid Rust slice to work with.
Return value
This function returns an immutable slice of u8's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_input_bits(), [0u8, 0, 0, 0, 0])
fn get_input_bits_mut(&self) -> &mut [u8][src]
get_input_bits_mut - returns a mutable slice constructed from the tab_input_bits and nb_input_bits member
of the orig. modbus_mapping_t struct
tab_bits is an pointer, and this function returns a valid, mutable Rust slice to work with.
Return value
This function returns an mutable slice of u8's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_input_bits_mut(), [0u8, 0, 0, 0, 0])
fn get_input_registers(&self) -> &[u16][src]
get_input_registers - returns a slice constructed from the tab_input_registers and nb_input_registers
member of the orig. modbus_mapping_t struct
tab_input_registers is an pointer, and this function returns a valid Rust slice to work with.
Return value
This function returns an immutable slice of u8's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_input_registers(), [0u16, 0, 0, 0, 0])
fn get_input_registers_mut(&self) -> &mut [u16][src]
get_input_registers_mut - returns a mutable slice constructed from the tab_input_registers and
nb_input_registers member of the orig. modbus_mapping_t struct
tab_input_registers is an pointer, and this function returns a valid, mutable Rust slice to work with.
Return value
This function returns an mutable slice of u16's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_input_registers_mut(), [0u16, 0, 0, 0, 0])
fn get_registers(&self) -> &[u16][src]
get_registers - returns a slice constructed from the tab_registers and nb_registers member of the orig.
modbus_mapping_t struct
tab_registers is an pointer, and this function returns a valid Rust slice to work with.
Return value
This function returns an immutable slice of u8's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_registers(), [0u16, 0, 0, 0, 0])
fn get_registers_mut(&self) -> &mut [u16][src]
get_registers_mut - returns a mutable slice constructed from the tab_registers and nb_registers member of
the orig. modbus_mapping_t struct
tab_registers is an pointer, and this function returns a valid, mutable Rust slice to work with.
Return value
This function returns an mutable slice of u16's
Examples
use libmodbus_rs::{Modbus, ModbusMapping, ModbusTCP}; let modbus = Modbus::new_tcp("127.0.0.1", 1502).unwrap(); let modbus_mapping = ModbusMapping::new(5, 5, 5, 5).unwrap(); assert_eq!(modbus_mapping.get_registers_mut(), [0u16, 0, 0, 0, 0])