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