* Update rtps_test_package
- Unify get_loc functions - Overload functions with less parameters for defaults - Add Parameter Corruption Injection to Participant and Endpoint Data Generators
This commit is contained in:
parent
e358244578
commit
02be7bb0a3
@ -147,7 +147,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -170,7 +170,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -193,7 +193,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -216,7 +216,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -239,7 +239,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -262,7 +262,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -285,7 +285,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -315,7 +315,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -338,7 +338,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -361,7 +361,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_ANNOUNCER) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -381,7 +381,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -401,7 +401,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_SUBSCRIPTIONS_DETECTOR) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_SUBSCRIPTIONS_DETECTOR) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -436,7 +436,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_SUBSCRIPTIONS_DETECTOR) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_SUBSCRIPTIONS_DETECTOR) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -454,7 +454,7 @@ begin
|
|||||||
participant.defaultUnicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
participant.defaultUnicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -474,7 +474,7 @@ begin
|
|||||||
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1';
|
participant.availableBuiltinEndpoints(DISC_BUILTIN_ENDPOINT_PUBLICATIONS_DETECTOR) := '1';
|
||||||
gen_participant_data(participant, rtps_sub.data);
|
gen_participant_data(participant, rtps_sub.data);
|
||||||
gen_sentinel(rtps_sub.data);
|
gen_sentinel(rtps_sub.data);
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
SB.Push(gen_participant_mem_frame(participant));
|
SB.Push(gen_participant_mem_frame(participant));
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
@ -488,7 +488,7 @@ begin
|
|||||||
-- Mark Packet as non-standard Payload, in order to trigger the packet to be skipped (as early as possible)
|
-- Mark Packet as non-standard Payload, in order to trigger the packet to be skipped (as early as possible)
|
||||||
rtps_sub.data := EMPTY_TEST_PACKET;
|
rtps_sub.data := EMPTY_TEST_PACKET;
|
||||||
rtps_sub.flags(SUBMESSAGE_NON_STANDARD_PAYLOAD_FLAG_POS):= '1';
|
rtps_sub.flags(SUBMESSAGE_NON_STANDARD_PAYLOAD_FLAG_POS):= '1';
|
||||||
gen_rtps_handler_out(rtps_sub, gen_rand_loc_2, TRUE, TIME_INVALID, p0, stimulus);
|
gen_rtps_handler_out(rtps_sub, participant, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
|
|
||||||
|
|||||||
@ -334,7 +334,7 @@ begin
|
|||||||
sub.writerSN := p0_sn;
|
sub.writerSN := p0_sn;
|
||||||
gen_participant_data(p0, sub.data);
|
gen_participant_data(p0, sub.data);
|
||||||
gen_sentinel(sub.data);
|
gen_sentinel(sub.data);
|
||||||
gen_rtps_handler_out(sub, gen_rand_loc_2, TRUE, TIME_INVALID, p0.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub, p0, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -348,7 +348,7 @@ begin
|
|||||||
sub.writerSN := p1_sn;
|
sub.writerSN := p1_sn;
|
||||||
gen_participant_data(p1, sub.data);
|
gen_participant_data(p1, sub.data);
|
||||||
gen_sentinel(sub.data);
|
gen_sentinel(sub.data);
|
||||||
gen_rtps_handler_out(sub, gen_rand_loc_2, TRUE, TIME_INVALID, p1.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub, p1, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -362,7 +362,7 @@ begin
|
|||||||
sub.writerSN := p2_sn;
|
sub.writerSN := p2_sn;
|
||||||
gen_participant_data(p2, sub.data);
|
gen_participant_data(p2, sub.data);
|
||||||
gen_sentinel(sub.data);
|
gen_sentinel(sub.data);
|
||||||
gen_rtps_handler_out(sub, gen_rand_loc_2, TRUE, TIME_INVALID, p2.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub, p2, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -378,7 +378,7 @@ begin
|
|||||||
endpoint.participant := p0;
|
endpoint.participant := p0;
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := gen_wr(i, FALSE);
|
wr_sig := gen_wr(i, FALSE);
|
||||||
if (or wr_sig = '1') then
|
if (or wr_sig = '1') then
|
||||||
@ -401,7 +401,7 @@ begin
|
|||||||
endpoint.littleEndian:= '1';
|
endpoint.littleEndian:= '1';
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := gen_wr(i, FALSE);
|
wr_sig := gen_wr(i, FALSE);
|
||||||
if (or wr_sig = '1') then
|
if (or wr_sig = '1') then
|
||||||
@ -423,7 +423,7 @@ begin
|
|||||||
endpoint.participant := p0;
|
endpoint.participant := p0;
|
||||||
gen_endpoint_data(endpoint, sub_s.data);
|
gen_endpoint_data(endpoint, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := gen_wr(i, TRUE);
|
wr_sig := gen_wr(i, TRUE);
|
||||||
if (or wr_sig = '1') then
|
if (or wr_sig = '1') then
|
||||||
@ -446,7 +446,7 @@ begin
|
|||||||
endpoint.littleEndian:= '1';
|
endpoint.littleEndian:= '1';
|
||||||
gen_endpoint_data(endpoint, sub_s.data);
|
gen_endpoint_data(endpoint, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := gen_wr(i, TRUE);
|
wr_sig := gen_wr(i, TRUE);
|
||||||
if (or wr_sig = '1') then
|
if (or wr_sig = '1') then
|
||||||
@ -467,7 +467,7 @@ begin
|
|||||||
p1.match := UNMATCH;
|
p1.match := UNMATCH;
|
||||||
gen_participant_data(p1, sub.data);
|
gen_participant_data(p1, sub.data);
|
||||||
gen_sentinel(sub.data);
|
gen_sentinel(sub.data);
|
||||||
gen_rtps_handler_out(sub, gen_rand_loc_2, TRUE, TIME_INVALID, p1.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub, p1, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -515,7 +515,7 @@ begin
|
|||||||
endpoint.durability := PERSISTENT_DURABILITY_QOS;
|
endpoint.durability := PERSISTENT_DURABILITY_QOS;
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := (0 => '1', 3 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
wr_sig := (0 => '1', 3 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -536,7 +536,7 @@ begin
|
|||||||
endpoint.presentation := GROUP_PRESENTATION_QOS;
|
endpoint.presentation := GROUP_PRESENTATION_QOS;
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := (0 => '1', 4 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
wr_sig := (0 => '1', 4 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -557,7 +557,7 @@ begin
|
|||||||
endpoint.ownership := EXCLUSIVE_OWNERSHIP_QOS;
|
endpoint.ownership := EXCLUSIVE_OWNERSHIP_QOS;
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -578,7 +578,7 @@ begin
|
|||||||
endpoint.max_size_serialized:= std_logic_vector(to_unsigned(65000, CDR_LONG_WIDTH));
|
endpoint.max_size_serialized:= std_logic_vector(to_unsigned(65000, CDR_LONG_WIDTH));
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -602,7 +602,7 @@ begin
|
|||||||
endpoint.max_size_serialized:= std_logic_vector(to_unsigned(66000, CDR_LONG_WIDTH));
|
endpoint.max_size_serialized:= std_logic_vector(to_unsigned(66000, CDR_LONG_WIDTH));
|
||||||
gen_endpoint_data(endpoint, sub_p.data);
|
gen_endpoint_data(endpoint, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, endpoint, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -622,7 +622,7 @@ begin
|
|||||||
endpoint.durability := PERSISTENT_DURABILITY_QOS;
|
endpoint.durability := PERSISTENT_DURABILITY_QOS;
|
||||||
gen_endpoint_data(endpoint, sub_s.data);
|
gen_endpoint_data(endpoint, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, endpoint, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -640,7 +640,7 @@ begin
|
|||||||
endpoint.presentation := GROUP_PRESENTATION_QOS;
|
endpoint.presentation := GROUP_PRESENTATION_QOS;
|
||||||
gen_endpoint_data(endpoint, sub_s.data);
|
gen_endpoint_data(endpoint, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, endpoint, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -659,7 +659,7 @@ begin
|
|||||||
endpoint.ownership := EXCLUSIVE_OWNERSHIP_QOS;
|
endpoint.ownership := EXCLUSIVE_OWNERSHIP_QOS;
|
||||||
gen_endpoint_data(endpoint, sub_s.data);
|
gen_endpoint_data(endpoint, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, endpoint, stimulus);
|
||||||
start_test;
|
start_test;
|
||||||
wait_on_complete;
|
wait_on_complete;
|
||||||
stimulus := EMPTY_TEST_PACKET;
|
stimulus := EMPTY_TEST_PACKET;
|
||||||
@ -680,7 +680,7 @@ begin
|
|||||||
endpoint.expectsInlineQoS(0):= '1';
|
endpoint.expectsInlineQoS(0):= '1';
|
||||||
gen_endpoint_data(endpoint, sub_s.data);
|
gen_endpoint_data(endpoint, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, endpoint.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, endpoint, stimulus);
|
||||||
gen_match_frame(endpoint, reference);
|
gen_match_frame(endpoint, reference);
|
||||||
wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0');
|
wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -697,7 +697,7 @@ begin
|
|||||||
sub_p.writerSN := p2_snp;
|
sub_p.writerSN := p2_snp;
|
||||||
gen_endpoint_data(e1, sub_p.data);
|
gen_endpoint_data(e1, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, e1.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, e1, stimulus);
|
||||||
gen_match_frame(e1, reference);
|
gen_match_frame(e1, reference);
|
||||||
wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -712,7 +712,7 @@ begin
|
|||||||
sub_s.writerSN := p2_sns;
|
sub_s.writerSN := p2_sns;
|
||||||
gen_endpoint_data(e2, sub_s.data);
|
gen_endpoint_data(e2, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, e2.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, e2, stimulus);
|
||||||
gen_match_frame(e2, reference);
|
gen_match_frame(e2, reference);
|
||||||
wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0');
|
wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -731,7 +731,7 @@ begin
|
|||||||
e1.unicastLocatorList.locator(3).portn := (others => '0');
|
e1.unicastLocatorList.locator(3).portn := (others => '0');
|
||||||
gen_endpoint_data(e1, sub_p.data);
|
gen_endpoint_data(e1, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, e1.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, e1, stimulus);
|
||||||
gen_match_frame(e1, reference);
|
gen_match_frame(e1, reference);
|
||||||
wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -750,7 +750,7 @@ begin
|
|||||||
e2.multicastLocatorList.locator(3).portn := (others => '0');
|
e2.multicastLocatorList.locator(3).portn := (others => '0');
|
||||||
gen_endpoint_data(e2, sub_s.data);
|
gen_endpoint_data(e2, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, e2.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, e2, stimulus);
|
||||||
gen_match_frame(e2, reference);
|
gen_match_frame(e2, reference);
|
||||||
wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0');
|
wr_sig := (NUM_READERS => '1', NUM_READERS+4 => '1', NUM_READERS+5 => '1', NUM_READERS+7 => '1', others => '0');
|
||||||
push_reference;
|
push_reference;
|
||||||
@ -766,7 +766,7 @@ begin
|
|||||||
e1.reliability := BEST_EFFORT_RELIABILITY_QOS;
|
e1.reliability := BEST_EFFORT_RELIABILITY_QOS;
|
||||||
gen_endpoint_data(e1, sub_p.data);
|
gen_endpoint_data(e1, sub_p.data);
|
||||||
gen_sentinel(sub_p.data);
|
gen_sentinel(sub_p.data);
|
||||||
gen_rtps_handler_out(sub_p, gen_rand_loc_2, TRUE, TIME_INVALID, e1.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_p, e1, stimulus);
|
||||||
-- MATCH
|
-- MATCH
|
||||||
gen_match_frame(e1, reference);
|
gen_match_frame(e1, reference);
|
||||||
wr_sig := (15 => '1', others => '0');
|
wr_sig := (15 => '1', others => '0');
|
||||||
@ -790,7 +790,7 @@ begin
|
|||||||
e2.type_name := ENDPOINT_TYPE(2);
|
e2.type_name := ENDPOINT_TYPE(2);
|
||||||
gen_endpoint_data(e2, sub_s.data);
|
gen_endpoint_data(e2, sub_s.data);
|
||||||
gen_sentinel(sub_s.data);
|
gen_sentinel(sub_s.data);
|
||||||
gen_rtps_handler_out(sub_s, gen_rand_loc_2, TRUE, TIME_INVALID, e2.participant.guidPrefix, stimulus);
|
gen_rtps_handler_out(sub_s, e2, stimulus);
|
||||||
-- MATCH
|
-- MATCH
|
||||||
gen_match_frame(e2, reference);
|
gen_match_frame(e2, reference);
|
||||||
wr_sig := (NUM_READERS+2 => '1', others => '0');
|
wr_sig := (NUM_READERS+2 => '1', others => '0');
|
||||||
|
|||||||
@ -11,6 +11,7 @@ use work.rtps_config_package.all;
|
|||||||
-- TODO: Skip Packet while we are waiting for memory operation to complete
|
-- TODO: Skip Packet while we are waiting for memory operation to complete
|
||||||
-- TODO: add_res is still valid after removal. So we could continue searching the next orphan endpoint from that address on
|
-- TODO: add_res is still valid after removal. So we could continue searching the next orphan endpoint from that address on
|
||||||
-- TODO: is it really necessary to process Sequence Numbers in sequence? Could we not just accept any higher Sequence Number?
|
-- TODO: is it really necessary to process Sequence Numbers in sequence? Could we not just accept any higher Sequence Number?
|
||||||
|
-- TODO: Remove the Endpoint Bitmask from Memory and just always send MATCH/UNMATCH Frames
|
||||||
|
|
||||||
entity rtps_builtin_endpoint is
|
entity rtps_builtin_endpoint is
|
||||||
port (
|
port (
|
||||||
|
|||||||
@ -40,9 +40,6 @@ package rtps_test_package is
|
|||||||
subtype TEST_PARTICIPANT_MEMORY_FRAME_TYPE is TEST_MEMORY_TYPE(0 to PARTICIPANT_FRAME_SIZE-1);
|
subtype TEST_PARTICIPANT_MEMORY_FRAME_TYPE is TEST_MEMORY_TYPE(0 to PARTICIPANT_FRAME_SIZE-1);
|
||||||
subtype TEST_ENDPOINT_MEMORY_FRAME_TYPE is TEST_MEMORY_TYPE(0 to ENDPOINT_FRAME_SIZE-1);
|
subtype TEST_ENDPOINT_MEMORY_FRAME_TYPE is TEST_MEMORY_TYPE(0 to ENDPOINT_FRAME_SIZE-1);
|
||||||
|
|
||||||
function test_memory_match (A,B : TEST_MEMORY_TYPE) return boolean;
|
|
||||||
function to_string (input : TEST_MEMORY_TYPE) return string;
|
|
||||||
|
|
||||||
constant LOCATOR_PORT_WIDTH : natural := CDR_LONG_WIDTH;
|
constant LOCATOR_PORT_WIDTH : natural := CDR_LONG_WIDTH;
|
||||||
constant LOCATOR_ADDR_WIDTH : natural := 4*CDR_LONG_WIDTH;
|
constant LOCATOR_ADDR_WIDTH : natural := 4*CDR_LONG_WIDTH;
|
||||||
|
|
||||||
@ -96,9 +93,6 @@ package rtps_test_package is
|
|||||||
|
|
||||||
constant DEFAULT_UDP_HEADER : UDP_HEADER_TYPE; -- Deferred to Package Body
|
constant DEFAULT_UDP_HEADER : UDP_HEADER_TYPE; -- Deferred to Package Body
|
||||||
|
|
||||||
procedure gen_udp_header(ref : in UDP_HEADER_TYPE; output : inout TEST_PACKET_TYPE);
|
|
||||||
procedure fix_udp_packet(output : inout TEST_PACKET_TYPE);
|
|
||||||
|
|
||||||
-- *RTPS HEADER*
|
-- *RTPS HEADER*
|
||||||
type RTPS_HEADER_TYPE is record
|
type RTPS_HEADER_TYPE is record
|
||||||
protocol : std_logic_vector(PROTOCOL_WIDTH-1 downto 0);
|
protocol : std_logic_vector(PROTOCOL_WIDTH-1 downto 0);
|
||||||
@ -109,8 +103,6 @@ package rtps_test_package is
|
|||||||
|
|
||||||
constant DEFAULT_RTPS_HEADER : RTPS_HEADER_TYPE; -- Deferred to Package Body
|
constant DEFAULT_RTPS_HEADER : RTPS_HEADER_TYPE; -- Deferred to Package Body
|
||||||
|
|
||||||
procedure gen_rtps_header( ref : in RTPS_HEADER_TYPE; output : inout TEST_PACKET_TYPE);
|
|
||||||
|
|
||||||
-- *GENERIC RTPS SUBMESSAGE HEADER*
|
-- *GENERIC RTPS SUBMESSAGE HEADER*
|
||||||
type RTPS_SUBMESSAGE_TYPE is record
|
type RTPS_SUBMESSAGE_TYPE is record
|
||||||
submessageID : std_logic_vector(SUBMESSAGE_ID_WIDTH-1 downto 0);
|
submessageID : std_logic_vector(SUBMESSAGE_ID_WIDTH-1 downto 0);
|
||||||
@ -147,9 +139,6 @@ package rtps_test_package is
|
|||||||
|
|
||||||
constant DEFAULT_RTPS_SUBMESSAGE : RTPS_SUBMESSAGE_TYPE; -- Deferred to Package Body
|
constant DEFAULT_RTPS_SUBMESSAGE : RTPS_SUBMESSAGE_TYPE; -- Deferred to Package Body
|
||||||
|
|
||||||
procedure gen_rtps_submessage( ref : in RTPS_SUBMESSAGE_TYPE; output : inout TEST_PACKET_TYPE);
|
|
||||||
procedure gen_rtps_handler_out(ref : in RTPS_SUBMESSAGE_TYPE; loc : in LOCATOR_TYPE; is_meta : in boolean; ts : in TIME_TYPE; src_guid : in GUIDPREFIX_TYPE; output : inout TEST_PACKET_TYPE);
|
|
||||||
|
|
||||||
type PARTICIPANT_DATA_TYPE is record
|
type PARTICIPANT_DATA_TYPE is record
|
||||||
littleEndian : std_logic;
|
littleEndian : std_logic;
|
||||||
domainId : std_logic_vector(DOMAIN_ID_WIDTH-1 downto 0);
|
domainId : std_logic_vector(DOMAIN_ID_WIDTH-1 downto 0);
|
||||||
@ -173,10 +162,6 @@ package rtps_test_package is
|
|||||||
|
|
||||||
constant DEFAULT_PARTICIPANT_DATA : PARTICIPANT_DATA_TYPE; -- Deferred to Pckage Body
|
constant DEFAULT_PARTICIPANT_DATA : PARTICIPANT_DATA_TYPE; -- Deferred to Pckage Body
|
||||||
|
|
||||||
procedure gen_participant_data( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
|
||||||
--function gen_participant_data2 ( ref : PARTICIPANT_DATA_TYPE) return TEST_PACKET_TYPE;
|
|
||||||
function gen_participant_mem_frame (ref : PARTICIPANT_DATA_TYPE) return TEST_PARTICIPANT_MEMORY_FRAME_TYPE;
|
|
||||||
|
|
||||||
type ENDPOINT_DATA_TYPE is record
|
type ENDPOINT_DATA_TYPE is record
|
||||||
littleEndian : std_logic;
|
littleEndian : std_logic;
|
||||||
participant : PARTICIPANT_DATA_TYPE;
|
participant : PARTICIPANT_DATA_TYPE;
|
||||||
@ -219,11 +204,30 @@ package rtps_test_package is
|
|||||||
constant DEFAULT_ENDPOINT_DATA : ENDPOINT_DATA_TYPE; -- Deferred to Package Body
|
constant DEFAULT_ENDPOINT_DATA : ENDPOINT_DATA_TYPE; -- Deferred to Package Body
|
||||||
type ENDPOINT_DATA_ARRAY_TYPE is array (natural range <>) of ENDPOINT_DATA_TYPE;
|
type ENDPOINT_DATA_ARRAY_TYPE is array (natural range <>) of ENDPOINT_DATA_TYPE;
|
||||||
|
|
||||||
|
function test_memory_match (A,B : TEST_MEMORY_TYPE) return boolean;
|
||||||
|
function to_string (input : TEST_MEMORY_TYPE) return string;
|
||||||
|
|
||||||
|
procedure gen_udp_header(ref : in UDP_HEADER_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
procedure fix_udp_packet(output : inout TEST_PACKET_TYPE);
|
||||||
|
|
||||||
|
procedure gen_rtps_header( ref : in RTPS_HEADER_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
|
||||||
|
procedure gen_rtps_submessage( ref : in RTPS_SUBMESSAGE_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
procedure gen_rtps_handler_out(ref : in RTPS_SUBMESSAGE_TYPE; loc : in LOCATOR_TYPE; is_meta : in boolean; ts : in TIME_TYPE; src_guid : in GUIDPREFIX_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
procedure gen_rtps_handler_out(ref : in RTPS_SUBMESSAGE_TYPE; participant : PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
procedure gen_rtps_handler_out(ref : in RTPS_SUBMESSAGE_TYPE; endpoint : ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
|
||||||
|
procedure gen_participant_data( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
procedure gen_participant_data( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE; pid : in std_logic_vector(PARAMETER_ID_WIDTH-1 downto 0); offset : in integer);
|
||||||
|
function gen_participant_mem_frame (ref : PARTICIPANT_DATA_TYPE) return TEST_PARTICIPANT_MEMORY_FRAME_TYPE;
|
||||||
|
|
||||||
procedure gen_endpoint_data( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
procedure gen_endpoint_data( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
procedure gen_endpoint_data( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE; pid : in std_logic_vector(PARAMETER_ID_WIDTH-1 downto 0); offset : in integer);
|
||||||
procedure gen_match_frame( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
procedure gen_match_frame( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
function gen_endpoint_array(readers : boolean) return ENDPOINT_DATA_ARRAY_TYPE;
|
function gen_endpoint_array(readers : boolean) return ENDPOINT_DATA_ARRAY_TYPE;
|
||||||
|
|
||||||
procedure gen_sentinel(output : inout TEST_PACKET_TYPE);
|
procedure gen_sentinel(output : inout TEST_PACKET_TYPE);
|
||||||
|
procedure gen_parameter(pid : in std_logic_vector(PARAMETER_ID_WIDTH-1 downto 0); length : in natural; data : in TEST_PACKET_TYPE; output : inout TEST_PACKET_TYPE);
|
||||||
|
|
||||||
procedure gen_rand_loc(RV : inout RandomPType; ret : out LOCATOR_TYPE);
|
procedure gen_rand_loc(RV : inout RandomPType; ret : out LOCATOR_TYPE);
|
||||||
procedure gen_rand_entityid(RV : inout RandomPType; reader : boolean; ret : out std_logic_vector(ENTITYID_WIDTH-1 downto 0));
|
procedure gen_rand_entityid(RV : inout RandomPType; reader : boolean; ret : out std_logic_vector(ENTITYID_WIDTH-1 downto 0));
|
||||||
@ -579,6 +583,43 @@ package body rtps_test_package is
|
|||||||
return ret;
|
return ret;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
function get_loc (ref : PARTICIPANT_DATA_TYPE; meta : boolean) return LOCATOR_TYPE is
|
||||||
|
begin
|
||||||
|
if (meta) then
|
||||||
|
if (is_valid_loc(get_loc(ref.metatrafficUnicastLocatorList))) then
|
||||||
|
return get_loc(ref.metatrafficUnicastLocatorList);
|
||||||
|
elsif (is_valid_loc(get_loc(ref.metatrafficMulticastLocatorList))) then
|
||||||
|
return get_loc(ref.metatrafficMulticastLocatorList);
|
||||||
|
else
|
||||||
|
return DEST_LOC.meta.locator(0);
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
if (is_valid_loc(get_loc(ref.defaultUnicastLocatorList))) then
|
||||||
|
return get_loc(ref.defaultUnicastLocatorList);
|
||||||
|
elsif (is_valid_loc(get_loc(ref.defaultMulticastLocatorList))) then
|
||||||
|
return get_loc(ref.defaultMulticastLocatorList);
|
||||||
|
else
|
||||||
|
return EMPTY_LOCATOR;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end function;
|
||||||
|
|
||||||
|
function get_loc (ref : ENDPOINT_DATA_TYPE) return LOCATOR_TYPE is
|
||||||
|
begin
|
||||||
|
if (is_valid_loc(get_loc(ref.unicastLocatorList))) then
|
||||||
|
return get_loc(ref.unicastLocatorList);
|
||||||
|
elsif (is_valid_loc(get_loc(ref.multicastLocatorList))) then
|
||||||
|
return get_loc(ref.multicastLocatorList);
|
||||||
|
elsif (is_valid_loc(get_loc(ref.participant.defaultUnicastLocatorList))) then
|
||||||
|
return get_loc(ref.participant.defaultUnicastLocatorList);
|
||||||
|
elsif (is_valid_loc(get_loc(ref.participant.defaultMulticastLocatorList))) then
|
||||||
|
return get_loc(ref.participant.defaultMulticastLocatorList);
|
||||||
|
else
|
||||||
|
assert(FALSE) report "Endpoint has no valid Locators" severity FAILURE;
|
||||||
|
return EMPTY_LOCATOR;
|
||||||
|
end if;
|
||||||
|
end function;
|
||||||
|
|
||||||
procedure gen_rtps_submessage( ref : in RTPS_SUBMESSAGE_TYPE; output : inout TEST_PACKET_TYPE) is
|
procedure gen_rtps_submessage( ref : in RTPS_SUBMESSAGE_TYPE; output : inout TEST_PACKET_TYPE) is
|
||||||
variable start : natural := 0;
|
variable start : natural := 0;
|
||||||
variable tmp : natural := 0;
|
variable tmp : natural := 0;
|
||||||
@ -872,7 +913,17 @@ package body rtps_test_package is
|
|||||||
output.last(output.length-1) := '1';
|
output.last(output.length-1) := '1';
|
||||||
end procedure;
|
end procedure;
|
||||||
|
|
||||||
procedure gen_participant_data( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
procedure gen_rtps_handler_out(ref : in RTPS_SUBMESSAGE_TYPE; participant : PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
||||||
|
begin
|
||||||
|
gen_rtps_handler_out(ref, get_loc(participant, TRUE), TRUE, TIME_INVALID, participant.guidPrefix, output);
|
||||||
|
end procedure;
|
||||||
|
|
||||||
|
procedure gen_rtps_handler_out(ref : in RTPS_SUBMESSAGE_TYPE; endpoint : ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
||||||
|
begin
|
||||||
|
gen_rtps_handler_out(ref, get_loc(endpoint.participant, TRUE), TRUE, TIME_INVALID, endpoint.participant.guidPrefix, output);
|
||||||
|
end procedure;
|
||||||
|
|
||||||
|
procedure gen_participant_data( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE; pid : in std_logic_vector(PARAMETER_ID_WIDTH-1 downto 0); offset : in integer) is
|
||||||
variable tmp : natural := 0;
|
variable tmp : natural := 0;
|
||||||
begin
|
begin
|
||||||
-- Representation Identifier & Representation Options
|
-- Representation Identifier & Representation Options
|
||||||
@ -883,7 +934,12 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
-- GUID
|
-- GUID
|
||||||
output.data(output.length) := PID_PARTICIPANT_GUID & endian_swap(ref.littleEndian, int(16, PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_PARTICIPANT_GUID) then
|
||||||
|
assert (16+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_PARTICIPANT_GUID & endian_swap(ref.littleEndian, int(16+(offset*4), PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_PARTICIPANT_GUID & endian_swap(ref.littleEndian, int(16, PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.guidPrefix(0);
|
output.data(output.length) := ref.guidPrefix(0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -893,15 +949,31 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.entityId;
|
output.data(output.length) := ref.entityId;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_PARTICIPANT_GUID) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- DOMAIN ID
|
-- DOMAIN ID
|
||||||
output.data(output.length) := PID_DOMAIN_ID & endian_swap(ref.littleEndian, int(4, PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DOMAIN_ID) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DOMAIN_ID & endian_swap(ref.littleEndian, int(4+(offset*4), PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DOMAIN_ID & endian_swap(ref.littleEndian, int(4, PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.domainId);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.domainId);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DOMAIN_ID) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- DOMAIN TAG
|
-- DOMAIN TAG
|
||||||
if (ref.domainTag /= DEFAULT_DOMAIN_TAG) then
|
if (ref.domainTag /= DEFAULT_DOMAIN_TAG) then
|
||||||
tmp := string_len(ref.domainTag);
|
tmp := string_len(ref.domainTag);
|
||||||
output.data(output.length) := PID_DOMAIN_TAG & endian_swap(ref.littleEndian, int((round_div(tmp,4)+1)*4, PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DOMAIN_TAG) then
|
||||||
|
assert (((round_div(tmp,4)+1)*4)+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DOMAIN_TAG & endian_swap(ref.littleEndian, int(((round_div(tmp,4)+1)*4)+(offset*4), PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DOMAIN_TAG & endian_swap(ref.littleEndian, int((round_div(tmp,4)+1)*4, PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, int(tmp, CDR_LONG_WIDTH));
|
output.data(output.length) := endian_swap(ref.littleEndian, int(tmp, CDR_LONG_WIDTH));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -909,32 +981,64 @@ package body rtps_test_package is
|
|||||||
output.data(output.length) := ref.domainTag(i);
|
output.data(output.length) := ref.domainTag(i);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
end loop;
|
end loop;
|
||||||
|
if (pid = PID_DOMAIN_TAG) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- PROTOCOL VERSION
|
-- PROTOCOL VERSION
|
||||||
output.data(output.length) := PID_PROTOCOL_VERSION & endian_swap(ref.littleEndian, int(4, PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_PROTOCOL_VERSION) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_PROTOCOL_VERSION & endian_swap(ref.littleEndian, int(4+(offset*4), PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_PROTOCOL_VERSION & endian_swap(ref.littleEndian, int(4, PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := (others => '0');
|
output.data(output.length) := (others => '0');
|
||||||
output.data(output.length)(31 downto 16) := ref.protocolVersion;
|
output.data(output.length)(31 downto 16) := ref.protocolVersion;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_PROTOCOL_VERSION) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- VENDORID
|
-- VENDORID
|
||||||
output.data(output.length) := PID_VENDORID & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_VENDORID) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_VENDORID & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_VENDORID & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := (others => '0');
|
output.data(output.length) := (others => '0');
|
||||||
output.data(output.length)(31 downto 16) := ref.vendorId;
|
output.data(output.length)(31 downto 16) := ref.vendorId;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_VENDORID) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- EXPECTS IN-LINE QOS
|
-- EXPECTS IN-LINE QOS
|
||||||
if (ref.expectsInlineQoS(0) /= DEFAULT_EXPECTS_INLINE_QOS) then
|
if (ref.expectsInlineQoS(0) /= DEFAULT_EXPECTS_INLINE_QOS) then
|
||||||
output.data(output.length) := PID_EXPECTS_INLINE_QOS & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_EXPECTS_INLINE_QOS) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_EXPECTS_INLINE_QOS & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_EXPECTS_INLINE_QOS & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := (others => '0');
|
output.data(output.length) := (others => '0');
|
||||||
output.data(output.length)(31 downto 24) := ref.expectsInlineQoS; -- 1 Byte, No endian swap
|
output.data(output.length)(31 downto 24) := ref.expectsInlineQoS; -- 1 Byte, No endian swap
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_EXPECTS_INLINE_QOS) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- METATRAFFIC MULTICAST LOCATOR
|
-- METATRAFFIC MULTICAST LOCATOR
|
||||||
if (ref.metatrafficMulticastLocatorList.numLocators /= (ref.metatrafficMulticastLocatorList.numLocators'range => '0')) then
|
if (ref.metatrafficMulticastLocatorList.numLocators /= (ref.metatrafficMulticastLocatorList.numLocators'range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.metatrafficMulticastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.metatrafficMulticastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
output.data(output.length) := PID_METATRAFFIC_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_METATRAFFIC_MULTICAST_LOCATOR) then
|
||||||
|
assert (24+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_METATRAFFIC_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_METATRAFFIC_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.metatrafficMulticastLocatorList.locator(i).kind);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.metatrafficMulticastLocatorList.locator(i).kind);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -948,13 +1052,21 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.metatrafficMulticastLocatorList.locator(i).addr(31 downto 0);
|
output.data(output.length) := ref.metatrafficMulticastLocatorList.locator(i).addr(31 downto 0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_METATRAFFIC_MULTICAST_LOCATOR) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- METATRAFFIC UNICAST LOCATOR
|
-- METATRAFFIC UNICAST LOCATOR
|
||||||
if (ref.metatrafficUnicastLocatorList.numLocators /= (ref.metatrafficUnicastLocatorList.numLocators'range => '0')) then
|
if (ref.metatrafficUnicastLocatorList.numLocators /= (ref.metatrafficUnicastLocatorList.numLocators'range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.metatrafficUnicastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.metatrafficUnicastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
output.data(output.length) := PID_METATRAFFIC_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_METATRAFFIC_UNICAST_LOCATOR) then
|
||||||
|
assert (24+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_METATRAFFIC_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_METATRAFFIC_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.metatrafficUnicastLocatorList.locator(i).kind);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.metatrafficUnicastLocatorList.locator(i).kind);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -968,13 +1080,21 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.metatrafficUnicastLocatorList.locator(i).addr(31 downto 0);
|
output.data(output.length) := ref.metatrafficUnicastLocatorList.locator(i).addr(31 downto 0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_METATRAFFIC_UNICAST_LOCATOR) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- DEFAULT MULTICAST LOCATOR
|
-- DEFAULT MULTICAST LOCATOR
|
||||||
if (ref.defaultMulticastLocatorList.numLocators /= (ref.defaultMulticastLocatorList.numLocators'range => '0')) then
|
if (ref.defaultMulticastLocatorList.numLocators /= (ref.defaultMulticastLocatorList.numLocators'range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.defaultMulticastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.defaultMulticastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
output.data(output.length) := PID_DEFAULT_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DEFAULT_MULTICAST_LOCATOR) then
|
||||||
|
assert (24+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DEFAULT_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DEFAULT_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.defaultMulticastLocatorList.locator(i).kind);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.defaultMulticastLocatorList.locator(i).kind);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -988,6 +1108,9 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.defaultMulticastLocatorList.locator(i).addr(31 downto 0);
|
output.data(output.length) := ref.defaultMulticastLocatorList.locator(i).addr(31 downto 0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DEFAULT_MULTICAST_LOCATOR) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- DEFAULT UNICAST LOCATOR
|
-- DEFAULT UNICAST LOCATOR
|
||||||
@ -995,7 +1118,12 @@ package body rtps_test_package is
|
|||||||
if (ref.defaultUnicastLocatorList.numLocators /= (ref.defaultUnicastLocatorList.numLocators'range => '0')) then
|
if (ref.defaultUnicastLocatorList.numLocators /= (ref.defaultUnicastLocatorList.numLocators'range => '0')) then
|
||||||
tmp := to_integer(unsigned(ref.defaultUnicastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.defaultUnicastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
output.data(output.length) := PID_DEFAULT_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DEFAULT_UNICAST_LOCATOR) then
|
||||||
|
assert (24+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DEFAULT_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DEFAULT_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.defaultUnicastLocatorList.locator(i).kind);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.defaultUnicastLocatorList.locator(i).kind);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1009,35 +1137,60 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.defaultUnicastLocatorList.locator(i).addr(31 downto 0);
|
output.data(output.length) := ref.defaultUnicastLocatorList.locator(i).addr(31 downto 0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DEFAULT_UNICAST_LOCATOR) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- LEASE DURATION
|
-- LEASE DURATION
|
||||||
if (ref.leaseDuration /= DEFAULT_PARTICIPANT_LEASE_DURATION) then
|
if (ref.leaseDuration /= DEFAULT_PARTICIPANT_LEASE_DURATION) then
|
||||||
output.data(output.length) := PID_PARTICIPANT_LEASE_DURATION & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_PARTICIPANT_LEASE_DURATION) then
|
||||||
|
assert (8+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_PARTICIPANT_LEASE_DURATION & endian_swap(ref.littleEndian, int(8+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_PARTICIPANT_LEASE_DURATION & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.leaseDuration(0)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.leaseDuration(0)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.leaseDuration(1)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.leaseDuration(1)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_PARTICIPANT_LEASE_DURATION) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- AVAILABLE ENDPOINTS
|
-- AVAILABLE ENDPOINTS
|
||||||
output.data(output.length) := PID_BUILTIN_ENDPOINT_SET & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_BUILTIN_ENDPOINT_SET) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_BUILTIN_ENDPOINT_SET & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_BUILTIN_ENDPOINT_SET & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.availableBuiltinEndpoints);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.availableBuiltinEndpoints);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_BUILTIN_ENDPOINT_SET) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- MANUAL LIVELINESS COUNT
|
-- MANUAL LIVELINESS COUNT
|
||||||
output.data(output.length) := PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.manualLivelinessCount);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.manualLivelinessCount);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end procedure;
|
end procedure;
|
||||||
|
|
||||||
--function gen_participant_data2 ( ref : PARTICIPANT_DATA_TYPE) return TEST_PACKET_TYPE is
|
procedure gen_participant_data( ref : in PARTICIPANT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
||||||
-- variable ret : TEST_PACKET_TYPE := (length => 0, data => (others => (others => '0')), last => (others => '0'));
|
begin
|
||||||
--begin
|
gen_participant_data(ref, output, PID_PAD, 0);
|
||||||
-- gen_participant_data(ref, ret);
|
end procedure;
|
||||||
-- return ret;
|
|
||||||
--end function;
|
|
||||||
|
|
||||||
function gen_participant_mem_frame (ref : PARTICIPANT_DATA_TYPE) return TEST_PARTICIPANT_MEMORY_FRAME_TYPE is
|
function gen_participant_mem_frame (ref : PARTICIPANT_DATA_TYPE) return TEST_PARTICIPANT_MEMORY_FRAME_TYPE is
|
||||||
variable ret : TEST_PARTICIPANT_MEMORY_FRAME_TYPE;
|
variable ret : TEST_PARTICIPANT_MEMORY_FRAME_TYPE;
|
||||||
@ -1051,20 +1204,8 @@ package body rtps_test_package is
|
|||||||
start := PARTICIPANT_FRAME_SIZE * ref.nr;
|
start := PARTICIPANT_FRAME_SIZE * ref.nr;
|
||||||
|
|
||||||
-- Fetch relevant Locators
|
-- Fetch relevant Locators
|
||||||
if (is_valid_loc(get_loc(ref.metatrafficUnicastLocatorList))) then
|
meta_loc := get_loc (ref, TRUE);
|
||||||
meta_loc := get_loc(ref.metatrafficUnicastLocatorList);
|
user_loc := get_loc (ref, FALSE);
|
||||||
elsif (is_valid_loc(get_loc(ref.metatrafficMulticastLocatorList))) then
|
|
||||||
meta_loc := get_loc(ref.metatrafficMulticastLocatorList);
|
|
||||||
else
|
|
||||||
meta_loc := DEST_LOC.meta.locator(0);
|
|
||||||
end if;
|
|
||||||
if (is_valid_loc(get_loc(ref.defaultUnicastLocatorList))) then
|
|
||||||
user_loc := get_loc(ref.defaultUnicastLocatorList);
|
|
||||||
elsif (is_valid_loc(get_loc(ref.defaultMulticastLocatorList))) then
|
|
||||||
user_loc := get_loc(ref.defaultMulticastLocatorList);
|
|
||||||
else
|
|
||||||
user_loc := EMPTY_LOCATOR;
|
|
||||||
end if;
|
|
||||||
|
|
||||||
for i in 0 to PARTICIPANT_FRAME_SIZE-1 loop
|
for i in 0 to PARTICIPANT_FRAME_SIZE-1 loop
|
||||||
ret(i).addr := start + i;
|
ret(i).addr := start + i;
|
||||||
@ -1140,7 +1281,7 @@ package body rtps_test_package is
|
|||||||
return ret;
|
return ret;
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
procedure gen_endpoint_data( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
procedure gen_endpoint_data( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE; pid : in std_logic_vector(PARAMETER_ID_WIDTH-1 downto 0); offset : in integer) is
|
||||||
variable tmp : natural := 0;
|
variable tmp : natural := 0;
|
||||||
begin
|
begin
|
||||||
-- Representation Identifier & Representation Options
|
-- Representation Identifier & Representation Options
|
||||||
@ -1151,7 +1292,12 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
-- GUID
|
-- GUID
|
||||||
output.data(output.length) := PID_ENDPOINT_GUID & endian_swap(ref.littleEndian, int(16,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_ENDPOINT_GUID) then
|
||||||
|
assert (16+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_ENDPOINT_GUID & endian_swap(ref.littleEndian, int(16+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_ENDPOINT_GUID & endian_swap(ref.littleEndian, int(16,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.participant.guidPrefix(0);
|
output.data(output.length) := ref.participant.guidPrefix(0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1161,17 +1307,33 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.entityId;
|
output.data(output.length) := ref.entityId;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_ENDPOINT_GUID) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- EXPECTS IN-LINE QOS
|
-- EXPECTS IN-LINE QOS
|
||||||
if (ref.expectsInlineQoS(0) /= '0') then
|
if (ref.expectsInlineQoS(0) /= '0') then
|
||||||
output.data(output.length) := PID_EXPECTS_INLINE_QOS & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_EXPECTS_INLINE_QOS) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_EXPECTS_INLINE_QOS & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_EXPECTS_INLINE_QOS & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := (others => '0');
|
output.data(output.length) := (others => '0');
|
||||||
output.data(output.length)(31 downto 24) := ref.expectsInlineQoS; -- 1 Byte, No endian swap
|
output.data(output.length)(31 downto 24) := ref.expectsInlineQoS; -- 1 Byte, No endian swap
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_EXPECTS_INLINE_QOS) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- TOPIC NAME
|
-- TOPIC NAME
|
||||||
tmp := string_len(ref.topic_name);
|
tmp := string_len(ref.topic_name);
|
||||||
output.data(output.length) := PID_TOPIC_NAME & endian_swap(ref.littleEndian, int((round_div(tmp,4)+1)*4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_TOPIC_NAME) then
|
||||||
|
assert (((round_div(tmp,4)+1)*4)+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_TOPIC_NAME & endian_swap(ref.littleEndian, int(((round_div(tmp,4)+1)*4)+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_TOPIC_NAME & endian_swap(ref.littleEndian, int((round_div(tmp,4)+1)*4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, int(tmp, CDR_LONG_WIDTH));
|
output.data(output.length) := endian_swap(ref.littleEndian, int(tmp, CDR_LONG_WIDTH));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1179,9 +1341,17 @@ package body rtps_test_package is
|
|||||||
output.data(output.length) := ref.topic_name(i);
|
output.data(output.length) := ref.topic_name(i);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
end loop;
|
end loop;
|
||||||
|
if (pid = PID_TOPIC_NAME) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- TYPE NAME
|
-- TYPE NAME
|
||||||
tmp := string_len(ref.type_name);
|
tmp := string_len(ref.type_name);
|
||||||
output.data(output.length) := PID_TYPE_NAME & endian_swap(ref.littleEndian, int((round_div(tmp,4)+1)*4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_TYPE_NAME) then
|
||||||
|
assert (((round_div(tmp,4)+1)*4)+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_TYPE_NAME & endian_swap(ref.littleEndian, int(((round_div(tmp,4)+1)*4)+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_TYPE_NAME & endian_swap(ref.littleEndian, int((round_div(tmp,4)+1)*4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, int(tmp,CDR_LONG_WIDTH));
|
output.data(output.length) := endian_swap(ref.littleEndian, int(tmp,CDR_LONG_WIDTH));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1189,19 +1359,34 @@ package body rtps_test_package is
|
|||||||
output.data(output.length) := ref.type_name(i);
|
output.data(output.length) := ref.type_name(i);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
end loop;
|
end loop;
|
||||||
|
if (pid = PID_TYPE_NAME) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
-- DURABILITY
|
-- DURABILITY
|
||||||
if (ref.durability /= DEFAULT_DURABILITY_QOS) then
|
if (ref.durability /= DEFAULT_DURABILITY_QOS) then
|
||||||
output.data(output.length) := PID_DURABILITY & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DURABILITY) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DURABILITY & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DURABILITY & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.durability);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.durability);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DURABILITY) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- DURABILITY SERVICE
|
-- DURABILITY SERVICE
|
||||||
if (ref.durability_service_cleanup_delay /= DEFAULT_DURABILITY_SERVICE_CLEANUP_DELAY or ref.durability_service_history /= DEFAULT_DURABILITY_SERVICE_HISTORY or
|
if (ref.durability_service_cleanup_delay /= DEFAULT_DURABILITY_SERVICE_CLEANUP_DELAY or ref.durability_service_history /= DEFAULT_DURABILITY_SERVICE_HISTORY or
|
||||||
ref.durability_service_history_depth /= DEFAULT_DURABILITY_SERVICE_HISTORY_DEPTH or ref.durability_service_max_samples /= DEFAULT_DURABILITY_SERVICE_MAX_SAMPLES or
|
ref.durability_service_history_depth /= DEFAULT_DURABILITY_SERVICE_HISTORY_DEPTH or ref.durability_service_max_samples /= DEFAULT_DURABILITY_SERVICE_MAX_SAMPLES or
|
||||||
ref.durability_service_max_instances /= DEFAULT_DURABILITY_SERVICE_MAX_INSTANCES or ref.durability_service_max_samples_per_instances /= DEFAULT_DURABILITY_SERVICE_MAX_SAMPLES_PER_INSTANCE) then
|
ref.durability_service_max_instances /= DEFAULT_DURABILITY_SERVICE_MAX_INSTANCES or ref.durability_service_max_samples_per_instances /= DEFAULT_DURABILITY_SERVICE_MAX_SAMPLES_PER_INSTANCE) then
|
||||||
|
if (pid = PID_DURABILITY_SERVICE) then
|
||||||
output.data(output.length) := PID_DURABILITY_SERVICE & endian_swap(ref.littleEndian, int(28,PARAMETER_LENGTH_WIDTH));
|
assert (28+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DURABILITY_SERVICE & endian_swap(ref.littleEndian, int(28+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DURABILITY_SERVICE & endian_swap(ref.littleEndian, int(28,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.durability_service_cleanup_delay(0)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.durability_service_cleanup_delay(0)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1217,51 +1402,99 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.durability_service_max_samples_per_instances);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.durability_service_max_samples_per_instances);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DURABILITY_SERVICE) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- PRESENTATION
|
-- PRESENTATION
|
||||||
if (ref.presentation /= DEFAULT_PRESENTATION_QOS or ref.coherent_access(0) /= boolean_to_std_logic(DEFAULT_COHERENT_ACCESS) or ref.ordered_access(0) /= boolean_to_std_logic(DEFAULT_ORDERED_ACCESS)) then
|
if (ref.presentation /= DEFAULT_PRESENTATION_QOS or ref.coherent_access(0) /= boolean_to_std_logic(DEFAULT_COHERENT_ACCESS) or ref.ordered_access(0) /= boolean_to_std_logic(DEFAULT_ORDERED_ACCESS)) then
|
||||||
output.data(output.length) := PID_PRESENTATION & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_PRESENTATION) then
|
||||||
|
assert (8+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_PRESENTATION & endian_swap(ref.littleEndian, int(8+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_PRESENTATION & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.presentation);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.presentation);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.coherent_access) & endian_swap(ref.littleEndian, ref.ordered_access) & (0 to 15 => '0');
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.coherent_access) & endian_swap(ref.littleEndian, ref.ordered_access) & (0 to 15 => '0');
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_PRESENTATION) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- DEADLINE
|
-- DEADLINE
|
||||||
if (ref.deadline /= DEFAULT_DEADLINE_QOS) then
|
if (ref.deadline /= DEFAULT_DEADLINE_QOS) then
|
||||||
output.data(output.length) := PID_DEADLINE & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DEADLINE) then
|
||||||
|
assert (8+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DEADLINE & endian_swap(ref.littleEndian, int(8+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DEADLINE & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.deadline(0)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.deadline(0)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.deadline(1)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.deadline(1)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DEADLINE) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- LATENCY BUDGET
|
-- LATENCY BUDGET
|
||||||
if (ref.latency_budget /= DEFAULT_LATENCY_BUDGET_QOS) then
|
if (ref.latency_budget /= DEFAULT_LATENCY_BUDGET_QOS) then
|
||||||
output.data(output.length) := PID_LATENCY_BUDGET & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_LATENCY_BUDGET) then
|
||||||
|
assert (8+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_LATENCY_BUDGET & endian_swap(ref.littleEndian, int(8+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_LATENCY_BUDGET & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.latency_budget(0)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.latency_budget(0)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.latency_budget(1)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.latency_budget(1)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_LATENCY_BUDGET) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- OWNERSHIP
|
-- OWNERSHIP
|
||||||
if (ref.ownership /= DEFAULT_OWNERSHIP_QOS) then
|
if (ref.ownership /= DEFAULT_OWNERSHIP_QOS) then
|
||||||
output.data(output.length) := PID_OWNERSHIP & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_OWNERSHIP) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_OWNERSHIP & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_OWNERSHIP & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.ownership);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.ownership);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_OWNERSHIP) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- OWNERSHIP STRENGTH
|
-- OWNERSHIP STRENGTH
|
||||||
if (ref.ownership /= DEFAULT_OWNERSHIP_STRENGTH_QOS) then
|
if (ref.ownership /= DEFAULT_OWNERSHIP_STRENGTH_QOS) then
|
||||||
output.data(output.length) := PID_OWNERSHIP_STRENGTH & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_OWNERSHIP_STRENGTH) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_OWNERSHIP_STRENGTH & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_OWNERSHIP_STRENGTH & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.ownership_strength);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.ownership_strength);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_OWNERSHIP_STRENGTH) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- LIVELINESS
|
-- LIVELINESS
|
||||||
if (ref.liveliness /= DEFAULT_LIVELINESS_QOS or ref.leaseDuration /= DEFAULT_LEASE_DURATION) then
|
if (ref.liveliness /= DEFAULT_LIVELINESS_QOS or ref.leaseDuration /= DEFAULT_LEASE_DURATION) then
|
||||||
output.data(output.length) := PID_LIVELINESS & endian_swap(ref.littleEndian, int(12,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_LIVELINESS) then
|
||||||
|
assert (12+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_LIVELINESS & endian_swap(ref.littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_LIVELINESS & endian_swap(ref.littleEndian, int(12,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.liveliness);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.liveliness);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1269,19 +1502,35 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.leaseDuration(1)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.leaseDuration(1)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_LIVELINESS) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- TIME BASED FILTER
|
-- TIME BASED FILTER
|
||||||
if (ref.time_based_filter /= DEFAULT_TIME_BASED_FILTER_QOS) then
|
if (ref.time_based_filter /= DEFAULT_TIME_BASED_FILTER_QOS) then
|
||||||
output.data(output.length) := PID_TIME_BASED_FILTER & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_TIME_BASED_FILTER) then
|
||||||
|
assert (8+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_TIME_BASED_FILTER & endian_swap(ref.littleEndian, int(8+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_TIME_BASED_FILTER & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.time_based_filter(0)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.time_based_filter(0)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.time_based_filter(1)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.time_based_filter(1)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_TIME_BASED_FILTER) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- RELIABILITY
|
-- RELIABILITY
|
||||||
if (ref.reliability /= DEFAULT_RELIABILTY_QOS or ref.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME) then
|
if (ref.reliability /= DEFAULT_RELIABILTY_QOS or ref.max_blocking_time /= DEFAULT_MAX_BLOCKING_TIME) then
|
||||||
output.data(output.length) := PID_RELIABILITY & endian_swap(ref.littleEndian, int(12,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_RELIABILITY) then
|
||||||
|
assert (12+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_RELIABILITY & endian_swap(ref.littleEndian, int(12+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_RELIABILITY & endian_swap(ref.littleEndian, int(12,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.reliability);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.reliability);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1289,35 +1538,67 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.max_blocking_time(1)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.max_blocking_time(1)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_RELIABILITY) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- TRANSPORT PRIORITY
|
-- TRANSPORT PRIORITY
|
||||||
if (ref.transportnpriority /= DEFAULT_TRANSPORT_PRIORITY_QOS) then
|
if (ref.transportnpriority /= DEFAULT_TRANSPORT_PRIORITY_QOS) then
|
||||||
output.data(output.length) := PID_TRANSPORT_PRIORITY & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_TRANSPORT_PRIORITY) then
|
||||||
|
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));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_TRANSPORT_PRIORITY & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
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.transportnpriority);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_TRANSPORT_PRIORITY) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- LIFESPAN
|
-- LIFESPAN
|
||||||
if (ref.lifespan /= DEFAULT_LIFESPAN_QOS) then
|
if (ref.lifespan /= DEFAULT_LIFESPAN_QOS) then
|
||||||
output.data(output.length) := PID_LIFESPAN & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_LIFESPAN) then
|
||||||
|
assert (8+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_LIFESPAN & endian_swap(ref.littleEndian, int(8+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_LIFESPAN & endian_swap(ref.littleEndian, int(8,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.lifespan(0)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.lifespan(0)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.lifespan(1)));
|
output.data(output.length) := endian_swap(ref.littleEndian, std_logic_vector(ref.lifespan(1)));
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_LIFESPAN) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- DESTINATION ORDER
|
-- DESTINATION ORDER
|
||||||
if (ref.destination_order /= DEFAULT_DESTINATION_ORDER_QOS) then
|
if (ref.destination_order /= DEFAULT_DESTINATION_ORDER_QOS) then
|
||||||
output.data(output.length) := PID_DESTINATION_ORDER & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DESTINATION_ORDER) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DESTINATION_ORDER & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DESTINATION_ORDER & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.destination_order);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.destination_order);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DESTINATION_ORDER) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
-- UNICAST LOCATORS
|
-- UNICAST LOCATORS
|
||||||
if (unsigned(ref.unicastLocatorList.numLocators) > 0) then
|
if (unsigned(ref.unicastLocatorList.numLocators) > 0) then
|
||||||
tmp := to_integer(unsigned(ref.unicastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.unicastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
output.data(output.length) := PID_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_UNICAST_LOCATOR) then
|
||||||
|
assert (24+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_UNICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.unicastLocatorList.locator(i).kind);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.unicastLocatorList.locator(i).kind);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1331,13 +1612,21 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.unicastLocatorList.locator(i).addr(31 downto 0);
|
output.data(output.length) := ref.unicastLocatorList.locator(i).addr(31 downto 0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_UNICAST_LOCATOR) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- MULTICAST LOCATORS
|
-- MULTICAST LOCATORS
|
||||||
if (unsigned(ref.multicastLocatorList.numLocators) > 0) then
|
if (unsigned(ref.multicastLocatorList.numLocators) > 0) then
|
||||||
tmp := to_integer(unsigned(ref.multicastLocatorList.numLocators));
|
tmp := to_integer(unsigned(ref.multicastLocatorList.numLocators));
|
||||||
for i in 0 to tmp-1 loop
|
for i in 0 to tmp-1 loop
|
||||||
output.data(output.length) := PID_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_MULTICAST_LOCATOR) then
|
||||||
|
assert (24+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_MULTICAST_LOCATOR & endian_swap(ref.littleEndian, int(24,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.multicastLocatorList.locator(i).kind);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.multicastLocatorList.locator(i).kind);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
@ -1351,6 +1640,9 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := ref.multicastLocatorList.locator(i).addr(31 downto 0);
|
output.data(output.length) := ref.multicastLocatorList.locator(i).addr(31 downto 0);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_MULTICAST_LOCATOR) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
-- USER DATA
|
-- USER DATA
|
||||||
@ -1391,29 +1683,31 @@ package body rtps_test_package is
|
|||||||
end if;
|
end if;
|
||||||
-- MAX SIZE SERIALIZED
|
-- MAX SIZE SERIALIZED
|
||||||
if (unsigned(ref.max_size_serialized) /= 0) then
|
if (unsigned(ref.max_size_serialized) /= 0) then
|
||||||
output.data(output.length) := PID_DATA_MAX_SIZE_SERIALIZED & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
if (pid = PID_DATA_MAX_SIZE_SERIALIZED) then
|
||||||
|
assert (4+(offset*4) > 0) report "Parameter Length < 0" severity FAILURE;
|
||||||
|
output.data(output.length) := PID_DATA_MAX_SIZE_SERIALIZED & endian_swap(ref.littleEndian, int(4+(offset*4),PARAMETER_LENGTH_WIDTH));
|
||||||
|
else
|
||||||
|
output.data(output.length) := PID_DATA_MAX_SIZE_SERIALIZED & endian_swap(ref.littleEndian, int(4,PARAMETER_LENGTH_WIDTH));
|
||||||
|
end if;
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
output.data(output.length) := endian_swap(ref.littleEndian, ref.max_size_serialized);
|
output.data(output.length) := endian_swap(ref.littleEndian, ref.max_size_serialized);
|
||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
|
if (pid = PID_DATA_MAX_SIZE_SERIALIZED) then
|
||||||
|
output.length := output.length + offset;
|
||||||
|
end if;
|
||||||
end if;
|
end if;
|
||||||
end procedure;
|
end procedure;
|
||||||
|
|
||||||
|
procedure gen_endpoint_data( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
||||||
|
begin
|
||||||
|
gen_endpoint_data(ref, output, PID_PAD, 0);
|
||||||
|
end procedure;
|
||||||
|
|
||||||
procedure gen_match_frame( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
procedure gen_match_frame( ref : in ENDPOINT_DATA_TYPE; output : inout TEST_PACKET_TYPE) is
|
||||||
variable loc : LOCATOR_TYPE;
|
variable loc : LOCATOR_TYPE;
|
||||||
begin
|
begin
|
||||||
-- Fetch relevant Locator
|
-- Fetch relevant Locator
|
||||||
if (is_valid_loc(get_loc(ref.unicastLocatorList))) then
|
loc := get_loc(ref);
|
||||||
loc := get_loc(ref.unicastLocatorList);
|
|
||||||
elsif (is_valid_loc(get_loc(ref.multicastLocatorList))) then
|
|
||||||
loc := get_loc(ref.multicastLocatorList);
|
|
||||||
elsif (is_valid_loc(get_loc(ref.participant.defaultUnicastLocatorList))) then
|
|
||||||
loc := get_loc(ref.participant.defaultUnicastLocatorList);
|
|
||||||
elsif (is_valid_loc(get_loc(ref.participant.defaultMulticastLocatorList))) then
|
|
||||||
loc := get_loc(ref.participant.defaultMulticastLocatorList);
|
|
||||||
else
|
|
||||||
assert(FALSE) report "Endpoint has no valid Locators" severity FAILURE;
|
|
||||||
loc := EMPTY_LOCATOR;
|
|
||||||
end if;
|
|
||||||
|
|
||||||
-- OPCODE
|
-- OPCODE
|
||||||
case (ref.match) is
|
case (ref.match) is
|
||||||
@ -1457,6 +1751,18 @@ package body rtps_test_package is
|
|||||||
output.length := output.length + 1;
|
output.length := output.length + 1;
|
||||||
end procedure;
|
end procedure;
|
||||||
|
|
||||||
|
procedure gen_parameter(pid : in std_logic_vector(PARAMETER_ID_WIDTH-1 downto 0); length : in natural; data : in TEST_PACKET_TYPE; output : inout TEST_PACKET_TYPE) is
|
||||||
|
begin
|
||||||
|
-- PARAMETER HEADER
|
||||||
|
output.data(output.length) := pid & int(length*4,PARAMETER_LENGTH_WIDTH);
|
||||||
|
output.length := output.length + 1;
|
||||||
|
-- DATA
|
||||||
|
for i in 0 to length-1 loop
|
||||||
|
output.data(output.length) := data.data(i);
|
||||||
|
output.length := output.length + 1;
|
||||||
|
end loop;
|
||||||
|
end procedure;
|
||||||
|
|
||||||
function test_memory_match (A,B : TEST_MEMORY_TYPE) return boolean is
|
function test_memory_match (A,B : TEST_MEMORY_TYPE) return boolean is
|
||||||
begin
|
begin
|
||||||
if (A'length /= B'length) then
|
if (A'length /= B'length) then
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user