00001 /* 00002 * WiPal - A library and a set of tools to manipulate wireless traces. 00003 * Copyright (C) 2007 Universite Pierre et Marie Curie - Paris 6 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; either version 2 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program 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 General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 00018 * MA 02110-1301 USA 00019 * 00020 * Author: Thomas Claveirole <thomas.claveirole@lip6.fr> 00021 */ 00022 #ifndef WIFI_MACTIME_TRACKER_HXX_ 00023 # define WIFI_MACTIME_TRACKER_HXX_ 00024 00025 # include "mactime_tracker.hh" 00026 00027 namespace wifi 00028 { 00029 00030 template <class Bottom> 00031 mactime_tracker<Bottom>::mactime_tracker(): 00032 mactime_ (0), 00033 wrap_count_ (0) 00034 { 00035 } 00036 00037 template <class Bottom> 00038 mactime_tracker<Bottom>::mactime_tracker(const mactime_type& mactime_start): 00039 mactime_ (mactime_start), 00040 wrap_count_ (0) 00041 { 00042 } 00043 00044 template <class Bottom> 00045 void 00046 mactime_tracker<Bottom>::tick(const mactime_type& m) 00047 { 00048 if (m < mactime_) 00049 ++wrap_count_; 00050 mactime_ = m; 00051 } 00052 00053 template <class Bottom> 00054 void 00055 mactime_tracker<Bottom>::tick(const prism::header* header, 00056 size_t caplen, 00057 bool swapped) 00058 { 00059 if (caplen < sizeof (prism::header)) 00060 return; 00061 00062 this->exact().tick(header->mactime.get(swapped)); 00063 } 00064 00065 template <class Bottom> 00066 tool::microseconds 00067 mactime_tracker<Bottom>::microseconds() const 00068 { 00069 return tool::microseconds(wrap_count_, mactime_); 00070 } 00071 00072 template <class Bottom> 00073 const typename mactime_tracker<Bottom>::mactime_type& 00074 mactime_tracker<Bottom>::mactime() const 00075 { 00076 return mactime_; 00077 } 00078 00079 } // End of namespace wifi. 00080 00081 #endif // ! WIFI_MACTIME_TRACKER_HXX_