mbus_client/services/fifo_queue/request.rs
1//! Modbus FIFO Queue Service Module
2//!
3//! This module provides the necessary structures and logic to handle Modbus operations
4//! related to FIFO Queues (Function Code 0x18).
5//!
6//! It includes functionality for:
7//! - Reading the contents of a remote FIFO queue of registers.
8//! - Parsing response PDUs containing the FIFO count and register values.
9//! - Validating data integrity (byte counts vs register counts).
10//!
11//! This module is designed for `no_std` environments using `heapless` collections.
12//! The maximum number of registers in a single FIFO response is limited to 31 by the protocol.
13
14use mbus_core::{data_unit::common::Pdu, errors::MbusError, function_codes::public::FunctionCode};
15
16/// Provides operations for creating and parsing Modbus FIFO Queue request/response PDUs.
17pub(super) struct ReqPduCompiler {}
18
19impl ReqPduCompiler {
20 /// Creates a Modbus Read FIFO Queue request PDU.
21 pub(super) fn read_fifo_queue_request(address: u16) -> Result<Pdu, MbusError> {
22 Pdu::build_u16_payload(FunctionCode::ReadFifoQueue, address)
23 }
24}