00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef WIFI_STATS_GAPS_HH_
00023 # define WIFI_STATS_GAPS_HH_
00024
00025 # include <map>
00026
00027 namespace wpl
00028 {
00029
00030 namespace wifi
00031 {
00032
00033 namespace stats
00034 {
00035
00036 struct gaps: public module
00037 {
00038 gaps(const void*);
00039
00040 template <class Frame>
00041 void
00042 account_frame(const Frame& frame,
00043 const size_t& ,
00044 const type::frame_type& ty,
00045 const unsigned& ,
00046 const bool& ,
00047 const addr* const& rx,
00048 const addr* const& tx,
00049 const bool& );
00050
00051 void account_gap(const unsigned& gap_length);
00052
00053 std::ostream& print(std::ostream& o) const;
00054
00055 private:
00056 unsigned* last_;
00057
00058 std::map<addr, unsigned> inter_frames_;
00059
00060 enum
00061 {
00062 clear = 0,
00063 obstructed = 1,
00064 };
00065
00066 unsigned gaps_[2];
00067 unsigned misses_[2];
00068 };
00069
00070 }
00071
00072 }
00073
00074 }
00075
00076 # include "gaps.hxx"
00077
00078 #endif // ! WIFI_STATS_GAPS_HH_