|
Lines 52-58
Reservation::Reservation ()
|
Link Here
|
|---|
|
| 52 |
|
52 |
|
| 53 |
} |
53 |
} |
| 54 |
|
54 |
|
| 55 |
Reservation::Reservation (std::list<std::pair <Ptr<Packet>, UanAddress > > &list, uint8_t frameNo, uint32_t maxPkts) |
55 |
Reservation::Reservation (std::list<std::pair <Ptr<Packet>, Mac8Address > > &list, uint8_t frameNo, uint32_t maxPkts) |
| 56 |
: m_frameNo (frameNo), |
56 |
: m_frameNo (frameNo), |
| 57 |
m_retryNo (0), |
57 |
m_retryNo (0), |
| 58 |
m_transmitted (false) |
58 |
m_transmitted (false) |
|
Lines 75-81
Reservation::Reservation (std::list<std::pair <Ptr<Packet>, UanAddress > > &list
|
Link Here
|
|---|
|
| 75 |
|
75 |
|
| 76 |
Reservation::~Reservation () |
76 |
Reservation::~Reservation () |
| 77 |
{ |
77 |
{ |
| 78 |
std::list<std::pair <Ptr<Packet>, UanAddress > >::iterator it; |
78 |
std::list<std::pair <Ptr<Packet>, Mac8Address > >::iterator it; |
| 79 |
for (it = m_pktList.begin (); it != m_pktList.end (); it++) |
79 |
for (it = m_pktList.begin (); it != m_pktList.end (); it++) |
| 80 |
{ |
80 |
{ |
| 81 |
it->first = Ptr<Packet> ((Packet *) 0); |
81 |
it->first = Ptr<Packet> ((Packet *) 0); |
|
Lines 95-101
Reservation::GetLength () const
|
Link Here
|
|---|
|
| 95 |
return m_length; |
95 |
return m_length; |
| 96 |
} |
96 |
} |
| 97 |
|
97 |
|
| 98 |
const std::list<std::pair <Ptr<Packet>, UanAddress > > & |
98 |
const std::list<std::pair <Ptr<Packet>, Mac8Address > > & |
| 99 |
Reservation::GetPktList (void) const |
99 |
Reservation::GetPktList (void) const |
| 100 |
{ |
100 |
{ |
| 101 |
return m_pktList; |
101 |
return m_pktList; |
|
|
| 186 |
m_phy->Clear (); |
186 |
m_phy->Clear (); |
| 187 |
m_phy = 0; |
187 |
m_phy = 0; |
| 188 |
} |
188 |
} |
| 189 |
std::list<std::pair <Ptr<Packet>, UanAddress > >::iterator it; |
189 |
std::list<std::pair <Ptr<Packet>, Mac8Address > >::iterator it; |
| 190 |
for (it = m_pktQueue.begin (); it != m_pktQueue.end (); it++) |
190 |
for (it = m_pktQueue.begin (); it != m_pktQueue.end (); it++) |
| 191 |
{ |
191 |
{ |
| 192 |
it->first = 0; |
192 |
it->first = 0; |
|
Lines 275-294
UanMacRc::AssignStreams (int64_t stream)
|
Link Here
|
|---|
|
| 275 |
return 1; |
275 |
return 1; |
| 276 |
} |
276 |
} |
| 277 |
|
277 |
|
| 278 |
Address |
|
|
| 279 |
UanMacRc::GetAddress (void) |
| 280 |
{ |
| 281 |
return m_address; |
| 282 |
} |
| 283 |
|
| 284 |
void |
| 285 |
UanMacRc::SetAddress (UanAddress addr) |
| 286 |
{ |
| 287 |
m_address = addr; |
| 288 |
} |
| 289 |
|
| 290 |
bool |
278 |
bool |
| 291 |
UanMacRc::Enqueue (Ptr<Packet> packet, const Address &dest, uint16_t protocolNumber) |
279 |
UanMacRc::Enqueue (Ptr<Packet> packet, uint16_t protocolNumber, const Address &dest) |
| 292 |
{ |
280 |
{ |
| 293 |
if (protocolNumber > 0) |
281 |
if (protocolNumber > 0) |
| 294 |
{ |
282 |
{ |
|
Lines 301-307
UanMacRc::Enqueue (Ptr<Packet> packet, const Address &dest, uint16_t protocolNum
|
Link Here
|
|---|
|
| 301 |
return false; |
289 |
return false; |
| 302 |
} |
290 |
} |
| 303 |
|
291 |
|
| 304 |
m_pktQueue.push_back (std::make_pair (packet, UanAddress::ConvertFrom (dest))); |
292 |
m_pktQueue.push_back (std::make_pair (packet, Mac8Address::ConvertFrom (dest))); |
| 305 |
|
293 |
|
| 306 |
switch (m_state) |
294 |
switch (m_state) |
| 307 |
{ |
295 |
{ |
|
Lines 324-330
UanMacRc::Enqueue (Ptr<Packet> packet, const Address &dest, uint16_t protocolNum
|
Link Here
|
|---|
|
| 324 |
} |
312 |
} |
| 325 |
|
313 |
|
| 326 |
void |
314 |
void |
| 327 |
UanMacRc::SetForwardUpCb (Callback<void, Ptr<Packet>, const UanAddress&> cb) |
315 |
UanMacRc::SetForwardUpCb (Callback<void, Ptr<Packet>, uint16_t, const Mac8Address&> cb) |
| 328 |
{ |
316 |
{ |
| 329 |
m_forwardUpCb = cb; |
317 |
m_forwardUpCb = cb; |
| 330 |
} |
318 |
} |
|
Lines 336-354
UanMacRc::AttachPhy (Ptr<UanPhy> phy)
|
Link Here
|
|---|
|
| 336 |
m_phy->SetReceiveOkCallback (MakeCallback (&UanMacRc::ReceiveOkFromPhy, this)); |
324 |
m_phy->SetReceiveOkCallback (MakeCallback (&UanMacRc::ReceiveOkFromPhy, this)); |
| 337 |
} |
325 |
} |
| 338 |
|
326 |
|
| 339 |
Address |
|
|
| 340 |
UanMacRc::GetBroadcast (void) const |
| 341 |
{ |
| 342 |
return UanAddress::GetBroadcast (); |
| 343 |
} |
| 344 |
|
| 345 |
void |
327 |
void |
| 346 |
UanMacRc::ReceiveOkFromPhy (Ptr<Packet> pkt, double sinr, UanTxMode mode) |
328 |
UanMacRc::ReceiveOkFromPhy (Ptr<Packet> pkt, double sinr, UanTxMode mode) |
| 347 |
{ |
329 |
{ |
| 348 |
|
330 |
|
| 349 |
UanHeaderCommon ch; |
331 |
UanHeaderCommon ch; |
| 350 |
pkt->RemoveHeader (ch); |
332 |
pkt->RemoveHeader (ch); |
| 351 |
if (ch.GetDest () == m_address || ch.GetDest () == UanAddress::GetBroadcast ()) |
333 |
if (ch.GetDest () == m_address || ch.GetDest () == Mac8Address::GetBroadcast ()) |
| 352 |
{ |
334 |
{ |
| 353 |
m_rxLogger (pkt, mode); |
335 |
m_rxLogger (pkt, mode); |
| 354 |
} |
336 |
} |
|
Lines 362-368
UanMacRc::ReceiveOkFromPhy (Ptr<Packet> pkt, double sinr, UanTxMode mode)
|
Link Here
|
|---|
|
| 362 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << " Node " << m_address << " UanMacRc Receiving DATA packet from PHY"); |
344 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << " Node " << m_address << " UanMacRc Receiving DATA packet from PHY"); |
| 363 |
UanHeaderRcData dh; |
345 |
UanHeaderRcData dh; |
| 364 |
pkt->RemoveHeader (dh); |
346 |
pkt->RemoveHeader (dh); |
| 365 |
m_forwardUpCb (pkt, ch.GetSrc ()); |
347 |
m_forwardUpCb (pkt, ch.GetProtocolNumber (), ch.GetSrc ()); |
| 366 |
} |
348 |
} |
| 367 |
break; |
349 |
break; |
| 368 |
case TYPE_RTS: |
350 |
case TYPE_RTS: |
|
Lines 393-399
UanMacRc::ReceiveOkFromPhy (Ptr<Packet> pkt, double sinr, UanTxMode mode)
|
Link Here
|
|---|
|
| 393 |
} |
375 |
} |
| 394 |
|
376 |
|
| 395 |
UanHeaderRcCts ctsh; |
377 |
UanHeaderRcCts ctsh; |
| 396 |
ctsh.SetAddress (UanAddress::GetBroadcast ()); |
378 |
ctsh.SetAddress (Mac8Address::GetBroadcast ()); |
| 397 |
while (pkt->GetSize () > 0) |
379 |
while (pkt->GetSize () > 0) |
| 398 |
{ |
380 |
{ |
| 399 |
pkt->RemoveHeader (ctsh); |
381 |
pkt->RemoveHeader (ctsh); |
|
Lines 468-475
UanMacRc::ScheduleData (const UanHeaderRcCts &ctsh, const UanHeaderRcCtsGlobal &
|
Link Here
|
|---|
|
| 468 |
|
450 |
|
| 469 |
Time frameDelay = Seconds (0); |
451 |
Time frameDelay = Seconds (0); |
| 470 |
|
452 |
|
| 471 |
const std::list<std::pair <Ptr<Packet>, UanAddress > > l = it->GetPktList (); |
453 |
const std::list<std::pair <Ptr<Packet>, Mac8Address > > l = it->GetPktList (); |
| 472 |
std::list<std::pair <Ptr<Packet>, UanAddress > >::const_iterator pit; |
454 |
std::list<std::pair <Ptr<Packet>, Mac8Address > >::const_iterator pit; |
| 473 |
pit = l.begin (); |
455 |
pit = l.begin (); |
| 474 |
|
456 |
|
| 475 |
|
457 |
|
|
Lines 579-586
UanMacRc::ProcessAck (Ptr<Packet> ack)
|
Link Here
|
|---|
|
| 579 |
} |
561 |
} |
| 580 |
if (ah.GetNoNacks () > 0) |
562 |
if (ah.GetNoNacks () > 0) |
| 581 |
{ |
563 |
{ |
| 582 |
const std::list<std::pair <Ptr<Packet>, UanAddress > > l = it->GetPktList (); |
564 |
const std::list<std::pair <Ptr<Packet>, Mac8Address > > l = it->GetPktList (); |
| 583 |
std::list<std::pair <Ptr<Packet>, UanAddress > >::const_iterator pit; |
565 |
std::list<std::pair <Ptr<Packet>, Mac8Address > >::const_iterator pit; |
| 584 |
pit = l.begin (); |
566 |
pit = l.begin (); |
| 585 |
|
567 |
|
| 586 |
const std::set<uint8_t> &nacks = ah.GetNackedFrames (); |
568 |
const std::set<uint8_t> &nacks = ah.GetNackedFrames (); |
|
Lines 634-640
UanMacRc::Associate (void)
|
Link Here
|
|---|
|
| 634 |
{ |
616 |
{ |
| 635 |
Ptr<Packet> pkt = Create<Packet> (0); |
617 |
Ptr<Packet> pkt = Create<Packet> (0); |
| 636 |
pkt->AddHeader (CreateRtsHeader (res)); |
618 |
pkt->AddHeader (CreateRtsHeader (res)); |
| 637 |
pkt->AddHeader (UanHeaderCommon (m_address, UanAddress::GetBroadcast (), (uint8_t) TYPE_GWPING)); |
619 |
pkt->AddHeader (UanHeaderCommon (m_address, Mac8Address::GetBroadcast (), static_cast<uint8_t>(TYPE_GWPING), 0)); |
| 638 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << " Sending first GWPING " << *pkt); |
620 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << " Sending first GWPING " << *pkt); |
| 639 |
SendPacket (pkt,m_currentRate + m_numRates); |
621 |
SendPacket (pkt,m_currentRate + m_numRates); |
| 640 |
} |
622 |
} |
|
Lines 665-671
UanMacRc::AssociateTimeout ()
|
Link Here
|
|---|
|
| 665 |
res.IncrementRetry (); |
647 |
res.IncrementRetry (); |
| 666 |
|
648 |
|
| 667 |
pkt->AddHeader (CreateRtsHeader (res)); |
649 |
pkt->AddHeader (CreateRtsHeader (res)); |
| 668 |
pkt->AddHeader (UanHeaderCommon (m_address, UanAddress::GetBroadcast (), (uint8_t) TYPE_GWPING)); |
650 |
pkt->AddHeader (UanHeaderCommon (m_address, Mac8Address::GetBroadcast (), static_cast<uint8_t> (TYPE_GWPING), 0)); |
| 669 |
|
651 |
|
| 670 |
SendPacket (pkt,m_currentRate + m_numRates); |
652 |
SendPacket (pkt,m_currentRate + m_numRates); |
| 671 |
m_resList.push_back (res); |
653 |
m_resList.push_back (res); |
|
Lines 698-704
UanMacRc::SendRts (void)
|
Link Here
|
|---|
|
| 698 |
{ |
680 |
{ |
| 699 |
Ptr<Packet> pkt = Create<Packet> (0); |
681 |
Ptr<Packet> pkt = Create<Packet> (0); |
| 700 |
pkt->AddHeader (CreateRtsHeader (res)); |
682 |
pkt->AddHeader (CreateRtsHeader (res)); |
| 701 |
pkt->AddHeader (UanHeaderCommon (m_address, UanAddress::GetBroadcast (), (uint8_t) TYPE_RTS)); |
683 |
pkt->AddHeader (UanHeaderCommon (m_address, Mac8Address::GetBroadcast (), static_cast<uint8_t> (TYPE_RTS), 0)); |
| 702 |
SendPacket (pkt,m_currentRate + m_numRates); |
684 |
SendPacket (pkt,m_currentRate + m_numRates); |
| 703 |
} |
685 |
} |
| 704 |
m_state = RTSSENT; |
686 |
m_state = RTSSENT; |
|
Lines 761-767
UanMacRc::RtsTimeout (void)
|
Link Here
|
|---|
|
| 761 |
res.IncrementRetry (); |
743 |
res.IncrementRetry (); |
| 762 |
m_resList.push_back (res); |
744 |
m_resList.push_back (res); |
| 763 |
pkt->AddHeader (CreateRtsHeader (res)); |
745 |
pkt->AddHeader (CreateRtsHeader (res)); |
| 764 |
pkt->AddHeader (UanHeaderCommon (m_address, UanAddress::GetBroadcast (), (uint8_t) TYPE_RTS)); |
746 |
pkt->AddHeader (UanHeaderCommon (m_address, Mac8Address::GetBroadcast (), static_cast<uint8_t> (TYPE_RTS), 0)); |
| 765 |
SendPacket (pkt,m_currentRate + m_numRates); |
747 |
SendPacket (pkt,m_currentRate + m_numRates); |
| 766 |
|
748 |
|
| 767 |
} |
749 |
} |