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