30 static_assert(
sizeof(
modbus_header) == 8,
"modbus_header size is not 8 bytes");
174 static std::vector<FieldDescriptor>
all()
178 std::copy(extra.begin(), extra.end(), std::back_inserter(result));
Definition: ModbusLayer.h:35
static bool isDataValid(const uint8_t *data, size_t dataSize)
Definition: ModbusLayer.h:108
void setTransactionId(uint16_t transactionId)
set the MODBUS transaction id
ModbusFunctionCode getFunctionCode() const
size_t getHeaderLen() const override
Get the length of the MODBUS header.
Definition: ModbusLayer.h:149
static bool isModbusPort(uint16_t port)
Check if a port is a valid MODBUS port.
Definition: ModbusLayer.h:99
ModbusLayer(uint16_t transactionId, uint8_t unitId)
void computeCalculateFields() override
Does nothing for this layer.
Definition: ModbusLayer.h:155
OsiModelLayer getOsiModelLayer() const override
Definition: ModbusLayer.h:163
void setUnitId(uint8_t unitId)
set the MODBUS header unit id
ModbusLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: ModbusLayer.h:86
uint8_t getUnitId() const
void setFunctionCode(ModbusFunctionCode functionCode)
set the MODBUS header function code
ModbusFunctionCode
Enum class representing Modbus function codes. This enumeration defines the standard Modbus function ...
Definition: ModbusLayer.h:41
@ WriteSingleHoldingRegister
Write a single holding register (0x06)
@ WriteMultipleHoldingRegisters
Write multiple holding registers (0x10)
@ UnknownFunction
Unknown or unsupported function code (0xFF)
@ ReadSlaveId
Report slave ID (0x11)
@ ReadHoldingRegisters
Read holding registers (0x03)
@ WriteSingleCoil
Write a single coil (0x05)
@ ReadDiscreteInputs
Read discrete input status (0x02)
@ ReadCoils
Read coil status (0x01)
@ ReadInputRegisters
Read input registers (0x04)
@ WriteMultipleCoils
Write multiple coils (0x0F)
uint16_t getTransactionId() const
void parseNextLayer() override
Does nothing for this layer (ModbusLayer is always last)
Definition: ModbusLayer.h:144
uint16_t getLength() const
void serializeLayer(ObjectScope &serializer) const override
uint16_t getProtocolId() const
std::string toString() const override
Definition: Serializers.h:230
const ProtocolType Modbus
Modbus protocol.
Definition: ProtocolType.h:255
The main namespace for the PcapPlusPlus lib.
Definition: AssertionUtils.h:19
OsiModelLayer
An enum representing OSI model layers.
Definition: ProtocolType.h:425
@ OsiModelApplicationLayer
Application layer (layer 7)
Definition: ProtocolType.h:441
Definition: Serializers.h:18
static std::vector< FieldDescriptor > all()
Definition: Layer.h:214
Definition: ModbusLayer.h:172
static std::vector< FieldDescriptor > all()
Definition: ModbusLayer.h:174
static const FieldDescriptor ProtocolID
Field descriptor for the MODBUS protocol ID, written as a number.
Definition: ModbusLayer.h:186
static const FieldDescriptor FunctionCode
Field descriptor for the MODBUS function code, written as a string.
Definition: ModbusLayer.h:192
static const FieldDescriptor UnitID
Field descriptor for the MODBUS unit ID, written as a number.
Definition: ModbusLayer.h:189
static const FieldDescriptor TransactionID
Field descriptor for the MODBUS transaction ID, written as a number.
Definition: ModbusLayer.h:183