User Manual, Developers Guide and API Documentation

copper::Wire Class Reference

An implementation of WireInterface.

#include <Wire.hpp>

Inheritance diagram for copper::Wire:

Inheritance graph
[legend]
Collaboration diagram for copper::Wire:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 Wire (const wns::pyconfig::View &config)
 Constructor.
WireInterface
void addReceiver (ReceiverInterface *r, const wns::service::dll::UnicastAddress &macAddress)
 Receiver need to register themselves via this method.
simTimeType blockedSince () const
 Returns the time for which the medium has been blocked.
void sendData (const BroadcastTransmissionPtr &bt, simTimeType duration)
 Send data (Unicast Transmission).
void sendData (const UnicastTransmissionPtr &ut, simTimeType duration)
 Send data (Unicast Transmission).
void stopTransmission (const wns::osi::PDUPtr &pdu)
 Cancel a transmission before it is finished.

Private Types

typedef std::map
< wns::service::dll::UnicastAddress,
ReceiverInterface * > 
Address2ReceiverContainer
typedef std::map
< wns::osi::PDUPtr,
wns::events::scheduler::IEventPtr
TransmissionEndEventContainer
typedef std::map
< wns::osi::PDUPtr,
TransmissionPtr
Transmissions

Private Member Functions

template<typename TRANSMISSIONTYPE>
void addTransmissionEndEvent (const TRANSMISSIONTYPE &t, simTimeType arrivalTime)
 Stores and sends the event together with the PDU of the Transmission.
void checkForCollision (const TransmissionPtr &t)
 Checks if a transmission collided with another transmission.
bool isFree () const
 Used to check if the wire is free.
void removeTransmissionEndEvent (const TransmissionPtr &transmission)
 Remove event according to its PDU.
template<typename TRANSMISSIONTYPE>
wns::simulator::Time sendDataGeneric (const TRANSMISSIONTYPE &transmission, simTimeType duration)
void signalCopperFreeAgainToReceivers ()
 Calls onCopperFreeAgain of each connected receiver.
void stopTransmission (const BroadcastTransmissionPtr &bt)
 Stops a broadcast transmission (called on finished transmission).
void stopTransmission (const UnicastTransmissionPtr &ut)
 Stops a unicast transmission (called on finished transmission).

Private Attributes

Address2ReceiverContainer addressMapping
 Associative container: Allows mapping of Layer 2 addresses to a copper::Receiver.
wns::logger::Logger logger
 Logger instance.
std::string name
 Name of the Wire.
std::list< ReceiverInterface * > receivers
 Stores connected receives (used for non-round-robin tasks).
wns::RoundRobin
< ReceiverInterface * > 
roundRobin
 Round robin container to realize round robin signalling in signalCopperFreeAgainToReceivers.
simTimeType timeWireBlocked
 the time when the wire was blocked by a transmission
TransmissionEndEventContainer transmissionEndEvents
 Associative container: key=PDU, value=TransmissionEndEvent.
Transmissions transmissions
 Keep all active transmissions.

Classes

class  TransmissionEndEvent
 Signale the end of transmission for the different transmission types (broadcast, unicast). More...
class  TransmissionEndEventBase
 Event to be scheduled at start of a transmission to signal the end of a transmission. More...


Detailed Description

Definition at line 128 of file Wire.hpp.


Member Typedef Documentation

Definition at line 255 of file Wire.hpp.

Definition at line 249 of file Wire.hpp.

Definition at line 252 of file Wire.hpp.


Constructor & Destructor Documentation

Wire::Wire ( const wns::pyconfig::View config  )  [explicit]

Definition at line 42 of file Wire.cpp.


Member Function Documentation

void Wire::addReceiver ( ReceiverInterface r,
const wns::service::dll::UnicastAddress macAddress 
) [virtual]

Implements copper::WireInterface.

Definition at line 106 of file Wire.cpp.

template<typename TRANSMISSIONTYPE>
void copper::Wire::addTransmissionEndEvent ( const TRANSMISSIONTYPE &  t,
simTimeType  arrivalTime 
) [inline, private]

Definition at line 305 of file Wire.hpp.

simTimeType Wire::blockedSince (  )  const [virtual]

Three different groups of return values must be distinguished:

  • values < 0.0: The wire is free

  • values == 0.0: A transmission has just been started (at exactly the same time, the wire is asked)

  • values > 0.0: A transmission is ongoing since "value" seconds

Implements copper::WireInterface.

Definition at line 83 of file Wire.cpp.

void Wire::checkForCollision ( const TransmissionPtr t  )  [private]

The result will be stored IN the TransmissionPtr t

Definition at line 220 of file Wire.cpp.

bool Wire::isFree (  )  const [private]

Definition at line 100 of file Wire.cpp.

void Wire::removeTransmissionEndEvent ( const TransmissionPtr transmission  )  [private]

Definition at line 156 of file Wire.cpp.

void copper::Wire::sendData ( const BroadcastTransmissionPtr ut,
simTimeType  duration 
) [virtual]

Parameters:
ut Data (unicast) to be sent
duration The duration of the data transmission

Implements copper::WireInterface.

void Wire::sendData ( const UnicastTransmissionPtr ut,
simTimeType  duration 
) [virtual]

Parameters:
ut Data (unicast) to be sent
duration The duration of the data transmission

Implements copper::WireInterface.

Definition at line 57 of file Wire.cpp.

template<typename TRANSMISSIONTYPE>
wns::simulator::Time copper::Wire::sendDataGeneric ( const TRANSMISSIONTYPE &  transmission,
simTimeType  duration 
) [inline, private]

Definition at line 323 of file Wire.hpp.

void Wire::signalCopperFreeAgainToReceivers (  )  [private]

This is called at the end of a transmission. The implementation is round robin style, which means it will guarantee that each receiver will be the first one in the round to be called.

Definition at line 247 of file Wire.cpp.

void copper::Wire::stopTransmission ( const BroadcastTransmissionPtr bt  )  [private]

This one is called by TransmissionEndEvent

void copper::Wire::stopTransmission ( const UnicastTransmissionPtr ut  )  [private]

This one is called by TransmissionEndEvent

void Wire::stopTransmission ( const wns::osi::PDUPtr pdu  ) 

Definition at line 167 of file Wire.cpp.


Member Data Documentation

Definition at line 383 of file Wire.hpp.

Definition at line 388 of file Wire.hpp.

std::string copper::Wire::name [private]

Definition at line 354 of file Wire.hpp.

Definition at line 366 of file Wire.hpp.

Definition at line 360 of file Wire.hpp.

Definition at line 393 of file Wire.hpp.

Definition at line 372 of file Wire.hpp.

Definition at line 377 of file Wire.hpp.


The documentation for this class was generated from the following files:

Generated on Sat May 26 03:32:29 2012 for openWNS by  doxygen 1.5.5