use crate::request::{
DiagnosticsRequest, EncapsulatedInterfaceRequest, MaskWriteRegisterRequest, ReadCoilsRequest,
ReadDiscreteInputsRequest, ReadFifoQueueRequest, ReadFileRecordRequest,
ReadHoldingRegistersRequest, ReadInputRegistersRequest, ReadWriteMultipleRegistersRequest,
WriteFileRecordRequest, WriteMultipleCoilsRequest, WriteMultipleRegistersRequest,
WriteSingleCoilRequest, WriteSingleRegisterRequest,
};
use crate::response::{
DiagnosticsResponse, EncapsulatedInterfaceResponse, ExceptionResponse,
GetCommEventCounterResponse, GetCommEventLogResponse, MaskWriteRegisterResponse,
ReadCoilsResponse, ReadDiscreteInputsResponse, ReadExceptionStatusResponse,
ReadFifoQueueResponse, ReadFileRecordResponse, ReadHoldingRegistersResponse,
ReadInputRegistersResponse, ReadWriteMultipleRegistersResponse, ReportServerIdResponse,
WriteFileRecordResponse, WriteMultipleCoilsResponse, WriteMultipleRegistersResponse,
WriteSingleCoilResponse, WriteSingleRegisterResponse,
};
#[derive(Debug, Clone, Copy)]
pub struct PduRef<'buf> {
pub function_code: u8,
pub data: &'buf [u8],
}
#[derive(Debug)]
pub enum RequestPdu<'buf> {
ReadCoils(ReadCoilsRequest),
ReadDiscreteInputs(ReadDiscreteInputsRequest),
ReadHoldingRegisters(ReadHoldingRegistersRequest),
ReadInputRegisters(ReadInputRegistersRequest),
WriteSingleCoil(WriteSingleCoilRequest),
WriteSingleRegister(WriteSingleRegisterRequest),
ReadExceptionStatus,
Diagnostics(DiagnosticsRequest<'buf>),
GetCommEventCounter,
GetCommEventLog,
WriteMultipleCoils(WriteMultipleCoilsRequest<'buf>),
WriteMultipleRegisters(WriteMultipleRegistersRequest<'buf>),
ReportServerId,
ReadFileRecord(ReadFileRecordRequest<'buf>),
WriteFileRecord(WriteFileRecordRequest<'buf>),
MaskWriteRegister(MaskWriteRegisterRequest),
ReadWriteMultipleRegisters(ReadWriteMultipleRegistersRequest<'buf>),
ReadFifoQueue(ReadFifoQueueRequest),
EncapsulatedInterface(EncapsulatedInterfaceRequest<'buf>),
Custom(u8, &'buf [u8]),
}
#[derive(Debug)]
pub enum ResponsePdu<'buf> {
ReadCoils(ReadCoilsResponse<'buf>),
ReadDiscreteInputs(ReadDiscreteInputsResponse<'buf>),
ReadHoldingRegisters(ReadHoldingRegistersResponse<'buf>),
ReadInputRegisters(ReadInputRegistersResponse<'buf>),
WriteSingleCoil(WriteSingleCoilResponse),
WriteSingleRegister(WriteSingleRegisterResponse),
ReadExceptionStatus(ReadExceptionStatusResponse),
Diagnostics(DiagnosticsResponse<'buf>),
GetCommEventCounter(GetCommEventCounterResponse),
GetCommEventLog(GetCommEventLogResponse<'buf>),
WriteMultipleCoils(WriteMultipleCoilsResponse),
WriteMultipleRegisters(WriteMultipleRegistersResponse),
ReportServerId(ReportServerIdResponse<'buf>),
ReadFileRecord(ReadFileRecordResponse<'buf>),
WriteFileRecord(WriteFileRecordResponse<'buf>),
MaskWriteRegister(MaskWriteRegisterResponse),
ReadWriteMultipleRegisters(ReadWriteMultipleRegistersResponse<'buf>),
ReadFifoQueue(ReadFifoQueueResponse<'buf>),
EncapsulatedInterface(EncapsulatedInterfaceResponse<'buf>),
Custom(u8, &'buf [u8]),
Exception(ExceptionResponse),
}