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