Modify Endpoint Match Frame, Fix Test Suite
The reader falgs (Expects In-line QoS, Expects Historical Data, Is Best Effort) of the remote reader is transfered in the Metatraffic Endpoint Match Frame. The Level 1 rtps_builtin_endpoint test was also fixed.
This commit is contained in:
parent
a3a51e2f52
commit
bfdc366273
22
src/REF.txt
22
src/REF.txt
@ -236,6 +236,11 @@ PARTICICPANT DATA
|
|||||||
22| |
|
22| |
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
|
|
||||||
|
Q...Reader expects in-line QoS
|
||||||
|
M...Send Message Data (Liveliness Update)
|
||||||
|
S...Send Subriber Data
|
||||||
|
P...Send Publisher Data
|
||||||
|
|
||||||
|
|
||||||
ENDPOINT MATCH FRAME
|
ENDPOINT MATCH FRAME
|
||||||
====================
|
====================
|
||||||
@ -253,9 +258,20 @@ ENDPOINT MATCH FRAME
|
|||||||
04| ENTITYID |
|
04| ENTITYID |
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
05| IPv4_ADDRESS |
|
05| IPv4_ADDRESS |
|
||||||
+-----------------------------+---------------------------+-+-+
|
+-----------------------------+-------------------------------+
|
||||||
06| UDP_PORT | UNUSED |D|Q|
|
06| UDP_PORT | READER_FLAGS |
|
||||||
+-----------------------------+---------------------------+-+-+
|
+-----------------------------+-------------------------------+
|
||||||
|
|
||||||
|
READER_FLAGS
|
||||||
|
------------
|
||||||
|
16..............8...............0
|
||||||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
+-------------------------+-+-+-+
|
||||||
|
| UNUSED |B|H|Q|
|
||||||
|
+-------------------------+-+-+-+
|
||||||
|
Q...Reader expects in-line QoS
|
||||||
|
H...Reader expects Historical Data
|
||||||
|
B...Reader has RELIABILITY BEST_EFFORT
|
||||||
|
|
||||||
ENDPOINT UNMATCH FRAME
|
ENDPOINT UNMATCH FRAME
|
||||||
======================
|
======================
|
||||||
|
|||||||
@ -322,10 +322,12 @@ begin
|
|||||||
e1.entityId := gen_rand_entityid_2(FALSE);
|
e1.entityId := gen_rand_entityid_2(FALSE);
|
||||||
e1.topic_name := ENDPOINT_TOPIC(0);
|
e1.topic_name := ENDPOINT_TOPIC(0);
|
||||||
e1.type_name := ENDPOINT_TYPE(0);
|
e1.type_name := ENDPOINT_TYPE(0);
|
||||||
|
e1.reader := FALSE;
|
||||||
e2.participant := p2;
|
e2.participant := p2;
|
||||||
e2.entityId := gen_rand_entityid_2(TRUE);
|
e2.entityId := gen_rand_entityid_2(TRUE);
|
||||||
e2.topic_name := ENDPOINT_TOPIC(0);
|
e2.topic_name := ENDPOINT_TOPIC(0);
|
||||||
e2.type_name := ENDPOINT_TYPE(0);
|
e2.type_name := ENDPOINT_TYPE(0);
|
||||||
|
e2.reader := TRUE;
|
||||||
|
|
||||||
user_data := convert_string("USER_DATA" & (10 to 256 => NUL));
|
user_data := convert_string("USER_DATA" & (10 to 256 => NUL));
|
||||||
group_data := convert_string("GROUP_DATA" & (11 to 256 => NUL));
|
group_data := convert_string("GROUP_DATA" & (11 to 256 => NUL));
|
||||||
@ -486,6 +488,7 @@ begin
|
|||||||
Log("Match Participant 2 Writer [Durability Persistent]", INFO);
|
Log("Match Participant 2 Writer [Durability Persistent]", INFO);
|
||||||
sub_p.writerSN := p2_snp;
|
sub_p.writerSN := p2_snp;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -506,6 +509,7 @@ begin
|
|||||||
Log("Match Participant 2 Writer [Presentation Group]", INFO);
|
Log("Match Participant 2 Writer [Presentation Group]", INFO);
|
||||||
sub_p.writerSN := p2_snp;
|
sub_p.writerSN := p2_snp;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -526,6 +530,7 @@ begin
|
|||||||
Log("Ignore Participant 2 Writer [Ownership Exclusive]", INFO);
|
Log("Ignore Participant 2 Writer [Ownership Exclusive]", INFO);
|
||||||
sub_p.writerSN := p2_snp;
|
sub_p.writerSN := p2_snp;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -546,6 +551,7 @@ begin
|
|||||||
Log("Match Participant 2 Writer [USER_DATA, TOPIC_DATA, GROUP_DATA, MAX_SERIALIZED_PAYLOAD]", INFO);
|
Log("Match Participant 2 Writer [USER_DATA, TOPIC_DATA, GROUP_DATA, MAX_SERIALIZED_PAYLOAD]", INFO);
|
||||||
sub_p.writerSN := p2_snp;
|
sub_p.writerSN := p2_snp;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -569,6 +575,7 @@ begin
|
|||||||
Log("Ignore Participant 2 Writer [Incompatible MAX_SERIALIZED_PAYLOAD]", INFO);
|
Log("Ignore Participant 2 Writer [Incompatible MAX_SERIALIZED_PAYLOAD]", INFO);
|
||||||
sub_p.writerSN := p2_snp;
|
sub_p.writerSN := p2_snp;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -589,6 +596,7 @@ begin
|
|||||||
Log("Ignore Participant 2 Writer [Non-Default Partition]", INFO);
|
Log("Ignore Participant 2 Writer [Non-Default Partition]", INFO);
|
||||||
sub_p.writerSN := p2_snp;
|
sub_p.writerSN := p2_snp;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -611,6 +619,7 @@ begin
|
|||||||
Log("Ignore Participant 2 Reader [Durability Persistent]", INFO);
|
Log("Ignore Participant 2 Reader [Durability Persistent]", INFO);
|
||||||
sub_s.writerSN := p2_sns;
|
sub_s.writerSN := p2_sns;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := TRUE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -631,6 +640,7 @@ begin
|
|||||||
Log("Ignore Participant 2 Reader [Presentation Group]", INFO);
|
Log("Ignore Participant 2 Reader [Presentation Group]", INFO);
|
||||||
sub_s.writerSN := p2_sns;
|
sub_s.writerSN := p2_sns;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := TRUE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -652,6 +662,7 @@ begin
|
|||||||
Log("Ignore Participant 2 Reader [Ownership Exclusive]", INFO);
|
Log("Ignore Participant 2 Reader [Ownership Exclusive]", INFO);
|
||||||
sub_s.writerSN := p2_sns;
|
sub_s.writerSN := p2_sns;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := TRUE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -672,6 +683,7 @@ begin
|
|||||||
Log("Match Participant 2 Reader [USER_DATA, TOPIC_DATA, GROUP_DATA, EXPECTS_INLINE_QOS]", INFO);
|
Log("Match Participant 2 Reader [USER_DATA, TOPIC_DATA, GROUP_DATA, EXPECTS_INLINE_QOS]", INFO);
|
||||||
sub_s.writerSN := p2_sns;
|
sub_s.writerSN := p2_sns;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := TRUE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
@ -695,6 +707,7 @@ begin
|
|||||||
Log("Ignore Participant 2 Reader [Non-Default Partition]", INFO);
|
Log("Ignore Participant 2 Reader [Non-Default Partition]", INFO);
|
||||||
sub_s.writerSN := p2_sns;
|
sub_s.writerSN := p2_sns;
|
||||||
endpoint := DEFAULT_ENDPOINT_DATA;
|
endpoint := DEFAULT_ENDPOINT_DATA;
|
||||||
|
endpoint.reader := TRUE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
endpoint.entityId := gen_rand_entityid_2(TRUE);
|
||||||
endpoint.participant := p2;
|
endpoint.participant := p2;
|
||||||
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
endpoint.topic_name := ENDPOINT_TOPIC(0);
|
||||||
|
|||||||
@ -615,6 +615,7 @@ begin
|
|||||||
Log("Ignore Endpoint [No PID_SENTINEL]", INFO);
|
Log("Ignore Endpoint [No PID_SENTINEL]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
@ -626,8 +627,9 @@ begin
|
|||||||
|
|
||||||
-- *PID_TOPIC_NAME*
|
-- *PID_TOPIC_NAME*
|
||||||
Log("Ignore Endpoint [Invalid PID_TOPIC_NAME]", INFO);
|
Log("Ignore Endpoint [Invalid PID_TOPIC_NAME]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_TOPIC_NAME, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_TOPIC_NAME, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -639,8 +641,9 @@ begin
|
|||||||
sub_p.data := EMPTY_TEST_PACKET;
|
sub_p.data := EMPTY_TEST_PACKET;
|
||||||
|
|
||||||
Log("Match Endpoint [Extra Bytes in PID_TOPIC_NAME]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_TOPIC_NAME]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_TOPIC_NAME, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_TOPIC_NAME, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -656,8 +659,9 @@ begin
|
|||||||
|
|
||||||
-- *PID_TYPE_NAME*
|
-- *PID_TYPE_NAME*
|
||||||
Log("Ignore Endpoint [Invalid PID_TYPE_NAME]", INFO);
|
Log("Ignore Endpoint [Invalid PID_TYPE_NAME]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_TYPE_NAME, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_TYPE_NAME, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -669,8 +673,9 @@ begin
|
|||||||
sub_p.data := EMPTY_TEST_PACKET;
|
sub_p.data := EMPTY_TEST_PACKET;
|
||||||
|
|
||||||
Log("Match Endpoint [Extra Bytes in PID_TYPE_NAME]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_TYPE_NAME]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_TYPE_NAME, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_TYPE_NAME, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -686,8 +691,9 @@ begin
|
|||||||
|
|
||||||
-- *PID_DURABILITY*
|
-- *PID_DURABILITY*
|
||||||
Log("Ignore Endpoint [Invalid PID_DURABILITY]", INFO);
|
Log("Ignore Endpoint [Invalid PID_DURABILITY]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DURABILITY, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DURABILITY, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -699,8 +705,9 @@ begin
|
|||||||
sub_p.data := EMPTY_TEST_PACKET;
|
sub_p.data := EMPTY_TEST_PACKET;
|
||||||
|
|
||||||
Log("Match Endpoint [Extra Bytes in PID_DURABILITY]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_DURABILITY]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DURABILITY, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DURABILITY, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -716,8 +723,9 @@ begin
|
|||||||
|
|
||||||
-- *PID_DEADLINE*
|
-- *PID_DEADLINE*
|
||||||
Log("Ignore Endpoint [Invalid PID_DEADLINE]", INFO);
|
Log("Ignore Endpoint [Invalid PID_DEADLINE]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DEADLINE, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DEADLINE, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -729,8 +737,9 @@ begin
|
|||||||
sub_p.data := EMPTY_TEST_PACKET;
|
sub_p.data := EMPTY_TEST_PACKET;
|
||||||
|
|
||||||
Log("Match Endpoint [Extra Bytes in PID_DEADLINE]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_DEADLINE]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DEADLINE, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DEADLINE, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -748,6 +757,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_LIVELINESS]", INFO);
|
Log("Ignore Endpoint [Invalid PID_LIVELINESS]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_LIVELINESS, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_LIVELINESS, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -761,6 +771,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_LIVELINESS]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_LIVELINESS]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_LIVELINESS, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_LIVELINESS, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -778,6 +789,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_RELIABILITY]", INFO);
|
Log("Ignore Endpoint [Invalid PID_RELIABILITY]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_RELIABILITY, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_RELIABILITY, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -791,6 +803,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_RELIABILITY]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_RELIABILITY]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_RELIABILITY, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_RELIABILITY, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -808,6 +821,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_DESTINATION_ORDER]", INFO);
|
Log("Ignore Endpoint [Invalid PID_DESTINATION_ORDER]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DESTINATION_ORDER, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DESTINATION_ORDER, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -821,6 +835,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_DESTINATION_ORDER]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_DESTINATION_ORDER]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DESTINATION_ORDER, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DESTINATION_ORDER, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -838,6 +853,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_OWNERSHIP]", INFO);
|
Log("Ignore Endpoint [Invalid PID_OWNERSHIP]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_OWNERSHIP, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_OWNERSHIP, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -851,6 +867,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_OWNERSHIP]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_OWNERSHIP]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_OWNERSHIP, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_OWNERSHIP, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -868,6 +885,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_PRESENTATION]", INFO);
|
Log("Ignore Endpoint [Invalid PID_PRESENTATION]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_PRESENTATION, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_PRESENTATION, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -881,6 +899,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_PRESENTATION]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_PRESENTATION]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_PRESENTATION, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_PRESENTATION, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -898,6 +917,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_LATENCY_BUDGET]", INFO);
|
Log("Ignore Endpoint [Invalid PID_LATENCY_BUDGET]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_LATENCY_BUDGET, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_LATENCY_BUDGET, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -911,6 +931,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_LATENCY_BUDGET]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_LATENCY_BUDGET]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_LATENCY_BUDGET, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_LATENCY_BUDGET, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -928,6 +949,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_ENDPOINT_GUID]", INFO);
|
Log("Ignore Endpoint [Invalid PID_ENDPOINT_GUID]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_ENDPOINT_GUID, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_ENDPOINT_GUID, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -941,6 +963,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_ENDPOINT_GUID]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_ENDPOINT_GUID]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_ENDPOINT_GUID, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_ENDPOINT_GUID, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -958,6 +981,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_EXPECTS_INLINE_QOS]", INFO);
|
Log("Ignore Endpoint [Invalid PID_EXPECTS_INLINE_QOS]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_EXPECTS_INLINE_QOS, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_EXPECTS_INLINE_QOS, -1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -971,6 +995,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_EXPECTS_INLINE_QOS]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_EXPECTS_INLINE_QOS]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_EXPECTS_INLINE_QOS, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_EXPECTS_INLINE_QOS, +1);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -988,6 +1013,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_DATA_MAX_SIZE_SERIALIZED]", INFO);
|
Log("Ignore Endpoint [Invalid PID_DATA_MAX_SIZE_SERIALIZED]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.max_size_serialized:= int(65000, CDR_LONG_WIDTH);
|
endpoint.max_size_serialized:= int(65000, CDR_LONG_WIDTH);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DATA_MAX_SIZE_SERIALIZED, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DATA_MAX_SIZE_SERIALIZED, -1);
|
||||||
@ -1002,6 +1028,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_DATA_MAX_SIZE_SERIALIZED]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_DATA_MAX_SIZE_SERIALIZED]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.max_size_serialized:= int(65000, CDR_LONG_WIDTH);
|
endpoint.max_size_serialized:= int(65000, CDR_LONG_WIDTH);
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_DATA_MAX_SIZE_SERIALIZED, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_DATA_MAX_SIZE_SERIALIZED, +1);
|
||||||
@ -1020,6 +1047,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_UNICAST_LOCATOR]", INFO);
|
Log("Ignore Endpoint [Invalid PID_UNICAST_LOCATOR]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_UNICAST_LOCATOR, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_UNICAST_LOCATOR, -1);
|
||||||
@ -1034,6 +1062,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_UNICAST_LOCATOR]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_UNICAST_LOCATOR]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_UNICAST_LOCATOR, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_UNICAST_LOCATOR, +1);
|
||||||
@ -1052,6 +1081,7 @@ begin
|
|||||||
Log("Ignore Endpoint [Invalid PID_MULTICAST_LOCATOR]", INFO);
|
Log("Ignore Endpoint [Invalid PID_MULTICAST_LOCATOR]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.multicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
endpoint.multicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_MULTICAST_LOCATOR, -1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_MULTICAST_LOCATOR, -1);
|
||||||
@ -1066,6 +1096,7 @@ begin
|
|||||||
Log("Match Endpoint [Extra Bytes in PID_MULTICAST_LOCATOR]", INFO);
|
Log("Match Endpoint [Extra Bytes in PID_MULTICAST_LOCATOR]", INFO);
|
||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
endpoint.multicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
endpoint.multicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
||||||
gen_endpoint_data(endpoint, sub_p.data, PID_MULTICAST_LOCATOR, +1);
|
gen_endpoint_data(endpoint, sub_p.data, PID_MULTICAST_LOCATOR, +1);
|
||||||
|
|||||||
@ -240,6 +240,7 @@ begin
|
|||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
endpoint.participant:= p1;
|
endpoint.participant:= p1;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
@ -254,6 +255,7 @@ begin
|
|||||||
sub_p.writerSN := p_snp;
|
sub_p.writerSN := p_snp;
|
||||||
endpoint := e0;
|
endpoint := e0;
|
||||||
endpoint.participant:= p0;
|
endpoint.participant:= p0;
|
||||||
|
endpoint.reader := FALSE;
|
||||||
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
endpoint.entityId := gen_rand_entityid_2(FALSE);
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
|
|||||||
@ -185,11 +185,13 @@ begin
|
|||||||
e0.participant := p0;
|
e0.participant := p0;
|
||||||
e0.topic_name := ENDPOINT_TOPIC(2);
|
e0.topic_name := ENDPOINT_TOPIC(2);
|
||||||
e0.type_name := ENDPOINT_TYPE(2);
|
e0.type_name := ENDPOINT_TYPE(2);
|
||||||
|
e0.reader := FALSE;
|
||||||
e0.entityId := gen_rand_entityid_2(FALSE);
|
e0.entityId := gen_rand_entityid_2(FALSE);
|
||||||
|
|
||||||
e1.participant := p0;
|
e1.participant := p0;
|
||||||
e1.topic_name := ENDPOINT_TOPIC(2);
|
e1.topic_name := ENDPOINT_TOPIC(2);
|
||||||
e1.type_name := ENDPOINT_TYPE(2);
|
e1.type_name := ENDPOINT_TYPE(2);
|
||||||
|
e1.reader := TRUE;
|
||||||
e1.entityId := gen_rand_entityid_2(FALSE);
|
e1.entityId := gen_rand_entityid_2(FALSE);
|
||||||
|
|
||||||
Log("Initiating Test", INFO);
|
Log("Initiating Test", INFO);
|
||||||
|
|||||||
@ -75,11 +75,11 @@ begin
|
|||||||
);
|
);
|
||||||
|
|
||||||
stimulus_prc : process
|
stimulus_prc : process
|
||||||
variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE;
|
variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE;
|
||||||
variable RV : RandomPType;
|
variable RV : RandomPType;
|
||||||
|
variable p_sn : SEQUENCENUMBER_TYPE := FIRST_SEQUENCENUMBER;
|
||||||
|
variable wr_sig : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
|
||||||
variable p0, p1, p2, participant : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA;
|
variable p0, p1, p2, participant : PARTICIPANT_DATA_TYPE := DEFAULT_PARTICIPANT_DATA;
|
||||||
variable p_sn : SEQUENCENUMBER_TYPE := FIRST_SEQUENCENUMBER;
|
|
||||||
variable wr_sig : std_logic_vector(0 to NUM_ENDPOINTS-1) := (others => '0');
|
|
||||||
|
|
||||||
-- Wrapper to use procedure as function
|
-- Wrapper to use procedure as function
|
||||||
impure function gen_rand_loc_2 return LOCATOR_TYPE is
|
impure function gen_rand_loc_2 return LOCATOR_TYPE is
|
||||||
|
|||||||
@ -11,7 +11,7 @@ use work.rtps_config_package.all;
|
|||||||
use work.rtps_test_package.all;
|
use work.rtps_test_package.all;
|
||||||
|
|
||||||
-- This testbench tests the rtps output of the builtin endpoint (Local Liveliness Assertion, Local Heartbeat Generation, Local Participant Announcement, Remote HEARTBEAT Response, Remote ACKNACK Response).
|
-- This testbench tests the rtps output of the builtin endpoint (Local Liveliness Assertion, Local Heartbeat Generation, Local Participant Announcement, Remote HEARTBEAT Response, Remote ACKNACK Response).
|
||||||
-- This test is a Level 1 Test (Meaning the input/output is not connected directly to the uut) in order to have output in the msae format as the input of the system and allow us to compare using existing data generators.
|
-- This test is a Level 1 Test (Meaning the input/output is not connected directly to the uut) in order to have output in the same format as the input of the system and allow us to compare using existing data generators.
|
||||||
-- The testflow is as follows:
|
-- The testflow is as follows:
|
||||||
-- * 0s
|
-- * 0s
|
||||||
-- - Match a remote participant
|
-- - Match a remote participant
|
||||||
@ -48,7 +48,6 @@ use work.rtps_test_package.all;
|
|||||||
-- * 1.205s
|
-- * 1.205s
|
||||||
-- - ACKNACK 5 Response
|
-- - ACKNACK 5 Response
|
||||||
-- * 1.500s
|
-- * 1.500s
|
||||||
-- - Liveliness of local Writer 0 (with AUTOMATIC Liveliness QoS) is asserted for 1 clock cycle [Test ignoring of non-relavant local Liveliness assertion]
|
|
||||||
-- - Send ACKNACK 6 (Publihser, Expecting SN 18) [Test ACKNACK SN Response]
|
-- - Send ACKNACK 6 (Publihser, Expecting SN 18) [Test ACKNACK SN Response]
|
||||||
-- * 1.705s
|
-- * 1.705s
|
||||||
-- - No ACKNACK 6 Response
|
-- - No ACKNACK 6 Response
|
||||||
@ -57,10 +56,10 @@ use work.rtps_test_package.all;
|
|||||||
-- - Liveliness Assertion (Auto only)
|
-- - Liveliness Assertion (Auto only)
|
||||||
-- - Send ACKNACK 7 (Message, Expecting SN 5) [Test GAP sending on ACKNACK Response]
|
-- - Send ACKNACK 7 (Message, Expecting SN 5) [Test GAP sending on ACKNACK Response]
|
||||||
-- - Send ACKNACK 8 (Publihser, Expecing SN 2) [Test full ACKNACK Response]
|
-- - Send ACKNACK 8 (Publihser, Expecing SN 2) [Test full ACKNACK Response]
|
||||||
-- - Send ACKNaCK 9 (Subscriber, Expecting SN 8) [Test full ACKNACK Response]
|
-- - Send ACKNACK 9 (Subscriber, Expecting SN 8) [Test full ACKNACK Response]
|
||||||
-- * 2.205s
|
-- * 2.205s
|
||||||
-- - ACKNACK 7/8/9 Response
|
-- - ACKNACK 7/8/9 Response
|
||||||
-- - Liveliness of local Writer 4 (with MANUAL_BY_PARTICIPANT Liveliness QOS) is asserted for 1 clock cycle [Test manual liveliness assertion after GAP generation]
|
-- - Liveliness of local Writer 0 (with AUTOMATIC Liveliness QoS) is asserted for 1 clock cycle [Test manual liveliness assertion after GAP generation]
|
||||||
-- * 2.500s
|
-- * 2.500s
|
||||||
-- - Send ACKNACK 10 (Message, Expecting SN 6) [Test ACKNACK SN Response]
|
-- - Send ACKNACK 10 (Message, Expecting SN 6) [Test ACKNACK SN Response]
|
||||||
-- * 2.705s
|
-- * 2.705s
|
||||||
@ -800,11 +799,6 @@ begin
|
|||||||
wait on mem_op_done until rising_edge(mem_op_done) and stale_check = '1';
|
wait on mem_op_done until rising_edge(mem_op_done) and stale_check = '1';
|
||||||
wait on mem_op_done until rising_edge(mem_op_done) and stale_check = '1';
|
wait on mem_op_done until rising_edge(mem_op_done) and stale_check = '1';
|
||||||
|
|
||||||
Log("Toggle local Writer 0 Liveliness for 1 clock cycle (AUTOMATIC_QOS)", INFO);
|
|
||||||
alive(NUM_READERS) <= '1';
|
|
||||||
wait until rising_edge(clk);
|
|
||||||
alive <= (others => '0');
|
|
||||||
|
|
||||||
Log("Send Remote Publisher AckNack [Expecting 18] (No Response)", INFO);
|
Log("Send Remote Publisher AckNack [Expecting 18] (No Response)", INFO);
|
||||||
-- RTPS SUBMESSAGE
|
-- RTPS SUBMESSAGE
|
||||||
sub := DEFAULT_RTPS_SUBMESSAGE;
|
sub := DEFAULT_RTPS_SUBMESSAGE;
|
||||||
@ -890,8 +884,8 @@ begin
|
|||||||
|
|
||||||
gen_data(p0, TRUE, TRUE, TRUE, gen_sn(3), gen_sn(5));
|
gen_data(p0, TRUE, TRUE, TRUE, gen_sn(3), gen_sn(5));
|
||||||
|
|
||||||
Log("Toggle local Writer 4 Liveliness for 1 clock cycle (MANUAL_BY_PARTICIPANT_QOS)", INFO);
|
Log("Toggle local Writer 0 Liveliness for 1 clock cycle (AUTOMATIC_QOS)", INFO);
|
||||||
alive(NUM_READERS+4) <= '1';
|
alive(NUM_READERS) <= '1';
|
||||||
wait until rising_edge(clk);
|
wait until rising_edge(clk);
|
||||||
alive <= (others => '0');
|
alive <= (others => '0');
|
||||||
|
|
||||||
|
|||||||
@ -27,14 +27,14 @@ analyze Level_0/L0_rtps_builtin_endpoint_test7.vhd
|
|||||||
analyze Level_0/L0_rtps_out_test1.vhd
|
analyze Level_0/L0_rtps_out_test1.vhd
|
||||||
analyze Level_1/L1_rtps_builtin_endpoint_test1.vhd
|
analyze Level_1/L1_rtps_builtin_endpoint_test1.vhd
|
||||||
|
|
||||||
#simulate L0_rtps_handler_test1
|
simulate L0_rtps_handler_test1
|
||||||
#simulate L0_rtps_handler_test2
|
simulate L0_rtps_handler_test2
|
||||||
#simulate L0_rtps_builtin_endpoint_test1
|
simulate L0_rtps_builtin_endpoint_test1
|
||||||
#simulate L0_rtps_builtin_endpoint_test2
|
simulate L0_rtps_builtin_endpoint_test2
|
||||||
#simulate L0_rtps_builtin_endpoint_test3
|
simulate L0_rtps_builtin_endpoint_test3
|
||||||
#simulate L0_rtps_builtin_endpoint_test4
|
simulate L0_rtps_builtin_endpoint_test4
|
||||||
#simulate L0_rtps_builtin_endpoint_test5
|
simulate L0_rtps_builtin_endpoint_test5
|
||||||
#simulate L0_rtps_builtin_endpoint_test6
|
simulate L0_rtps_builtin_endpoint_test6
|
||||||
#simulate L0_rtps_builtin_endpoint_test7
|
simulate L0_rtps_builtin_endpoint_test7
|
||||||
#simulate L0_rtps_out_test1
|
simulate L0_rtps_out_test1
|
||||||
#simulate L1_rtps_builtin_endpoint_test1
|
simulate L1_rtps_builtin_endpoint_test1
|
||||||
@ -322,8 +322,8 @@ architecture arch of rtps_builtin_endpoint is
|
|||||||
signal is_live_assert, is_live_assert_next : std_logic := '0';
|
signal is_live_assert, is_live_assert_next : std_logic := '0';
|
||||||
-- Signifies the content of the string read from input
|
-- Signifies the content of the string read from input
|
||||||
signal string_content, string_content_next : STRING_CONTENT_TYPE := TOPIC_NAME_TYPE;
|
signal string_content, string_content_next : STRING_CONTENT_TYPE := TOPIC_NAME_TYPE;
|
||||||
-- Signifies that the expects_inline_qos Flag was explicitly set via a Parameter ID
|
-- Reader Flags of remote Reader
|
||||||
signal expects_inline_qos_rcv, expects_inline_qos_rcv_next : std_logic := '0';
|
signal reader_flags, reader_flags_next : std_logic_vector(READER_FLAGS_WIDTH-1 downto 0) := (others => '0');
|
||||||
-- Endpoint Locator IPv4 Address Latch
|
-- Endpoint Locator IPv4 Address Latch
|
||||||
signal def_addr, def_addr_next : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0) := (others => '0');
|
signal def_addr, def_addr_next : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0) := (others => '0');
|
||||||
-- Metatraffic Locator IPv4 Address Latch
|
-- Metatraffic Locator IPv4 Address Latch
|
||||||
@ -403,8 +403,7 @@ begin
|
|||||||
if (reset = '1' or reset_endpoint_alive = '1') then
|
if (reset = '1' or reset_endpoint_alive = '1') then
|
||||||
endpoint_alive <= '0';
|
endpoint_alive <= '0';
|
||||||
-- Set Endpoint Alive Signal, if at least one endpoint asserts liveliness
|
-- Set Endpoint Alive Signal, if at least one endpoint asserts liveliness
|
||||||
-- NOTE: Only writer endpoints with a Liveliness QoS of MANUAL_BY_PARTICIPANT as taken into account
|
elsif (alive /= (alive'range => '0')) then
|
||||||
elsif ((alive and MANUAL_BY_PARTICIPANT_LIVELINESS_WRITERS) /= (alive'range => '0')) then
|
|
||||||
endpoint_alive <= '1';
|
endpoint_alive <= '1';
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
@ -528,7 +527,7 @@ begin
|
|||||||
meta_port_next <= meta_port;
|
meta_port_next <= meta_port;
|
||||||
is_meta_addr_next <= is_meta_addr;
|
is_meta_addr_next <= is_meta_addr;
|
||||||
cnt_next <= cnt;
|
cnt_next <= cnt;
|
||||||
expects_inline_qos_rcv_next <= expects_inline_qos_rcv;
|
reader_flags_next <= reader_flags;
|
||||||
extra_flags_next <= extra_flags;
|
extra_flags_next <= extra_flags;
|
||||||
stale_check_next <= stale_check;
|
stale_check_next <= stale_check;
|
||||||
first_seq_nr_next <= first_seq_nr;
|
first_seq_nr_next <= first_seq_nr;
|
||||||
@ -650,9 +649,8 @@ begin
|
|||||||
def_port_next <= (others => '0');
|
def_port_next <= (others => '0');
|
||||||
meta_port_next <= META_IPv4_MULTICAST_PORT;
|
meta_port_next <= META_IPv4_MULTICAST_PORT;
|
||||||
lease_duration_next <= DEFAULT_PARTICIPANT_LEASE_DURATION;
|
lease_duration_next <= DEFAULT_PARTICIPANT_LEASE_DURATION;
|
||||||
expects_inline_qos_rcv_next <= '0';
|
extra_flags_next <= (EXPECTS_INLINE_QOS_FLAG => DEFAULT_EXPECTS_INLINE_QOS, others => '0');
|
||||||
extra_flags_next <= (others => '0');
|
reader_flags_next <= (READER_EXPECTS_INLINE_QOS_FLAG => DEFAULT_EXPECTS_INLINE_QOS, READER_EXPECTS_HISTORICAL_DATA_FLAG => DEFAULT_EXPECTS_HISTORICAL_DATA_FLAG, READER_IS_BEST_EFFORT_FLAG => DEFAULT_IS_BEST_EFFORT_FLAG, others => '0');
|
||||||
extra_flags_next(EXPECTS_INLINE_QOS_FLAG) <= DEFAULT_EXPECTS_INLINE_QOS;
|
|
||||||
rcvd_next <= (others => '0');
|
rcvd_next <= (others => '0');
|
||||||
-- NOTE: We work with a "mark by default, and unmark on first missmatch" System.
|
-- NOTE: We work with a "mark by default, and unmark on first missmatch" System.
|
||||||
-- This assumes that each RxO QoS parameter occur only once in the list, else the behavior is undefined.
|
-- This assumes that each RxO QoS parameter occur only once in the list, else the behavior is undefined.
|
||||||
@ -1998,8 +1996,8 @@ begin
|
|||||||
rd_guard := '1';
|
rd_guard := '1';
|
||||||
|
|
||||||
-- Latch 'expectsInlineQoS'
|
-- Latch 'expectsInlineQoS'
|
||||||
extra_flags_next(EXPECTS_INLINE_QOS_FLAG) <= data_in(24);
|
extra_flags_next(EXPECTS_INLINE_QOS_FLAG) <= data_in(24);
|
||||||
expects_inline_qos_rcv_next <= '1';
|
reader_flags_next(READER_EXPECTS_INLINE_QOS_FLAG) <= data_in(24);
|
||||||
|
|
||||||
-- DONE
|
-- DONE
|
||||||
stage_next <= SKIP_PARAMETER;
|
stage_next <= SKIP_PARAMETER;
|
||||||
@ -2056,6 +2054,12 @@ begin
|
|||||||
endpoint_mask_next(i) <= '0';
|
endpoint_mask_next(i) <= '0';
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
|
-- Set Reader Flag
|
||||||
|
if (is_subscriber = '1') then
|
||||||
|
reader_flags_next(READER_EXPECTS_HISTORICAL_DATA_FLAG) <= '0' when (data_in_swapped = VOLATILE_DURABILITY_QOS) else '1';
|
||||||
|
end if;
|
||||||
|
|
||||||
-- DONE
|
-- DONE
|
||||||
stage_next <= SKIP_PARAMETER;
|
stage_next <= SKIP_PARAMETER;
|
||||||
end if;
|
end if;
|
||||||
@ -2139,6 +2143,11 @@ begin
|
|||||||
endpoint_mask_next(i) <= '0';
|
endpoint_mask_next(i) <= '0';
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
|
-- Set Reader Flag
|
||||||
|
if (is_subscriber = '1') then
|
||||||
|
reader_flags_next(READER_IS_BEST_EFFORT_FLAG) <= '1' when (data_in_swapped = BEST_EFFORT_RELIABILITY_QOS) else '0';
|
||||||
|
end if;
|
||||||
when 1 =>
|
when 1 =>
|
||||||
-- NOTE: The max_blocking_time value is ignored
|
-- NOTE: The max_blocking_time value is ignored
|
||||||
null;
|
null;
|
||||||
@ -2379,7 +2388,7 @@ begin
|
|||||||
else
|
else
|
||||||
data_out <= mem_participant_data.def_addr;
|
data_out <= mem_participant_data.def_addr;
|
||||||
end if;
|
end if;
|
||||||
-- UDPv4 Port and ExpectsInlineQoSFlag
|
-- UDPv4 Port and Reader Flags
|
||||||
when 6 =>
|
when 6 =>
|
||||||
-- Default
|
-- Default
|
||||||
data_out <= (others => '0');
|
data_out <= (others => '0');
|
||||||
@ -2392,13 +2401,8 @@ begin
|
|||||||
data_out(31 downto 16) <= mem_participant_data.def_port;
|
data_out(31 downto 16) <= mem_participant_data.def_port;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
-- If Endpoint did not set Flags, use Participant Default
|
if (is_subscriber = '1') then
|
||||||
if (expects_inline_qos_rcv = '1') then
|
data_out(15 downto 0) <= reader_flags;
|
||||||
data_out(0) <= extra_flags(EXPECTS_INLINE_QOS_FLAG);
|
|
||||||
else
|
|
||||||
-- TODO: Which one is it?
|
|
||||||
--data_out(0) <= mem_participant_data.extra_flags(EXPECTS_INLINE_QOS_FLAG);
|
|
||||||
data_out(0) <= DEFAULT_EXPECTS_INLINE_QOS;
|
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
-- DONE
|
-- DONE
|
||||||
@ -3897,6 +3901,7 @@ begin
|
|||||||
long_latch <= (others => '0');
|
long_latch <= (others => '0');
|
||||||
mem_long_latch <= (others => '0');
|
mem_long_latch <= (others => '0');
|
||||||
rcvd <= (others => '0');
|
rcvd <= (others => '0');
|
||||||
|
reader_flags <= (others => '0');
|
||||||
max_participant_addr <= FIRST_PARTICIPANT_ADDRESS;
|
max_participant_addr <= FIRST_PARTICIPANT_ADDRESS;
|
||||||
guid <= (others => (others => '0'));
|
guid <= (others => (others => '0'));
|
||||||
mem_guidprefix <= (others => (others => '0'));
|
mem_guidprefix <= (others => (others => '0'));
|
||||||
@ -3921,7 +3926,6 @@ begin
|
|||||||
participant_match <= '0';
|
participant_match <= '0';
|
||||||
is_subscriber <= '0';
|
is_subscriber <= '0';
|
||||||
is_meta_addr <= '0';
|
is_meta_addr <= '0';
|
||||||
expects_inline_qos_rcv <= '0';
|
|
||||||
stale_check <= '0';
|
stale_check <= '0';
|
||||||
is_live_assert <= '0';
|
is_live_assert <= '0';
|
||||||
is_heartbeat_res <= '0';
|
is_heartbeat_res <= '0';
|
||||||
@ -3957,6 +3961,7 @@ begin
|
|||||||
long_latch <= long_latch_next;
|
long_latch <= long_latch_next;
|
||||||
mem_long_latch <= mem_long_latch_next;
|
mem_long_latch <= mem_long_latch_next;
|
||||||
rcvd <= rcvd_next;
|
rcvd <= rcvd_next;
|
||||||
|
reader_flags <= reader_flags_next;
|
||||||
max_participant_addr <= max_participant_addr_next;
|
max_participant_addr <= max_participant_addr_next;
|
||||||
guid <= guid_next;
|
guid <= guid_next;
|
||||||
mem_guidprefix <= mem_guidprefix_next;
|
mem_guidprefix <= mem_guidprefix_next;
|
||||||
@ -3981,7 +3986,6 @@ begin
|
|||||||
participant_match <= participant_match_next;
|
participant_match <= participant_match_next;
|
||||||
is_subscriber <= is_subscriber_next;
|
is_subscriber <= is_subscriber_next;
|
||||||
is_meta_addr <= is_meta_addr_next;
|
is_meta_addr <= is_meta_addr_next;
|
||||||
expects_inline_qos_rcv <= expects_inline_qos_rcv_next;
|
|
||||||
stale_check <= stale_check_next;
|
stale_check <= stale_check_next;
|
||||||
is_live_assert <= is_live_assert_next;
|
is_live_assert <= is_live_assert_next;
|
||||||
is_heartbeat_res <= is_heartbeat_res_next;
|
is_heartbeat_res <= is_heartbeat_res_next;
|
||||||
|
|||||||
@ -16,9 +16,6 @@ package rtps_config_package is
|
|||||||
constant ENTITYID : ENTITYID_TYPE; -- Deferred to Package Body
|
constant ENTITYID : ENTITYID_TYPE; -- Deferred to Package Body
|
||||||
constant DOMAIN_ID : std_logic_vector(DOMAIN_ID_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(USER_DOMAIN_ID, DOMAIN_ID_WIDTH));
|
constant DOMAIN_ID : std_logic_vector(DOMAIN_ID_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(USER_DOMAIN_ID, DOMAIN_ID_WIDTH));
|
||||||
|
|
||||||
-- Constant for Sequence Number 1
|
|
||||||
constant FIRST_SEQUENCENUMBER : SEQUENCENUMBER_TYPE := convert_to_double_word(to_unsigned(1, 64));
|
|
||||||
|
|
||||||
-- Smallest Writer Endpoint Lease Duration
|
-- Smallest Writer Endpoint Lease Duration
|
||||||
constant MIN_ENDPOINT_LEASE_DURATION : DURATION_TYPE; -- Deferred to package Body
|
constant MIN_ENDPOINT_LEASE_DURATION : DURATION_TYPE; -- Deferred to package Body
|
||||||
|
|
||||||
@ -72,11 +69,13 @@ package rtps_config_package is
|
|||||||
constant ISI_VIEW_FLAG : natural := 3; -- Reader Only
|
constant ISI_VIEW_FLAG : natural := 3; -- Reader Only
|
||||||
constant ISI_MARK_FLAG : natural := 4; -- Reader Only
|
constant ISI_MARK_FLAG : natural := 4; -- Reader Only
|
||||||
|
|
||||||
-- TODO: Prefix the Flags with something that differntiates between them
|
|
||||||
-- Remote Endpoint Flags
|
-- Remote Endpoint Flags
|
||||||
constant EXPECTS_INLINE_QOS_FLAG : natural := 0;
|
constant READER_FLAGS_WIDTH : natural := 16;
|
||||||
constant SEND_HISTORICAL_DATA_FLAG : natural := 1;
|
constant READER_EXPECTS_INLINE_QOS_FLAG : natural := 0;
|
||||||
constant BEST_EFFORT_FLAG : natural := 2;
|
constant READER_EXPECTS_HISTORICAL_DATA_FLAG : natural := 1;
|
||||||
|
constant READER_IS_BEST_EFFORT_FLAG : natural := 2;
|
||||||
|
constant DEFAULT_EXPECTS_HISTORICAL_DATA_FLAG : std_logic := '0';
|
||||||
|
constant DEFAULT_IS_BEST_EFFORT_FLAG : std_logic := '0';
|
||||||
|
|
||||||
-- Marks the Reader Endpoint in the Endpoint Array
|
-- Marks the Reader Endpoint in the Endpoint Array
|
||||||
constant ENDPOINT_READERS : std_logic_vector(0 to NUM_ENDPOINTS-1) := (0 to NUM_READERS-1 => '1', others => '0');
|
constant ENDPOINT_READERS : std_logic_vector(0 to NUM_ENDPOINTS-1) := (0 to NUM_READERS-1 => '1', others => '0');
|
||||||
|
|||||||
@ -163,6 +163,7 @@ package rtps_test_package is
|
|||||||
constant THIS_PARTICIPANT_DATA : PARTICIPANT_DATA_TYPE; -- Deferred to Pckage Body
|
constant THIS_PARTICIPANT_DATA : PARTICIPANT_DATA_TYPE; -- Deferred to Pckage Body
|
||||||
|
|
||||||
type ENDPOINT_DATA_TYPE is record
|
type ENDPOINT_DATA_TYPE is record
|
||||||
|
reader : boolean;
|
||||||
littleEndian : std_logic;
|
littleEndian : std_logic;
|
||||||
participant : PARTICIPANT_DATA_TYPE;
|
participant : PARTICIPANT_DATA_TYPE;
|
||||||
entityId : std_logic_vector(ENTITYID_WIDTH-1 downto 0);
|
entityId : std_logic_vector(ENTITYID_WIDTH-1 downto 0);
|
||||||
@ -187,7 +188,7 @@ package rtps_test_package is
|
|||||||
time_based_filter : DURATION_TYPE;
|
time_based_filter : DURATION_TYPE;
|
||||||
reliability : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0);
|
reliability : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0);
|
||||||
max_blocking_time : DURATION_TYPE;
|
max_blocking_time : DURATION_TYPE;
|
||||||
transportnpriority : std_logic_vector(CDR_LONG_WIDTH-1 downto 0);
|
transport_priority : std_logic_vector(CDR_LONG_WIDTH-1 downto 0);
|
||||||
lifespan : DURATION_TYPE;
|
lifespan : DURATION_TYPE;
|
||||||
destination_order : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0);
|
destination_order : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0);
|
||||||
-- Represent Data as Strings (Ease of Use)
|
-- Represent Data as Strings (Ease of Use)
|
||||||
@ -276,7 +277,7 @@ package body rtps_test_package is
|
|||||||
|
|
||||||
constant DEFAULT_GUIDPREFIX : GUIDPREFIX_TYPE := (0 => x"da27cc3c", 1 => x"687ddcde", 2 => x"88bce3d1");
|
constant DEFAULT_GUIDPREFIX : GUIDPREFIX_TYPE := (0 => x"da27cc3c", 1 => x"687ddcde", 2 => x"88bce3d1");
|
||||||
|
|
||||||
constant DEFAULT_ENTITYID : std_logic_vector(ENTITYID_WIDTH-1 downto 0) := x"b9cbad8d";
|
constant DEFAULT_ENTITYID : std_logic_vector(ENTITYID_WIDTH-1 downto 0) := x"b9cbad04";
|
||||||
|
|
||||||
constant EMPTY_TEST_PACKET : TEST_PACKET_TYPE := (length => 0, data => (others => (others => '0')), last => (others => '0'));
|
constant EMPTY_TEST_PACKET : TEST_PACKET_TYPE := (length => 0, data => (others => (others => '0')), last => (others => '0'));
|
||||||
|
|
||||||
@ -436,6 +437,7 @@ package body rtps_test_package is
|
|||||||
);
|
);
|
||||||
|
|
||||||
constant DEFAULT_ENDPOINT_DATA : ENDPOINT_DATA_TYPE := (
|
constant DEFAULT_ENDPOINT_DATA : ENDPOINT_DATA_TYPE := (
|
||||||
|
reader => TRUE,
|
||||||
littleEndian => '0',
|
littleEndian => '0',
|
||||||
participant => DEFAULT_PARTICIPANT_DATA,
|
participant => DEFAULT_PARTICIPANT_DATA,
|
||||||
entityId => DEFAULT_ENTITYID,
|
entityId => DEFAULT_ENTITYID,
|
||||||
@ -460,7 +462,7 @@ package body rtps_test_package is
|
|||||||
time_based_filter => DEFAULT_TIME_BASED_FILTER_QOS,
|
time_based_filter => DEFAULT_TIME_BASED_FILTER_QOS,
|
||||||
reliability => DEFAULT_RELIABILTY_QOS,
|
reliability => DEFAULT_RELIABILTY_QOS,
|
||||||
max_blocking_time => DEFAULT_MAX_BLOCKING_TIME,
|
max_blocking_time => DEFAULT_MAX_BLOCKING_TIME,
|
||||||
transportnpriority => DEFAULT_TRANSPORT_PRIORITY_QOS,
|
transport_priority => DEFAULT_TRANSPORT_PRIORITY_QOS,
|
||||||
lifespan => DEFAULT_LIFESPAN_QOS,
|
lifespan => DEFAULT_LIFESPAN_QOS,
|
||||||
destination_order => DEFAULT_DESTINATION_ORDER_QOS,
|
destination_order => DEFAULT_DESTINATION_ORDER_QOS,
|
||||||
user_data => EMPTY_STRING,
|
user_data => EMPTY_STRING,
|
||||||
@ -639,7 +641,7 @@ package body rtps_test_package is
|
|||||||
elsif (is_valid_loc(get_loc(ref.participant.defaultMulticastLocatorList))) then
|
elsif (is_valid_loc(get_loc(ref.participant.defaultMulticastLocatorList))) then
|
||||||
return get_loc(ref.participant.defaultMulticastLocatorList);
|
return get_loc(ref.participant.defaultMulticastLocatorList);
|
||||||
else
|
else
|
||||||
assert(FALSE) report "Endpoint has no valid Locators" severity FAILURE;
|
assert FALSE report "Endpoint has no valid Locators" severity FAILURE;
|
||||||
return EMPTY_LOCATOR;
|
return EMPTY_LOCATOR;
|
||||||
end if;
|
end if;
|
||||||
end function;
|
end function;
|
||||||
@ -1659,7 +1661,7 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- TRANSPORT PRIORITY
|
-- TRANSPORT PRIORITY
|
||||||
if (ref.transportnpriority /= DEFAULT_TRANSPORT_PRIORITY_QOS or pid = PID_TRANSPORT_PRIORITY) then
|
if (ref.transport_priority /= DEFAULT_TRANSPORT_PRIORITY_QOS or pid = PID_TRANSPORT_PRIORITY) then
|
||||||
if (pid = PID_TRANSPORT_PRIORITY) then
|
if (pid = PID_TRANSPORT_PRIORITY) then
|
||||||
assert (4+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE;
|
assert (4+(offset*4) >= 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
output.data(output.length) := PID_TRANSPORT_PRIORITY & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
output.data(output.length) := PID_TRANSPORT_PRIORITY & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
@ -1667,7 +1669,7 @@ package body rtps_test_package is
|
|||||||
output.data(output.length) := PID_TRANSPORT_PRIORITY & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
output.data(output.length) := PID_TRANSPORT_PRIORITY & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
end if;
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.transportnpriority);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.transport_priority);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
if (pid = PID_TRANSPORT_PRIORITY) then
|
if (pid = PID_TRANSPORT_PRIORITY) then
|
||||||
output.length := output.length + offset;
|
output.length := output.length + offset;
|
||||||
@ -1854,7 +1856,11 @@ package body rtps_test_package is
|
|||||||
-- Port & expectsInlineQoS
|
-- Port & expectsInlineQoS
|
||||||
output.data(output.length) := (others => '0');
|
output.data(output.length) := (others => '0');
|
||||||
output.data(output.length)(WORD_WIDTH-1 downto UDP_PORT_WIDTH) := loc.portn(UDP_PORT_WIDTH-1 downto 0);
|
output.data(output.length)(WORD_WIDTH-1 downto UDP_PORT_WIDTH) := loc.portn(UDP_PORT_WIDTH-1 downto 0);
|
||||||
output.data(output.length)(0) := ref.expectsInlineQoS(0);
|
if (ref.reader) then
|
||||||
|
output.data(output.length)(READER_EXPECTS_INLINE_QOS_FLAG) := ref.expectsInlineQoS(0);
|
||||||
|
output.data(output.length)(READER_EXPECTS_HISTORICAL_DATA_FLAG) := '0' when (ref.durability = VOLATILE_DURABILITY_QOS) else '1';
|
||||||
|
output.data(output.length)(READER_IS_BEST_EFFORT_FLAG) := '1' when (ref.reliability = BEST_EFFORT_RELIABILITY_QOS) else '0';
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
@ -1900,6 +1906,7 @@ package body rtps_test_package is
|
|||||||
begin
|
begin
|
||||||
if (readers) then
|
if (readers) then
|
||||||
for i in 0 to NUM_READERS-1 loop
|
for i in 0 to NUM_READERS-1 loop
|
||||||
|
ret_readers(i).reader := TRUE;
|
||||||
ret_readers(i).topic_name := ENDPOINT_TOPIC(i);
|
ret_readers(i).topic_name := ENDPOINT_TOPIC(i);
|
||||||
ret_readers(i).type_name := ENDPOINT_TYPE(i);
|
ret_readers(i).type_name := ENDPOINT_TYPE(i);
|
||||||
ret_readers(i).durability := ENDPOINT_DURABILITY_QOS(i);
|
ret_readers(i).durability := ENDPOINT_DURABILITY_QOS(i);
|
||||||
@ -1921,7 +1928,7 @@ package body rtps_test_package is
|
|||||||
ret_readers(i).time_based_filter := ENDPOINT_TIME_BASED_FILTER_QOS(i);
|
ret_readers(i).time_based_filter := ENDPOINT_TIME_BASED_FILTER_QOS(i);
|
||||||
ret_readers(i).reliability := ENDPOINT_RELIABILITY_QOS(i);
|
ret_readers(i).reliability := ENDPOINT_RELIABILITY_QOS(i);
|
||||||
ret_readers(i).max_blocking_time := ENDPOINT_MAX_BLOCKING_TIME(i);
|
ret_readers(i).max_blocking_time := ENDPOINT_MAX_BLOCKING_TIME(i);
|
||||||
ret_readers(i).transportnpriority := ENDPOINT_TRANSPORT_PRIORITY_QOS(i);
|
ret_readers(i).transport_priority := ENDPOINT_TRANSPORT_PRIORITY_QOS(i);
|
||||||
ret_readers(i).lifespan := ENDPOINT_LIFESPAN_QOS(i);
|
ret_readers(i).lifespan := ENDPOINT_LIFESPAN_QOS(i);
|
||||||
ret_readers(i).destination_order := ENDPOINT_DESTINATION_ORDER_QOS(i);
|
ret_readers(i).destination_order := ENDPOINT_DESTINATION_ORDER_QOS(i);
|
||||||
ret_readers(i).expectsInlineQoS(0) := '1';
|
ret_readers(i).expectsInlineQoS(0) := '1';
|
||||||
@ -1931,6 +1938,7 @@ package body rtps_test_package is
|
|||||||
return ret_readers;
|
return ret_readers;
|
||||||
else
|
else
|
||||||
for i in NUM_READERS to NUM_ENDPOINTS-1 loop
|
for i in NUM_READERS to NUM_ENDPOINTS-1 loop
|
||||||
|
ret_writers(i-NUM_READERS).reader := FALSE;
|
||||||
ret_writers(i-NUM_READERS).topic_name := ENDPOINT_TOPIC(i);
|
ret_writers(i-NUM_READERS).topic_name := ENDPOINT_TOPIC(i);
|
||||||
ret_writers(i-NUM_READERS).type_name := ENDPOINT_TYPE(i);
|
ret_writers(i-NUM_READERS).type_name := ENDPOINT_TYPE(i);
|
||||||
ret_writers(i-NUM_READERS).durability := ENDPOINT_DURABILITY_QOS(i);
|
ret_writers(i-NUM_READERS).durability := ENDPOINT_DURABILITY_QOS(i);
|
||||||
@ -1952,7 +1960,7 @@ package body rtps_test_package is
|
|||||||
ret_writers(i-NUM_READERS).time_based_filter := ENDPOINT_TIME_BASED_FILTER_QOS(i);
|
ret_writers(i-NUM_READERS).time_based_filter := ENDPOINT_TIME_BASED_FILTER_QOS(i);
|
||||||
ret_writers(i-NUM_READERS).reliability := ENDPOINT_RELIABILITY_QOS(i);
|
ret_writers(i-NUM_READERS).reliability := ENDPOINT_RELIABILITY_QOS(i);
|
||||||
ret_writers(i-NUM_READERS).max_blocking_time := ENDPOINT_MAX_BLOCKING_TIME(i);
|
ret_writers(i-NUM_READERS).max_blocking_time := ENDPOINT_MAX_BLOCKING_TIME(i);
|
||||||
ret_writers(i-NUM_READERS).transportnpriority := ENDPOINT_TRANSPORT_PRIORITY_QOS(i);
|
ret_writers(i-NUM_READERS).transport_priority := ENDPOINT_TRANSPORT_PRIORITY_QOS(i);
|
||||||
ret_writers(i-NUM_READERS).lifespan := ENDPOINT_LIFESPAN_QOS(i);
|
ret_writers(i-NUM_READERS).lifespan := ENDPOINT_LIFESPAN_QOS(i);
|
||||||
ret_writers(i-NUM_READERS).destination_order := ENDPOINT_DESTINATION_ORDER_QOS(i);
|
ret_writers(i-NUM_READERS).destination_order := ENDPOINT_DESTINATION_ORDER_QOS(i);
|
||||||
ret_writers(i-NUM_READERS).participant := THIS_PARTICIPANT_DATA;
|
ret_writers(i-NUM_READERS).participant := THIS_PARTICIPANT_DATA;
|
||||||
|
|||||||
@ -698,7 +698,7 @@ begin
|
|||||||
mem_op_start <= '1';
|
mem_op_start <= '1';
|
||||||
mem_opcode <= INSERT_ENDPOINT;
|
mem_opcode <= INSERT_ENDPOINT;
|
||||||
|
|
||||||
if (RELIABILTY_QOS = RELIABLE_RELIABILITY_QOS and LEASE_DURATION /= DURATION_INFINITE and reader_flags(BEST_EFFORT_FLAG) = '0') then
|
if (RELIABILTY_QOS = RELIABLE_RELIABILITY_QOS and LEASE_DURATION /= DURATION_INFINITE and reader_flags(READER_IS_BEST_EFFORT_FLAG) = '0') then
|
||||||
lease_deadline <= time + LEASE_DURATION;
|
lease_deadline <= time + LEASE_DURATION;
|
||||||
|
|
||||||
-- XXX: Possible Worst Case Path (64-bit addition and comparison in same clock)
|
-- XXX: Possible Worst Case Path (64-bit addition and comparison in same clock)
|
||||||
@ -710,10 +710,10 @@ begin
|
|||||||
lease_deadline <= TIME_INVALID;
|
lease_deadline <= TIME_INVALID;
|
||||||
end if;
|
end if;
|
||||||
-- Initialize ACK Sequence Number
|
-- Initialize ACK Sequence Number
|
||||||
seq_nr <= SEQUENCENUMBER_UNKNOWN when (reader_flags(BEST_EFFORT_FLAG) = '1') else (others => (others => '0'));
|
seq_nr <= SEQUENCENUMBER_UNKNOWN when (reader_flags(READER_IS_BEST_EFFORT_FLAG) = '1') else (others => (others => '0'));
|
||||||
|
|
||||||
-- Reader needs Historical Data
|
-- Reader needs Historical Data
|
||||||
if (DURABILITY_QOS /= VOLATILE_DURABILITY_QOS and reader_flags(SEND_HISTORICAL_DATA_FLAG) = '1') then
|
if (DURABILITY_QOS /= VOLATILE_DURABILITY_QOS and reader_flags(READER_EXPECTS_HISTORICAL_DATA_FLAG) = '1') then
|
||||||
-- Send Historical Data
|
-- Send Historical Data
|
||||||
historical_push_next <= '1';
|
historical_push_next <= '1';
|
||||||
|
|
||||||
@ -1525,7 +1525,7 @@ begin
|
|||||||
else
|
else
|
||||||
next_seq_nr_next <= next_seq_nr + 1;
|
next_seq_nr_next <= next_seq_nr + 1;
|
||||||
-- If remote Reader is RELIABLE, NACK the SN
|
-- If remote Reader is RELIABLE, NACK the SN
|
||||||
cnt_next <= (cnt + 1) when (RELIABILTY_QOS = RELIABLE_RELIABILITY_QOS and reader_flags(BEST_EFFORT_FLAG) = '0') else (cnt + 2);
|
cnt_next <= (cnt + 1) when (RELIABILTY_QOS = RELIABLE_RELIABILITY_QOS and reader_flags(READER_IS_BEST_EFFORT_FLAG) = '0') else (cnt + 2);
|
||||||
end if;
|
end if;
|
||||||
-- NACK SN
|
-- NACK SN
|
||||||
when 1 =>
|
when 1 =>
|
||||||
@ -1597,7 +1597,7 @@ begin
|
|||||||
next_seq_nr_next <= min_sn;
|
next_seq_nr_next <= min_sn;
|
||||||
cnt_next <= cnt + 2; -- Skip Increment
|
cnt_next <= cnt + 2; -- Skip Increment
|
||||||
-- If remote Reader is RELIABLE, NACK the SN
|
-- If remote Reader is RELIABLE, NACK the SN
|
||||||
cnt_next <= 1 when (RELIABILTY_QOS = RELIABLE_RELIABILITY_QOS and reader_flags(BEST_EFFORT_FLAG) = '0') else 2;
|
cnt_next <= 1 when (RELIABILTY_QOS = RELIABLE_RELIABILITY_QOS and reader_flags(READER_IS_BEST_EFFORT_FLAG) = '0') else 2;
|
||||||
end if;
|
end if;
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
@ -1675,7 +1675,7 @@ begin
|
|||||||
data_out_rtps <= SID_DATA & "00000000" & std_logic_vector(to_unsigned(0, SUBMESSAGE_LENGTH_WIDTH));
|
data_out_rtps <= SID_DATA & "00000000" & std_logic_vector(to_unsigned(0, SUBMESSAGE_LENGTH_WIDTH));
|
||||||
data_flag <= '1' when (cc_kind = ALIVE) else '0';
|
data_flag <= '1' when (cc_kind = ALIVE) else '0';
|
||||||
key_flag <= '1' when (WITH_KEY and cc_kind /= ALIVE) else '0';
|
key_flag <= '1' when (WITH_KEY and cc_kind /= ALIVE) else '0';
|
||||||
qos_flag <= '1' when (cc_kind /= ALIVE or WITH_KEY or mem_endpoint_data.flags(EXPECTS_INLINE_QOS_FLAG) = '1') else '0';
|
qos_flag <= '1' when (cc_kind /= ALIVE or WITH_KEY or mem_endpoint_data.flags(READER_EXPECTS_INLINE_QOS_FLAG) = '1') else '0';
|
||||||
cnt_next <= cnt + 1;
|
cnt_next <= cnt + 1;
|
||||||
-- extraFlags, octetsToInlineQoS
|
-- extraFlags, octetsToInlineQoS
|
||||||
when 1 =>
|
when 1 =>
|
||||||
@ -1709,7 +1709,7 @@ begin
|
|||||||
elsif (cc_kind /= ALIVE) then
|
elsif (cc_kind /= ALIVE) then
|
||||||
cnt_next <= cnt + 5;
|
cnt_next <= cnt + 5;
|
||||||
-- Reader expect in-line QoS
|
-- Reader expect in-line QoS
|
||||||
elsif(mem_endpoint_data.flags(EXPECTS_INLINE_QOS_FLAG) = '1') then
|
elsif(mem_endpoint_data.flags(READER_EXPECTS_INLINE_QOS_FLAG) = '1') then
|
||||||
stage_next <= SEND_INLINE_QOS;
|
stage_next <= SEND_INLINE_QOS;
|
||||||
cnt3_next <= 0;
|
cnt3_next <= 0;
|
||||||
-- Payload Available (DATA or Serialized Key)
|
-- Payload Available (DATA or Serialized Key)
|
||||||
@ -1768,7 +1768,7 @@ begin
|
|||||||
if (cc_kind /= ALIVE) then
|
if (cc_kind /= ALIVE) then
|
||||||
cnt_next <= cnt + 1;
|
cnt_next <= cnt + 1;
|
||||||
-- Reader expects in-line QoS
|
-- Reader expects in-line QoS
|
||||||
elsif (mem_endpoint_data.flags(EXPECTS_INLINE_QOS_FLAG) = '1') then
|
elsif (mem_endpoint_data.flags(READER_EXPECTS_INLINE_QOS_FLAG) = '1') then
|
||||||
stage_next <= SEND_INLINE_QOS;
|
stage_next <= SEND_INLINE_QOS;
|
||||||
cnt3_next <= 0;
|
cnt3_next <= 0;
|
||||||
else
|
else
|
||||||
@ -1791,7 +1791,7 @@ begin
|
|||||||
end case;
|
end case;
|
||||||
|
|
||||||
-- Reader expects in-line QoS
|
-- Reader expects in-line QoS
|
||||||
if (mem_endpoint_data.flags(EXPECTS_INLINE_QOS_FLAG) = '1') then
|
if (mem_endpoint_data.flags(READER_EXPECTS_INLINE_QOS_FLAG) = '1') then
|
||||||
stage_next <= SEND_INLINE_QOS;
|
stage_next <= SEND_INLINE_QOS;
|
||||||
cnt3_next <= 0;
|
cnt3_next <= 0;
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user