|
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 |
|