src/wscout_gui_ieee802_11_beacon_header.hh

00001 /*
00002  * WScout - Lightweight PCAP visualizer.
00003  * Copyright (C) 2007, 2008  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 
00023 #ifndef WSCOUT_GUI_IEEE802_11_BEACON_HEADER_HH_
00024 # define WSCOUT_GUI_IEEE802_11_BEACON_HEADER_HH_
00025 
00026 # include <QtGui/QLabel>
00027 
00028 # include <wipal/wifi/timestamp.hh>
00029 
00030 # include "wscout_gui_header_base.hh"
00031 
00032 namespace wscout
00033 {
00034 
00035   namespace gui
00036   {
00037 
00043     struct IEEE80211BeaconHeader:
00044       public HeaderBase<IEEE80211BeaconHeader, protocol::IEEE802_11_BEACON>
00045     {
00047       IEEE80211BeaconHeader(QWidget* parent = 0);
00048 
00050       virtual next_header       setup(const void*                       header,
00051                                       size_t                            caplen,
00052                                       const Trace&                      trace,
00053                                       const pcapxx::frame_descriptor&   desc);
00054     private:
00055 
00056       struct frame_info_element
00057       {
00058         uint8_t         id;
00059         uint8_t         len;
00060         uint8_t         info[];
00061       };
00062 
00063       struct frame_body
00064       {
00065         wifi::timestamp timestamp;
00066         uint16_t        beacon_interval;
00067         uint16_t        capability;
00068         uint8_t         info_elements[];
00069       };
00070 
00071       void                      setupTimestamp(const frame_body& body);
00072       void                      setupBeaconInterval(const frame_body&, bool s);
00073       void                      setupCapability(const frame_body&, bool s);
00074 
00075       void                      setupInfoElements(const frame_body&     body,
00076                                                   size_t                caplen,
00077                                                   bool                  swap);
00078 
00079       const frame_info_element* handleInfoElement(const frame_info_element* e,
00080                                                   bool                      s);
00081 
00082       QLabel    ssid;
00083       QLabel    capability;
00084       QLabel    timestamp;
00085       QLabel    beaconInterval;
00086     };
00087 
00088   } // End of namespace gui.
00089 
00090 } // End of namespace wscout.
00091 
00092 #endif // ! WSCOUT_GUI_IEEE802_11_BEACON_HEADER_HH_

Generated on Wed Jan 30 19:02:27 2008 for WScout by  doxygen 1.5.4