1
0
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:
Tristan Schnell
2019-04-11 13:57:36 +02:00
parent b604af749f
commit 8975957b5f
5 changed files with 50 additions and 0 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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