Wiselib
|
00001 /*************************************************************************** 00002 ** This file is part of the generic algorithm library Wiselib. ** 00003 ** Copyright (C) 2008,2009 by the Wisebed (www.wisebed.eu) project. ** 00004 ** ** 00005 ** The Wiselib is free software: you can redistribute it and/or modify ** 00006 ** it under the terms of the GNU Lesser General Public License as ** 00007 ** published by the Free Software Foundation, either version 3 of the ** 00008 ** License, or (at your option) any later version. ** 00009 ** ** 00010 ** The Wiselib is distributed in the hope that it will be useful, ** 00011 ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** 00012 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** 00013 ** GNU Lesser General Public License for more details. ** 00014 ** ** 00015 ** You should have received a copy of the GNU Lesser General Public ** 00016 ** License along with the Wiselib. ** 00017 ** If not, see <http://www.gnu.org/licenses/>. ** 00018 ***************************************************************************/ 00019 #ifndef CONNECTOR_ISENSE_CLOCK_H 00020 #define CONNECTOR_ISENSE_CLOCK_H 00021 00022 #include "external_interface/isense/isense_types.h" 00023 #include <isense/os.h> 00024 #include <isense/time.h> 00025 #include <isense/clock.h> 00026 00027 namespace wiselib 00028 { 00038 template<typename OsModel_P, 00039 typename Time_P = isense::Time> 00040 class iSenseClockModel 00041 { 00042 public: 00043 typedef OsModel_P OsModel; 00044 00045 typedef iSenseClockModel<OsModel> self_type; 00046 typedef self_type* self_pointer_t; 00047 00048 typedef Time_P time_t; 00049 // -------------------------------------------------------------------- 00050 enum ErrorCodes 00051 { 00052 SUCCESS = OsModel::SUCCESS, 00053 ERR_UNSPEC = OsModel::ERR_UNSPEC 00054 }; 00055 // -------------------------------------------------------------------- 00056 enum 00057 { 00058 READY = OsModel::READY, 00059 NO_VALUE = OsModel::NO_VALUE, 00060 INACTIVE = OsModel::INACTIVE 00061 }; 00062 // -------------------------------------------------------------------- 00063 enum 00064 { 00065 CLOCKS_PER_SECOND = 1000 00066 }; 00067 // -------------------------------------------------------------------- 00068 iSenseClockModel( isense::Os& os ) 00069 : os_(os) 00070 {} 00071 // -------------------------------------------------------------------- 00072 int state() 00073 { 00074 return READY; 00075 } 00076 // -------------------------------------------------------------------- 00077 time_t time() 00078 { 00079 return time_t( os().time() ); 00080 } 00081 // -------------------------------------------------------------------- 00082 int set_time( time_t time ) 00083 { 00084 os().clock().set_time( time ); 00085 return SUCCESS; 00086 } 00087 // -------------------------------------------------------------------- 00088 uint16_t microseconds( time_t time ) 00089 { 00090 return 0; 00091 } 00092 // -------------------------------------------------------------------- 00093 uint16_t milliseconds( time_t time ) 00094 { 00095 return time.ms(); 00096 } 00097 // -------------------------------------------------------------------- 00098 uint32_t seconds( time_t time ) 00099 { 00100 return time.sec(); 00101 } 00102 00103 private: 00104 isense::Os& os() 00105 { return os_; } 00106 // -------------------------------------------------------------------- 00107 isense::Os& os_; 00108 }; 00109 } 00110 00111 #endif