PcapPlusPlus  Next
pcpp::GvcpDiscoveryAcknowledgeLayer Class Reference

#include <GvcpLayer.h>

Inheritance diagram for pcpp::GvcpDiscoveryAcknowledgeLayer:
pcpp::GvcpAcknowledgeLayer pcpp::GvcpLayer pcpp::Layer pcpp::IDataContainer

Classes

struct  GvcpVersion
 
struct  SerializedFields
 

Public Member Functions

 GvcpDiscoveryAcknowledgeLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
 GvcpDiscoveryAcknowledgeLayer (GvcpResponseStatus status=GvcpResponseStatus::Success, uint16_t ackId=0)
 
GvcpVersion getVersion () const
 
void setVersion (const GvcpVersion &version)
 
MacAddress getMacAddress () const
 
void setMacAddress (const MacAddress &macAddress)
 
IPv4Address getIpAddress () const
 
void setIpAddress (const IPv4Address &ipAddress)
 
IPv4Address getSubnetMask () const
 
void setSubnetMask (const IPv4Address &subnetMask)
 
IPv4Address getGatewayIpAddress () const
 
void setGatewayIpAddress (const IPv4Address &gatewayIpAddress)
 
std::string getManufacturerName () const
 
void setManufacturerName (const std::string &manufacturerName)
 
std::string getModelName () const
 
void setModelName (const std::string &modelName)
 
std::string getDeviceVersion () const
 
void setDeviceVersion (const std::string &deviceVersion)
 
std::string getManufacturerSpecificInformation () const
 
void setManufacturerSpecificInformation (const std::string &info)
 
std::string getSerialNumber () const
 
void setSerialNumber (const std::string &serialNumber)
 
std::string getUserDefinedName () const
 
void setUserDefinedName (const std::string &userDefinedName)
 
size_t getHeaderLen () const override
 
- Public Member Functions inherited from pcpp::GvcpAcknowledgeLayer
 GvcpAcknowledgeLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
 GvcpAcknowledgeLayer (GvcpResponseStatus status, GvcpCommand command, uint16_t ackId=0)
 
GvcpResponseStatus getStatus () const
 
void setStatus (GvcpResponseStatus status)
 
uint16_t getAckId () const
 
void setAckId (uint16_t ackId)
 
GvcpCommand getCommand () const override
 
uint16_t getDataSize () const override
 
void computeCalculateFields () override
 Calculate the data size field in the header according to the size of the data that follows the header.
 
std::string toString () const override
 
- Public Member Functions inherited from pcpp::GvcpLayer
void parseNextLayer () override
 Creates a PayloadLayer from the rest of the message, if there is data after this layer.
 
OsiModelLayer getOsiModelLayer () const override
 
- Public Member Functions inherited from pcpp::Layer
 ~Layer () override
 
Layer * getNextLayer () const
 
Layer * getPrevLayer () const
 
ProtocolType getProtocol () const
 
bool isMemberOfProtocolFamily (ProtocolTypeFamily protocolTypeFamily) const
 
uint8_t * getData () const
 
size_t getDataLen () const
 
uint8_t * getLayerPayload () const
 
size_t getLayerPayloadSize () const
 
bool isAllocatedToPacket () const
 
void copyData (uint8_t *toArr) const
 Copy the raw data of this layer to another array. More...
 
size_t copyData (uint8_t *dest, size_t destSize) const
 Copy the raw data of this layer to another array, with a specified maximum size. More...
 
void serialize (ISerializer &serializer) const
 
uint8_t * getDataPtr (size_t offset=0) const override
 

Static Public Member Functions

static bool isDataValid (const uint8_t *data, size_t dataLen)
 
- Static Public Member Functions inherited from pcpp::GvcpAcknowledgeLayer
static bool isDataValid (const uint8_t *data, size_t dataLen)
 
- Static Public Member Functions inherited from pcpp::GvcpLayer
static bool isGvcpPort (uint16_t port)
 
static GvcpLayer * parseGvcpLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 

Protected Member Functions

void serializeLayer (ObjectScope &serializer) const override
 
- Protected Member Functions inherited from pcpp::GvcpAcknowledgeLayer
 GvcpAcknowledgeLayer (GvcpResponseStatus status, GvcpCommand command, uint16_t ackId, size_t bodyLen)
 
- Protected Member Functions inherited from pcpp::GvcpLayer
void initLayer (size_t dataLen)
 
- Protected Member Functions inherited from pcpp::Layer
Packet * getAttachedPacket ()
 Get a pointer to the Packet this layer is attached to (if any). More...
 
Packet const * getAttachedPacket () const
 Get a pointer to the Packet this layer is attached to (if any). More...
 
void allocData (size_t dataLen, bool zeroInit=true)
 Requests the layer to allocate a new data buffer of the specified length. More...
 
template<typename T , typename... Args>
Layer * constructNextLayer (uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Construct the next layer in the protocol stack. No validation is performed on the data. More...
 
template<typename T , typename... Args>
Layer * constructNextLayer (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 
template<typename TFactory , typename... Args>
Layer * constructNextLayerFromFactory (TFactory factoryFn, uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Construct the next layer in the protocol stack using a factory functor. More...
 
template<typename TFactory , typename... Args>
Layer * constructNextLayerFromFactory (TFactory factoryFn, uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 Construct the next layer in the protocol stack using a factory functor. More...
 
template<typename T , typename... Args>
Layer * tryConstructNextLayer (uint8_t *data, size_t dataLen, Args &&... extraArgs)
 
template<typename T , typename... Args>
Layer * tryConstructNextLayer (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 
template<typename T , typename TFallback , typename... Args>
Layer * tryConstructNextLayerWithFallback (uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Try to construct the next layer in the protocol stack with a fallback option. More...
 
template<typename T , typename TFallback , typename... Args>
Layer * tryConstructNextLayerWithFallback (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 
template<typename TFallback , typename TFactory , typename... Args>
Layer * tryConstructNextLayerFromFactoryWithFallback (TFactory factoryFn, uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Try to construct the next layer in the protocol stack using a factory functor with a fallback option. More...
 
template<typename TFallback , typename TFactory , typename... Args>
Layer * tryConstructNextLayerFromFactoryWithFallback (TFactory factoryFn, uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 Try to construct the next layer in the protocol stack using a factory functor with a fallback option. More...
 

Additional Inherited Members

- Public Types inherited from pcpp::GvcpAcknowledgeLayer
enum class  GvcpResponseStatus : uint16_t {
  Success = 0x0000 , PacketResend = 0x0100 , NotImplemented = 0x8001 , InvalidParameter = 0x8002 ,
  InvalidAddress = 0x8003 , WriteProtect = 0x8004 , BadAlignment = 0x8005 , AccessDenied = 0x8006 ,
  Busy = 0x8007 , LocalProblem = 0x8008 , MsgMismatch = 0x8009 , InvalidProtocol = 0x800A ,
  NoMsg = 0x800B , PacketUnavailable = 0x800C , DataOverrun = 0x800D , InvalidHeader = 0x800E ,
  WrongConfig = 0x800F , PacketNotYetAvailable = 0x8010 , PacketAndPrevRemovedFromMemory = 0x8011 , PacketRemovedFromMemory = 0x8012 ,
  NoRefTime = 0x8013 , PacketTemporarilyUnavailable = 0x8014 , Overflow = 0x8015 , ActionLate = 0x8016 ,
  LeaderTrailerOverflow = 0x8017 , Error = 0x8FFF , Unknown = 0xFFFF
}
 
- Public Types inherited from pcpp::GvcpLayer
enum class  GvcpCommand : uint16_t {
  DiscoveredCmd = 0x0002 , DiscoveredAck = 0x0003 , ForceIpCmd = 0x0004 , ForceIpAck = 0x0005 ,
  PacketResendCmd = 0x0040 , PacketResendAck = 0x0041 , ReadRegCmd = 0x0080 , ReadRegAck = 0x0081 ,
  WriteRegCmd = 0x0082 , WriteRegAck = 0x0083 , ReadMemCmd = 0x0084 , ReadMemAck = 0x0085 ,
  WriteMemCmd = 0x0086 , WriteMemAck = 0x0087 , PendingAck = 0x0089 , EventCmd = 0x00C0 ,
  EventAck = 0x00C1 , EventDataCmd = 0x00C2 , EventDataAck = 0x00C3 , ActionCmd = 0x0100 ,
  ActionAck = 0x0101 , Unknown = 0xFFFF
}
 
- Static Protected Member Functions inherited from pcpp::Layer
template<typename T >
static bool canReinterpretAs (const uint8_t *data, size_t dataLen)
 Check if the data is large enough to reinterpret as a type. More...
 

Detailed Description

Represents a GVCP discovery acknowledge (DISCOVERY_ACK)

Constructor & Destructor Documentation

◆ GvcpDiscoveryAcknowledgeLayer() [1/2]

pcpp::GvcpDiscoveryAcknowledgeLayer::GvcpDiscoveryAcknowledgeLayer ( uint8_t *  data,
size_t  dataLen,
Layer *  prevLayer,
Packet *  packet 
)
inline

A constructor that creates the layer from an existing packet raw data

Parameters
[in]dataA pointer to the raw data
[in]dataLenSize of the data in bytes
[in]prevLayerA pointer to the previous layer
[in]packetA pointer to the Packet instance where layer will be stored in

◆ GvcpDiscoveryAcknowledgeLayer() [2/2]

pcpp::GvcpDiscoveryAcknowledgeLayer::GvcpDiscoveryAcknowledgeLayer ( GvcpResponseStatus  status = GvcpResponseStatus::Success,
uint16_t  ackId = 0 
)
explicit

A constructor that creates a new GVCP discovery acknowledge. The constructor sets all of the discovery fields to zero. Use the setters of this class to set them

Parameters
[in]statusThe response status, optional
[in]ackIdThe acknowledge ID, optional

Member Function Documentation

◆ getDeviceVersion()

std::string pcpp::GvcpDiscoveryAcknowledgeLayer::getDeviceVersion ( ) const
Returns
The device version

◆ getGatewayIpAddress()

IPv4Address pcpp::GvcpDiscoveryAcknowledgeLayer::getGatewayIpAddress ( ) const
Returns
The device default gateway IP address

◆ getHeaderLen()

size_t pcpp::GvcpDiscoveryAcknowledgeLayer::getHeaderLen ( ) const
inlineoverridevirtual
Returns
The size of the GVCP header and the discovery acknowledge body

Reimplemented from pcpp::GvcpAcknowledgeLayer.

◆ getIpAddress()

IPv4Address pcpp::GvcpDiscoveryAcknowledgeLayer::getIpAddress ( ) const
Returns
The device IP address

◆ getMacAddress()

MacAddress pcpp::GvcpDiscoveryAcknowledgeLayer::getMacAddress ( ) const
Returns
The device MAC address

◆ getManufacturerName()

std::string pcpp::GvcpDiscoveryAcknowledgeLayer::getManufacturerName ( ) const
Returns
The manufacturer name

◆ getManufacturerSpecificInformation()

std::string pcpp::GvcpDiscoveryAcknowledgeLayer::getManufacturerSpecificInformation ( ) const
Returns
The manufacturer specific information

◆ getModelName()

std::string pcpp::GvcpDiscoveryAcknowledgeLayer::getModelName ( ) const
Returns
The model name

◆ getSerialNumber()

std::string pcpp::GvcpDiscoveryAcknowledgeLayer::getSerialNumber ( ) const
Returns
The serial number

◆ getSubnetMask()

IPv4Address pcpp::GvcpDiscoveryAcknowledgeLayer::getSubnetMask ( ) const
Returns
The device subnet mask

◆ getUserDefinedName()

std::string pcpp::GvcpDiscoveryAcknowledgeLayer::getUserDefinedName ( ) const
Returns
The user defined name

◆ getVersion()

GvcpVersion pcpp::GvcpDiscoveryAcknowledgeLayer::getVersion ( ) const
Returns
The GigE Vision spec version supported by the device

◆ isDataValid()

static bool pcpp::GvcpDiscoveryAcknowledgeLayer::isDataValid ( const uint8_t *  data,
size_t  dataLen 
)
static

A static method that checks whether the data is large enough to hold a GVCP discovery acknowledge

Parameters
[in]dataA pointer to the raw data
[in]dataLenSize of the data in bytes
Returns
True if the data can be parsed as a GVCP discovery acknowledge, false otherwise

◆ serializeLayer()

void pcpp::GvcpDiscoveryAcknowledgeLayer::serializeLayer ( ObjectScope &  serializer) const
overrideprotectedvirtual

Serializes the layer's data into a provided serializer object. This is used for generating serialized representations (like JSON) of the packet layers. This method should be overridden by derived layers to provide specific serialization logic.

Parameters
[in]serializerThe object scope serializer to which the layer details should be written.

Reimplemented from pcpp::GvcpAcknowledgeLayer.

◆ setDeviceVersion()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setDeviceVersion ( const std::string &  deviceVersion)

Set the device version

Parameters
[in]deviceVersionThe device version to set, truncated if longer than 31 characters

◆ setGatewayIpAddress()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setGatewayIpAddress ( const IPv4Address &  gatewayIpAddress)

Set the device default gateway IP address

Parameters
[in]gatewayIpAddressThe default gateway IP address to set

◆ setIpAddress()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setIpAddress ( const IPv4Address &  ipAddress)

Set the device IP address

Parameters
[in]ipAddressThe IP address to set

◆ setMacAddress()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setMacAddress ( const MacAddress &  macAddress)

Set the device MAC address

Parameters
[in]macAddressThe MAC address to set

◆ setManufacturerName()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setManufacturerName ( const std::string &  manufacturerName)

Set the manufacturer name

Parameters
[in]manufacturerNameThe manufacturer name to set, truncated if longer than 31 characters

◆ setManufacturerSpecificInformation()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setManufacturerSpecificInformation ( const std::string &  info)

Set the manufacturer specific information

Parameters
[in]infoThe manufacturer specific information to set, truncated if longer than 47 characters

◆ setModelName()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setModelName ( const std::string &  modelName)

Set the model name

Parameters
[in]modelNameThe model name to set, truncated if longer than 31 characters

◆ setSerialNumber()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setSerialNumber ( const std::string &  serialNumber)

Set the serial number

Parameters
[in]serialNumberThe serial number to set, truncated if longer than 15 characters

◆ setSubnetMask()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setSubnetMask ( const IPv4Address &  subnetMask)

Set the device subnet mask

Parameters
[in]subnetMaskThe subnet mask to set

◆ setUserDefinedName()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setUserDefinedName ( const std::string &  userDefinedName)

Set the user defined name

Parameters
[in]userDefinedNameThe user defined name to set, truncated if longer than 15 characters

◆ setVersion()

void pcpp::GvcpDiscoveryAcknowledgeLayer::setVersion ( const GvcpVersion &  version)

Set the GigE Vision spec version supported by the device

Parameters
[in]versionThe version to set