Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages | Examples

RG_Message.h

Go to the documentation of this file.
00001 //////////////////////////////////////////////////////////////////////////////
00002 /*! \file RG_Message.h
00003  *  \brief Defines a sample message that can be sent over the network.
00004  *  \author     $Author: rsharo $
00005  *  \version $Revision: 1.1 $
00006  *  \date    $Date: 2003/12/17 22:43:54 $
00007 */////////////////////////////////////////////////////////////////////////////
00008 
00009 #ifndef __RG_MESSAGE__
00010 #define __RG_MESSAGE__
00011 
00012 #include "ace/ACE.h"
00013 #include <time.h>
00014 #include "matrix/Matrix.h"
00015 
00016 using O_SESSAME::Vector;
00017 
00018 /*
00019  *  Rate Gyro message. Carries 3 rate gyro readings and a timestamp.
00020  */
00021 struct RG_Message
00022 {
00023 /*
00024  * Constructors
00025  */
00026                 RG_Message()
00027                 {
00028                         m_rgReadings[0] = 0.0;
00029                         m_rgReadings[1] = 0.0;
00030                         m_rgReadings[2] = 0.0;
00031 
00032                         m_timestamp = ACE_OS::gettimeofday();
00033                 }
00034 
00035                 explicit RG_Message(const Vector & rgReadings)
00036                 {
00037                         m_rgReadings[0] = rgReadings(1);
00038                         m_rgReadings[1] = rgReadings(2);
00039                         m_rgReadings[2] = rgReadings(3);
00040 
00041                         m_timestamp = ACE_OS::gettimeofday();
00042                 }
00043 
00044                 RG_Message(const Vector & rgReadings, const struct timeval &timestamp)
00045                 {
00046                         m_rgReadings[0] = rgReadings(1);
00047                         m_rgReadings[1] = rgReadings(2);
00048                         m_rgReadings[2] = rgReadings(3);
00049 
00050                         memcpy(&m_timestamp, &timestamp, sizeof(m_timestamp));
00051                 }
00052 
00053                 RG_Message(double rg1, double rg2, double rg3)
00054                 {
00055                         m_rgReadings[0] = rg1;
00056                         m_rgReadings[1] = rg2;
00057                         m_rgReadings[2] = rg3;
00058 
00059                         m_timestamp = ACE_OS::gettimeofday();
00060                 }
00061 
00062                 RG_Message(double rg1, double rg2, double rg3, const struct timeval &timestamp)
00063                 {
00064                         m_rgReadings[0] = rg1;
00065                         m_rgReadings[1] = rg2;
00066                         m_rgReadings[2] = rg3;
00067 
00068                         memcpy(&m_timestamp, &timestamp, sizeof(m_timestamp));
00069                 }
00070 
00071 /*
00072  * Methods
00073  */
00074                 void FillVector(Vector & v) const
00075                 {
00076                                 v(1) = m_rgReadings[0];
00077                                 v(2) = m_rgReadings[1];
00078                                 v(3) = m_rgReadings[2];
00079                 }
00080 
00081                 operator Vector () const
00082                 {
00083                                 Vector v(3);
00084 
00085                                 this->FillVector(v);
00086 
00087                                 return v;
00088                 }
00089 
00090 /*
00091  * Members
00092  */
00093 public:
00094                 struct timeval m_timestamp;
00095                 double m_rgReadings[3];
00096 };
00097 
00098 
00099 /*
00100  * Output stream operator. Formats the object for display or output to a file.
00101  */
00102 inline std::ostream & operator << (std::ostream & strm, const RG_Message & msg)
00103 {
00104                 char *timestr = ctime(&(msg.m_timestamp.tv_sec));
00105                 timestr[strlen(timestr)-1] = '\0';
00106 
00107                 strm << "{ " 
00108                                 << timestr << ":  "
00109                                 << msg.m_rgReadings[0] << ", "
00110                                 << msg.m_rgReadings[1] << ", "
00111                                 << msg.m_rgReadings[2] 
00112                          << " }" << std::endl;
00113 
00114                 return strm;
00115 }
00116 
00117 #endif
00118 

Generated on Wed Sep 5 12:54:24 2007 for DSACSS Operational Code by  doxygen 1.3.9.1