RepeaterPhy Class Reference

#include <satlink.h>

Inheritance diagram for RepeaterPhy:

Phy BiConnector NsObject TclObject Handler Collaboration diagram for RepeaterPhy:

Collaboration graph
[legend]

Detailed Description

Definition at line 161 of file satlink.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 *)
virtual void recvOnly (Packet *)
void removechnl ()
 RepeaterPhy ()
void sendDown (Packet *p)
int sendUp (Packet *)
void setchnl (Channel *chnl)
virtual void setnode (Node *node)
double txtime (int bytes)
double txtime (Packet *p)
NsObjectuptarget ()

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_


Constructor & Destructor Documentation

RepeaterPhy::RepeaterPhy  )  [inline]
 

Definition at line 163 of file satlink.h.

00163 {}


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 Phy::command int  argc,
const char *const *  argv
[protected, virtual, inherited]
 

Reimplemented from BiConnector.

Reimplemented in WiredPhy, WirelessPhy, and SatPhy.

Definition at line 63 of file phy.cc.

References Phy::channel_, BiConnector::command(), BiConnector::downtarget_, Phy::head_, Phy::index_, and Phy::node_.

Referenced by WirelessPhy::command(), WiredPhy::command(), and SatPhy::command().

00063                                              {
00064     if (argc == 2) {
00065         Tcl& tcl = Tcl::instance();
00066 
00067         if(strcmp(argv[1], "id") == 0) {
00068             tcl.resultf("%d", index_);
00069             return TCL_OK;
00070         }
00071     }
00072 
00073     else if(argc == 3) {
00074 
00075         TclObject *obj;
00076 
00077         if( (obj = TclObject::lookup(argv[2])) == 0) {
00078             fprintf(stderr, "%s lookup failed\n", argv[1]);
00079             return TCL_ERROR;
00080         }
00081         if (strcmp(argv[1], "channel") == 0) {
00082                         assert(channel_ == 0);
00083             channel_ = (Channel*) obj;
00084             downtarget_ = (NsObject*) obj;
00085             // LIST_INSERT_HEAD() is done by Channel
00086             return TCL_OK;
00087         }
00088         else if (strcmp(argv[1], "node") == 0) {
00089             assert(node_ == 0);
00090             node_ = (Node*) obj;
00091             // LIST_INSERT_HEAD() is done by Node
00092             return TCL_OK;
00093         }
00094         else if (strcmp(argv[1], "linkhead") == 0) {
00095             head_ = (LinkHead*)  obj;
00096             return (TCL_OK);
00097         }
00098 
00099     } 
00100     return BiConnector::command(argc, argv);
00101 }

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_; }

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 RepeaterPhy::recv Packet p,
Handler
[virtual]
 

Reimplemented from Phy.

Definition at line 646 of file satlink.cc.

References hdr_cmn::direction(), hdr_cmn::DOWN, HDR_CMN, NsObject::recv(), hdr_cmn::UP, and BiConnector::uptarget_.

00647 {
00648     struct hdr_cmn *hdr = HDR_CMN(p);
00649     if (hdr->direction() == hdr_cmn::UP) {
00650         // change direction and send to uptarget (which is
00651         // really a Phy_tx that is also a RepeaterPhy)
00652         hdr->direction() = hdr_cmn::DOWN;
00653         uptarget_->recv(p, (Handler*) 0);
00654     } else {
00655         sendDown(p);
00656     }
00657 }

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 RepeaterPhy::sendDown Packet p  )  [virtual]
 

Implements Phy.

Definition at line 659 of file satlink.cc.

References Phy::channel_, hdr_cmn::direction(), hdr_cmn::DOWN, HDR_CMN, and Channel::recv().

00660 {
00661     struct hdr_cmn *hdr = HDR_CMN(p);
00662     hdr->direction() =  hdr_cmn::DOWN;
00663 
00664     if (channel_)
00665         channel_->recv(p, this);
00666     else {
00667         printf("Error, no channel on repeater\n");
00668         exit(1);
00669     }
00670 }

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 RepeaterPhy::sendUp Packet  )  [inline, virtual]
 

Implements Phy.

Definition at line 166 of file satlink.h.

00166 { return 0; } 

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::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(), WiredPhy::sendDown(), 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(), WiredPhy::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(), WiredPhy::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(), WiredPhy::initialized(), Mac::initialized(), God::initialized(), Mac802_15_4::MCPS_DATA_indication(), Phy802_15_4::PD_DATA_indication(), 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:27:33 2007 for ns2 Network Simulator 2.29 by  doxygen 1.4.6