ns3::CsmaChannel Class Reference

Csma Channel. More...

#include <csma-channel.h>

Inheritance diagram for ns3::CsmaChannel:
Inheritance graph
[legend]
Collaboration diagram for ns3::CsmaChannel:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 CsmaChannel ()
 Create a CsmaChannel.
int32_t Attach (Ptr< CsmaNetDevice > device)
 Attach a given netdevice to this channel.
bool Detach (Ptr< CsmaNetDevice > device)
 Detach a given netdevice from this channel.
bool Detach (uint32_t deviceId)
 Detach a given netdevice from this channel.
bool Reattach (uint32_t deviceId)
 Reattach a previously detached net device to the channel.
bool Reattach (Ptr< CsmaNetDevice > device)
 Reattach a previously detached net device to the channel.
bool TransmitStart (Ptr< Packet > p, uint32_t srcId)
 Start transmitting a packet over the channel.
bool TransmitEnd ()
 Indicates that the net device has finished transmitting the packet over the channel.
void PropagationCompleteEvent ()
 Indicates that the channel has finished propagating the current packet. The channel is released and becomes free.
int32_t GetDeviceNum (Ptr< CsmaNetDevice > device)
WireState GetState ()
bool IsBusy ()
 Indicates if the channel is busy. The channel will only accept new packets for transmission if it is not busy.
bool IsActive (uint32_t deviceId)
 Indicates if a net device is currently attached or detached from the channel.
uint32_t GetNumActDevices (void)
virtual uint32_t GetNDevices (void) const
virtual Ptr< NetDeviceGetDevice (uint32_t i) const
Ptr< CsmaNetDeviceGetCsmaDevice (uint32_t i) const
virtual DataRate GetDataRate (void)
virtual Time GetDelay (void)

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::CsmaChannel.

Private Attributes

DataRate m_bps
Time m_delay
std::vector< CsmaDeviceRecm_deviceList
Ptr< Packetm_currentPkt
uint32_t m_currentSrc
WireState m_state

Detailed Description

Csma Channel.

This class represents a simple Csma channel that can be used when many nodes are connected to one wire. It uses a single busy flag to indicate if the channel is currently in use. It does not take into account the distances between stations or the speed of light to determine collisions.

Definition at line 75 of file csma-channel.h.


Constructor & Destructor Documentation

ns3::CsmaChannel::CsmaChannel (  ) 

Create a CsmaChannel.

Definition at line 52 of file csma-channel.cc.

References ns3::IDLE, m_deviceList, m_state, and NS_LOG_FUNCTION_NOARGS.


Member Function Documentation

int32_t ns3::CsmaChannel::Attach ( Ptr< CsmaNetDevice device  ) 

Attach a given netdevice to this channel.

Parameters:
device Device pointer to the netdevice to attach to the channel
Returns:
The assigned device number

Definition at line 62 of file csma-channel.cc.

References m_deviceList, NS_ASSERT, and NS_LOG_FUNCTION.

bool ns3::CsmaChannel::Detach ( uint32_t  deviceId  ) 

Detach a given netdevice from this channel.

The net device is marked as inactive and it is not allowed to receive or transmit packets

Parameters:
deviceId The deviceID assigned to the net device when it was connected to the channel
Returns:
True if the device is found and attached to the channel, false if the device is not currently connected to the channel or can't be found.

Definition at line 120 of file csma-channel.cc.

References m_currentSrc, m_deviceList, m_state, NS_LOG_FUNCTION, NS_LOG_WARN, and ns3::TRANSMITTING.

bool ns3::CsmaChannel::Detach ( Ptr< CsmaNetDevice device  ) 

Detach a given netdevice from this channel.

The net device is marked as inactive and it is not allowed to receive or transmit packets

Parameters:
device Device pointer to the netdevice to detach from the channel
Returns:
True if the device is found and attached to the channel, false if the device is not currently connected to the channel or can't be found.

Definition at line 148 of file csma-channel.cc.

References m_deviceList, NS_ASSERT, and NS_LOG_FUNCTION.

Ptr< CsmaNetDevice > ns3::CsmaChannel::GetCsmaDevice ( uint32_t  i  )  const
Returns:
Get a CsmaNetDevice pointer to a connected network device.
Parameters:
i The deviceId of the net device for which we want the pointer.
Returns:
Returns the pointer to the net device that is associated with deviceId i.

Definition at line 265 of file csma-channel.cc.

References m_deviceList.

Referenced by GetDevice().

DataRate ns3::CsmaChannel::GetDataRate ( void   )  [virtual]

Get the assigned data rate of the channel

Returns:
Returns the DataRate to be used by device transmitters. with deviceId i.

Definition at line 308 of file csma-channel.cc.

References m_bps.

Time ns3::CsmaChannel::GetDelay ( void   )  [virtual]

Get the assigned speed-of-light delay of the channel

Returns:
Returns the delay used by the channel.

Definition at line 314 of file csma-channel.cc.

References m_delay.

Ptr< NetDevice > ns3::CsmaChannel::GetDevice ( uint32_t  i  )  const [virtual]
Returns:
Get a NetDevice pointer to a connected network device.
Parameters:
i The index of the net device.
Returns:
Returns the pointer to the net device that is associated with deviceId i.

Implements ns3::Channel.

Definition at line 326 of file csma-channel.cc.

References GetCsmaDevice().

int32_t ns3::CsmaChannel::GetDeviceNum ( Ptr< CsmaNetDevice device  ) 
Returns:
Returns the device number assigned to a net device by the channel
Parameters:
device Device pointer to the netdevice for which the device number is needed

Definition at line 272 of file csma-channel.cc.

References m_deviceList.

uint32_t ns3::CsmaChannel::GetNDevices ( void   )  const [virtual]
Returns:
Returns the total number of devices including devices that have been detached from the channel.

Implements ns3::Channel.

Definition at line 259 of file csma-channel.cc.

References m_deviceList.

uint32_t ns3::CsmaChannel::GetNumActDevices ( void   ) 
Returns:
Returns the number of net devices that are currently attached to the channel.

Definition at line 244 of file csma-channel.cc.

References m_deviceList.

WireState ns3::CsmaChannel::GetState ( void   ) 
Returns:
Returns the state of the channel (IDLE -- free, TRANSMITTING -- busy, PROPAGATING - busy )

Definition at line 320 of file csma-channel.cc.

References m_state.

TypeId ns3::CsmaChannel::GetTypeId ( void   )  [static]

This method returns the TypeId associated to ns3::CsmaChannel.

Attributes defined for this type:

  • DataRate: The transmission data rate to be provided to devices connected to the channel
    • Set with class: DataRateValue
    • Underlying type: DataRate
    • Initial value: 4294967295bps
    • Flags: construct write read
  • Delay: Transmission delay through the channel
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: 0ns
    • Flags: construct write read

No TraceSources defined for this type.

Reimplemented from ns3::Channel.

Definition at line 34 of file csma-channel.cc.

References ns3::TypeId::AddAttribute(), m_bps, m_delay, ns3::Seconds(), and ns3::TypeId::SetParent().

bool ns3::CsmaChannel::IsActive ( uint32_t  deviceId  ) 

Indicates if a net device is currently attached or detached from the channel.

Parameters:
deviceId The ID that was assigned to the net device when it was attached to the channel.
Returns:
Returns true if the net device is attached to the channel, false otherwise.

Definition at line 191 of file csma-channel.cc.

References m_deviceList.

Referenced by TransmitEnd(), and TransmitStart().

bool ns3::CsmaChannel::IsBusy ( void   ) 

Indicates if the channel is busy. The channel will only accept new packets for transmission if it is not busy.

Returns:
Returns true if the channel is busy and false if it is free.

Definition at line 295 of file csma-channel.cc.

References ns3::IDLE, and m_state.

void ns3::CsmaChannel::PropagationCompleteEvent (  ) 

Indicates that the channel has finished propagating the current packet. The channel is released and becomes free.

Calls the receive function of every active net device that is attached to the channel.

Definition at line 221 of file csma-channel.cc.

References ns3::IDLE, m_currentPkt, m_currentSrc, m_deviceList, m_state, NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, and ns3::PROPAGATING.

Referenced by TransmitEnd().

bool ns3::CsmaChannel::Reattach ( Ptr< CsmaNetDevice device  ) 

Reattach a previously detached net device to the channel.

The net device is marked as active. It is now allowed to receive or transmit packets. The net device must have been previously attached to the channel using the attach function.

Parameters:
device Device pointer to the netdevice to detach from the channel
Returns:
True if the device is found and is not attached to the channel, false if the device is currently connected to the channel or can't be found.

Definition at line 74 of file csma-channel.cc.

References m_deviceList, NS_ASSERT, and NS_LOG_FUNCTION.

bool ns3::CsmaChannel::Reattach ( uint32_t  deviceId  ) 

Reattach a previously detached net device to the channel.

The net device is marked as active. It is now allowed to receive or transmit packets. The net device must have been previously attached to the channel using the attach function.

Parameters:
deviceId The device ID assigned to the net device when it was connected to the channel
Returns:
True if the device is found and is not attached to the channel, false if the device is currently connected to the channel or can't be found.

Definition at line 99 of file csma-channel.cc.

References m_deviceList, and NS_LOG_FUNCTION.

bool ns3::CsmaChannel::TransmitEnd (  ) 

Indicates that the net device has finished transmitting the packet over the channel.

The channel will stay busy until the packet has completely propagated to all net devices attached to the channel. The TransmitEnd function schedules the PropagationCompleteEvent which will free the channel for further transmissions. Stores the packet p as the m_currentPkt, the packet being currently transmitting.

Returns:
Returns true unless the source was detached before it completed its transmission.

Definition at line 197 of file csma-channel.cc.

References ns3::TimeUnit< 1 >::GetSeconds(), IsActive(), m_currentPkt, m_currentSrc, m_delay, m_state, NS_ASSERT, NS_LOG_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::PROPAGATING, PropagationCompleteEvent(), ns3::Simulator::Schedule(), and ns3::TRANSMITTING.

bool ns3::CsmaChannel::TransmitStart ( Ptr< Packet p,
uint32_t  srcId 
)

Start transmitting a packet over the channel.

If the srcId belongs to a net device that is connected to the channel, packet transmission begins, and the channel becomes busy until the packet has completely reached all destinations.

Parameters:
p A reference to the packet that will be transmitted over the channel
srcId The device Id of the net device that wants to transmit on the channel.
Returns:
True if the channel is not busy and the transmitting net device is currently active.

Definition at line 166 of file csma-channel.cc.

References ns3::IDLE, IsActive(), m_currentPkt, m_currentSrc, m_state, NS_LOG_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, NS_LOG_WARN, and ns3::TRANSMITTING.


Member Data Documentation

The assigned data rate of the channel

Definition at line 276 of file csma-channel.h.

Referenced by GetDataRate(), and GetTypeId().

The Packet that is currently being transmitted on the channel (or last packet to have been transmitted on the channel if the channel is free.)

Definition at line 301 of file csma-channel.h.

Referenced by PropagationCompleteEvent(), TransmitEnd(), and TransmitStart().

uint32_t ns3::CsmaChannel::m_currentSrc [private]

Device Id of the source that is currently transmitting on the channel. Or last source to have transmitted a packet on the channel, if the channel is currently not busy.

Definition at line 308 of file csma-channel.h.

Referenced by Detach(), PropagationCompleteEvent(), TransmitEnd(), and TransmitStart().

The assigned speed-of-light delay of the channel

Definition at line 281 of file csma-channel.h.

Referenced by GetDelay(), GetTypeId(), and TransmitEnd().

List of the net devices that have been or are currently connected to the channel.

Devices are nor removed from this list, they are marked as inactive. Otherwise the assigned device IDs will not refer to the correct NetDevice. The DeviceIds are used so that it is possible to have a number to refer to an entry in the list so that the whole list does not have to be searched when making sure that a source is attached to a channel when it is transmitting data.

Definition at line 294 of file csma-channel.h.

Referenced by Attach(), CsmaChannel(), Detach(), GetCsmaDevice(), GetDeviceNum(), GetNDevices(), GetNumActDevices(), IsActive(), PropagationCompleteEvent(), and Reattach().

Current state of the channel

Definition at line 313 of file csma-channel.h.

Referenced by CsmaChannel(), Detach(), GetState(), IsBusy(), PropagationCompleteEvent(), TransmitEnd(), and TransmitStart().


The documentation for this class was generated from the following files:
Generated on Thu Dec 3 14:10:39 2009 for NS-3 by  doxygen 1.6.3