nucho / Mbed 2 deprecated rosserial_mbed

Dependencies:   rosserial_mbed_lib mbed Servo

Committer:
nucho
Date:
Sun Oct 16 07:17:43 2011 +0000
Revision:
1:098e75fd5ad2
Parent:
0:06fc856e99ca
Child:
3:dff241b66f84
This program supported the revision of 143 of rosserial.
And the bug fix of receive of array data.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nucho 1:098e75fd5ad2 1 /*
nucho 1:098e75fd5ad2 2 * Software License Agreement (BSD License)
nucho 1:098e75fd5ad2 3 *
nucho 1:098e75fd5ad2 4 * Copyright (c) 2011, Willow Garage, Inc.
nucho 1:098e75fd5ad2 5 * All rights reserved.
nucho 1:098e75fd5ad2 6 *
nucho 1:098e75fd5ad2 7 * Redistribution and use in source and binary forms, with or without
nucho 1:098e75fd5ad2 8 * modification, are permitted provided that the following conditions
nucho 1:098e75fd5ad2 9 * are met:
nucho 0:06fc856e99ca 10 *
nucho 1:098e75fd5ad2 11 * * Redistributions of source code must retain the above copyright
nucho 1:098e75fd5ad2 12 * notice, this list of conditions and the following disclaimer.
nucho 1:098e75fd5ad2 13 * * Redistributions in binary form must reproduce the above
nucho 1:098e75fd5ad2 14 * copyright notice, this list of conditions and the following
nucho 1:098e75fd5ad2 15 * disclaimer in the documentation and/or other materials provided
nucho 1:098e75fd5ad2 16 * with the distribution.
nucho 1:098e75fd5ad2 17 * * Neither the name of Willow Garage, Inc. nor the names of its
nucho 1:098e75fd5ad2 18 * contributors may be used to endorse or promote prducts derived
nucho 1:098e75fd5ad2 19 * from this software without specific prior written permission.
nucho 1:098e75fd5ad2 20 *
nucho 1:098e75fd5ad2 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
nucho 1:098e75fd5ad2 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
nucho 1:098e75fd5ad2 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
nucho 1:098e75fd5ad2 24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
nucho 1:098e75fd5ad2 25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
nucho 1:098e75fd5ad2 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
nucho 1:098e75fd5ad2 27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
nucho 1:098e75fd5ad2 28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
nucho 1:098e75fd5ad2 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
nucho 1:098e75fd5ad2 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
nucho 1:098e75fd5ad2 31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
nucho 1:098e75fd5ad2 32 * POSSIBILITY OF SUCH DAMAGE.
nucho 0:06fc856e99ca 33 */
nucho 0:06fc856e99ca 34
nucho 1:098e75fd5ad2 35 #ifndef ROS_SERVICE_SERVER_H_
nucho 1:098e75fd5ad2 36 #define ROS_SERVICE_SERVER_H_
nucho 0:06fc856e99ca 37
nucho 0:06fc856e99ca 38 #include "node_output.h"
nucho 0:06fc856e99ca 39
nucho 1:098e75fd5ad2 40 namespace ros {
nucho 1:098e75fd5ad2 41
nucho 1:098e75fd5ad2 42 template<typename SrvRequest , typename SrvResponse>
nucho 0:06fc856e99ca 43 class ServiceServer : MsgReceiver{
nucho 1:098e75fd5ad2 44 public:
nucho 0:06fc856e99ca 45 typedef void(*CallbackT)(const SrvRequest&, SrvResponse&);
nucho 0:06fc856e99ca 46
nucho 0:06fc856e99ca 47 ServiceServer(const char* topic_name, CallbackT cb){
nucho 1:098e75fd5ad2 48 this->topic_ = topic_name;
nucho 1:098e75fd5ad2 49 this->cb_ = cb;
nucho 0:06fc856e99ca 50 }
nucho 0:06fc856e99ca 51
nucho 0:06fc856e99ca 52 ServiceServer(ServiceServer& srv){
nucho 1:098e75fd5ad2 53 this->topic_ = srv.topic_;
nucho 1:098e75fd5ad2 54 this->cb_ = srv.cb_;
nucho 0:06fc856e99ca 55 }
nucho 0:06fc856e99ca 56
nucho 1:098e75fd5ad2 57 virtual void receive(unsigned char * data){
nucho 1:098e75fd5ad2 58 req.deserialize(data);
nucho 1:098e75fd5ad2 59 this->cb_(req, resp);
nucho 1:098e75fd5ad2 60 no_->publish(id_, &resp);
nucho 1:098e75fd5ad2 61 }
nucho 1:098e75fd5ad2 62
nucho 1:098e75fd5ad2 63 virtual int _getType(){
nucho 0:06fc856e99ca 64 return 3;
nucho 1:098e75fd5ad2 65 }
nucho 1:098e75fd5ad2 66
nucho 1:098e75fd5ad2 67 virtual const char * getMsgType(){
nucho 0:06fc856e99ca 68 return req.getType();
nucho 1:098e75fd5ad2 69 }
nucho 0:06fc856e99ca 70
nucho 0:06fc856e99ca 71 SrvRequest req;
nucho 0:06fc856e99ca 72 SrvResponse resp;
nucho 0:06fc856e99ca 73 NodeOutput_ * no_;
nucho 0:06fc856e99ca 74
nucho 1:098e75fd5ad2 75 private:
nucho 1:098e75fd5ad2 76 CallbackT cb_;
nucho 0:06fc856e99ca 77 };
nucho 1:098e75fd5ad2 78
nucho 0:06fc856e99ca 79 }
nucho 0:06fc856e99ca 80
nucho 1:098e75fd5ad2 81 #endif