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_MISSED_ESTIMATIONS_HH_
00023 # define WIFI_STATS_MISSED_ESTIMATIONS_HH_
00024
00025 # include <map>
00026
00027 # include <wipal/wifi/stats/simple_counters.hh>
00028 # include <wipal/tool/microseconds.hh>
00029 # include <wipal/wifi/addr.hh>
00030
00031 namespace wpl
00032 {
00033
00034 namespace wifi
00035 {
00036
00037 namespace stats
00038 {
00039
00040 struct missed_estimations: public module
00041 {
00042 template <class H, class T>
00043 missed_estimations(const module_list<H, T>* ml);
00044
00045 template <class Frame>
00046 void
00047 account_beacon(const Frame& frame,
00048 const addr* const& ap,
00049 const addr* const& bss,
00050 const optional_string& ssid,
00051 const bool& ibss);
00052
00053 void account_gap(const unsigned& gap_length);
00054 void account_miss();
00055
00056 std::ostream& print(std::ostream& o) const;
00057
00058 private:
00059 enum
00060 {
00061
00062
00063
00064 beacon_interval = 102400
00065 };
00066
00067 typedef std::map<addr, tool::microseconds> beacons_map;
00068
00069 beacons_map beacons_;
00070 unsigned missed_beacons_;
00071 unsigned missed_;
00072 const simple_counters* sc_;
00073 };
00074
00075 }
00076
00077 }
00078
00079 }
00080
00081 # include "missed_estimations.hxx"
00082
00083 #endif // ! WIFI_STATS_MISSED_ESTIMATIONS_HH_