00001 00025 #ifndef __NEW_SIM_UTILS_H__ 00026 #define __NEW_SIM_UTILS_H__ 00027 00028 #include <sys/time.h> 00029 00035 enum tNewSimulatorFruState 00036 { 00037 eFruStateNotInstalled = 0, 00038 eFruStateInactive = 1, 00039 eFruStateActivationRequest = 2, 00040 eFruStateActivationInProgress = 3, 00041 eFruStateActive = 4, 00042 eFruStateDeactivationRequest = 5, 00043 eFruStateDeactivationInProgress = 6, 00044 eFruStateCommunicationLost = 7 00045 }; 00046 00053 const char *NewSimulatorFruStateToString( tNewSimulatorFruState state ); 00054 00056 #define dDateStringSize 11 00057 void NewSimulatorDateToString( unsigned int time, char *str ); 00058 00060 #define dTimeStringSize 9 00061 void NewSimulatorTimeToString( unsigned int time, char *str ); 00062 00064 #define dDateTimeStringSize 20 00065 void NewSimulatorDateTimeToString( unsigned int time, char *str ); 00066 00067 00073 class cTime 00074 { 00075 public: 00077 timeval m_time; 00078 00082 cTime() 00083 { 00084 m_time.tv_sec = 0; 00085 m_time.tv_usec = 0; 00086 } 00087 00091 cTime( const struct timeval &tv ) 00092 { 00093 m_time.tv_sec = tv.tv_sec; 00094 m_time.tv_usec = tv.tv_usec; 00095 } 00096 00100 cTime( const cTime &t ) 00101 { 00102 m_time.tv_sec = t.m_time.tv_sec; 00103 m_time.tv_usec = t.m_time.tv_usec; 00104 } 00105 00109 cTime( unsigned int s, unsigned int u ) 00110 { 00111 m_time.tv_sec = s; 00112 m_time.tv_usec = u; 00113 } 00114 00118 void Normalize() 00119 { 00120 while( m_time.tv_usec > 1000000 ) 00121 { 00122 m_time.tv_usec -= 1000000; 00123 m_time.tv_sec++; 00124 } 00125 00126 while( m_time.tv_usec < 0 ) 00127 { 00128 m_time.tv_usec += 1000000; 00129 m_time.tv_sec--; 00130 } 00131 } 00132 00136 int Cmp( const cTime &t ) 00137 { 00138 if ( m_time.tv_sec < t.m_time.tv_sec ) 00139 return -1; 00140 00141 if ( m_time.tv_sec > t.m_time.tv_sec ) 00142 return 1; 00143 00144 if ( m_time.tv_usec < t.m_time.tv_usec ) 00145 return -1; 00146 00147 if ( m_time.tv_usec > t.m_time.tv_usec ) 00148 return 1; 00149 00150 return 0; 00151 } 00152 00156 bool operator<( const cTime &t ) 00157 { 00158 return Cmp( t ) < 0; 00159 } 00160 00164 bool operator<=( const cTime &t ) 00165 { 00166 return Cmp( t ) < 0; 00167 } 00168 00172 bool operator>( const cTime &t ) 00173 { 00174 return Cmp( t ) > 0; 00175 } 00176 00180 bool operator>=( const cTime &t ) 00181 { 00182 return Cmp( t ) >= 0; 00183 } 00184 00188 bool operator==( const cTime &t ) 00189 { 00190 return Cmp( t ) == 0; 00191 } 00192 00196 bool operator!=( const cTime &t ) 00197 { 00198 return Cmp( t ) == 0; 00199 } 00200 00204 cTime &operator+=( const cTime &t ) 00205 { 00206 m_time.tv_sec += t.m_time.tv_sec; 00207 m_time.tv_usec += t.m_time.tv_usec; 00208 00209 Normalize(); 00210 00211 return *this; 00212 } 00213 00217 cTime &operator+=( int ms ) 00218 { 00219 m_time.tv_sec += ms / 1000; 00220 m_time.tv_usec += (ms % 1000) * 1000; 00221 00222 Normalize(); 00223 00224 return *this; 00225 } 00226 00230 cTime &operator-=( int ms ) 00231 { 00232 m_time.tv_sec -= ms / 1000; 00233 m_time.tv_usec -= (ms % 1000) * 1000; 00234 00235 Normalize(); 00236 00237 return *this; 00238 } 00239 00243 cTime &operator-=( cTime t ) 00244 { 00245 m_time.tv_sec -= t.m_time.tv_sec; 00246 m_time.tv_usec -= t.m_time.tv_usec; 00247 00248 Normalize(); 00249 00250 return *this; 00251 } 00252 00256 static cTime Now() 00257 { 00258 cTime t; 00259 gettimeofday( &t.m_time, 0 ); 00260 00261 return t; 00262 } 00263 00267 unsigned int GetMsec() 00268 { 00269 return (unsigned int) (m_time.tv_sec * 1000 + m_time.tv_usec / 1000); 00270 } 00271 00275 void Clear() 00276 { 00277 m_time.tv_sec = 0; 00278 m_time.tv_usec = 0; 00279 } 00280 00284 bool IsSet() 00285 { 00286 return ( !(( m_time.tv_sec == 0 ) && ( m_time.tv_usec == 0 )) ); 00287 } 00288 }; 00289 00290 00291 #endif