Skip to main content

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}