|
|
| 23 |
#include "ns3/mobility-model.h" |
23 |
#include "ns3/mobility-model.h" |
| 24 |
#include "ns3/yans-wifi-helper.h" |
24 |
#include "ns3/yans-wifi-helper.h" |
| 25 |
#include "ns3/mobility-helper.h" |
25 |
#include "ns3/mobility-helper.h" |
| 26 |
#include "ns3/seq-ts-header.h" |
|
|
| 27 |
#include "ns3/wave-net-device.h" |
26 |
#include "ns3/wave-net-device.h" |
| 28 |
#include "ns3/wave-mac-helper.h" |
27 |
#include "ns3/wave-mac-helper.h" |
| 29 |
#include "ns3/wave-helper.h" |
28 |
#include "ns3/wave-helper.h" |
|
|
| 530 |
const static uint16_t WSMP_PROT_NUMBER = 0x88DC; |
529 |
const static uint16_t WSMP_PROT_NUMBER = 0x88DC; |
| 531 |
const Mac48Address dest = Mac48Address::GetBroadcast (); |
530 |
const Mac48Address dest = Mac48Address::GetBroadcast (); |
| 532 |
const TxInfo txInfo = TxInfo (channel); |
531 |
const TxInfo txInfo = TxInfo (channel); |
| 533 |
Ptr<Packet> p = Create<Packet> (100); |
532 |
|
| 534 |
// the sequence here indicates the node id which should receive transmitted packets. |
533 |
uint8_t *data = new uint8_t [112]; |
| 535 |
SeqTsHeader seqTs; |
534 |
data [0] = (receiverId >> 24) & 0xFF; |
| 536 |
seqTs.SetSeq (receiverId); |
535 |
data [1] = (receiverId >> 16) & 0xFF; |
| 537 |
p->AddHeader (seqTs); |
536 |
data [2] = (receiverId >> 8) & 0xFF; |
|
|
537 |
data [3] = (receiverId >> 0) & 0xFF; |
| 538 |
|
| 539 |
uint64_t ts = Simulator::Now ().GetTimeStep (); |
| 540 |
data [4] = (ts >> 56) & 0xFF; |
| 541 |
data [5] = (ts >> 48) & 0xFF; |
| 542 |
data [6] = (ts >> 40) & 0xFF; |
| 543 |
data [7] = (ts >> 32) & 0xFF; |
| 544 |
data [8] = (ts >> 24) & 0xFF; |
| 545 |
data [9] = (ts >> 16) & 0xFF; |
| 546 |
data [10] = (ts >> 8) & 0xFF; |
| 547 |
data [11] = (ts >> 0) & 0xFF; |
| 548 |
|
| 549 |
Ptr<Packet> p = Create<Packet> (data, 112); |
| 550 |
|
| 538 |
m_sender->SendX (p, dest, WSMP_PROT_NUMBER, txInfo); |
551 |
m_sender->SendX (p, dest, WSMP_PROT_NUMBER, txInfo); |
|
|
552 |
|
| 553 |
delete [] data; |
| 539 |
} |
554 |
} |
| 540 |
|
555 |
|
| 541 |
bool |
556 |
bool |
| 542 |
ChannelAccessTestCase::Receive (Ptr<NetDevice> dev, Ptr<const Packet> pkt, uint16_t mode, const Address &sender) |
557 |
ChannelAccessTestCase::Receive (Ptr<NetDevice> dev, Ptr<const Packet> pkt, uint16_t mode, const Address &sender) |
| 543 |
{ |
558 |
{ |
| 544 |
SeqTsHeader seqTs; |
559 |
uint8_t *data = new uint8_t [pkt->GetSize ()]; |
| 545 |
ConstCast<Packet> (pkt)->RemoveHeader (seqTs); |
560 |
pkt->CopyData(data, pkt->GetSize ()); |
|
|
561 |
|
| 562 |
uint32_t seq = data [0]; |
| 563 |
seq <<= 8; |
| 564 |
seq |= data [1]; |
| 565 |
seq <<= 8; |
| 566 |
seq |= data [2]; |
| 567 |
seq <<= 8; |
| 568 |
seq |= data [3]; |
| 569 |
|
| 570 |
uint64_t ts = data [4]; |
| 571 |
ts <<= 8; |
| 572 |
ts |= data [5]; |
| 573 |
ts <<= 8; |
| 574 |
ts |= data [6]; |
| 575 |
ts <<= 8; |
| 576 |
ts |= data [7]; |
| 577 |
ts <<= 8; |
| 578 |
ts |= data [8]; |
| 579 |
ts <<= 8; |
| 580 |
ts |= data [9]; |
| 581 |
ts <<= 8; |
| 582 |
ts |= data [10]; |
| 583 |
ts <<= 8; |
| 584 |
ts |= data [11]; |
| 585 |
Time sendTime = TimeStep (ts); |
| 586 |
|
| 587 |
delete [] data; |
| 588 |
|
| 589 |
// SeqTsHeader seqTs; |
| 590 |
// ConstCast<Packet> (pkt)->RemoveHeader (seqTs); |
| 546 |
uint32_t curNodeId = dev->GetNode ()->GetId (); |
591 |
uint32_t curNodeId = dev->GetNode ()->GetId (); |
| 547 |
NS_TEST_EXPECT_MSG_EQ (curNodeId, seqTs.GetSeq (), "fail to assign channel access"); |
592 |
NS_TEST_EXPECT_MSG_EQ (curNodeId, seq, "fail to assign channel access"); |
| 548 |
m_received++; |
593 |
m_received++; |
| 549 |
return true; |
594 |
return true; |
| 550 |
} |
595 |
} |
|
|
| 879 |
{ |
924 |
{ |
| 880 |
const static uint16_t WSMP_PROT_NUMBER = 0x88DC; |
925 |
const static uint16_t WSMP_PROT_NUMBER = 0x88DC; |
| 881 |
const Mac48Address dest = Mac48Address::ConvertFrom (m_receiver->GetAddress ()); |
926 |
const Mac48Address dest = Mac48Address::ConvertFrom (m_receiver->GetAddress ()); |
| 882 |
// const Mac48Address dest = Mac48Address::GetBroadcast(); |
|
|
| 883 |
|
927 |
|
|
|
928 |
uint8_t *data = new uint8_t [packetSize]; |
| 929 |
data [0] = (sequence >> 24) & 0xFF; |
| 930 |
data [1] = (sequence >> 16) & 0xFF; |
| 931 |
data [2] = (sequence >> 8) & 0xFF; |
| 932 |
data [3] = (sequence >> 0) & 0xFF; |
| 884 |
|
933 |
|
| 885 |
Ptr<Packet> p = Create<Packet> (packetSize - (8 + 4)); // 8+4 : the size of the seqTs header |
934 |
uint64_t ts = Simulator::Now ().GetTimeStep (); |
| 886 |
// the sequence here indicates whether the node id which should receive transmitted packets. |
935 |
data [4] = (ts >> 56) & 0xFF; |
| 887 |
SeqTsHeader seqTs; |
936 |
data [5] = (ts >> 48) & 0xFF; |
| 888 |
seqTs.SetSeq (sequence); |
937 |
data [6] = (ts >> 40) & 0xFF; |
| 889 |
p->AddHeader (seqTs); |
938 |
data [7] = (ts >> 32) & 0xFF; |
|
|
939 |
data [8] = (ts >> 24) & 0xFF; |
| 940 |
data [9] = (ts >> 16) & 0xFF; |
| 941 |
data [10] = (ts >> 8) & 0xFF; |
| 942 |
data [11] = (ts >> 0) & 0xFF; |
| 943 |
|
| 944 |
Ptr<Packet> p = Create<Packet> (data, packetSize); |
| 945 |
|
| 890 |
m_sender->SendX (p, dest, WSMP_PROT_NUMBER, txInfo); |
946 |
m_sender->SendX (p, dest, WSMP_PROT_NUMBER, txInfo); |
|
|
947 |
|
| 948 |
delete [] data; |
| 891 |
} |
949 |
} |
| 892 |
|
950 |
|
| 893 |
bool |
951 |
bool |
| 894 |
AnnexC_TestCase::Receive (Ptr<NetDevice> dev, Ptr<const Packet> pkt, uint16_t mode, const Address &sender) |
952 |
AnnexC_TestCase::Receive (Ptr<NetDevice> dev, Ptr<const Packet> pkt, uint16_t mode, const Address &sender) |
| 895 |
{ |
953 |
{ |
| 896 |
SeqTsHeader seqTs; |
954 |
uint8_t *data = new uint8_t [pkt->GetSize ()]; |
| 897 |
ConstCast<Packet> (pkt)->RemoveHeader (seqTs); |
955 |
pkt->CopyData(data, pkt->GetSize ()); |
| 898 |
uint32_t seq = seqTs.GetSeq (); |
956 |
|
| 899 |
Time sendTime = seqTs.GetTs (); |
957 |
uint32_t seq = data [0]; |
|
|
958 |
seq <<= 8; |
| 959 |
seq |= data [1]; |
| 960 |
seq <<= 8; |
| 961 |
seq |= data [2]; |
| 962 |
seq <<= 8; |
| 963 |
seq |= data [3]; |
| 964 |
|
| 965 |
uint64_t ts = data [4]; |
| 966 |
ts <<= 8; |
| 967 |
ts |= data [5]; |
| 968 |
ts <<= 8; |
| 969 |
ts |= data [6]; |
| 970 |
ts <<= 8; |
| 971 |
ts |= data [7]; |
| 972 |
ts <<= 8; |
| 973 |
ts |= data [8]; |
| 974 |
ts <<= 8; |
| 975 |
ts |= data [9]; |
| 976 |
ts <<= 8; |
| 977 |
ts |= data [10]; |
| 978 |
ts <<= 8; |
| 979 |
ts |= data [11]; |
| 980 |
Time sendTime = TimeStep (ts); |
| 981 |
|
| 982 |
delete [] data; |
| 983 |
|
| 900 |
Time curTime = Now (); |
984 |
Time curTime = Now (); |
| 901 |
Time duration = curTime - sendTime; |
985 |
Time duration = curTime - sendTime; |
| 902 |
|
986 |
|