This program is porting rosserial_arduino for mbed http://www.ros.org/wiki/rosserial_arduino This program supported the revision of 169 of rosserial.

Dependencies:  

Dependents:   rosserial_mbed robot_S2

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