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

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_SUBSCRIBER_H_
nucho 1:098e75fd5ad2 36 #define ROS_SUBSCRIBER_H_
nucho 0:06fc856e99ca 37
nucho 0:06fc856e99ca 38 #include "rosserial_ids.h"
nucho 0:06fc856e99ca 39 #include "msg_receiver.h"
nucho 1:098e75fd5ad2 40
nucho 1:098e75fd5ad2 41 namespace ros {
nucho 0:06fc856e99ca 42
nucho 1:098e75fd5ad2 43 /* ROS Subscriber
nucho 1:098e75fd5ad2 44 * This class handles holding the msg so that
nucho 1:098e75fd5ad2 45 * it is not continously reallocated. It is also used by the
nucho 1:098e75fd5ad2 46 * node handle to keep track of callback functions and IDs.
nucho 1:098e75fd5ad2 47 */
nucho 1:098e75fd5ad2 48 template<typename MsgT>
nucho 1:098e75fd5ad2 49 class Subscriber: public MsgReceiver{
nucho 1:098e75fd5ad2 50 public:
nucho 0:06fc856e99ca 51 typedef void(*CallbackT)(const MsgT&);
nucho 1:098e75fd5ad2 52 MsgT msg;
nucho 0:06fc856e99ca 53
nucho 0:06fc856e99ca 54 Subscriber(const char * topic_name, CallbackT msgCB){
nucho 1:098e75fd5ad2 55 topic_ = topic_name;
nucho 1:098e75fd5ad2 56 cb_= msgCB;
nucho 1:098e75fd5ad2 57 }
nucho 1:098e75fd5ad2 58
nucho 1:098e75fd5ad2 59 virtual void receive(unsigned char* data){
nucho 1:098e75fd5ad2 60 msg.deserialize(data);
nucho 1:098e75fd5ad2 61 this->cb_(msg);
nucho 0:06fc856e99ca 62 }
nucho 1:098e75fd5ad2 63
nucho 1:098e75fd5ad2 64 virtual const char * getMsgType(){return this->msg.getType();}
nucho 1:098e75fd5ad2 65 virtual int _getType(){return TOPIC_SUBSCRIBERS;}
nucho 1:098e75fd5ad2 66
nucho 1:098e75fd5ad2 67 private:
nucho 1:098e75fd5ad2 68 CallbackT cb_;
nucho 1:098e75fd5ad2 69 };
nucho 0:06fc856e99ca 70
nucho 0:06fc856e99ca 71 }
nucho 1:098e75fd5ad2 72
nucho 1:098e75fd5ad2 73 #endif