lr-wpan: Create MAC layer abstraction (decoupling, alternative MACs)

This commit is contained in:
Alberto Gallegos Ramonet
2023-10-05 15:29:02 +09:00
parent b681c2886a
commit 900019e31e
7 changed files with 1192 additions and 1068 deletions

View File

@@ -26,6 +26,7 @@ Changes from ns-3.40 to ns-3-dev
* (lte) Struct member `pfsFlowPerf_t::lastTtiBytesTrasmitted` in file `pf-ff-mac-scheduler.h` was renamed `fdbetsFlowPerf_t::lastTtiBytesTransmitted`.
* (lr-wpan) Change the CapabilityField parameter in `LrWpanMac::MlmeAssociateRequest` and `LrWpanMac::MlmeAssociateIndication` to a standard bitmap.
* (lr-wpan) Change the MAC SuperframeField usage to a standard bitmap, this change impact parameters in the `BeaconPayloadHeader`.
* (lr-wpan) Create a new abstract class that defines the form of any Lr-wpan MAC layers (`LrWpanMacBase`).
### Changes to build system

View File

@@ -20,8 +20,9 @@ Release 3-dev
### New user-visible features
- (lr-wpan) !1686 Change CapabilityField to standard bitmap
- (lr-wpan) !1698 Change SuperframeField to standard bitmap
- (lr-wpan) !1686 - Change CapabilityField to standard bitmap
- (lr-wpan) !1698 - Change SuperframeField to standard bitmap
- (lr-wpan) !1706 - Create MAC layer abstraction (decoupling, alternative MACs)
### Bugs fixed

View File

@@ -10,6 +10,7 @@ build_lib(
model/lr-wpan-mac-header.cc
model/lr-wpan-mac-pl-headers.cc
model/lr-wpan-mac-trailer.cc
model/lr-wpan-mac-base.cc
model/lr-wpan-mac.cc
model/lr-wpan-net-device.cc
model/lr-wpan-phy.cc
@@ -26,6 +27,7 @@ build_lib(
model/lr-wpan-mac-header.h
model/lr-wpan-mac-pl-headers.h
model/lr-wpan-mac-trailer.h
model/lr-wpan-mac-base.h
model/lr-wpan-mac.h
model/lr-wpan-net-device.h
model/lr-wpan-phy.h

View File

@@ -0,0 +1,120 @@
/*
* Copyright (c) 2023 Tokushima University, Japan.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Alberto Gallegos Ramonet <alramonet@is.tokushima-u.ac.jp>
*/
#include "lr-wpan-mac-base.h"
#include <ns3/log.h>
#include <ns3/uinteger.h>
namespace ns3
{
NS_LOG_COMPONENT_DEFINE("LrWpanMacBase");
NS_OBJECT_ENSURE_REGISTERED(LrWpanMacBase);
TypeId
LrWpanMacBase::GetTypeId()
{
static TypeId tid = TypeId("ns3::LrWpanMacBase").SetParent<Object>().SetGroupName("LrWpan");
return tid;
}
LrWpanMacBase::~LrWpanMacBase()
{
}
void
LrWpanMacBase::SetMcpsDataConfirmCallback(McpsDataConfirmCallback c)
{
m_mcpsDataConfirmCallback = c;
}
void
LrWpanMacBase::SetMcpsDataIndicationCallback(McpsDataIndicationCallback c)
{
m_mcpsDataIndicationCallback = c;
}
void
LrWpanMacBase::SetMlmeAssociateIndicationCallback(MlmeAssociateIndicationCallback c)
{
m_mlmeAssociateIndicationCallback = c;
}
void
LrWpanMacBase::SetMlmeCommStatusIndicationCallback(MlmeCommStatusIndicationCallback c)
{
m_mlmeCommStatusIndicationCallback = c;
}
void
LrWpanMacBase::SetMlmeOrphanIndicationCallback(MlmeOrphanIndicationCallback c)
{
m_mlmeOrphanIndicationCallback = c;
}
void
LrWpanMacBase::SetMlmeStartConfirmCallback(MlmeStartConfirmCallback c)
{
m_mlmeStartConfirmCallback = c;
}
void
LrWpanMacBase::SetMlmeScanConfirmCallback(MlmeScanConfirmCallback c)
{
m_mlmeScanConfirmCallback = c;
}
void
LrWpanMacBase::SetMlmeAssociateConfirmCallback(MlmeAssociateConfirmCallback c)
{
m_mlmeAssociateConfirmCallback = c;
}
void
LrWpanMacBase::SetMlmeBeaconNotifyIndicationCallback(MlmeBeaconNotifyIndicationCallback c)
{
m_mlmeBeaconNotifyIndicationCallback = c;
}
void
LrWpanMacBase::SetMlmeSyncLossIndicationCallback(MlmeSyncLossIndicationCallback c)
{
m_mlmeSyncLossIndicationCallback = c;
}
void
LrWpanMacBase::SetMlmeSetConfirmCallback(MlmeSetConfirmCallback c)
{
m_mlmeSetConfirmCallback = c;
}
void
LrWpanMacBase::SetMlmeGetConfirmCallback(MlmeGetConfirmCallback c)
{
m_mlmeGetConfirmCallback = c;
}
void
LrWpanMacBase::SetMlmePollConfirmCallback(MlmePollConfirmCallback c)
{
m_mlmePollConfirmCallback = c;
}
} // namespace ns3

File diff suppressed because it is too large Load Diff

View File

@@ -53,7 +53,7 @@ LrWpanMac::GetTypeId()
{
static TypeId tid =
TypeId("ns3::LrWpanMac")
.SetParent<Object>()
.SetParent<LrWpanMacBase>()
.SetGroupName("LrWpan")
.AddConstructor<LrWpanMac>()
.AddAttribute("PanId",
@@ -1782,84 +1782,6 @@ LrWpanMac::GetPhy()
return m_phy;
}
void
LrWpanMac::SetMcpsDataIndicationCallback(McpsDataIndicationCallback c)
{
m_mcpsDataIndicationCallback = c;
}
void
LrWpanMac::SetMlmeAssociateIndicationCallback(MlmeAssociateIndicationCallback c)
{
m_mlmeAssociateIndicationCallback = c;
}
void
LrWpanMac::SetMlmeCommStatusIndicationCallback(MlmeCommStatusIndicationCallback c)
{
m_mlmeCommStatusIndicationCallback = c;
}
void
LrWpanMac::SetMlmeOrphanIndicationCallback(MlmeOrphanIndicationCallback c)
{
m_mlmeOrphanIndicationCallback = c;
}
void
LrWpanMac::SetMcpsDataConfirmCallback(McpsDataConfirmCallback c)
{
m_mcpsDataConfirmCallback = c;
}
void
LrWpanMac::SetMlmeStartConfirmCallback(MlmeStartConfirmCallback c)
{
m_mlmeStartConfirmCallback = c;
}
void
LrWpanMac::SetMlmeScanConfirmCallback(MlmeScanConfirmCallback c)
{
m_mlmeScanConfirmCallback = c;
}
void
LrWpanMac::SetMlmeAssociateConfirmCallback(MlmeAssociateConfirmCallback c)
{
m_mlmeAssociateConfirmCallback = c;
}
void
LrWpanMac::SetMlmeBeaconNotifyIndicationCallback(MlmeBeaconNotifyIndicationCallback c)
{
m_mlmeBeaconNotifyIndicationCallback = c;
}
void
LrWpanMac::SetMlmeSyncLossIndicationCallback(MlmeSyncLossIndicationCallback c)
{
m_mlmeSyncLossIndicationCallback = c;
}
void
LrWpanMac::SetMlmePollConfirmCallback(MlmePollConfirmCallback c)
{
m_mlmePollConfirmCallback = c;
}
void
LrWpanMac::SetMlmeSetConfirmCallback(MlmeSetConfirmCallback c)
{
m_mlmeSetConfirmCallback = c;
}
void
LrWpanMac::SetMlmeGetConfirmCallback(MlmeGetConfirmCallback c)
{
m_mlmeGetConfirmCallback = c;
}
void
LrWpanMac::PdDataIndication(uint32_t psduLength, Ptr<Packet> p, uint8_t lqi)
{

File diff suppressed because it is too large Load Diff