00001
00002
00003
00004
00005
00006
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
00020
00021 struct RG_Message
00022 {
00023
00024
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 ×tamp)
00045 {
00046 m_rgReadings[0] = rgReadings(1);
00047 m_rgReadings[1] = rgReadings(2);
00048 m_rgReadings[2] = rgReadings(3);
00049
00050 memcpy(&m_timestamp, ×tamp, 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 ×tamp)
00063 {
00064 m_rgReadings[0] = rg1;
00065 m_rgReadings[1] = rg2;
00066 m_rgReadings[2] = rg3;
00067
00068 memcpy(&m_timestamp, ×tamp, sizeof(m_timestamp));
00069 }
00070
00071
00072
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
00092
00093 public:
00094 struct timeval m_timestamp;
00095 double m_rgReadings[3];
00096 };
00097
00098
00099
00100
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