src/devices/serial/serial-net-device.h
author Tom Henderson <tomh@tomh.org>
Mon, 19 Mar 2007 07:02:14 -0700
changeset 352 8fb57ba7b707
parent 350 32f443f96560
child 356 52772e843275
permissions -rw-r--r--
Add Mathieu's super object container; add Rx trace on SerialNetDevice
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     2
/*
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     3
 * Copyright (c) 2007 University of Washington
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     4
 *
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     8
 *
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    12
 * GNU General Public License for more details.
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    13
 *
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    17
 *
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    18
 * Author: Craig Dowell <craigdo@ee.washington.edu>
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    19
 */
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    20
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    21
#ifndef SERIAL_NET_DEVICE_H
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    22
#define SERIAL_NET_DEVICE_H
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    23
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    24
#include <string.h>
334
8075943fda5a move serial code to src/devices/serial
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 311
diff changeset
    25
#include "ns3/mac-address.h"
8075943fda5a move serial code to src/devices/serial
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 311
diff changeset
    26
#include "ns3/internet-node.h"
8075943fda5a move serial code to src/devices/serial
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 311
diff changeset
    27
#include "ns3/net-device.h"
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    28
#include "ns3/callback.h"
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    29
#include "ns3/packet.h"
352
8fb57ba7b707 Add Mathieu's super object container; add Rx trace on SerialNetDevice
Tom Henderson <tomh@tomh.org>
parents: 350
diff changeset
    30
#include "ns3/callback-trace-source.h"
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    31
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    32
namespace ns3 {
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    33
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    34
class SerialChannel;
310
03f09f4d1a8d Plumb in outbound SerialPhy
tomh@ubuntu
parents: 292
diff changeset
    35
class SerialPhy;
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    36
class Queue;
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    37
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    38
class SerialNetDevice : public NetDevice {
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    39
public:
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 342
diff changeset
    40
  enum TraceType {
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 342
diff changeset
    41
    QUEUE,
352
8fb57ba7b707 Add Mathieu's super object container; add Rx trace on SerialNetDevice
Tom Henderson <tomh@tomh.org>
parents: 350
diff changeset
    42
    RX,
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 342
diff changeset
    43
  };
350
32f443f96560 Remove MacAddress from SerialNetDevice constructors, make SerialChannel name argument optional, some trace formatting
Tom Henderson <tomh@tomh.org>
parents: 345
diff changeset
    44
  SerialNetDevice(Node* node);
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    45
  virtual ~SerialNetDevice();
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    46
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    47
private:
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    48
  // Don't let the compiler slip in copy and assignment construction
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    49
  SerialNetDevice(const SerialNetDevice&);
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    50
  SerialNetDevice&operator=(const SerialNetDevice&);
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    51
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    52
public:
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    53
  bool Attach(SerialChannel* ch);
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    54
  void AddQueue(Queue *);
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 342
diff changeset
    55
  // called by SerialPhy
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    56
  void Receive (Packet& p);
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    57
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    58
protected:
311
f0a9889dff3a Move a few functions definitions out of headers
tomh@ubuntu
parents: 310
diff changeset
    59
  Queue* GetQueue(void) const; 
f0a9889dff3a Move a few functions definitions out of headers
tomh@ubuntu
parents: 310
diff changeset
    60
  SerialChannel* GetChannel(void) const;
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    61
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    62
private:
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    63
  virtual void NotifyDataAvailable (void);
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    64
  virtual bool SendTo (Packet& p, const MacAddress& dest);
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 342
diff changeset
    65
  virtual TraceResolver *DoCreateTraceResolver (TraceContext const &context);
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    66
310
03f09f4d1a8d Plumb in outbound SerialPhy
tomh@ubuntu
parents: 292
diff changeset
    67
  SerialPhy* m_phy;
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    68
  SerialChannel* m_channel;
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    69
  Queue* m_queue;
352
8fb57ba7b707 Add Mathieu's super object container; add Rx trace on SerialNetDevice
Tom Henderson <tomh@tomh.org>
parents: 350
diff changeset
    70
  CallbackTraceSource<Packet &> m_rxTrace;
292
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    71
};
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    72
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    73
}; // namespace ns3
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    74
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    75
#endif // SERIAL_NET_DEVICE_H
cc17705d3344 Merge in Craig's tracing changes as of Thursday; rename net-device-serial files to serial-net-device
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    76