Program Listing for File EncapsPacketFactory.cpp¶
↰ Return to documentation for file (src/eip/EncapsPacketFactory.cpp)
//
// Created by Aleksey Timin on 11/16/19.
//
#include <utils/Buffer.h>
#include "EncapsPacketFactory.h"
namespace eipScanner {
namespace eip {
using utils::Buffer;
EncapsPacket EncapsPacketFactory::createRegisterSessionPacket() const {
EncapsPacket packet;
packet.setCommand(EncapsCommands::REGISTER_SESSION);
// See 2-4.4 Vol2 spec
cip::CipUint protocolVersion = 1;
cip::CipUint optionFlag = 0;
Buffer buffer(4);
buffer << protocolVersion << optionFlag;
packet.setData(buffer.data());
return packet;
}
EncapsPacket EncapsPacketFactory::createUnRegisterSessionPacket(cip::CipUdint sessionHandle) const {
EncapsPacket packet;
packet.setCommand(EncapsCommands::UN_REGISTER_SESSION);
packet.setSessionHandle(sessionHandle);
return packet;
}
EncapsPacket EncapsPacketFactory::createSendRRDataPacket(cip::CipUdint sessionHandle, cip::CipUint timeout,
std::vector<uint8_t> data) const {
EncapsPacket packet;
packet.setCommand(EncapsCommands::SEND_RR_DATA);
packet.setSessionHandle(sessionHandle);
cip::CipUdint interfaceHandle = 0;
Buffer buffer(6 + data.size());
buffer << interfaceHandle << timeout << data;
packet.setData(buffer.data());
return packet;
}
EncapsPacket EncapsPacketFactory::createListIdentityPacket() const {
EncapsPacket packet;
packet.setCommand(EncapsCommands::LIST_IDENTITY);
packet.setSessionHandle(0);
return packet;
}
}
}