Wiselib
wiselib.testing/external_interface/pc/pc_clock.h
Go to the documentation of this file.
00001 // vim: set noexpandtab ts=4 sw=4:
00002 
00003 #ifndef PC_CLOCK_H
00004 #define PC_CLOCK_H
00005 
00006 // TODO: De-Boostification
00007 
00008 #include "boost/date_time/posix_time/posix_time.hpp"
00009 #include "external_interface/pc/pc_os.h"
00010 
00011 namespace wiselib {
00012    template<typename OsModel_P>
00013    class PCClockModel {
00014       public:
00015          typedef OsModel_P OsModel;
00016          
00017          typedef PCClockModel<OsModel> self_type;
00018          typedef self_type* self_pointer_t;
00019          
00020          typedef boost::posix_time::ptime time_t;
00021          typedef time_t value_t;
00022          typedef uint16_t micros_t;
00023          typedef uint16_t millis_t;
00024          typedef uint32_t seconds_t;
00025          
00026          enum States
00027          {
00028             READY = OsModel::READY,
00029             NO_VALUE = OsModel::NO_VALUE,
00030             INACTIVE = OsModel::INACTIVE
00031          };
00032          
00033          PCClockModel();
00034          PCClockModel(PCOs& os);
00035          
00036          int state();
00037          time_t time();
00038          //void set_time(time_t); // not supported
00039          micros_t microseconds(time_t);
00040          millis_t milliseconds(time_t);
00041          seconds_t seconds(time_t);
00042    };
00043    
00044    template<typename OsModel_P>
00045    PCClockModel<OsModel_P>::
00046 	PCClockModel() {
00047    }
00048    
00049    template<typename OsModel_P>
00050    PCClockModel<OsModel_P>::
00051 	PCClockModel(PCOs& os) {
00052    }
00053    
00054    template<typename OsModel_P>
00055    int PCClockModel<OsModel_P>::
00056 	state() {
00057       return READY;
00058    }
00059    
00060    template<typename OsModel_P>
00061    typename PCClockModel<OsModel_P>::time_t PCClockModel<OsModel_P>::
00062 	time() {
00063       return boost::posix_time::microsec_clock::universal_time();
00064    }
00065    
00066    template<typename OsModel_P>
00067    typename PCClockModel<OsModel_P>::micros_t PCClockModel<OsModel_P>::
00068 	microseconds(time_t t) {
00069       return t.time_of_day().total_microseconds();
00070    }
00071    
00072    template<typename OsModel_P>
00073    typename PCClockModel<OsModel_P>::millis_t PCClockModel<OsModel_P>::
00074 	milliseconds(time_t t) {
00075       return t.time_of_day().total_milliseconds();
00076    }
00077    
00078    template<typename OsModel_P>
00079    typename PCClockModel<OsModel_P>::seconds_t PCClockModel<OsModel_P>::
00080 	seconds(time_t t) {
00081       return t.time_of_day().total_seconds();
00082    }
00083    
00084 } // namespace wiselib
00085 
00086 #endif // PC_CLOCK_H
00087 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines