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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MbedHardware.h Source File

MbedHardware.h

00001 /*
00002  * MbedHardware
00003  *
00004  *  Created on: Aug 17, 2011
00005  *      Author: nucho
00006  */
00007 
00008 #ifndef MBEDHARDWARE_H_
00009 #define MBEDHARDWARE_H_
00010 
00011 #include"mbed.h"
00012 #include"MODSERIAL.h"
00013 
00014 #ifndef ROSSERIAL_BAUDRATE
00015 #define ROSSERIAL_BAUDRATE    57600
00016 #endif
00017 
00018 
00019 class MbedHardware {
00020 public:
00021     MbedHardware(MODSERIAL* io , int baud= ROSSERIAL_BAUDRATE)
00022             :iostream(*io){
00023         baud_ = baud;
00024         t.start();
00025     }
00026     MbedHardware()
00027             :iostream(USBTX, USBRX) {
00028         baud_ = ROSSERIAL_BAUDRATE;
00029         t.start();
00030     }
00031     MbedHardware(MbedHardware& h)
00032             :iostream(h.iostream) {
00033         this->baud_ = h.baud_;
00034         
00035         t.start();
00036     }
00037 
00038     void setBaud(int baud) {
00039         this->baud_= baud;
00040     }
00041 
00042     int getBaud() {
00043         return baud_;
00044     }
00045 
00046     void init() {
00047         iostream.baud(baud_);
00048     }
00049 
00050     int read() {
00051         if (iostream.readable()) {
00052             return iostream.getc();
00053         } else {
00054             return -1;
00055         }
00056     };
00057     void write(uint8_t* data, int length) {
00058         for (int i=0; i<length; i++) iostream.putc(data[i]);
00059     }
00060 
00061     unsigned long time() {
00062         return t.read_ms();
00063     }
00064 
00065 protected:
00066     int baud_;
00067     MODSERIAL iostream;
00068     Timer t;
00069 };
00070 
00071 
00072 #endif /* MBEDHARDWARE_H_ */