Program Listing for File IdentityObject.cpp¶
↰ Return to documentation for file (src/IdentityObject.cpp)
//
// Created by Aleksey Timin on 12/8/19.
//
#include "IdentityObject.h"
#include "utils/Buffer.h"
namespace eipScanner {
using namespace cip;
using utils::Buffer;
IdentityObject::IdentityObject(cip::CipUint instanceId)
: BaseObject(CLASS_ID, instanceId)
, _vendorId(0)
, _deviceType(0)
, _productCode(0)
, _revision(0,0)
, _status(0)
, _serialNumber(0)
, _productName("") {
}
IdentityObject::IdentityObject(cip::CipUint instanceId, const SessionInfoIf::SPtr &si)
: IdentityObject(instanceId, si, std::make_shared<MessageRouter>()){
}
IdentityObject::IdentityObject(cip::CipUint instanceId, const SessionInfoIf::SPtr &si, const MessageRouter::SPtr &messageRouter)
: BaseObject(CLASS_ID, instanceId)
, _vendorId(0)
, _deviceType(0)
, _productCode(0)
, _revision(0,0)
, _status(0)
, _serialNumber(0)
, _productName("") {
auto response = messageRouter->sendRequest(
si,
ServiceCodes::GET_ATTRIBUTE_ALL,
EPath(CLASS_ID, 1),
{});
if (response.getGeneralStatusCode() == GeneralStatusCodes::SUCCESS) {
Buffer buffer(response.getData());
buffer >> _vendorId >> _deviceType
>> _productCode >> _revision
>> _status >> _serialNumber
>> _productName;
if (!buffer.isValid()) {
std::runtime_error("Not enough data in the response");
}
} else {
logGeneralAndAdditionalStatus(response);
throw std::runtime_error("Failed to read all attributes");
}
}
CipUint IdentityObject::getVendorId() const {
return _vendorId;
}
void IdentityObject::setVendorId(CipUint vendorId) {
_vendorId = vendorId;
}
CipUint IdentityObject::getDeviceType() const {
return _deviceType;
}
void IdentityObject::setDeviceType(CipUint deviceType) {
_deviceType = deviceType;
}
CipUint IdentityObject::getProductCode() const {
return _productCode;
}
void IdentityObject::setProductCode(CipUint productCode) {
_productCode = productCode;
}
const CipRevision &IdentityObject::getRevision() const {
return _revision;
}
void IdentityObject::setRevision(const CipRevision &revision) {
_revision = revision;
}
CipWord IdentityObject::getStatus() const {
return _status;
}
void IdentityObject::setStatus(CipWord status) {
_status = status;
}
CipUdint IdentityObject::getSerialNumber() const {
return _serialNumber;
}
void IdentityObject::setSerialNumber(CipUdint serialNumber) {
_serialNumber = serialNumber;
}
std::string IdentityObject::getProductName() const {
return _productName.toStdString();
}
void IdentityObject::setProductName(const std::string &productName) {
_productName = CipShortString(productName);
}
}