WiredPhy Class Reference

#include <wired-phy.h>

Inheritance diagram for WiredPhy:

Phy BiConnector NsObject TclObject Handler Collaboration diagram for WiredPhy:

Collaboration graph
[legend]

Detailed Description

Definition at line 43 of file wired-phy.h.

Public Member Functions

virtual double bittime () const
virtual Channelchannel (void) const
virtual void debug (const char *fmt,...)
virtual int delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer)
virtual void delay_bind_init_all ()
NsObjectdowntarget ()
virtual void drop (Packet *p)
virtual void dump (void) const
LinkHeadhead ()
void insertchnl (struct if_head *head)
void insertnode (struct if_head *head)
int isdebug () const
Phynextchnl (void) const
Phynextnode (void) const
virtual Nodenode (void) const
virtual void recv (Packet *p, const char *s)
void recv (Packet *p, Handler *h)
virtual void recvOnly (Packet *)
void removechnl ()
void sendDown (Packet *p)
int sendUp (Packet *p)
void setchnl (Channel *chnl)
virtual void setnode (Node *node)
double txtime (int bytes)
double txtime (Packet *p)
NsObjectuptarget ()
 WiredPhy (void)

Protected Member Functions

int command (int argc, const char *const *argv)
virtual void drop (Packet *p, const char *s)
void handle (Event *)
 LIST_ENTRY (Phy) node_link_
 LIST_ENTRY (Phy) chnl_link_
virtual void reset ()
virtual void sendDown (Packet *p, Handler *h)
virtual void sendUp (Packet *p, Handler *h)

Protected Attributes

double bandwidth_
Channelchannel_
int debug_
NsObjectdowntarget_
NsObjectdrop_
LinkHeadhead_
int index_
Nodenode_
NsObjectuptarget_

Private Member Functions

int initialized ()


Constructor & Destructor Documentation

WiredPhy::WiredPhy void   ) 
 

Definition at line 47 of file wired-phy.cc.

References Phy::bandwidth_.

00047                        : Phy() 
00048 {
00049     //propagation_ = 0;
00050     //bandwidth_ = 10*1e6;      // 10M
00051     bind_bw("bandwidth_", &bandwidth_);
00052 }


Member Function Documentation

virtual double Phy::bittime  )  const [inline, virtual, inherited]
 

Definition at line 85 of file phy.h.

References Phy::bandwidth_.

00085 { return 1/bandwidth_; }

virtual Channel* Phy::channel void   )  const [inline, virtual, inherited]
 

Definition at line 105 of file phy.h.

References Phy::channel_.

Referenced by SatLL::channel(), SatRouteObject::compute_topology(), LinkHandoffMgr::get_peer(), LinkHandoffMgr::get_peer_linkhead(), LinkHandoffMgr::get_peer_next_linkhead(), Mac802_3::sendDown(), and WirelessChannel::sendUp().

00105 {return channel_;}  

int WiredPhy::command int  argc,
const char *const *  argv
[protected, virtual]
 

Reimplemented from Phy.

Definition at line 56 of file wired-phy.cc.

References Phy::command().

00056                                                   {
00057     if (argc == 3) {
00058         TclObject *obj;
00059         if( (obj = TclObject::lookup(argv[2])) == 0) {
00060             fprintf(stderr, "%s lookup failed\n", argv[1]);
00061             return TCL_ERROR;
00062         }
00063 
00064         //if (strcmp(argv[1], "propagation") == 0) {
00065         //assert(propagation_ == 0);
00066         //propagation_ = (TclObject*) obj;
00067         //return TCL_OK;
00068         //}
00069     }
00070     
00071     return Phy::command(argc, argv);
00072 }

Here is the call graph for this function:

void NsObject::debug const char *  fmt,
  ...
[virtual, inherited]
 

Definition at line 102 of file object.cc.

References NsObject::debug_.

00103 {
00104     if (!debug_)
00105         return;
00106     va_list ap;
00107     va_start(ap, fmt);
00108     vprintf(fmt, ap);
00109 }

int NsObject::delay_bind_dispatch const char *  varName,
const char *  localName,
TclObject tracer
[virtual, inherited]
 

Reimplemented in BayFullTcpAgent, Agent, MPLSAddressClassifier, LDPAgent, HbAfterRtoSctpAgent, MfrHbAfterRtoSctpAgent, MfrTimestampSctpAgent, MultipleFastRtxSctpAgent, NewRenoSctpAgent, TimestampSctpAgent, SctpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, VegasTcpAgent, XcpAgent, and XcpSink.

Definition at line 63 of file object.cc.

References NsObject::debug_.

Referenced by MPLSAddressClassifier::delay_bind_dispatch(), and Agent::delay_bind_dispatch().

00064 {
00065     if (delay_bind_bool(varName, localName, "debug_", &debug_, tracer)) 
00066         return TCL_OK;
00067     return TclObject::delay_bind_dispatch(varName, localName, tracer);
00068 }

void NsObject::delay_bind_init_all  )  [virtual, inherited]
 

Reimplemented in BayFullTcpAgent, Agent, MPLSAddressClassifier, LDPAgent, HbAfterRtoSctpAgent, MfrHbAfterRtoSctpAgent, MfrTimestampSctpAgent, MultipleFastRtxSctpAgent, NewRenoSctpAgent, TimestampSctpAgent, SctpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, VegasTcpAgent, XcpAgent, and XcpSink.

Definition at line 57 of file object.cc.

Referenced by MPLSAddressClassifier::delay_bind_init_all(), and Agent::delay_bind_init_all().

00058 {
00059     delay_bind_init_one("debug_");
00060 }

NsObject* BiConnector::downtarget  )  [inline, inherited]
 

Definition at line 49 of file bi-connector.h.

References BiConnector::downtarget_.

Referenced by SatLL::channel().

00049 { return downtarget_; }

void BiConnector::drop Packet p,
const char *  s
[protected, virtual, inherited]
 

Definition at line 144 of file bi-connector.cc.

References BiConnector::drop_, Packet::free(), and NsObject::recv().

00145 {
00146     if (drop_ != 0)
00147         drop_->recv(p, s);
00148     else
00149         Packet::free(p);
00150 }

Here is the call graph for this function:

void BiConnector::drop Packet p  )  [virtual, inherited]
 

Definition at line 135 of file bi-connector.cc.

References BiConnector::drop_, Packet::free(), and NsObject::recv().

Referenced by Mac802_3::collision(), SMAC::drop_CTS(), SMAC::drop_DATA(), SMAC::drop_RTS(), SMAC::drop_SYNC(), UnslottedAlohaMac::end_of_contention(), Mac802_15_4::recv(), MacTdma::recvHandler(), MacSimple::recvHandler(), Phy802_15_4::recvOverHandler(), Mac::resume(), MacCsma::resume(), UnslottedAlohaMac::sendUp(), SatMac::sendUp(), Mac::sendUp(), MacTdma::TX_Time(), and Mac802_11::txtime().

00136 {
00137     if (drop_ != 0)
00138         drop_->recv(p);
00139     else
00140         Packet::free(p);
00141 }

Here is the call graph for this function:

void Phy::dump void   )  const [virtual, inherited]
 

Reimplemented in WirelessPhy.

Definition at line 183 of file phy.cc.

References Phy::channel_, Phy::index_, and BiConnector::uptarget_.

Referenced by WirelessPhy::dump(), MobileNode::dump(), and Channel::dump().

00184 {
00185     fprintf(stdout, "\tINDEX: %d\n",
00186         index_);
00187     fprintf(stdout, "\tuptarget: %lx, channel: %lx",
00188         (long) uptarget_, (long) channel_);
00189 
00190 }

void NsObject::handle Event  )  [protected, virtual, inherited]
 

Implements Handler.

Reimplemented in LinkDelay, LL, AckRecons, and Snoop.

Definition at line 91 of file object.cc.

References NsObject::recv().

00092 {
00093     recv((Packet*)e);
00094 }

Here is the call graph for this function:

LinkHead* Phy::head  )  [inline, inherited]
 

Definition at line 108 of file phy.h.

References Phy::head_.

Referenced by SatRouteObject::compute_topology(), SatChannel::find_peer_mac_addr(), LinkHandoffMgr::get_peer_linkhead(), and SatPhy::sendDown().

00108 { return head_; }

int WiredPhy::initialized  )  [inline, private]
 

Definition at line 68 of file wired-phy.h.

References BiConnector::downtarget_, Phy::node_, and BiConnector::uptarget_.

Referenced by sendDown(), and sendUp().

00068                               {
00069         return (node_ && uptarget_ && downtarget_ );
00070     }

void Phy::insertchnl struct if_head *  head  )  [inline, inherited]
 

Definition at line 89 of file phy.h.

References LIST_INSERT_HEAD.

Referenced by SatChannel::add_interface().

00089                                                  {
00090         LIST_INSERT_HEAD(head, this, chnl_link_);
00091         //channel_ = chnl;
00092     }

void Phy::insertnode struct if_head *  head  )  [inline, inherited]
 

Definition at line 95 of file phy.h.

References LIST_INSERT_HEAD.

Referenced by SatNode::command(), and MobileNode::command().

00095                                                  {
00096         LIST_INSERT_HEAD(head, this, node_link_);
00097         //node_ = node;
00098     }

int NsObject::isdebug  )  const [inline, inherited]
 

Definition at line 61 of file object.h.

References NsObject::debug_.

00061 { return debug_; }

Phy::LIST_ENTRY Phy   )  [protected, inherited]
 

Phy::LIST_ENTRY Phy   )  [protected, inherited]
 

Phy* Phy::nextchnl void   )  const [inline, inherited]
 

Definition at line 88 of file phy.h.

Referenced by WirelessChannel::calcHighestAntennaZ(), SatRouteObject::compute_topology(), Channel::dump(), LinkHandoffMgr::get_peer(), LinkHandoffMgr::get_peer_linkhead(), and Channel::sendUp().

00088 { return chnl_link_.le_next; }

Phy* Phy::nextnode void   )  const [inline, inherited]
 

Definition at line 94 of file phy.h.

Referenced by MobileNode::dump(), and WirelessChannel::sendUp().

00094 { return node_link_.le_next; }

virtual Node* Phy::node void   )  const [inline, virtual, inherited]
 

Reimplemented in WirelessPhy.

Definition at line 104 of file phy.h.

References Phy::node_.

Referenced by SatRouteObject::compute_topology(), Mac802_15_4::recv(), Mac802_11::send(), SatPhy::sendDown(), Mac802_15_4::sendDown(), WirelessChannel::sendUp(), Channel::sendUp(), and Phy::setnode().

00104 { return node_; }

void NsObject::recv Packet p,
const char *  s
[virtual, inherited]
 

Reimplemented in CMUTrace.

Definition at line 96 of file object.cc.

References Packet::free().

00097 {
00098     Packet::free(p);
00099 }

Here is the call graph for this function:

void Phy::recv Packet p,
Handler h
[virtual, inherited]
 

Reimplemented from BiConnector.

Reimplemented in RepeaterPhy, and Phy802_15_4.

Definition at line 106 of file phy.cc.

References hdr_cmn::direction(), hdr_cmn::DOWN, Packet::free(), HDR_CMN, NsObject::recv(), Phy::sendDown(), Phy::sendUp(), hdr_cmn::UP, and BiConnector::uptarget_.

00107 {
00108     struct hdr_cmn *hdr = HDR_CMN(p);   
00109     //struct hdr_sr *hsr = HDR_SR(p);
00110     
00111     /*
00112      * Handle outgoing packets
00113      */
00114     switch(hdr->direction()) {
00115     case hdr_cmn::DOWN :
00116         /*
00117          * The MAC schedules its own EOT event so we just
00118          * ignore the handler here.  It's only purpose
00119          * it distinguishing between incoming and outgoing
00120          * packets.
00121          */
00122         sendDown(p);
00123         return;
00124     case hdr_cmn::UP :
00125         if (sendUp(p) == 0) {
00126             /*
00127              * XXX - This packet, even though not detected,
00128              * contributes to the Noise floor and hence
00129              * may affect the reception of other packets.
00130              */
00131             Packet::free(p);
00132             return;
00133         } else {
00134             uptarget_->recv(p, (Handler*) 0);
00135         }
00136         break;
00137     default:
00138         printf("Direction for pkt-flow not specified; Sending pkt up the stack on default.\n\n");
00139         if (sendUp(p) == 0) {
00140             /*
00141              * XXX - This packet, even though not detected,
00142              * contributes to the Noise floor and hence
00143              * may affect the reception of other packets.
00144              */
00145             Packet::free(p);
00146             return;
00147         } else {
00148             uptarget_->recv(p, (Handler*) 0);
00149         }
00150     }
00151     
00152 }

Here is the call graph for this function:

virtual void NsObject::recvOnly Packet  )  [inline, virtual, inherited]
 

Reimplemented in Agent, and Trace.

Definition at line 56 of file object.h.

Referenced by Trace::recvOnly().

00056 {};

void Phy::removechnl  )  [inline, inherited]
 

Definition at line 99 of file phy.h.

References LIST_REMOVE.

Referenced by SatChannel::remove_interface().

00099                              {
00100         LIST_REMOVE(this, chnl_link_);
00101     }

void NsObject::reset  )  [protected, virtual, inherited]
 

Reimplemented in BayFullTcpAgent, HashClassifier, IvsSource, dsREDQueue, DiffusionRate, SinkAgent, DiffusionAgent, FloodingAgent, OmniMcastAgent, LinkDelay, CBQueue, DropTail, ErrorModel, PIQueue, Queue< T >, RedPDQueue, REDQueue, REMQueue, RIOQueue, Snoop, FackTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, Sack1TcpAgent, TcpSink, DelAckSink, TcpAgent, VegasTcpAgent, toraAgent, Queue< T >, and XcpSink.

Definition at line 70 of file object.cc.

Referenced by NsObject::command().

00071 {
00072 }

virtual void BiConnector::sendDown Packet p,
Handler h
[inline, protected, virtual, inherited]
 

Reimplemented in Mac802_3, and Mac802_15_4.

Definition at line 55 of file bi-connector.h.

References BiConnector::downtarget_, and NsObject::recv().

Referenced by BiConnector::recv().

00056         { downtarget_->recv(p, h); }

Here is the call graph for this function:

void WiredPhy::sendDown Packet p  )  [virtual]
 

Implements Phy.

Definition at line 76 of file wired-phy.cc.

References Phy::channel_, initialized(), and Channel::recv().

00077 {
00078     /*
00079      * Sanity Check
00080      */
00081     assert(initialized());
00082 
00083     /*
00084      *  Stamp the packet with the interface arguments, txtime and 
00085      *  info reqd by recving interface to determine 
00086      *  collision/contention
00087      */
00088     
00089     
00090     // and then send the packet
00091     channel_->recv(p, this);
00092 }

Here is the call graph for this function:

virtual void BiConnector::sendUp Packet p,
Handler h
[inline, protected, virtual, inherited]
 

Reimplemented in Mac802_3.

Definition at line 57 of file bi-connector.h.

References NsObject::recv(), and BiConnector::uptarget_.

Referenced by BiConnector::recv().

00058         { uptarget_->recv(p, h); }

Here is the call graph for this function:

int WiredPhy::sendUp Packet p  )  [virtual]
 

Implements Phy.

Definition at line 95 of file wired-phy.cc.

References initialized().

00096 {
00097     /*
00098      * Sanity Check
00099      */
00100     assert(initialized());
00101     
00102     /* check with propagation model for collision, channel 
00103        contention */
00104     /* Return one if pkt recv , else return zero.*/
00105     return 1;
00106 }

Here is the call graph for this function:

void Phy::setchnl Channel chnl  )  [inline, inherited]
 

Definition at line 102 of file phy.h.

References Phy::channel_.

Referenced by SatChannel::add_interface(), and SatChannel::remove_interface().

00102 { channel_ = chnl; }

virtual void Phy::setnode Node node  )  [inline, virtual, inherited]
 

Definition at line 103 of file phy.h.

References Phy::node(), and Phy::node_.

Referenced by SatNode::command(), and MobileNode::command().

00103 { node_ = node; }

Here is the call graph for this function:

double Phy::txtime int  bytes  )  [inline, inherited]
 

Definition at line 83 of file phy.h.

References Phy::bandwidth_.

00083                                     {
00084         return (8.0 * bytes / bandwidth_); }

double Phy::txtime Packet p  )  [inline, inherited]
 

Definition at line 81 of file phy.h.

References hdr_cmn::access(), and Phy::bandwidth_.

Referenced by Mac802_3::collision(), Mac8023HandlerSend::handle(), MacHandlerRetx::schedule(), WirelessPhy::sendDown(), and Mac802_3::sendDown().

00081                                      {
00082         return (hdr_cmn::access(p)->size() * 8.0) / bandwidth_; }

Here is the call graph for this function:

NsObject* BiConnector::uptarget  )  [inline, inherited]
 

Definition at line 48 of file bi-connector.h.

References BiConnector::uptarget_.

00048 { return uptarget_; }


Field Documentation

double Phy::bandwidth_ [protected, inherited]
 

Definition at line 137 of file phy.h.

Referenced by Phy::bittime(), Phy::Phy(), Phy::txtime(), and WiredPhy().

Channel* Phy::channel_ [protected, inherited]
 

Definition at line 138 of file phy.h.

Referenced by Phy::channel(), Phy::command(), Phy::dump(), Phy::Phy(), WirelessPhy::sendDown(), sendDown(), RepeaterPhy::sendDown(), SatPhy::sendDown(), and Phy::setchnl().

int NsObject::debug_ [protected, inherited]
 

Reimplemented in FECModel, FloodAgent, and LandmarkAgent.

Definition at line 66 of file object.h.

Referenced by REDQueue::command(), RedPDQueue::command(), PushbackQueue::command(), NsObject::debug(), NsObject::delay_bind_dispatch(), PushbackQueue::enque(), NsObject::isdebug(), NsObject::NsObject(), TfrcAgent::recv(), PushbackQueue::reportDrop(), SctpAgent::Reset(), REDQueue::reset(), DropTail::shrink_queue(), and Delayer::try_send().

NsObject* BiConnector::downtarget_ [protected, inherited]
 

Definition at line 63 of file bi-connector.h.

Referenced by Phy::command(), BiConnector::command(), BiConnector::downtarget(), WirelessPhy::initialized(), initialized(), Mac::initialized(), FECModel::recv(), MacTdma::send(), UnslottedAlohaMac::sendDown(), SatMac::sendDown(), Mac::sendDown(), BiConnector::sendDown(), SMAC::transmit(), Mac802_11::transmit(), and MacSimple::waitHandler().

NsObject* BiConnector::drop_ [protected, inherited]
 

Definition at line 64 of file bi-connector.h.

Referenced by BiConnector::command(), and BiConnector::drop().

LinkHead* Phy::head_ [protected, inherited]
 

Definition at line 116 of file phy.h.

Referenced by Phy::command(), Phy::head(), and Phy::Phy().

int Phy::index_ [protected, inherited]
 

Definition at line 113 of file phy.h.

Referenced by Phy::command(), Phy::dump(), Phy802_15_4::PD_DATA_request(), Phy::Phy(), Phy802_15_4::PLME_SET_request(), Phy802_15_4::PLME_SET_TRX_STATE_request(), Phy802_15_4::recv(), Phy802_15_4::recvOverHandler(), and Phy802_15_4::sendOverHandler().

Node* Phy::node_ [protected, inherited]
 

Definition at line 115 of file phy.h.

Referenced by WirelessPhy::command(), Phy::command(), WirelessPhy::initialized(), initialized(), WirelessPhy::node(), Phy::node(), WirelessPhy::node_sleep(), WirelessPhy::node_wakeup(), Phy::Phy(), WirelessPhy::sendDown(), WirelessPhy::sendUp(), Phy::setnode(), WirelessPhy::UpdateIdleEnergy(), WirelessPhy::UpdateSleepEnergy(), and WirelessPhy::WirelessPhy().

NsObject* BiConnector::uptarget_ [protected, inherited]
 

Definition at line 60 of file bi-connector.h.

Referenced by BiConnector::command(), Phy::dump(), UnslottedAlohaMac::end_of_contention(), WirelessPhy::initialized(), initialized(), Mac::initialized(), God::initialized(), Mac802_15_4::MCPS_DATA_indication(), Phy802_15_4::PD_DATA_indication(), RepeaterPhy::recv(), Phy::recv(), MacTdma::recvDATA(), SMAC::rxMsgDone(), SatMac::sendUp(), Mac::sendUp(), BiConnector::sendUp(), and BiConnector::uptarget().


The documentation for this class was generated from the following files:
Generated on Tue Mar 6 17:35:43 2007 for ns2 Network Simulator 2.29 by  doxygen 1.4.6