802.11-module.h

00001 /*
00002  * Copyright (c) 2007 Regents of the SIGNET lab, University of Padova.
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions
00007  * are met:
00008  * 1. Redistributions of source code must retain the above copyright
00009  *    notice, this list of conditions and the following disclaimer.
00010  * 2. Redistributions in binary form must reproduce the above copyright
00011  *    notice, this list of conditions and the following disclaimer in the
00012  *    documentation and/or other materials provided with the distribution.
00013  * 3. Neither the name of the University of Padova (SIGNET lab) nor the 
00014  *    names of its contributors may be used to endorse or promote products 
00015  *    derived from this software without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00018  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
00019  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
00020  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
00021  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
00022  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
00023  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
00024  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
00026  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
00027  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00028  */
00029 
00030 #ifndef _80211Module_
00031 #define _80211Module_
00032 
00033 #include "module.h"
00034 #include "mac.h"
00035 #include "queue.h"
00036 
00037 class MacModule802_11;
00038 
00039 class MacInterface : public NsObject
00040 {
00041         public:
00042                 MacInterface();
00043                 ~MacInterface();
00044                 virtual void recv(Packet *p, const char *why);
00045                 virtual void recv(Packet *p, Handler *h);
00046                 virtual void recv(Packet *p);
00047                 void setModule(MacModule802_11 *m);
00048         protected:
00049                 MacModule802_11 *module_;
00050 };
00051 
00052 class LogInterface : public NsObject
00053 {
00054         public:
00055                 LogInterface();
00056                 ~LogInterface();
00057                 virtual void recv(Packet *p, const char *why);
00058                 virtual void recv(Packet *p, Handler *h);
00059                 virtual void recv(Packet *p);
00060                 void setModule(MacModule802_11 *m);
00061         protected:
00062                 MacModule802_11 *module_;
00063 };
00064 
00065 
00066 class LLInterface : public NsObject
00067 {
00068         public:
00069                 LLInterface();
00070                 ~LLInterface();
00071                 virtual void recv(Packet *p, Handler *h);
00072                 virtual void recv(Packet *p);
00073                 void setModule(MacModule802_11 *m);
00074         protected:
00075                 MacModule802_11 *module_;
00076 };
00077 
00078 class MacModule802_11 : public Module
00079 {
00080         friend class MacInterface;
00081         friend class LogInterface;
00082         friend class LLInterface;
00083         public:
00084                 MacModule802_11();
00085                 virtual ~MacModule802_11();
00086                 virtual void recv(Packet*, Handler* callback);
00087                 virtual void recv(Packet *p);
00088                 virtual int command(int argc, const char*const* argv);
00089         protected:
00090                 Mac *mac_;
00091                 Queue *queue_;
00092                 LL *ll_;
00093                 MacInterface *macif_;
00094                 LogInterface *logif_;
00095                 LLInterface *llif_;
00096 };
00097 
00098 #endif

Generated on Wed Nov 26 15:47:27 2008 for NS-MIRACLE library by  doxygen 1.5.2