00001
00002 #ifndef DOOR_HANDLE_DETECTOR_SERVICE_DOORSDETECTOR_H
00003 #define DOOR_HANDLE_DETECTOR_SERVICE_DOORSDETECTOR_H
00004 #include <string>
00005 #include <vector>
00006 #include <ostream>
00007 #include "ros/serialization.h"
00008 #include "ros/builtin_message_traits.h"
00009 #include "ros/message_operations.h"
00010 #include "ros/message.h"
00011 #include "ros/time.h"
00012
00013 #include "ros/service_traits.h"
00014
00015 #include "door_msgs/Door.h"
00016
00017
00018 #include "door_msgs/Door.h"
00019
00020 namespace door_handle_detector
00021 {
00022 template <class ContainerAllocator>
00023 struct DoorsDetectorRequest_ : public ros::Message
00024 {
00025 typedef DoorsDetectorRequest_<ContainerAllocator> Type;
00026
00027 DoorsDetectorRequest_()
00028 : door()
00029 {
00030 }
00031
00032 DoorsDetectorRequest_(const ContainerAllocator& _alloc)
00033 : door(_alloc)
00034 {
00035 }
00036
00037 typedef ::door_msgs::Door_<ContainerAllocator> _door_type;
00038 ::door_msgs::Door_<ContainerAllocator> door;
00039
00040
00041 private:
00042 static const char* __s_getDataType_() { return "door_handle_detector/DoorsDetectorRequest"; }
00043 public:
00044 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00045
00046 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00047
00048 private:
00049 static const char* __s_getMD5Sum_() { return "72afb754afb6ff619fa1a692675498c0"; }
00050 public:
00051 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00052
00053 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00054
00055 private:
00056 static const char* __s_getServerMD5Sum_() { return "46040a30211c7ba5ce5105a2fbcfa5de"; }
00057 public:
00058 ROS_DEPRECATED static const std::string __s_getServerMD5Sum() { return __s_getServerMD5Sum_(); }
00059
00060 ROS_DEPRECATED const std::string __getServerMD5Sum() const { return __s_getServerMD5Sum_(); }
00061
00062 private:
00063 static const char* __s_getMessageDefinition_() { return "door_msgs/Door door\n\
00064 \n\
00065 ================================================================================\n\
00066 MSG: door_msgs/Door\n\
00067 Header header\n\
00068 geometry_msgs/Point32 frame_p1 ## position of the door frame\n\
00069 geometry_msgs/Point32 frame_p2 ## position of the door frame\n\
00070 geometry_msgs/Point32 door_p1 ## Ground plane projection of a point on the plane of the door \n\
00071 geometry_msgs/Point32 door_p2 ## Ground plane projection of a point on the plane of the door\n\
00072 geometry_msgs/Point32 handle ## Position of the door handle\n\
00073 float32 height ## Height of the door\n\
00074 \n\
00075 int32 UNKNOWN=0\n\
00076 \n\
00077 int32 HINGE_P1=1\n\
00078 int32 HINGE_P2=2\n\
00079 int32 hinge \n\
00080 \n\
00081 int32 ROT_DIR_CLOCKWISE=1\n\
00082 int32 ROT_DIR_COUNTERCLOCKWISE=2\n\
00083 int32 rot_dir \n\
00084 \n\
00085 int32 LOCKED=1\n\
00086 int32 LATCHED=2\n\
00087 int32 UNLATCHED=3\n\
00088 int32 latch_state \n\
00089 \n\
00090 geometry_msgs/Vector3 travel_dir ## vector pointing in the direction the robot is going to travel through the door\n\
00091 float32 weight ## @Sachin: what do we use this for?\n\
00092 \n\
00093 \n\
00094 \n\
00095 ================================================================================\n\
00096 MSG: std_msgs/Header\n\
00097 # Standard metadata for higher-level stamped data types.\n\
00098 # This is generally used to communicate timestamped data \n\
00099 # in a particular coordinate frame.\n\
00100 # \n\
00101 # sequence ID: consecutively increasing ID \n\
00102 uint32 seq\n\
00103 #Two-integer timestamp that is expressed as:\n\
00104 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00105 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00106 # time-handling sugar is provided by the client library\n\
00107 time stamp\n\
00108 #Frame this data is associated with\n\
00109 # 0: no frame\n\
00110 # 1: global frame\n\
00111 string frame_id\n\
00112 \n\
00113 ================================================================================\n\
00114 MSG: geometry_msgs/Point32\n\
00115 # This contains the position of a point in free space(with 32 bits of precision).\n\
00116 # It is recommeded to use Point wherever possible instead of Point32. \n\
00117 # \n\
00118 # This recommendation is to promote interoperability. \n\
00119 #\n\
00120 # This message is designed to take up less space when sending\n\
00121 # lots of points at once, as in the case of a PointCloud. \n\
00122 \n\
00123 float32 x\n\
00124 float32 y\n\
00125 float32 z\n\
00126 ================================================================================\n\
00127 MSG: geometry_msgs/Vector3\n\
00128 # This represents a vector in free space. \n\
00129 \n\
00130 float64 x\n\
00131 float64 y\n\
00132 float64 z\n\
00133 "; }
00134 public:
00135 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00136
00137 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00138
00139 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00140 {
00141 ros::serialization::OStream stream(write_ptr, 1000000000);
00142 ros::serialization::serialize(stream, door);
00143 return stream.getData();
00144 }
00145
00146 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00147 {
00148 ros::serialization::IStream stream(read_ptr, 1000000000);
00149 ros::serialization::deserialize(stream, door);
00150 return stream.getData();
00151 }
00152
00153 ROS_DEPRECATED virtual uint32_t serializationLength() const
00154 {
00155 uint32_t size = 0;
00156 size += ros::serialization::serializationLength(door);
00157 return size;
00158 }
00159
00160 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> > Ptr;
00161 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> const> ConstPtr;
00162 };
00163 typedef ::door_handle_detector::DoorsDetectorRequest_<std::allocator<void> > DoorsDetectorRequest;
00164
00165 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorRequest> DoorsDetectorRequestPtr;
00166 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorRequest const> DoorsDetectorRequestConstPtr;
00167
00168
00169 template <class ContainerAllocator>
00170 struct DoorsDetectorResponse_ : public ros::Message
00171 {
00172 typedef DoorsDetectorResponse_<ContainerAllocator> Type;
00173
00174 DoorsDetectorResponse_()
00175 : doors()
00176 {
00177 }
00178
00179 DoorsDetectorResponse_(const ContainerAllocator& _alloc)
00180 : doors(_alloc)
00181 {
00182 }
00183
00184 typedef std::vector< ::door_msgs::Door_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::door_msgs::Door_<ContainerAllocator> >::other > _doors_type;
00185 std::vector< ::door_msgs::Door_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::door_msgs::Door_<ContainerAllocator> >::other > doors;
00186
00187
00188 ROS_DEPRECATED uint32_t get_doors_size() const { return (uint32_t)doors.size(); }
00189 ROS_DEPRECATED void set_doors_size(uint32_t size) { doors.resize((size_t)size); }
00190 ROS_DEPRECATED void get_doors_vec(std::vector< ::door_msgs::Door_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::door_msgs::Door_<ContainerAllocator> >::other > & vec) const { vec = this->doors; }
00191 ROS_DEPRECATED void set_doors_vec(const std::vector< ::door_msgs::Door_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::door_msgs::Door_<ContainerAllocator> >::other > & vec) { this->doors = vec; }
00192 private:
00193 static const char* __s_getDataType_() { return "door_handle_detector/DoorsDetectorResponse"; }
00194 public:
00195 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00196
00197 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00198
00199 private:
00200 static const char* __s_getMD5Sum_() { return "814c1a77e8c0b7c5b3832dabceff607d"; }
00201 public:
00202 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00203
00204 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00205
00206 private:
00207 static const char* __s_getServerMD5Sum_() { return "46040a30211c7ba5ce5105a2fbcfa5de"; }
00208 public:
00209 ROS_DEPRECATED static const std::string __s_getServerMD5Sum() { return __s_getServerMD5Sum_(); }
00210
00211 ROS_DEPRECATED const std::string __getServerMD5Sum() const { return __s_getServerMD5Sum_(); }
00212
00213 private:
00214 static const char* __s_getMessageDefinition_() { return "door_msgs/Door[] doors\n\
00215 \n\
00216 \n\
00217 ================================================================================\n\
00218 MSG: door_msgs/Door\n\
00219 Header header\n\
00220 geometry_msgs/Point32 frame_p1 ## position of the door frame\n\
00221 geometry_msgs/Point32 frame_p2 ## position of the door frame\n\
00222 geometry_msgs/Point32 door_p1 ## Ground plane projection of a point on the plane of the door \n\
00223 geometry_msgs/Point32 door_p2 ## Ground plane projection of a point on the plane of the door\n\
00224 geometry_msgs/Point32 handle ## Position of the door handle\n\
00225 float32 height ## Height of the door\n\
00226 \n\
00227 int32 UNKNOWN=0\n\
00228 \n\
00229 int32 HINGE_P1=1\n\
00230 int32 HINGE_P2=2\n\
00231 int32 hinge \n\
00232 \n\
00233 int32 ROT_DIR_CLOCKWISE=1\n\
00234 int32 ROT_DIR_COUNTERCLOCKWISE=2\n\
00235 int32 rot_dir \n\
00236 \n\
00237 int32 LOCKED=1\n\
00238 int32 LATCHED=2\n\
00239 int32 UNLATCHED=3\n\
00240 int32 latch_state \n\
00241 \n\
00242 geometry_msgs/Vector3 travel_dir ## vector pointing in the direction the robot is going to travel through the door\n\
00243 float32 weight ## @Sachin: what do we use this for?\n\
00244 \n\
00245 \n\
00246 \n\
00247 ================================================================================\n\
00248 MSG: std_msgs/Header\n\
00249 # Standard metadata for higher-level stamped data types.\n\
00250 # This is generally used to communicate timestamped data \n\
00251 # in a particular coordinate frame.\n\
00252 # \n\
00253 # sequence ID: consecutively increasing ID \n\
00254 uint32 seq\n\
00255 #Two-integer timestamp that is expressed as:\n\
00256 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00257 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00258 # time-handling sugar is provided by the client library\n\
00259 time stamp\n\
00260 #Frame this data is associated with\n\
00261 # 0: no frame\n\
00262 # 1: global frame\n\
00263 string frame_id\n\
00264 \n\
00265 ================================================================================\n\
00266 MSG: geometry_msgs/Point32\n\
00267 # This contains the position of a point in free space(with 32 bits of precision).\n\
00268 # It is recommeded to use Point wherever possible instead of Point32. \n\
00269 # \n\
00270 # This recommendation is to promote interoperability. \n\
00271 #\n\
00272 # This message is designed to take up less space when sending\n\
00273 # lots of points at once, as in the case of a PointCloud. \n\
00274 \n\
00275 float32 x\n\
00276 float32 y\n\
00277 float32 z\n\
00278 ================================================================================\n\
00279 MSG: geometry_msgs/Vector3\n\
00280 # This represents a vector in free space. \n\
00281 \n\
00282 float64 x\n\
00283 float64 y\n\
00284 float64 z\n\
00285 "; }
00286 public:
00287 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00288
00289 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00290
00291 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00292 {
00293 ros::serialization::OStream stream(write_ptr, 1000000000);
00294 ros::serialization::serialize(stream, doors);
00295 return stream.getData();
00296 }
00297
00298 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00299 {
00300 ros::serialization::IStream stream(read_ptr, 1000000000);
00301 ros::serialization::deserialize(stream, doors);
00302 return stream.getData();
00303 }
00304
00305 ROS_DEPRECATED virtual uint32_t serializationLength() const
00306 {
00307 uint32_t size = 0;
00308 size += ros::serialization::serializationLength(doors);
00309 return size;
00310 }
00311
00312 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> > Ptr;
00313 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> const> ConstPtr;
00314 };
00315 typedef ::door_handle_detector::DoorsDetectorResponse_<std::allocator<void> > DoorsDetectorResponse;
00316
00317 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorResponse> DoorsDetectorResponsePtr;
00318 typedef boost::shared_ptr< ::door_handle_detector::DoorsDetectorResponse const> DoorsDetectorResponseConstPtr;
00319
00320 struct DoorsDetector
00321 {
00322
00323 typedef DoorsDetectorRequest Request;
00324 typedef DoorsDetectorResponse Response;
00325 Request request;
00326 Response response;
00327
00328 typedef Request RequestType;
00329 typedef Response ResponseType;
00330 };
00331 }
00332
00333 namespace ros
00334 {
00335 namespace message_traits
00336 {
00337 template<class ContainerAllocator>
00338 struct MD5Sum< ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> > {
00339 static const char* value()
00340 {
00341 return "72afb754afb6ff619fa1a692675498c0";
00342 }
00343
00344 static const char* value(const ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> &) { return value(); }
00345 static const uint64_t static_value1 = 0x72afb754afb6ff61ULL;
00346 static const uint64_t static_value2 = 0x9fa1a692675498c0ULL;
00347 };
00348
00349 template<class ContainerAllocator>
00350 struct DataType< ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> > {
00351 static const char* value()
00352 {
00353 return "door_handle_detector/DoorsDetectorRequest";
00354 }
00355
00356 static const char* value(const ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> &) { return value(); }
00357 };
00358
00359 template<class ContainerAllocator>
00360 struct Definition< ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> > {
00361 static const char* value()
00362 {
00363 return "door_msgs/Door door\n\
00364 \n\
00365 ================================================================================\n\
00366 MSG: door_msgs/Door\n\
00367 Header header\n\
00368 geometry_msgs/Point32 frame_p1 ## position of the door frame\n\
00369 geometry_msgs/Point32 frame_p2 ## position of the door frame\n\
00370 geometry_msgs/Point32 door_p1 ## Ground plane projection of a point on the plane of the door \n\
00371 geometry_msgs/Point32 door_p2 ## Ground plane projection of a point on the plane of the door\n\
00372 geometry_msgs/Point32 handle ## Position of the door handle\n\
00373 float32 height ## Height of the door\n\
00374 \n\
00375 int32 UNKNOWN=0\n\
00376 \n\
00377 int32 HINGE_P1=1\n\
00378 int32 HINGE_P2=2\n\
00379 int32 hinge \n\
00380 \n\
00381 int32 ROT_DIR_CLOCKWISE=1\n\
00382 int32 ROT_DIR_COUNTERCLOCKWISE=2\n\
00383 int32 rot_dir \n\
00384 \n\
00385 int32 LOCKED=1\n\
00386 int32 LATCHED=2\n\
00387 int32 UNLATCHED=3\n\
00388 int32 latch_state \n\
00389 \n\
00390 geometry_msgs/Vector3 travel_dir ## vector pointing in the direction the robot is going to travel through the door\n\
00391 float32 weight ## @Sachin: what do we use this for?\n\
00392 \n\
00393 \n\
00394 \n\
00395 ================================================================================\n\
00396 MSG: std_msgs/Header\n\
00397 # Standard metadata for higher-level stamped data types.\n\
00398 # This is generally used to communicate timestamped data \n\
00399 # in a particular coordinate frame.\n\
00400 # \n\
00401 # sequence ID: consecutively increasing ID \n\
00402 uint32 seq\n\
00403 #Two-integer timestamp that is expressed as:\n\
00404 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00405 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00406 # time-handling sugar is provided by the client library\n\
00407 time stamp\n\
00408 #Frame this data is associated with\n\
00409 # 0: no frame\n\
00410 # 1: global frame\n\
00411 string frame_id\n\
00412 \n\
00413 ================================================================================\n\
00414 MSG: geometry_msgs/Point32\n\
00415 # This contains the position of a point in free space(with 32 bits of precision).\n\
00416 # It is recommeded to use Point wherever possible instead of Point32. \n\
00417 # \n\
00418 # This recommendation is to promote interoperability. \n\
00419 #\n\
00420 # This message is designed to take up less space when sending\n\
00421 # lots of points at once, as in the case of a PointCloud. \n\
00422 \n\
00423 float32 x\n\
00424 float32 y\n\
00425 float32 z\n\
00426 ================================================================================\n\
00427 MSG: geometry_msgs/Vector3\n\
00428 # This represents a vector in free space. \n\
00429 \n\
00430 float64 x\n\
00431 float64 y\n\
00432 float64 z\n\
00433 ";
00434 }
00435
00436 static const char* value(const ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> &) { return value(); }
00437 };
00438
00439 }
00440 }
00441
00442
00443 namespace ros
00444 {
00445 namespace message_traits
00446 {
00447 template<class ContainerAllocator>
00448 struct MD5Sum< ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> > {
00449 static const char* value()
00450 {
00451 return "814c1a77e8c0b7c5b3832dabceff607d";
00452 }
00453
00454 static const char* value(const ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> &) { return value(); }
00455 static const uint64_t static_value1 = 0x814c1a77e8c0b7c5ULL;
00456 static const uint64_t static_value2 = 0xb3832dabceff607dULL;
00457 };
00458
00459 template<class ContainerAllocator>
00460 struct DataType< ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> > {
00461 static const char* value()
00462 {
00463 return "door_handle_detector/DoorsDetectorResponse";
00464 }
00465
00466 static const char* value(const ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> &) { return value(); }
00467 };
00468
00469 template<class ContainerAllocator>
00470 struct Definition< ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> > {
00471 static const char* value()
00472 {
00473 return "door_msgs/Door[] doors\n\
00474 \n\
00475 \n\
00476 ================================================================================\n\
00477 MSG: door_msgs/Door\n\
00478 Header header\n\
00479 geometry_msgs/Point32 frame_p1 ## position of the door frame\n\
00480 geometry_msgs/Point32 frame_p2 ## position of the door frame\n\
00481 geometry_msgs/Point32 door_p1 ## Ground plane projection of a point on the plane of the door \n\
00482 geometry_msgs/Point32 door_p2 ## Ground plane projection of a point on the plane of the door\n\
00483 geometry_msgs/Point32 handle ## Position of the door handle\n\
00484 float32 height ## Height of the door\n\
00485 \n\
00486 int32 UNKNOWN=0\n\
00487 \n\
00488 int32 HINGE_P1=1\n\
00489 int32 HINGE_P2=2\n\
00490 int32 hinge \n\
00491 \n\
00492 int32 ROT_DIR_CLOCKWISE=1\n\
00493 int32 ROT_DIR_COUNTERCLOCKWISE=2\n\
00494 int32 rot_dir \n\
00495 \n\
00496 int32 LOCKED=1\n\
00497 int32 LATCHED=2\n\
00498 int32 UNLATCHED=3\n\
00499 int32 latch_state \n\
00500 \n\
00501 geometry_msgs/Vector3 travel_dir ## vector pointing in the direction the robot is going to travel through the door\n\
00502 float32 weight ## @Sachin: what do we use this for?\n\
00503 \n\
00504 \n\
00505 \n\
00506 ================================================================================\n\
00507 MSG: std_msgs/Header\n\
00508 # Standard metadata for higher-level stamped data types.\n\
00509 # This is generally used to communicate timestamped data \n\
00510 # in a particular coordinate frame.\n\
00511 # \n\
00512 # sequence ID: consecutively increasing ID \n\
00513 uint32 seq\n\
00514 #Two-integer timestamp that is expressed as:\n\
00515 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00516 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00517 # time-handling sugar is provided by the client library\n\
00518 time stamp\n\
00519 #Frame this data is associated with\n\
00520 # 0: no frame\n\
00521 # 1: global frame\n\
00522 string frame_id\n\
00523 \n\
00524 ================================================================================\n\
00525 MSG: geometry_msgs/Point32\n\
00526 # This contains the position of a point in free space(with 32 bits of precision).\n\
00527 # It is recommeded to use Point wherever possible instead of Point32. \n\
00528 # \n\
00529 # This recommendation is to promote interoperability. \n\
00530 #\n\
00531 # This message is designed to take up less space when sending\n\
00532 # lots of points at once, as in the case of a PointCloud. \n\
00533 \n\
00534 float32 x\n\
00535 float32 y\n\
00536 float32 z\n\
00537 ================================================================================\n\
00538 MSG: geometry_msgs/Vector3\n\
00539 # This represents a vector in free space. \n\
00540 \n\
00541 float64 x\n\
00542 float64 y\n\
00543 float64 z\n\
00544 ";
00545 }
00546
00547 static const char* value(const ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> &) { return value(); }
00548 };
00549
00550 }
00551 }
00552
00553 namespace ros
00554 {
00555 namespace serialization
00556 {
00557
00558 template<class ContainerAllocator> struct Serializer< ::door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> >
00559 {
00560 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00561 {
00562 stream.next(m.door);
00563 }
00564
00565 ROS_DECLARE_ALLINONE_SERIALIZER;
00566 };
00567 }
00568 }
00569
00570
00571 namespace ros
00572 {
00573 namespace serialization
00574 {
00575
00576 template<class ContainerAllocator> struct Serializer< ::door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> >
00577 {
00578 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00579 {
00580 stream.next(m.doors);
00581 }
00582
00583 ROS_DECLARE_ALLINONE_SERIALIZER;
00584 };
00585 }
00586 }
00587
00588 namespace ros
00589 {
00590 namespace service_traits
00591 {
00592 template<>
00593 struct MD5Sum<door_handle_detector::DoorsDetector> {
00594 static const char* value()
00595 {
00596 return "46040a30211c7ba5ce5105a2fbcfa5de";
00597 }
00598
00599 static const char* value(const door_handle_detector::DoorsDetector&) { return value(); }
00600 };
00601
00602 template<>
00603 struct DataType<door_handle_detector::DoorsDetector> {
00604 static const char* value()
00605 {
00606 return "door_handle_detector/DoorsDetector";
00607 }
00608
00609 static const char* value(const door_handle_detector::DoorsDetector&) { return value(); }
00610 };
00611
00612 template<class ContainerAllocator>
00613 struct MD5Sum<door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> > {
00614 static const char* value()
00615 {
00616 return "46040a30211c7ba5ce5105a2fbcfa5de";
00617 }
00618
00619 static const char* value(const door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> &) { return value(); }
00620 };
00621
00622 template<class ContainerAllocator>
00623 struct DataType<door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> > {
00624 static const char* value()
00625 {
00626 return "door_handle_detector/DoorsDetector";
00627 }
00628
00629 static const char* value(const door_handle_detector::DoorsDetectorRequest_<ContainerAllocator> &) { return value(); }
00630 };
00631
00632 template<class ContainerAllocator>
00633 struct MD5Sum<door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> > {
00634 static const char* value()
00635 {
00636 return "46040a30211c7ba5ce5105a2fbcfa5de";
00637 }
00638
00639 static const char* value(const door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> &) { return value(); }
00640 };
00641
00642 template<class ContainerAllocator>
00643 struct DataType<door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> > {
00644 static const char* value()
00645 {
00646 return "door_handle_detector/DoorsDetector";
00647 }
00648
00649 static const char* value(const door_handle_detector::DoorsDetectorResponse_<ContainerAllocator> &) { return value(); }
00650 };
00651
00652 }
00653 }
00654
00655 #endif // DOOR_HANDLE_DETECTOR_SERVICE_DOORSDETECTOR_H
00656