text: #ifndef _ROS_SERVICE_Dock_h
  #define _ROS_SERVICE_Dock_h
  #include <stdint.h>
  #include <string.h>
  #include <stdlib.h>
  #include "ros/msg.h"
  
  namespace docking
  {
  
  static const char DOCK[] = "docking/Dock";
  
    class DockRequest : public ros::Msg
    {
      public:
        typedef int32_t _fiducial_id_type;
        _fiducial_id_type fiducial_id;
        typedef const char* _waypoints_type;
        _waypoints_type waypoints;
  
      DockRequest():
        fiducial_id(0),
        waypoints("")
      {
      }
  
      virtual int serialize(unsigned char *outbuffer) const
      {
        int offset = 0;
        union {
          int32_t real;
          uint32_t base;
        } u_fiducial_id;
        u_fiducial_id.real = this->fiducial_id;
        *(outbuffer + offset + 0) = (u_fiducial_id.base >> (8 * 0)) & 0xFF;
        *(outbuffer + offset + 1) = (u_fiducial_id.base >> (8 * 1)) & 0xFF;
        *(outbuffer + offset + 2) = (u_fiducial_id.base >> (8 * 2)) & 0xFF;
        *(outbuffer + offset + 3) = (u_fiducial_id.base >> (8 * 3)) & 0xFF;
        offset += sizeof(this->fiducial_id);
        uint32_t length_waypoints = strlen(this->waypoints);
        varToArr(outbuffer + offset, length_waypoints);
        offset += 4;
        memcpy(outbuffer + offset, this->waypoints, length_waypoints);
        offset += length_waypoints;
        return offset;
      }
  
      virtual int deserialize(unsigned char *inbuffer)
      {
        int offset = 0;
        union {
          int32_t real;
          uint32_t base;
        } u_fiducial_id;
        u_fiducial_id.base = 0;
        u_fiducial_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
        u_fiducial_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
        u_fiducial_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
        u_fiducial_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
        this->fiducial_id = u_fiducial_id.real;
        offset += sizeof(this->fiducial_id);
        uint32_t length_waypoints;
        arrToVar(length_waypoints, (inbuffer + offset));
        offset += 4;
        for(unsigned int k= offset; k< offset+length_waypoints; ++k){
            inbuffer[k-1]=inbuffer[k];
        }
        inbuffer[offset+length_waypoints-1]=0;
        this->waypoints = (char *)(inbuffer + offset-1);
        offset += length_waypoints;
       return offset;
      }
  
      const char * getType(){ return DOCK; };
      const char * getMD5(){ return "826f5b01681469068c9a8613e832ec93"; };
  
    };
  
    class DockResponse : public ros::Msg
    {
      public:
        typedef bool _success_type;
        _success_type success;
        typedef const char* _message_type;
        _message_type message;
  
      DockResponse():
        success(0),
        message("")
      {
      }
  
      virtual int serialize(unsigned char *outbuffer) const
      {
        int offset = 0;
        union {
          bool real;
          uint8_t base;
        } u_success;
        u_success.real = this->success;
        *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
        offset += sizeof(this->success);
        uint32_t length_message = strlen(this->message);
        varToArr(outbuffer + offset, length_message);
        offset += 4;
        memcpy(outbuffer + offset, this->message, length_message);
        offset += length_message;
        return offset;
      }
  
      virtual int deserialize(unsigned char *inbuffer)
      {
        int offset = 0;
        union {
          bool real;
          uint8_t base;
        } u_success;
        u_success.base = 0;
        u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
        this->success = u_success.real;
        offset += sizeof(this->success);
        uint32_t length_message;
        arrToVar(length_message, (inbuffer + offset));
        offset += 4;
        for(unsigned int k= offset; k< offset+length_message; ++k){
            inbuffer[k-1]=inbuffer[k];
        }
        inbuffer[offset+length_message-1]=0;
        this->message = (char *)(inbuffer + offset-1);
        offset += length_message;
       return offset;
      }
  
      const char * getType(){ return DOCK; };
      const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; };
  
    };
  
    class Dock {
      public:
      typedef DockRequest Request;
      typedef DockResponse Response;
    };
  
  }
  #endif
  