Wiselib
|
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