From 3c61cbeb350f2fa8353913b5963a84c671597131 Mon Sep 17 00:00:00 2001 From: Felix Mauch Date: Mon, 8 Apr 2019 10:15:01 +0200 Subject: [PATCH] Added a common package ancestor --- include/ur_rtde_driver/comm/package.h | 48 +++++++++++++++++++ .../ur_rtde_driver/primary/primary_header.h | 14 ++---- .../ur_rtde_driver/primary/primary_package.h | 11 ++--- include/ur_rtde_driver/rtde/rtde_header.h | 18 ++----- include/ur_rtde_driver/rtde/rtde_package.h | 9 +--- 5 files changed, 61 insertions(+), 39 deletions(-) create mode 100644 include/ur_rtde_driver/comm/package.h diff --git a/include/ur_rtde_driver/comm/package.h b/include/ur_rtde_driver/comm/package.h new file mode 100644 index 0000000..a88b86f --- /dev/null +++ b/include/ur_rtde_driver/comm/package.h @@ -0,0 +1,48 @@ +// this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- + +// -- BEGIN LICENSE BLOCK ---------------------------------------------- +// Copyright 2019 FZI Forschungszentrum Informatik +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// -- END LICENSE BLOCK ------------------------------------------------ + +//---------------------------------------------------------------------- +/*!\file + * + * \author Felix Mauch mauch@fzi.de + * \date 2019-04-08 + * + */ +//---------------------------------------------------------------------- +#ifndef UR_RTDE_DRIVER_PACKAGE_H_INCLUDED +#define UR_RTDE_DRIVER_PACKAGE_H_INCLUDED + +namespace ur_driver +{ +namespace comm +{ +template +class URPackage +{ +public: + URPackage(); + virtual ~URPackage(); + + using _header_type = HeaderT; + +private: + HeaderT header_; +}; +} // namespace comm +} // namespace ur_rtde_driver +#endif // ifndef UR_RTDE_DRIVER_PACKAGE_H_INCLUDED diff --git a/include/ur_rtde_driver/primary/primary_header.h b/include/ur_rtde_driver/primary/primary_header.h index 4aa1ee0..ae31a01 100644 --- a/include/ur_rtde_driver/primary/primary_header.h +++ b/include/ur_rtde_driver/primary/primary_header.h @@ -36,7 +36,7 @@ namespace ur_driver { -namespace primary +namespace primary_interface { enum class message_type : int8_t { @@ -77,7 +77,6 @@ enum class robot_message_type : uint8_t ROBOT_MESSAGE_RUNTIME_EXCEPTION = 10 }; - class Header { public: @@ -87,18 +86,11 @@ public: using _package_size_type = int32_t; static size_t getPackageLength(uint8_t* buf) { - return be32toh(*(reinterpret_cast(buf))); + return be32toh(*(reinterpret_cast<_package_size_type*>(buf))); } - static size_t getPackageSize() - { - return sizeof(package_size_); - } - - - private: - int32_t package_size_; + _package_size_type package_size_; int8_t package_type_; }; } // namespace primary_interface diff --git a/include/ur_rtde_driver/primary/primary_package.h b/include/ur_rtde_driver/primary/primary_package.h index 8dba991..3b32bf8 100644 --- a/include/ur_rtde_driver/primary/primary_package.h +++ b/include/ur_rtde_driver/primary/primary_package.h @@ -29,25 +29,22 @@ #define UR_RTDE_DRIVER_PRIMARY_PACKAGE_H_INCLUDED #include "ur_rtde_driver/primary/primary_header.h" +#include "ur_rtde_driver/comm/package.h" namespace ur_driver { namespace primary_interface { - - -class PrimaryPackage +class PrimaryPackage : comm::URPackage
{ -private: - uint8_t* data_buffer_; public: PrimaryPackage() = default; virtual ~PrimaryPackage() = default; - +private: + uint8_t* data_buffer_; }; - } // namespace primary_interface } // namespace ur_driver diff --git a/include/ur_rtde_driver/rtde/rtde_header.h b/include/ur_rtde_driver/rtde/rtde_header.h index 1022c4c..cd0cf1a 100644 --- a/include/ur_rtde_driver/rtde/rtde_header.h +++ b/include/ur_rtde_driver/rtde/rtde_header.h @@ -1,4 +1,4 @@ - + // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- // -- BEGIN LICENSE BLOCK ---------------------------------------------- @@ -20,13 +20,10 @@ #include #include "ur_rtde_driver/types.h" - namespace ur_driver { namespace rtde_interface { - - enum class PackageType { RTDE_REQUEST_PROTOCOL_VERSION = 86, // ascii V @@ -39,30 +36,23 @@ enum class PackageType RTDE_CONTROL_PACKAGE_PAUSE = 80 // ascii P }; - class Header { public: Header() = default; virtual ~Header() = default; + using _package_size_type = uint16_t; static size_t getPackageLength(uint8_t* buf) { - return be16toh(*(reinterpret_cast(buf))); + return be16toh(*(reinterpret_cast<_package_size_type*>(buf))); } - static size_t getPackageSize() - { - return sizeof(package_size_); - } - - private: - uint16_t package_size_; + _package_size_type package_size_; PackageType package_type_; }; - } // namespace rtde_interface } // namespace ur_driver diff --git a/include/ur_rtde_driver/rtde/rtde_package.h b/include/ur_rtde_driver/rtde/rtde_package.h index dbe6008..8e202e8 100644 --- a/include/ur_rtde_driver/rtde/rtde_package.h +++ b/include/ur_rtde_driver/rtde/rtde_package.h @@ -25,28 +25,23 @@ */ //---------------------------------------------------------------------- - #ifndef UR_RTDE_DRIVER_RTDE_PACKAGE_H_INCLUDED #define UR_RTDE_DRIVER_RTDE_PACKAGE_H_INCLUDED #include "ur_rtde_driver/rtde/rtde_header.h" +#include "ur_rtde_driver/comm/package.h" namespace ur_driver { namespace rtde_interface { - - -class RTDEPackage +class RTDEPackage : comm::URPackage
{ public: RTDEPackage() = default; virtual ~RTDEPackage() = default; - - }; - } // namespace rtde_interface } // namespace ur_driver