#[cfg(feature = "coils")]
use mbus_core::models::coil::Coils;
#[cfg(feature = "diagnostics")]
use mbus_core::models::diagnostic::DeviceIdentificationResponse;
#[cfg(feature = "discrete-inputs")]
use mbus_core::models::discrete_input::DiscreteInputs;
#[cfg(feature = "fifo")]
use mbus_core::models::fifo_queue::FifoQueue;
#[cfg(feature = "file-record")]
use mbus_core::models::file_record::SubRequestParams;
#[cfg(feature = "holding-registers")]
use mbus_core::models::register::HoldingRegisters;
#[cfg(feature = "input-registers")]
use mbus_core::models::register::InputRegisters;
#[cfg(feature = "diagnostics")]
use mbus_core::function_codes::public::{DiagnosticSubFunction, EncapsulatedInterfaceType};
#[cfg(feature = "diagnostics")]
use mbus_core::data_unit::common::MAX_PDU_DATA_LEN;
#[cfg(feature = "file-record")]
use mbus_core::models::file_record::MAX_SUB_REQUESTS_PER_PDU;
#[allow(clippy::large_enum_variant)]
#[derive(Debug)]
pub(crate) enum ClientResponse {
#[cfg(feature = "coils")]
Coils(Coils),
#[cfg(feature = "holding-registers")]
HoldingRegisters(HoldingRegisters),
#[cfg(feature = "input-registers")]
InputRegisters(InputRegisters),
#[cfg(feature = "holding-registers")]
SingleRegisterWrite {
address: u16,
value: u16,
},
#[cfg(feature = "holding-registers")]
MaskWriteRegister,
#[cfg(feature = "discrete-inputs")]
DiscreteInputs(DiscreteInputs),
#[cfg(feature = "fifo")]
FifoQueue(FifoQueue),
#[cfg(feature = "file-record")]
FileRecordRead(heapless::Vec<SubRequestParams, MAX_SUB_REQUESTS_PER_PDU>),
#[cfg(feature = "file-record")]
FileRecordWrite,
#[cfg(feature = "diagnostics")]
DeviceIdentification(DeviceIdentificationResponse),
#[cfg(feature = "diagnostics")]
EncapsulatedInterfaceTransport {
mei_type: EncapsulatedInterfaceType,
data: heapless::Vec<u8, MAX_PDU_DATA_LEN>,
},
#[cfg(feature = "diagnostics")]
ExceptionStatus(u8),
#[cfg(feature = "diagnostics")]
DiagnosticsData {
sub_function: DiagnosticSubFunction,
data: heapless::Vec<u16, MAX_PDU_DATA_LEN>,
},
#[cfg(feature = "diagnostics")]
CommEventCounter {
status: u16,
event_count: u16,
},
#[cfg(feature = "diagnostics")]
CommEventLog {
status: u16,
event_count: u16,
message_count: u16,
events: heapless::Vec<u8, MAX_PDU_DATA_LEN>,
},
#[cfg(feature = "diagnostics")]
ReportServerId(heapless::Vec<u8, MAX_PDU_DATA_LEN>),
}