5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-net-device.h
1// Copyright (c) 2019 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#ifndef SRC_NR_MODEL_NR_NET_DEVICE_H_
6#define SRC_NR_MODEL_NR_NET_DEVICE_H_
7
8#include "nr-phy.h"
9
10#include "ns3/net-device.h"
11#include "ns3/traced-callback.h"
12
13namespace ns3
14{
15
16class ErrorModel;
17class Node;
18class Packet;
19
27class NrNetDevice : public NetDevice
28{
29 public:
34 static TypeId GetTypeId();
35
43 ~NrNetDevice() override;
44
45 // inherit
46 void SetIfIndex(const uint32_t index) override;
47 uint32_t GetIfIndex() const override;
48 Ptr<Channel> GetChannel() const override;
49 void SetAddress(Address address) override;
50 Address GetAddress() const override;
51 bool SetMtu(const uint16_t mtu) override;
52 uint16_t GetMtu() const override;
53 bool IsLinkUp() const override;
54 void AddLinkChangeCallback(Callback<void> callback) override;
55 bool IsBroadcast() const override;
56 Address GetBroadcast() const override;
57 bool IsMulticast() const override;
58 Address GetMulticast(Ipv4Address multicastGroup) const override;
59 bool IsBridge() const override;
60 bool IsPointToPoint() const override;
61 bool SendFrom(Ptr<Packet> packet,
62 const Address& source,
63 const Address& dest,
64 uint16_t protocolNumber) override;
65 Ptr<Node> GetNode() const override;
66 void SetNode(Ptr<Node> node) override;
67 bool NeedsArp() const override;
68 Address GetMulticast(Ipv6Address addr) const override;
69 void SetReceiveCallback(ReceiveCallback cb) override;
70 void SetPromiscReceiveCallback(PromiscReceiveCallback cb) override;
71 bool SupportsSendFrom() const override;
72 bool Send(Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber) override;
73 void Receive(Ptr<Packet> p);
74
75 protected:
76 void DoDispose() override;
77
78 TracedCallback<Ptr<const Packet>, const Address&>
80 TracedCallback<Ptr<const Packet>> m_rxTrace;
81 TracedCallback<Ptr<const Packet>> m_dropTrace;
82 NetDevice::ReceiveCallback m_rxCallback;
83
84 virtual bool DoSend(Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber) = 0;
85
86 private:
87 Mac48Address m_macaddress;
88 Ptr<Node> m_node;
89 Ptr<ErrorModel> m_receiveErrorModel;
90 mutable uint16_t m_mtu;
91 bool m_linkUp;
92 uint32_t m_ifIndex;
93};
94
95} // namespace ns3
96
97#endif /* SRC_NR_MODEL_NR_NET_DEVICE_H_ */
The NrNetDevice class.
TracedCallback< Ptr< const Packet > > m_dropTrace
Traced Callback for dropped packets.
~NrNetDevice() override
~NrNetDevice
TracedCallback< Ptr< const Packet >, const Address & > m_txTrace
Traced Callback for transmitted packets.
TracedCallback< Ptr< const Packet > > m_rxTrace
Traced Callback for received packets.
NrNetDevice()
NrNetDevice.
static TypeId GetTypeId()
GetTypeId.