mirror of
https://gitlab.com/obbart/universal_robots_ros_driver.git
synced 2026-04-10 10:00:48 +02:00
implemented serializing of the output setup and control start packages
This commit is contained in:
@@ -47,6 +47,17 @@ public:
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static size_t serialize(uint8_t* buffer, std::string val)
|
||||||
|
{
|
||||||
|
const uint8_t* c_val = reinterpret_cast<const uint8_t*>(val.c_str());
|
||||||
|
|
||||||
|
for (size_t i = 0; i < val.size(); i++)
|
||||||
|
{
|
||||||
|
buffer[i] = c_val[i];
|
||||||
|
}
|
||||||
|
return val.size();
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static T encode(T val)
|
static T encode(T val)
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
#define UR_RTDE_DRIVER_CONTROL_PACKAGE_SETUP_OUTPUTS_H_INCLUDED
|
#define UR_RTDE_DRIVER_CONTROL_PACKAGE_SETUP_OUTPUTS_H_INCLUDED
|
||||||
|
|
||||||
#include "ur_rtde_driver/rtde/rtde_package.h"
|
#include "ur_rtde_driver/rtde/rtde_package.h"
|
||||||
|
#include "ur_rtde_driver/rtde/package_header.h"
|
||||||
|
|
||||||
namespace ur_driver
|
namespace ur_driver
|
||||||
{
|
{
|
||||||
@@ -53,8 +54,14 @@ public:
|
|||||||
ControlPackageSetupOutputsRequest() = default;
|
ControlPackageSetupOutputsRequest() = default;
|
||||||
virtual ~ControlPackageSetupOutputsRequest() = default;
|
virtual ~ControlPackageSetupOutputsRequest() = default;
|
||||||
|
|
||||||
|
static size_t generateSerializedRequest(uint8_t* buffer, double output_frequency,
|
||||||
|
std::vector<std::string> variable_names);
|
||||||
|
|
||||||
double output_frequency_;
|
double output_frequency_;
|
||||||
std::string variable_names_;
|
std::string variable_names_;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const PackageType PACKAGE_TYPE = PackageType::RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rtde_interface
|
} // namespace rtde_interface
|
||||||
|
|||||||
@@ -51,6 +51,12 @@ class ControlPackageStartRequest : public RTDEPackage
|
|||||||
public:
|
public:
|
||||||
ControlPackageStartRequest() = default;
|
ControlPackageStartRequest() = default;
|
||||||
virtual ~ControlPackageStartRequest() = default;
|
virtual ~ControlPackageStartRequest() = default;
|
||||||
|
|
||||||
|
static size_t generateSerializedRequest(uint8_t* buffer);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const uint16_t PAYLOAD_SIZE = 0;
|
||||||
|
static const PackageType PACKAGE_TYPE = PackageType::RTDE_CONTROL_PACKAGE_START;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rtde_interface
|
} // namespace rtde_interface
|
||||||
|
|||||||
@@ -46,5 +46,26 @@ std::string ControlPackageSetupOutputs::toString() const
|
|||||||
|
|
||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t ControlPackageSetupOutputsRequest::generateSerializedRequest(uint8_t* buffer, double output_frequency,
|
||||||
|
std::vector<std::string> variable_names)
|
||||||
|
{
|
||||||
|
if (variable_names.size() == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
std::string variables;
|
||||||
|
for (const auto& piece : variable_names)
|
||||||
|
variables += (piece + ",");
|
||||||
|
variables.pop_back();
|
||||||
|
uint16_t payload_size = sizeof(double) + variables.size();
|
||||||
|
|
||||||
|
size_t size = 0;
|
||||||
|
size += PackageHeader::serializeHeader(buffer, PACKAGE_TYPE, payload_size);
|
||||||
|
size += comm::PackageSerializer::serialize(buffer + size, output_frequency);
|
||||||
|
size += comm::PackageSerializer::serialize(buffer + size, variables);
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
} // namespace rtde_interface
|
} // namespace rtde_interface
|
||||||
} // namespace ur_driver
|
} // namespace ur_driver
|
||||||
|
|||||||
@@ -44,5 +44,10 @@ std::string ControlPackageStart::toString() const
|
|||||||
|
|
||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t ControlPackageStartRequest::generateSerializedRequest(uint8_t* buffer)
|
||||||
|
{
|
||||||
|
return PackageHeader::serializeHeader(buffer, PACKAGE_TYPE, PAYLOAD_SIZE);
|
||||||
|
}
|
||||||
} // namespace rtde_interface
|
} // namespace rtde_interface
|
||||||
} // namespace ur_driver
|
} // namespace ur_driver
|
||||||
|
|||||||
Reference in New Issue
Block a user