Propagate LIFESPAN through ENDPOINT_MATCH_FRAME instead of inline QoS

Since we disabled the 'expectsInlineQoS' Flag due to Cyclone DDS
compatibility, we no longer have access to the lifespan of the remote
writers.
The Endpoint Match Format was changed to also send the Lifespan Duration
from the rtps_builtin_endpoint.
This commit is contained in:
Greek 2021-12-22 15:44:19 +01:00
parent 56b80bead2
commit 4b81cf9484
14 changed files with 954 additions and 903 deletions

View File

@ -0,0 +1,64 @@
onerror {resume}
quietly WaveActivateNextPane {} 0
add wave -noupdate -divider SYSTEM
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/clk
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/reset
add wave -noupdate -divider INPUT
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/empty_meta
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/rd_meta
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/last_word_in_meta
add wave -noupdate -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/data_in_meta
add wave -noupdate -divider OUTPUT
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/start_hc
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/opcode_hc
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/ack_hc
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/done_hc
add wave -noupdate -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/data_out_hc
add wave -noupdate -divider {MAIN FSM}
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/stage
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/stage_next
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/cnt
add wave -noupdate -divider {MEMORY FSM}
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_op_done
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_op_start
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_opcode
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_stage
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_stage_next
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_cnt
add wave -noupdate /l0_rtps_reader_test1_vbk/uut/mem_pos
add wave -noupdate -radix unsigned /l0_rtps_reader_test1_vbk/uut/mem_addr_base
add wave -noupdate -expand -group MEM_CTRL -radix unsigned /l0_rtps_reader_test1_vbk/uut/mem_addr
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_valid_in
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_ready_in
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_read
add wave -noupdate -expand -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/mem_write_data
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/abort_read
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_valid_out
add wave -noupdate -expand -group MEM_CTRL /l0_rtps_reader_test1_vbk/uut/mem_ready_out
add wave -noupdate -expand -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test1_vbk/uut/mem_read_data
add wave -noupdate -divider TESTBENCH
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/start
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/cnt_stim
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/packet_sent
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/mem_check_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/stim_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/test_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test1_vbk/uut/idle_sig
TreeUpdate [SetDefaultTree]
WaveRestoreCursors {Begin {8325000 ps} 1} {Error {9725000 ps} 1} {Cursor {9175000 ps} 0}
quietly wave cursor active 3
configure wave -namecolwidth 150
configure wave -valuecolwidth 100
configure wave -justifyvalue left
configure wave -signalnamewidth 1
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0
configure wave -timelineunits ns
update
WaveRestoreZoom {8888200 ps} {9912200 ps}

View File

@ -0,0 +1,82 @@
onerror {resume}
quietly WaveActivateNextPane {} 0
add wave -noupdate -divider SYSTEM
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/clk
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/reset
add wave -noupdate -divider INPUT
add wave -noupdate -group META /l0_rtps_reader_test2_tbk/uut/empty_meta
add wave -noupdate -group META /l0_rtps_reader_test2_tbk/uut/rd_meta
add wave -noupdate -group META /l0_rtps_reader_test2_tbk/uut/last_word_in_meta
add wave -noupdate -group META -radix hexadecimal /l0_rtps_reader_test2_tbk/uut/data_in_meta
add wave -noupdate -expand -group USER /l0_rtps_reader_test2_tbk/uut/empty_user
add wave -noupdate -expand -group USER /l0_rtps_reader_test2_tbk/uut/rd_user
add wave -noupdate -expand -group USER -radix hexadecimal /l0_rtps_reader_test2_tbk/uut/data_in_user
add wave -noupdate -expand -group USER /l0_rtps_reader_test2_tbk/uut/last_word_in_user
add wave -noupdate -divider HC
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/start_hc
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/opcode_hc
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/ack_hc
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/valid_out_hc
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/ready_out_hc
add wave -noupdate -radix hexadecimal /l0_rtps_reader_test2_tbk/uut/data_out_hc
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/last_word_out_hc
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/done_hc
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/ret_hc
add wave -noupdate -divider {MAIN FSM}
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/stage
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/stage_next
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/cnt
add wave -noupdate -divider {MEMORY FSM}
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/mem_op_done
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/mem_op_start
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/mem_opcode
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/mem_stage
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/mem_stage_next
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/mem_cnt
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/mem_pos
add wave -noupdate -radix unsigned /l0_rtps_reader_test2_tbk/uut/mem_addr_base
add wave -noupdate -childformat {{/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.guid -radix hexadecimal} {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.addr -radix hexadecimal} {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.portn -radix hexadecimal} {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr -radix unsigned -childformat {{/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr(0) -radix unsigned} {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr(1) -radix unsigned}}} {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.lease_deadline -radix hexadecimal} {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.res_time -radix hexadecimal}} -subitemconfig {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.guid {-height 15 -radix hexadecimal} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.addr {-height 15 -radix hexadecimal} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.portn {-height 15 -radix hexadecimal} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr {-height 15 -radix unsigned -childformat {{/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr(0) -radix unsigned} {/l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr(1) -radix unsigned}}} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr(0) {-height 15 -radix unsigned} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.next_seq_nr(1) {-height 15 -radix unsigned} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.lease_deadline {-height 15 -radix hexadecimal} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data.res_time {-height 15 -radix hexadecimal}} /l0_rtps_reader_test2_tbk/uut/mem_endpoint_data
add wave -noupdate -group MEM_CTRL -radix unsigned /l0_rtps_reader_test2_tbk/uut/mem_addr
add wave -noupdate -group MEM_CTRL /l0_rtps_reader_test2_tbk/uut/mem_valid_in
add wave -noupdate -group MEM_CTRL /l0_rtps_reader_test2_tbk/uut/mem_ready_in
add wave -noupdate -group MEM_CTRL /l0_rtps_reader_test2_tbk/uut/mem_read
add wave -noupdate -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test2_tbk/uut/mem_write_data
add wave -noupdate -group MEM_CTRL /l0_rtps_reader_test2_tbk/uut/abort_read
add wave -noupdate -group MEM_CTRL /l0_rtps_reader_test2_tbk/uut/mem_valid_out
add wave -noupdate -group MEM_CTRL /l0_rtps_reader_test2_tbk/uut/mem_ready_out
add wave -noupdate -group MEM_CTRL -radix hexadecimal /l0_rtps_reader_test2_tbk/uut/mem_read_data
add wave -noupdate -divider TESTBENCH
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/start_meta
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/packet_sent_meta
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/start_user
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/packet_sent_user
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/check_stage
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/out_check_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/stim_done
add wave -noupdate -group TESTBENCH /l0_rtps_reader_test2_tbk/test_done
add wave -noupdate -divider GAP
add wave -noupdate -radix unsigned /l0_rtps_reader_test2_tbk/uut/gap_start
add wave -noupdate -radix unsigned /l0_rtps_reader_test2_tbk/uut/gap_list_base
add wave -noupdate -radix unsigned /l0_rtps_reader_test2_tbk/uut/gap_list_end
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/bitmap_latch
add wave -noupdate /l0_rtps_reader_test2_tbk/uut/bitmap_pos
add wave -noupdate -radix unsigned /l0_rtps_reader_test2_tbk/uut/next_seq_nr
add wave -noupdate -radix unsigned /l0_rtps_reader_test2_tbk/uut/bitmap_cnt
TreeUpdate [SetDefaultTree]
WaveRestoreCursors {Begin {49575000 ps} 1} {Error {53225000 ps} 1} {Cursor {50275000 ps} 0}
quietly wave cursor active 3
configure wave -namecolwidth 150
configure wave -valuecolwidth 100
configure wave -justifyvalue left
configure wave -signalnamewidth 1
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0
configure wave -timelineunits ns
update
WaveRestoreZoom {49779800 ps} {50803800 ps}

View File

@ -269,6 +269,11 @@ ENDPOINT MATCH FRAME
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
06| UDP_PORT | READER_FLAGS | 06| UDP_PORT | READER_FLAGS |
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
07| |
+ LIFESPAN_DURATION +
08| [only for Reader Endpoints] |
+-------------------------------+-------------------------------+
READER_FLAGS READER_FLAGS
------------ ------------
@ -359,9 +364,13 @@ READER
09| | 09| |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
10| | 10| |
+ RES_TIME + [Reliable Only] + LIFESPAN_DURATION +
11| | 11| |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
12| |
+ RES_TIME + [Reliable Only]
13| |
+---------------------------------------------------------------+
WRITER WRITER
------ ------

View File

@ -238,6 +238,7 @@ begin
e0.participant := p0; e0.participant := p0;
e0.topic_name := ENDPOINT_TOPIC(0); e0.topic_name := ENDPOINT_TOPIC(0);
e0.type_name := ENDPOINT_TYPE(0); e0.type_name := ENDPOINT_TYPE(0);
e0.lifespan := gen_duration(3,0);
Log("Initiating Test", INFO); Log("Initiating Test", INFO);
stim_done <= '0'; stim_done <= '0';
@ -790,6 +791,42 @@ begin
sub_p.data := EMPTY_TEST_PACKET; sub_p.data := EMPTY_TEST_PACKET;
p_snp := p_snp + 1; p_snp := p_snp + 1;
-- *PID_LIFESPAN*
Log("Ignore Endpoint [Invalid PID_LIFESPAN]", INFO);
sub_p.writerSN := p_snp;
endpoint := e0;
endpoint.reader := FALSE;
endpoint.reliability := DEFAULT_RELIABILITY_QOS_W;
endpoint.entityId := gen_rand_entityid_2(FALSE);
gen_endpoint_data(endpoint, sub_p.data, PID_LIFESPAN, -1);
gen_sentinel(sub_p.data);
gen_rtps_handler_out(sub_p, endpoint, stimulus);
start_test;
wait_on_sent;
wait_on_mem_check;
stimulus := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
sub_p.data := EMPTY_TEST_PACKET;
Log("Match Endpoint [Extra Bytes in PID_LIFESPAN]", INFO);
sub_p.writerSN := p_snp;
endpoint := e0;
endpoint.reader := FALSE;
endpoint.reliability := DEFAULT_RELIABILITY_QOS_W;
endpoint.entityId := gen_rand_entityid_2(FALSE);
gen_endpoint_data(endpoint, sub_p.data, PID_LIFESPAN, +1);
gen_sentinel(sub_p.data);
gen_rtps_handler_out(sub_p, endpoint, stimulus);
wr_sig := (0 => '1', 9 => '1', 10 => '1', 15 => '1', others => '0');
push_endpoint_reference;
start_test;
wait_on_sent;
wait_on_mem_check;
stimulus := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
sub_p.data := EMPTY_TEST_PACKET;
p_snp := p_snp + 1;
-- *PID_LIVELINESS* -- *PID_LIVELINESS*
Log("Ignore Endpoint [Invalid PID_LIVELINESS]", INFO); Log("Ignore Endpoint [Invalid PID_LIVELINESS]", INFO);
sub_p.writerSN := p_snp; sub_p.writerSN := p_snp;

View File

@ -166,18 +166,21 @@ begin
e1.participant := p0; e1.participant := p0;
e1.entityid := RV.RandSlv(ENTITYID_WIDTH); e1.entityid := RV.RandSlv(ENTITYID_WIDTH);
e1.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e1.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e1.lifespan := gen_duration(1,0);
-- Endpoint 3 -- Endpoint 3
e2 := DEFAULT_ENDPOINT_DATA; e2 := DEFAULT_ENDPOINT_DATA;
e2.reader := FALSE; e2.reader := FALSE;
e2.participant := p1; e2.participant := p1;
e2.entityid := RV.RandSlv(ENTITYID_WIDTH); e2.entityid := RV.RandSlv(ENTITYID_WIDTH);
e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e2.lifespan := gen_duration(2,0);
-- Endpoint 4 -- Endpoint 4
e3 := DEFAULT_ENDPOINT_DATA; e3 := DEFAULT_ENDPOINT_DATA;
e3.reader := FALSE; e3.reader := FALSE;
e3.participant := p1; e3.participant := p1;
e3.entityid := RV.RandSlv(ENTITYID_WIDTH); e3.entityid := RV.RandSlv(ENTITYID_WIDTH);
e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e3.lifespan := gen_duration(3,0);
Log("Initiating Test", INFO); Log("Initiating Test", INFO);
stim_done <= '0'; stim_done <= '0';
@ -340,6 +343,7 @@ begin
endpoint.nr := 0; endpoint.nr := 0;
endpoint.match := MATCH; endpoint.match := MATCH;
endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
endpoint.lifespan := gen_duration(6,0);
gen_endpoint_match_frame(endpoint, stimulus); gen_endpoint_match_frame(endpoint, stimulus);
SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_b(endpoint));
start_test; start_test;

View File

@ -166,18 +166,21 @@ begin
e1.participant := p0; e1.participant := p0;
e1.entityid := RV.RandSlv(ENTITYID_WIDTH); e1.entityid := RV.RandSlv(ENTITYID_WIDTH);
e1.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e1.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e1.lifespan := gen_duration(1,0);
-- Endpoint 3 -- Endpoint 3
e2 := DEFAULT_ENDPOINT_DATA; e2 := DEFAULT_ENDPOINT_DATA;
e2.reader := FALSE; e2.reader := FALSE;
e2.participant := p1; e2.participant := p1;
e2.entityid := RV.RandSlv(ENTITYID_WIDTH); e2.entityid := RV.RandSlv(ENTITYID_WIDTH);
e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e2.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e2.lifespan := gen_duration(2,0);
-- Endpoint 4 -- Endpoint 4
e3 := DEFAULT_ENDPOINT_DATA; e3 := DEFAULT_ENDPOINT_DATA;
e3.reader := FALSE; e3.reader := FALSE;
e3.participant := p1; e3.participant := p1;
e3.entityid := RV.RandSlv(ENTITYID_WIDTH); e3.entityid := RV.RandSlv(ENTITYID_WIDTH);
e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e3.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e3.lifespan := gen_duration(3,0);
Log("Initiating Test", INFO); Log("Initiating Test", INFO);
stim_done <= '0'; stim_done <= '0';
@ -340,6 +343,7 @@ begin
endpoint.nr := 0; endpoint.nr := 0;
endpoint.match := MATCH; endpoint.match := MATCH;
endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); endpoint.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
endpoint.lifespan := gen_duration(6,0);
gen_endpoint_match_frame(endpoint, stimulus); gen_endpoint_match_frame(endpoint, stimulus);
SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint)); SB_mem.Push(gen_writer_endpoint_mem_frame_a(endpoint));
start_test; start_test;
@ -348,8 +352,6 @@ begin
wait_on_mem_check; wait_on_mem_check;
-- MEMORY STATE [p1e2,p0e0,p1e3] -- MEMORY STATE [p1e2,p0e0,p1e3]
stim_done <= '1'; stim_done <= '1';
wait_on_completion; wait_on_completion;
TranscriptOpen(RESULTS_FILE, APPEND_MODE); TranscriptOpen(RESULTS_FILE, APPEND_MODE);

View File

@ -107,7 +107,7 @@ begin
variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE; variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE;
variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE; variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE;
variable src_ts, life_ts : TIME_TYPE := TIME_INVALID; variable src_ts : TIME_TYPE := TIME_INVALID;
-- Wrapper to use procedure as function -- Wrapper to use procedure as function
impure function gen_rand_loc_2 return LOCATOR_TYPE is impure function gen_rand_loc_2 return LOCATOR_TYPE is
@ -207,7 +207,7 @@ begin
SetLogEnable(INFO, TRUE); SetLogEnable(INFO, TRUE);
RV.InitSeed(RV'instance_name); RV.InitSeed(RV'instance_name);
-- Endpoint 1 -- Endpoint 0
e0 := DEFAULT_ENDPOINT_DATA; e0 := DEFAULT_ENDPOINT_DATA;
e0.reader := FALSE; e0.reader := FALSE;
e0.nr := 0; e0.nr := 0;
@ -215,7 +215,8 @@ begin
e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.entityid := RV.RandSlv(ENTITYID_WIDTH);
e0.participant.guidPrefix := gen_rand_guid_prefix; e0.participant.guidPrefix := gen_rand_guid_prefix;
e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
-- Endpoint 2 e0.lifespan := gen_duration(2,0);
-- Endpoint 1
e1 := DEFAULT_ENDPOINT_DATA; e1 := DEFAULT_ENDPOINT_DATA;
e1.reader := FALSE; e1.reader := FALSE;
e1.nr := 1; e1.nr := 1;
@ -223,7 +224,7 @@ begin
e1.entityid := RV.RandSlv(ENTITYID_WIDTH); e1.entityid := RV.RandSlv(ENTITYID_WIDTH);
e1.participant.guidPrefix := gen_rand_guid_prefix; e1.participant.guidPrefix := gen_rand_guid_prefix;
e1.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e1.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
-- Endpoint 3 -- Endpoint 2
e2 := DEFAULT_ENDPOINT_DATA; e2 := DEFAULT_ENDPOINT_DATA;
e2.reader := FALSE; e2.reader := FALSE;
e2.nr := 2; e2.nr := 2;
@ -242,7 +243,6 @@ begin
reset <= '0'; reset <= '0';
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *GENERAL SEQUENCE NUMBER HANDLING* -- *GENERAL SEQUENCE NUMBER HANDLING*
Log("Test General SequenceNumber Handling", INFO); Log("Test General SequenceNumber Handling", INFO);
@ -281,7 +281,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -315,7 +315,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -381,7 +381,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -400,7 +400,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -448,7 +448,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -496,7 +496,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -544,7 +544,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -638,7 +638,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -700,7 +700,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -748,7 +748,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -796,7 +796,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -818,7 +818,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -826,9 +826,8 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(1,0); src_ts := gen_duration(1,0);
life_ts := gen_duration(2,0);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -842,11 +841,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -854,68 +852,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_LIFESPAN)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,100);
life_ts := gen_duration(2,100);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, -1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
start_user_test;
wait_on_user_sent;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_LIFESPAN)]", INFO);
src_ts := gen_duration(1,200);
life_ts := gen_duration(2,200);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,300); src_ts := gen_duration(1,300);
life_ts := gen_duration(2,300);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(13); sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -923,7 +867,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -932,9 +875,34 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,400); src_ts := gen_duration(1,400);
life_ts := gen_duration(2,400); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -948,35 +916,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 14, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
life_ts := gen_duration(2,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -985,15 +924,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,600); src_ts := gen_duration(1,600);
life_ts := gen_duration(2,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14); sub.writerSN := gen_sn(13);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -1001,11 +939,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1013,15 +950,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 15, Inline-QoS (Lifespan, Status Info, Key Hash), Little Endian]", INFO); Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Status Info, Key Hash), Little Endian]", INFO);
src_ts := gen_duration(1,700); src_ts := gen_duration(1,700);
life_ts := gen_duration(2,700);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15); sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
@ -1030,11 +966,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos);
gen_sentinel('1', sub.inlineQos); gen_sentinel('1', sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1045,52 +980,48 @@ begin
-- *NON_PAYLOAD TRAFFIC HANDLING* -- *NON_PAYLOAD TRAFFIC HANDLING*
Log("Test Non-Payload Traffic Handling", INFO); Log("Test Non-Payload Traffic Handling", INFO);
Log("Accept Endpoint 1 sent DATA [SN 16, No Payload, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 15, No Payload, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(2,0); src_ts := gen_duration(2,0);
life_ts := gen_duration(3,0); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 16, Serialized Key, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(16); sub.writerSN := gen_sn(16);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 17, Serialized Key, Inline-QoS (Lifespan, Status Info)]", INFO);
src_ts := gen_duration(2,500);
life_ts := gen_duration(3,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_UNREGISTERED; cc.kind := NOT_ALIVE_UNREGISTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1098,20 +1029,18 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 18, No Payload, Inline-QoS (Lifespan, Status Info)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 17, No Payload, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,600); src_ts := gen_duration(2,600);
life_ts := gen_duration(3,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(18); sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED; cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -1121,7 +1050,6 @@ begin
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *HISTORY CACHE RESPONSE HANDLING* -- *HISTORY CACHE RESPONSE HANDLING*
Log("Test History Cache Response Handling", INFO); Log("Test History Cache Response Handling", INFO);
@ -1137,7 +1065,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(FALSE); push_reference(FALSE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1156,7 +1084,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;

View File

@ -107,7 +107,7 @@ begin
variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE; variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE;
variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE; variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE;
variable src_ts, life_ts : TIME_TYPE := TIME_INVALID; variable src_ts : TIME_TYPE := TIME_INVALID;
-- Wrapper to use procedure as function -- Wrapper to use procedure as function
impure function gen_rand_loc_2 return LOCATOR_TYPE is impure function gen_rand_loc_2 return LOCATOR_TYPE is
@ -215,6 +215,7 @@ begin
e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.entityid := RV.RandSlv(ENTITYID_WIDTH);
e0.participant.guidPrefix := gen_rand_guid_prefix; e0.participant.guidPrefix := gen_rand_guid_prefix;
e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e0.lifespan := gen_duration(2,0);
-- Endpoint 2 -- Endpoint 2
e1 := DEFAULT_ENDPOINT_DATA; e1 := DEFAULT_ENDPOINT_DATA;
e1.reader := FALSE; e1.reader := FALSE;
@ -242,7 +243,6 @@ begin
reset <= '0'; reset <= '0';
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *GENERAL SEQUENCE NUMBER HANDLING* -- *GENERAL SEQUENCE NUMBER HANDLING*
Log("Test General SequenceNumber Handling", INFO); Log("Test General SequenceNumber Handling", INFO);
@ -281,7 +281,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -315,7 +315,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -366,7 +366,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -429,7 +429,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -492,7 +492,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -525,7 +525,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -619,7 +619,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -681,7 +681,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -729,7 +729,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -777,7 +777,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -828,7 +828,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -836,9 +836,8 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(1,0); src_ts := gen_duration(1,0);
life_ts := gen_duration(2,0);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -852,11 +851,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -864,68 +862,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_LIFESPAN)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,100);
life_ts := gen_duration(2,100);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, -1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
start_user_test;
wait_on_user_sent;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_LIFESPAN)]", INFO);
src_ts := gen_duration(1,200);
life_ts := gen_duration(2,200);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,300); src_ts := gen_duration(1,300);
life_ts := gen_duration(2,300);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(13); sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -933,7 +877,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -942,9 +885,34 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,400); src_ts := gen_duration(1,400);
life_ts := gen_duration(2,400); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -958,35 +926,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 14, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
life_ts := gen_duration(2,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -995,15 +934,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,600); src_ts := gen_duration(1,600);
life_ts := gen_duration(2,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14); sub.writerSN := gen_sn(13);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -1011,11 +949,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1023,15 +960,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 15, Inline-QoS (Lifespan, Status Info, Key Hash), Little Endian]", INFO); Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Status Info, Key Hash), Little Endian]", INFO);
src_ts := gen_duration(1,700); src_ts := gen_duration(1,700);
life_ts := gen_duration(2,700);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15); sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
@ -1040,11 +976,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos);
gen_sentinel('1', sub.inlineQos); gen_sentinel('1', sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1055,52 +990,48 @@ begin
-- *NON_PAYLOAD TRAFFIC HANDLING* -- *NON_PAYLOAD TRAFFIC HANDLING*
Log("Test Non-Payload Traffic Handling", INFO); Log("Test Non-Payload Traffic Handling", INFO);
Log("Accept Endpoint 1 sent DATA [SN 16, No Payload, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 15, No Payload, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(2,0); src_ts := gen_duration(2,0);
life_ts := gen_duration(3,0); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 16, Serialized Key, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(16); sub.writerSN := gen_sn(16);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 17, Serialized Key, Inline-QoS (Lifespan, Status Info)]", INFO);
src_ts := gen_duration(2,500);
life_ts := gen_duration(3,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_UNREGISTERED; cc.kind := NOT_ALIVE_UNREGISTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1108,20 +1039,18 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 18, No Payload, Inline-QoS (Lifespan, Status Info)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 17, No Payload, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,600); src_ts := gen_duration(2,600);
life_ts := gen_duration(3,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(18); sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED; cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -1131,7 +1060,6 @@ begin
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *HISTORY CACHE RESPONSE HANDLING* -- *HISTORY CACHE RESPONSE HANDLING*
Log("Test History Cache Response Handling", INFO); Log("Test History Cache Response Handling", INFO);
@ -1147,7 +1075,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(FALSE); push_reference(FALSE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1166,7 +1094,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;

View File

@ -107,7 +107,7 @@ begin
variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE; variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE;
variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE; variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE;
variable src_ts, life_ts : TIME_TYPE := TIME_INVALID; variable src_ts : TIME_TYPE := TIME_INVALID;
-- Wrapper to use procedure as function -- Wrapper to use procedure as function
impure function gen_rand_loc_2 return LOCATOR_TYPE is impure function gen_rand_loc_2 return LOCATOR_TYPE is
@ -215,6 +215,7 @@ begin
e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.entityid := RV.RandSlv(ENTITYID_WIDTH);
e0.participant.guidPrefix := gen_rand_guid_prefix; e0.participant.guidPrefix := gen_rand_guid_prefix;
e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e0.lifespan := gen_duration(2,0);
-- Endpoint 2 -- Endpoint 2
e1 := DEFAULT_ENDPOINT_DATA; e1 := DEFAULT_ENDPOINT_DATA;
e1.reader := FALSE; e1.reader := FALSE;
@ -242,7 +243,6 @@ begin
reset <= '0'; reset <= '0';
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *GENERAL SEQUENCE NUMBER HANDLING* -- *GENERAL SEQUENCE NUMBER HANDLING*
Log("Test General SequenceNumber Handling", INFO); Log("Test General SequenceNumber Handling", INFO);
@ -281,7 +281,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -315,7 +315,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -381,7 +381,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -429,7 +429,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -477,7 +477,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -525,7 +525,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -619,7 +619,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -681,7 +681,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -729,7 +729,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -777,7 +777,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -799,7 +799,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -807,9 +807,8 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(1,0); src_ts := gen_duration(1,0);
life_ts := gen_duration(2,0);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -823,11 +822,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -835,68 +833,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_LIFESPAN)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,100);
life_ts := gen_duration(2,100);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, -1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
start_user_test;
wait_on_user_sent;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_LIFESPAN)]", INFO);
src_ts := gen_duration(1,200);
life_ts := gen_duration(2,200);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,300); src_ts := gen_duration(1,300);
life_ts := gen_duration(2,300);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(13); sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -904,7 +848,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -913,9 +856,34 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,400); src_ts := gen_duration(1,400);
life_ts := gen_duration(2,400); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -929,35 +897,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 14, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
life_ts := gen_duration(2,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -966,15 +905,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,600); src_ts := gen_duration(1,600);
life_ts := gen_duration(2,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14); sub.writerSN := gen_sn(13);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -982,11 +920,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -994,15 +931,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 15, Inline-QoS (Lifespan, Status Info, Key Hash), Little Endian]", INFO); Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Status Info, Key Hash), Little Endian]", INFO);
src_ts := gen_duration(1,700); src_ts := gen_duration(1,700);
life_ts := gen_duration(2,700);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15); sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
@ -1011,11 +947,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos);
gen_sentinel('1', sub.inlineQos); gen_sentinel('1', sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1026,52 +961,48 @@ begin
-- *NON_PAYLOAD TRAFFIC HANDLING* -- *NON_PAYLOAD TRAFFIC HANDLING*
Log("Test Non-Payload Traffic Handling", INFO); Log("Test Non-Payload Traffic Handling", INFO);
Log("Accept Endpoint 1 sent DATA [SN 16, No Payload, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 15, No Payload, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(2,0); src_ts := gen_duration(2,0);
life_ts := gen_duration(3,0); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 16, Serialized Key, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(16); sub.writerSN := gen_sn(16);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 17, Serialized Key, Inline-QoS (Lifespan, Status Info)]", INFO);
src_ts := gen_duration(2,500);
life_ts := gen_duration(3,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_UNREGISTERED; cc.kind := NOT_ALIVE_UNREGISTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1079,20 +1010,18 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 18, No Payload, Inline-QoS (Lifespan, Status Info)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 17, No Payload, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,600); src_ts := gen_duration(2,600);
life_ts := gen_duration(3,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(18); sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED; cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -1102,7 +1031,6 @@ begin
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *HISTORY CACHE RESPONSE HANDLING* -- *HISTORY CACHE RESPONSE HANDLING*
Log("Test History Cache Response Handling", INFO); Log("Test History Cache Response Handling", INFO);
@ -1118,7 +1046,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(FALSE); push_reference(FALSE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1137,7 +1065,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;

View File

@ -107,7 +107,7 @@ begin
variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE; variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE;
variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE; variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE;
variable src_ts, life_ts : TIME_TYPE := TIME_INVALID; variable src_ts : TIME_TYPE := TIME_INVALID;
-- Wrapper to use procedure as function -- Wrapper to use procedure as function
impure function gen_rand_loc_2 return LOCATOR_TYPE is impure function gen_rand_loc_2 return LOCATOR_TYPE is
@ -215,6 +215,7 @@ begin
e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.entityid := RV.RandSlv(ENTITYID_WIDTH);
e0.participant.guidPrefix := gen_rand_guid_prefix; e0.participant.guidPrefix := gen_rand_guid_prefix;
e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e0.lifespan := gen_duration(2,0);
-- Endpoint 2 -- Endpoint 2
e1 := DEFAULT_ENDPOINT_DATA; e1 := DEFAULT_ENDPOINT_DATA;
e1.reader := FALSE; e1.reader := FALSE;
@ -242,7 +243,6 @@ begin
reset <= '0'; reset <= '0';
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *GENERAL SEQUENCE NUMBER HANDLING* -- *GENERAL SEQUENCE NUMBER HANDLING*
Log("Test General SequenceNumber Handling", INFO); Log("Test General SequenceNumber Handling", INFO);
@ -281,7 +281,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -330,7 +330,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -381,7 +381,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -444,7 +444,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -507,7 +507,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -540,7 +540,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -634,7 +634,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -696,7 +696,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -744,7 +744,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -792,7 +792,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -814,7 +814,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -822,9 +822,8 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(1,0); src_ts := gen_duration(1,0);
life_ts := gen_duration(2,0);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -838,11 +837,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -850,68 +848,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_LIFESPAN)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,100);
life_ts := gen_duration(2,100);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, -1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
start_user_test;
wait_on_user_sent;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_LIFESPAN)]", INFO);
src_ts := gen_duration(1,200);
life_ts := gen_duration(2,200);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,300); src_ts := gen_duration(1,300);
life_ts := gen_duration(2,300);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(13); sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -919,7 +863,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -928,9 +871,34 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,400); src_ts := gen_duration(1,400);
life_ts := gen_duration(2,400); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -944,35 +912,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 14, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
life_ts := gen_duration(2,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -981,15 +920,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,600); src_ts := gen_duration(1,600);
life_ts := gen_duration(2,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14); sub.writerSN := gen_sn(13);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -997,11 +935,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1009,15 +946,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 15, Inline-QoS (Lifespan, Status Info, Key Hash), Little Endian]", INFO); Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Status Info, Key Hash), Little Endian]", INFO);
src_ts := gen_duration(1,700); src_ts := gen_duration(1,700);
life_ts := gen_duration(2,700);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15); sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
@ -1026,11 +962,10 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos);
gen_sentinel('1', sub.inlineQos); gen_sentinel('1', sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1041,52 +976,48 @@ begin
-- *NON_PAYLOAD TRAFFIC HANDLING* -- *NON_PAYLOAD TRAFFIC HANDLING*
Log("Test Non-Payload Traffic Handling", INFO); Log("Test Non-Payload Traffic Handling", INFO);
Log("Accept Endpoint 1 sent DATA [SN 16, No Payload, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 15, No Payload, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(2,0); src_ts := gen_duration(2,0);
life_ts := gen_duration(3,0); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 16, Serialized Key, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(16); sub.writerSN := gen_sn(16);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 17, Serialized Key, Inline-QoS (Lifespan, Status Info)]", INFO);
src_ts := gen_duration(2,500);
life_ts := gen_duration(3,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_UNREGISTERED; cc.kind := NOT_ALIVE_UNREGISTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1094,20 +1025,18 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 18, No Payload, Inline-QoS (Lifespan, Status Info)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 17, No Payload, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,600); src_ts := gen_duration(2,600);
life_ts := gen_duration(3,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(18); sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED; cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -1117,7 +1046,6 @@ begin
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *HISTORY CACHE RESPONSE HANDLING* -- *HISTORY CACHE RESPONSE HANDLING*
Log("Test History Cache Response Handling", INFO); Log("Test History Cache Response Handling", INFO);
@ -1133,7 +1061,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(FALSE); push_reference(FALSE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1152,7 +1080,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;

View File

@ -107,7 +107,7 @@ begin
variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET; variable payload : TEST_PACKET_TYPE := EMPTY_TEST_PACKET;
variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE; variable sub : RTPS_SUBMESSAGE_TYPE := DEFAULT_RTPS_SUBMESSAGE;
variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE; variable cc : CACHE_CHANGE_TYPE := DEFAULT_CACHE_CHANGE;
variable src_ts, life_ts : TIME_TYPE := TIME_INVALID; variable src_ts : TIME_TYPE := TIME_INVALID;
-- Wrapper to use procedure as function -- Wrapper to use procedure as function
impure function gen_rand_loc_2 return LOCATOR_TYPE is impure function gen_rand_loc_2 return LOCATOR_TYPE is
@ -215,6 +215,7 @@ begin
e0.entityid := RV.RandSlv(ENTITYID_WIDTH); e0.entityid := RV.RandSlv(ENTITYID_WIDTH);
e0.participant.guidPrefix := gen_rand_guid_prefix; e0.participant.guidPrefix := gen_rand_guid_prefix;
e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR)); e0.unicastLocatorList := (numLocators => int(1,CDR_LONG_WIDTH), locator => (0 => gen_rand_loc_2, others => EMPTY_LOCATOR));
e0.lifespan := gen_duration(2,0);
-- Endpoint 2 -- Endpoint 2
e1 := DEFAULT_ENDPOINT_DATA; e1 := DEFAULT_ENDPOINT_DATA;
e1.reader := FALSE; e1.reader := FALSE;
@ -242,7 +243,6 @@ begin
reset <= '0'; reset <= '0';
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *GENERAL SEQUENCE NUMBER HANDLING* -- *GENERAL SEQUENCE NUMBER HANDLING*
Log("Test General SequenceNumber Handling", INFO); Log("Test General SequenceNumber Handling", INFO);
@ -281,7 +281,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -330,7 +330,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -381,7 +381,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -444,7 +444,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -507,7 +507,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -540,7 +540,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -634,7 +634,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -696,7 +696,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -744,7 +744,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -792,7 +792,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -814,7 +814,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); -- No key Hash due to WITH_KEY=FALSE cc := gen_cache_change(sub); -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -822,9 +822,8 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 11, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(1,0); src_ts := gen_duration(1,0);
life_ts := gen_duration(2,0);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -838,12 +837,11 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -851,69 +849,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_LIFESPAN)]", INFO); Log("Ignore Endpoint 1 sent DATA [SN 12, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,100);
life_ts := gen_duration(2,100);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, -1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
start_user_test;
wait_on_user_sent;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_LIFESPAN)]", INFO);
src_ts := gen_duration(1,200);
life_ts := gen_duration(2,200);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_LIFESPAN, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,300); src_ts := gen_duration(1,300);
life_ts := gen_duration(2,300);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(13); sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -921,7 +864,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -930,9 +872,35 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 12, Inline-QoS (Extra Bytes in PID_STATUS_INFO)]", INFO);
src_ts := gen_duration(1,400); src_ts := gen_duration(1,400);
life_ts := gen_duration(2,400); endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(12);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 13, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
@ -946,36 +914,6 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_STATUS_INFO, +1);
gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference);
push_reference(TRUE);
start_user_test;
wait_on_user_sent;
wait_on_out_check;
stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET;
Log("Ignore Endpoint 1 sent DATA [SN 14, Inline-QoS (Invalid PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,500);
life_ts := gen_duration(2,500);
endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload;
cc := gen_cache_change(sub);
cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts;
cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, -1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
@ -984,15 +922,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 13, Inline-QoS (Extra Bytes in PID_KEY_HASH)]", INFO);
src_ts := gen_duration(1,600); src_ts := gen_duration(1,600);
life_ts := gen_duration(2,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(14); sub.writerSN := gen_sn(13);
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
@ -1000,12 +937,11 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos, PID_KEY_HASH, +1);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1013,15 +949,14 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 15, Inline-QoS (Lifespan, Status Info, Key Hash), Little Endian]", INFO); Log("Accept Endpoint 1 sent DATA [SN 14, Inline-QoS (Status Info, Key Hash), Little Endian]", INFO);
src_ts := gen_duration(1,700); src_ts := gen_duration(1,700);
life_ts := gen_duration(2,700);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(15); sub.writerSN := gen_sn(14);
sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_ENDIAN_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_DATA_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
@ -1030,12 +965,11 @@ begin
cc.kind := ALIVE_FILTERED; cc.kind := ALIVE_FILTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '1', sub.inlineQos);
gen_sentinel('1', sub.inlineQos); gen_sentinel('1', sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1046,26 +980,24 @@ begin
-- *NON_PAYLOAD TRAFFIC HANDLING* -- *NON_PAYLOAD TRAFFIC HANDLING*
Log("Test Non-Payload Traffic Handling", INFO); Log("Test Non-Payload Traffic Handling", INFO);
Log("Accept Endpoint 1 sent DATA [SN 16, No Payload, Inline-QoS (Lifespan, Status Info, Key Hash)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 15, No Payload, Inline-QoS (Status Info, Key Hash)]", INFO);
src_ts := gen_duration(2,0); src_ts := gen_duration(2,0);
life_ts := gen_duration(3,0);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(16); sub.writerSN := gen_sn(15);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED; cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
cc.instance := gen_key_hash; cc.instance := gen_key_hash;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE cc.instance := HANDLE_NIL; -- No key Hash due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1073,27 +1005,25 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 17, Serialized Key, Inline-QoS (Lifespan, Status Info)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 16, Serialized Key, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,500); src_ts := gen_duration(2,500);
life_ts := gen_duration(3,500);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(17); sub.writerSN := gen_sn(16);
sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_KEY_FLAG_POS) := '1';
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
sub.data := gen_payload; sub.data := gen_payload;
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_UNREGISTERED; cc.kind := NOT_ALIVE_UNREGISTERED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc.payload := EMPTY_TEST_PACKET; -- No payload due to WITH_KEY=FALSE cc.payload := EMPTY_TEST_PACKET; -- No payload due to WITH_KEY=FALSE
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1101,24 +1031,22 @@ begin
stimulus_user := EMPTY_TEST_PACKET; stimulus_user := EMPTY_TEST_PACKET;
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
Log("Accept Endpoint 1 sent DATA [SN 18, No Payload, Inline-QoS (Lifespan, Status Info)]", INFO); Log("Accept Endpoint 1 sent DATA [SN 17, No Payload, Inline-QoS (Status Info)]", INFO);
src_ts := gen_duration(2,600); src_ts := gen_duration(2,600);
life_ts := gen_duration(3,600);
endpoint := e1; endpoint := e1;
sub := DEFAULT_RTPS_SUBMESSAGE; sub := DEFAULT_RTPS_SUBMESSAGE;
sub.submessageID := SID_DATA; sub.submessageID := SID_DATA;
sub.writerId := endpoint.entityid; sub.writerId := endpoint.entityid;
sub.readerId := DEFAULT_READER_ENTITYID; sub.readerId := DEFAULT_READER_ENTITYID;
sub.writerSN := gen_sn(18); sub.writerSN := gen_sn(17);
sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1'; sub.flags(SUBMESSAGE_INLINE_QOS_FLAG_POS) := '1';
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
cc.kind := NOT_ALIVE_DISPOSED; cc.kind := NOT_ALIVE_DISPOSED;
cc.src_timestamp := src_ts; cc.src_timestamp := src_ts;
endpoint.lifespan := life_ts;
gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos); gen_inline_qos(cc, endpoint, TRUE, '0', sub.inlineQos);
gen_sentinel(sub.inlineQos); gen_sentinel(sub.inlineQos);
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
gen_add_cache_change_dds(cc, life_ts, endpoint.nr, reference); gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1127,7 +1055,6 @@ begin
reference := EMPTY_TEST_PACKET; reference := EMPTY_TEST_PACKET;
src_ts := TIME_INVALID; src_ts := TIME_INVALID;
life_ts := TIME_INVALID;
-- *HISTORY CACHE RESPONSE HANDLING* -- *HISTORY CACHE RESPONSE HANDLING*
Log("Test History Cache Response Handling", INFO); Log("Test History Cache Response Handling", INFO);
@ -1143,7 +1070,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(FALSE); push_reference(FALSE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;
@ -1162,7 +1089,7 @@ begin
sub.data := gen_payload; sub.data := gen_payload;
gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user); gen_rtps_handler_out(sub, get_loc(endpoint), FALSE, src_ts, endpoint.participant.guidPrefix, stimulus_user);
cc := gen_cache_change(sub); cc := gen_cache_change(sub);
gen_add_cache_change_dds(cc, TIME_INVALID, endpoint.nr, reference); gen_add_cache_change_dds(cc, endpoint.lifespan, endpoint.nr, reference);
push_reference(TRUE); push_reference(TRUE);
start_user_test; start_user_test;
wait_on_user_sent; wait_on_user_sent;

View File

@ -137,7 +137,7 @@ architecture arch of rtps_builtin_endpoint is
type STAGE_TYPE is (IDLE, PACKET_HEADER, PACKET_SRC_ADDR, PACKET_SRC_ENTITYID, PACKET_SRC_GUIDPREFIX, PACKET_DEST_ENTITYID, type STAGE_TYPE is (IDLE, PACKET_HEADER, PACKET_SRC_ADDR, PACKET_SRC_ENTITYID, PACKET_SRC_GUIDPREFIX, PACKET_DEST_ENTITYID,
CHECK_SRC_ENTITYID, LATCH_SEQ_NR, PROCESS_DATA, PROCESS_MESSAGE_SEQUENCE_NUMBERS, PROCESS_MESSAGE, PROCESS_GAP, PROCESS_GAP_SEQUENCE_NUMBERS, FIND_NEXT_VALID_IN_BITMAP, CHECK_SRC_ENTITYID, LATCH_SEQ_NR, PROCESS_DATA, PROCESS_MESSAGE_SEQUENCE_NUMBERS, PROCESS_MESSAGE, PROCESS_GAP, PROCESS_GAP_SEQUENCE_NUMBERS, FIND_NEXT_VALID_IN_BITMAP,
PROCESS_PL, CHECK_DEFAULT, SELECT_LOCATOR, LATCH_STRING_LENGTH, COMPARE_STRING, RXO_DURABILITY, RXO_DEADLINE, RXO_LIVELINESS, RXO_LEASE_DURATION, LATCH_LEASE_DURATION, PROCESS_PL, CHECK_DEFAULT, SELECT_LOCATOR, LATCH_STRING_LENGTH, COMPARE_STRING, RXO_DURABILITY, RXO_DEADLINE, RXO_LIVELINESS, RXO_LEASE_DURATION, LATCH_LEASE_DURATION,
RXO_RELIABILITY, RXO_DESTINATION_ORDER, RXO_OWNERSHIP, RXO_PRESENTATION, RXO_PARTITION, RXO_LATENCY_BUDGET, CHECK_MAX_SIZE_SERIALIZED, LATCH_LIFESPAN_DURATION, RXO_RELIABILITY, RXO_DESTINATION_ORDER, RXO_OWNERSHIP, RXO_PRESENTATION, RXO_PARTITION, RXO_LATENCY_BUDGET, CHECK_MAX_SIZE_SERIALIZED,
MATCH_DOMAIN_ID, MATCH_PROTOCOL_VERSION, LATCH_LOCATOR, LATCH_EXPECTS_INLINE_QOS, MATCH_GUID, CHECK_REMOTE_BUILTIN_ENDPOINTS, CHECK_STATUS_INFO, MATCH_DOMAIN_ID, MATCH_PROTOCOL_VERSION, LATCH_LOCATOR, LATCH_EXPECTS_INLINE_QOS, MATCH_GUID, CHECK_REMOTE_BUILTIN_ENDPOINTS, CHECK_STATUS_INFO,
PARTICIPANT_MATCH_STAGE, INFORM_ENDPOINTS_MATCH, INFORM_ENDPOINTS_UNMATCH, INFORM_ENDPOINTS_PARTICIPANT_UNMATCH, PARTICIPANT_STALE_CHECK, PARTICIPANT_MATCH_STAGE, INFORM_ENDPOINTS_MATCH, INFORM_ENDPOINTS_UNMATCH, INFORM_ENDPOINTS_PARTICIPANT_UNMATCH, PARTICIPANT_STALE_CHECK,
LATCH_REMOVED_GUIDPREFIX, PROCESS_HEARTBEAT, PROCESS_HEARTBEAT_SEQUENCE_NUMBERS, SEND_ACKNACK, SEND_HEARTBEAT, PROCESS_ACKNACK, LATCH_REMOVED_GUIDPREFIX, PROCESS_HEARTBEAT, PROCESS_HEARTBEAT_SEQUENCE_NUMBERS, SEND_ACKNACK, SEND_HEARTBEAT, PROCESS_ACKNACK,
@ -353,6 +353,8 @@ architecture arch of rtps_builtin_endpoint is
signal meta_uc_port, meta_uc_port_next : std_logic_vector(UDP_PORT_WIDTH-1 downto 0); signal meta_uc_port, meta_uc_port_next : std_logic_vector(UDP_PORT_WIDTH-1 downto 0);
-- Participant Lease Duration Latch -- Participant Lease Duration Latch
signal lease_duration, lease_duration_next : DURATION_TYPE; signal lease_duration, lease_duration_next : DURATION_TYPE;
-- Endpoint Lifespan Duration Latch
signal lifespan_duration, lifespan_duration_next : DURATION_TYPE;
-- General Purpose Long latch -- General Purpose Long latch
signal long_latch, long_latch_next : std_logic_vector(CDR_LONG_WIDTH-1 downto 0); signal long_latch, long_latch_next : std_logic_vector(CDR_LONG_WIDTH-1 downto 0);
-- Contains flags that signify which PIDs where received. This is done in order to use the default value for -- Contains flags that signify which PIDs where received. This is done in order to use the default value for
@ -595,6 +597,7 @@ begin
-- LATCH_LOCATOR Store Locator. NOTE: Only Metatraffic and User Locators are differentiated. Unicast and Multicast are overwriting each other and the last parsed is the one to be used. -- LATCH_LOCATOR Store Locator. NOTE: Only Metatraffic and User Locators are differentiated. Unicast and Multicast are overwriting each other and the last parsed is the one to be used.
-- LATCH_EXPECTS_INLINE_QOS Store 'expectsInlineQoS' Flag -- LATCH_EXPECTS_INLINE_QOS Store 'expectsInlineQoS' Flag
-- LATCH_LEASE_DURATION Store remote Participant Lease Duration -- LATCH_LEASE_DURATION Store remote Participant Lease Duration
-- LATCH_LIFESPAN_DURATION Store remote Endpoint Lifespan Duration
-- CHECK_REMOTE_BUILTIN_ENDPOINTS Check if the remote Participant has the required built-in Endpoints -- CHECK_REMOTE_BUILTIN_ENDPOINTS Check if the remote Participant has the required built-in Endpoints
-- RXO_DURABILITY Check Compatibility of Durability QoS -- RXO_DURABILITY Check Compatibility of Durability QoS
-- RXO_DEADLINE Check Compatibility of Deadline QoS -- RXO_DEADLINE Check Compatibility of Deadline QoS
@ -650,6 +653,7 @@ begin
participant_match_next <= participant_match; participant_match_next <= participant_match;
is_subscriber_next <= is_subscriber; is_subscriber_next <= is_subscriber;
lease_duration_next <= lease_duration; lease_duration_next <= lease_duration;
lifespan_duration_next <= lifespan_duration;
def_mc_addr_next <= def_mc_addr; def_mc_addr_next <= def_mc_addr;
def_uc_addr_next <= def_uc_addr; def_uc_addr_next <= def_uc_addr;
meta_mc_addr_next <= meta_mc_addr; meta_mc_addr_next <= meta_mc_addr;
@ -803,6 +807,7 @@ begin
def_mc_port_next <= UDP_PORT_INVALID; def_mc_port_next <= UDP_PORT_INVALID;
def_uc_port_next <= UDP_PORT_INVALID; def_uc_port_next <= UDP_PORT_INVALID;
lease_duration_next <= DEFAULT_PARTICIPANT_LEASE_DURATION; lease_duration_next <= DEFAULT_PARTICIPANT_LEASE_DURATION;
lifespan_duration_next <= DURATION_INFINITE;
reader_flags_next <= (READER_EXPECTS_INLINE_QOS_FLAG => DEFAULT_EXPECTS_INLINE_QOS, READER_EXPECTS_HISTORICAL_DATA_FLAG => DEFAULT_EXPECTS_HISTORICAL_DATA_FLAG, READER_IS_BEST_EFFORT_FLAG => DEFAULT_IS_BEST_EFFORT_FLAG, others => '0'); reader_flags_next <= (READER_EXPECTS_INLINE_QOS_FLAG => DEFAULT_EXPECTS_INLINE_QOS, READER_EXPECTS_HISTORICAL_DATA_FLAG => DEFAULT_EXPECTS_HISTORICAL_DATA_FLAG, READER_IS_BEST_EFFORT_FLAG => DEFAULT_IS_BEST_EFFORT_FLAG, others => '0');
rcvd_next <= (others => '0'); rcvd_next <= (others => '0');
ud_status_next <= '0'; ud_status_next <= '0';
@ -2263,9 +2268,12 @@ begin
-- Ignore -- Ignore
null; null;
when PID_LIFESPAN => when PID_LIFESPAN =>
-- Ignore -- Ignore in-line QoS
-- NOTE: Lifespan is requested via in-line QoS and handled directly by the endpoint -- Only relevant for Endpoint Discovery Protocol
null; if(qos_flag = '0' and message_type = EDP) then
stage_next <= LATCH_LIFESPAN_DURATION;
cnt_next <= 0;
end if;
when PID_DURABILITY_SERVICE => when PID_DURABILITY_SERVICE =>
-- Ignore -- Ignore
null; null;
@ -2697,6 +2705,24 @@ begin
null; null;
end case; end case;
end if; end if;
when LATCH_LIFESPAN_DURATION =>
-- Input FIFO Guard
if (empty = '0') then
rd_guard := '1';
-- Latch Lease Duration
case (cnt) is
when 0 =>
lifespan_duration_next(0) <= unsigned(data_in_swapped);
cnt_next <= cnt + 1;
when 1 =>
lifespan_duration_next(1) <= unsigned(data_in_swapped);
-- DONE
stage_next <= SKIP_PARAMETER;
when others =>
null;
end case;
end if;
when CHECK_REMOTE_BUILTIN_ENDPOINTS => when CHECK_REMOTE_BUILTIN_ENDPOINTS =>
-- Input FIFO Guard -- Input FIFO Guard
if (empty = '0') then if (empty = '0') then
@ -3132,7 +3158,6 @@ begin
when 6 => when 6 =>
-- Default -- Default
data_out_sig <= (others => '0'); data_out_sig <= (others => '0');
last_word_out_sig <= '1';
-- If Endpoint did not set Port, use Participant Default -- If Endpoint did not set Port, use Participant Default
if (def_port /= UDP_PORT_INVALID) then if (def_port /= UDP_PORT_INVALID) then
@ -3142,8 +3167,23 @@ begin
end if; end if;
if (is_subscriber = '1') then if (is_subscriber = '1') then
last_word_out_sig <= '1';
data_out_sig(15 downto 0) <= reader_flags; data_out_sig(15 downto 0) <= reader_flags;
-- DONE
stage_next <= INFORM_ENDPOINTS_UNMATCH;
cnt_next <= 0;
else
cnt_next <= cnt + 1;
end if; end if;
-- Lifespan Duration 1/2
when 7 =>
data_out_sig <= std_logic_vector(lifespan_duration(0));
cnt_next <= cnt + 1;
-- Lifespan Duration 2/2
when 8 =>
last_word_out_sig <= '1';
data_out_sig <= std_logic_vector(lifespan_duration(1));
-- DONE -- DONE
stage_next <= INFORM_ENDPOINTS_UNMATCH; stage_next <= INFORM_ENDPOINTS_UNMATCH;
@ -6107,6 +6147,7 @@ begin
live_gap_start <= to_double_word(to_unsigned(2, 64)); live_gap_start <= to_double_word(to_unsigned(2, 64));
live_gap_end <= FIRST_SEQUENCENUMBER; live_gap_end <= FIRST_SEQUENCENUMBER;
lease_duration <= DURATION_ZERO; lease_duration <= DURATION_ZERO;
lifespan_duration <= DURATION_ZERO;
check_time <= TIME_INVALID; check_time <= TIME_INVALID;
announcement_time <= time + PARTICIPANT_ANNOUNCEMENT_PERIOD; announcement_time <= time + PARTICIPANT_ANNOUNCEMENT_PERIOD;
heartbeat_time <= time + HEARTBEAT_PERIOD; heartbeat_time <= time + HEARTBEAT_PERIOD;
@ -6174,6 +6215,7 @@ begin
live_gap_start <= live_gap_start_next; live_gap_start <= live_gap_start_next;
live_gap_end <= live_gap_end_next; live_gap_end <= live_gap_end_next;
lease_duration <= lease_duration_next; lease_duration <= lease_duration_next;
lifespan_duration <= lifespan_duration_next;
check_time <= check_time_next; check_time <= check_time_next;
announcement_time <= announcement_time_next; announcement_time <= announcement_time_next;
heartbeat_time <= heartbeat_time_next; heartbeat_time <= heartbeat_time_next;

View File

@ -69,9 +69,9 @@ architecture arch of rtps_reader is
variable ret : natural := 0; variable ret : natural := 0;
begin begin
if (qos = RELIABLE_RELIABILITY_QOS) then if (qos = RELIABLE_RELIABILITY_QOS) then
ret := 12; ret := 14;
else else
ret := 8; ret := 10;
end if; end if;
return ret; return ret;
end function; end function;
@ -89,14 +89,15 @@ architecture arch of rtps_reader is
-- *ENDPOINT MEMORY FRAME FIELD FLAGS* -- *ENDPOINT MEMORY FRAME FIELD FLAGS*
-- Flags mapping to the respective Endpoint Memory Frame Fields -- Flags mapping to the respective Endpoint Memory Frame Fields
constant EMF_FLAG_WIDTH : natural := 7; constant EMF_FLAG_WIDTH : natural := 8;
constant EMF_ENTITYID_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (0 => '1', others => '0'); constant EMF_ENTITYID_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (0 => '1', others => '0');
constant EMF_GUIDPREFIX_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (1 => '1', others => '0'); constant EMF_GUIDPREFIX_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (1 => '1', others => '0');
constant EMF_IPV4_ADDR_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (2 => '1', others => '0'); constant EMF_IPV4_ADDR_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (2 => '1', others => '0');
constant EMF_UDP_PORT_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (3 => '1', others => '0'); constant EMF_UDP_PORT_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (3 => '1', others => '0');
constant EMF_NEXT_SEQ_NR_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (4 => '1', others => '0'); constant EMF_NEXT_SEQ_NR_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (4 => '1', others => '0');
constant EMF_LEASE_DEADLINE_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (5 => '1', others => '0'); constant EMF_LEASE_DEADLINE_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (5 => '1', others => '0');
constant EMF_RES_TIME_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (6 => '1', others => '0'); constant EMF_LIFESPAN_DURATION_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (6 => '1', others => '0');
constant EMF_RES_TIME_FLAG : std_logic_vector(0 to EMF_FLAG_WIDTH-1) := (7 => '1', others => '0');
-- *ENDPOINT MEMORY FRAME FIELD OFFSETS* -- *ENDPOINT MEMORY FRAME FIELD OFFSETS*
-- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame -- 4-Byte Word Offsets to Beginning of Respective Fields in the Endpoint Memory Frame
@ -116,13 +117,14 @@ architecture arch of rtps_reader is
end function; end function;
constant EMF_NEXT_SEQ_NR_OFFSET : natural := gen_emf_next_seq_nr_offset(RELIABILITY_QOS); constant EMF_NEXT_SEQ_NR_OFFSET : natural := gen_emf_next_seq_nr_offset(RELIABILITY_QOS);
constant EMF_LEASE_DEADLINE_OFFSET : natural := EMF_NEXT_SEQ_NR_OFFSET + 2; constant EMF_LEASE_DEADLINE_OFFSET : natural := EMF_NEXT_SEQ_NR_OFFSET + 2;
constant EMF_RES_TIME_OFFSET : natural := EMF_LEASE_DEADLINE_OFFSET + 2; constant EMF_LIFESPAN_DURATION_OFFSET : natural := EMF_LEASE_DEADLINE_OFFSET + 2;
constant EMF_RES_TIME_OFFSET : natural := EMF_LIFESPAN_DURATION_OFFSET + 2;
--*****TYPE DECLARATION***** --*****TYPE DECLARATION*****
-- FSM states. Explained below in detail -- FSM states. Explained below in detail
type STAGE_TYPE is (IDLE, LATCH_GUIDPREFIX, LATCH_ENTITYID, INITIATE_ENDPOINT_SEARCH, LATCH_ENDPOINT_DATA, METATRAFFIC_OPERATION, LATCH_SRC_ADDR, type STAGE_TYPE is (IDLE, LATCH_GUIDPREFIX, LATCH_ENTITYID, INITIATE_ENDPOINT_SEARCH, LATCH_ENDPOINT_DATA, METATRAFFIC_OPERATION, LATCH_SRC_ADDR,
LATCH_EXTRA_DATA, LATCH_HEARTBEAT, PROCESS_HEARTBEAT, LATCH_GAP, PROCESS_GAP, FIND_NEXT_VALID_IN_BITMAP, PROCESS_INLINE_QOS, LATCH_LIFESPAN, LATCH_EXTRA_DATA, LATCH_HEARTBEAT, PROCESS_HEARTBEAT, LATCH_GAP, PROCESS_GAP, FIND_NEXT_VALID_IN_BITMAP, PROCESS_INLINE_QOS,
LATCH_KEY_HASH, LATCH_STATUS_INFO, INITIATE_ADD_CACHE_CHANGE_REQUEST, ADD_CACHE_CHANGE, PUSH_PAYLOAD, FINALIZE_ADD_CACHE_CHANGE_REQUEST, LATCH_KEY_HASH, LATCH_STATUS_INFO, INITIATE_ADD_CACHE_CHANGE_REQUEST, ADD_CACHE_CHANGE, PUSH_PAYLOAD, FINALIZE_ADD_CACHE_CHANGE_REQUEST,
ENDPOINT_STALE_CHECK, SEND_HEADER, SEND_ACKNACK, SKIP_PARAMETER, SKIP_PACKET, SKIP_META_OPERATION); ENDPOINT_STALE_CHECK, SEND_HEADER, SEND_ACKNACK, SKIP_PARAMETER, SKIP_PACKET, SKIP_META_OPERATION);
-- Memory FSM states. Explained below in detail -- Memory FSM states. Explained below in detail
@ -151,6 +153,7 @@ architecture arch of rtps_reader is
portn : std_logic_vector(UDP_PORT_WIDTH-1 downto 0); portn : std_logic_vector(UDP_PORT_WIDTH-1 downto 0);
next_seq_nr : SEQUENCENUMBER_TYPE; next_seq_nr : SEQUENCENUMBER_TYPE;
lease_deadline : TIME_TYPE; lease_deadline : TIME_TYPE;
lifespan : DURATION_TYPE;
res_time : TIME_TYPE; res_time : TIME_TYPE;
end record; end record;
-- Zero initialized Endpoint Data -- Zero initialized Endpoint Data
@ -160,6 +163,7 @@ architecture arch of rtps_reader is
portn => UDP_PORT_INVALID, portn => UDP_PORT_INVALID,
next_seq_nr => SEQUENCENUMBER_UNKNOWN, next_seq_nr => SEQUENCENUMBER_UNKNOWN,
lease_deadline => TIME_INVALID, lease_deadline => TIME_INVALID,
lifespan => DURATION_INFINITE,
res_time => TIME_INVALID res_time => TIME_INVALID
); );
-- Endpoint Data Latch used as temporal cache by Memory Process -- Endpoint Data Latch used as temporal cache by Memory Process
@ -168,6 +172,7 @@ architecture arch of rtps_reader is
addr : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0); addr : std_logic_vector(IPv4_ADDRESS_WIDTH-1 downto 0);
portn : std_logic_vector(UDP_PORT_WIDTH-1 downto 0); portn : std_logic_vector(UDP_PORT_WIDTH-1 downto 0);
lease_deadline : TIME_TYPE; lease_deadline : TIME_TYPE;
lifespan : DURATION_TYPE;
res_time : TIME_TYPE; res_time : TIME_TYPE;
next_seq_nr : SEQUENCENUMBER_TYPE; next_seq_nr : SEQUENCENUMBER_TYPE;
field_flag : std_logic_vector(0 to EMF_FLAG_WIDTH-1); field_flag : std_logic_vector(0 to EMF_FLAG_WIDTH-1);
@ -178,6 +183,7 @@ architecture arch of rtps_reader is
addr => IPv4_ADDRESS_INVALID, addr => IPv4_ADDRESS_INVALID,
portn => UDP_PORT_INVALID, portn => UDP_PORT_INVALID,
lease_deadline => TIME_INVALID, lease_deadline => TIME_INVALID,
lifespan => DURATION_INFINITE,
res_time => TIME_INVALID, res_time => TIME_INVALID,
next_seq_nr => SEQUENCENUMBER_UNKNOWN, next_seq_nr => SEQUENCENUMBER_UNKNOWN,
field_flag => (others => '0') field_flag => (others => '0')
@ -222,7 +228,7 @@ architecture arch of rtps_reader is
signal key_hash_rcvd, key_hash_rcvd_next : std_logic; signal key_hash_rcvd, key_hash_rcvd_next : std_logic;
-- Status Info Latch -- Status Info Latch
signal status_info, status_info_next : std_logic_vector(STATUS_INFO_WIDTH-1 downto 0); signal status_info, status_info_next : std_logic_vector(STATUS_INFO_WIDTH-1 downto 0);
-- Lifespan Latch -- Lifespan Latch (Contains Lifespan Duration during meta parsing, and Lifespan Deadline during user parsing)
signal lifespan, lifespan_next : TIME_TYPE; signal lifespan, lifespan_next : TIME_TYPE;
-- RTPS Sequence Number Latch -- RTPS Sequence Number Latch
signal seq_nr, seq_nr_next : SEQUENCENUMBER_TYPE; signal seq_nr, seq_nr_next : SEQUENCENUMBER_TYPE;
@ -281,7 +287,7 @@ architecture arch of rtps_reader is
-- Highest Endpoint Memory Address (Points to first Address of last occupied Endpoint Frame) -- Highest Endpoint Memory Address (Points to first Address of last occupied Endpoint Frame)
signal max_endpoint_addr, max_endpoint_addr_next : unsigned(ENDPOINT_MEMORY_ADDR_WIDTH-1 downto 0); signal max_endpoint_addr, max_endpoint_addr_next : unsigned(ENDPOINT_MEMORY_ADDR_WIDTH-1 downto 0);
-- General Purpose Couter -- General Purpose Couter
signal mem_cnt, mem_cnt_next : natural range 0 to 23; signal mem_cnt, mem_cnt_next : natural range 0 to 27;
-- Latch for Endpoint Data from Memory -- Latch for Endpoint Data from Memory
signal mem_endpoint_data, mem_endpoint_data_next : ENDPOINT_DATA_TYPE; signal mem_endpoint_data, mem_endpoint_data_next : ENDPOINT_DATA_TYPE;
-- Latch for Endpoint Data from main process -- Latch for Endpoint Data from main process
@ -385,7 +391,6 @@ begin
-- PROCESS_GAP Parse RTPS GAP Submsessage. Initiates search for next valid Sequence Number if currently expected Sequence Number is in GAP -- PROCESS_GAP Parse RTPS GAP Submsessage. Initiates search for next valid Sequence Number if currently expected Sequence Number is in GAP
-- FIND_NEXT_VALID_IN_BITMAP Iterate through Bitmap and find the next valid Sequence Number. -- FIND_NEXT_VALID_IN_BITMAP Iterate through Bitmap and find the next valid Sequence Number.
-- PROCESS_INLINE_QOS Parse in-line Parameter List QoS -- PROCESS_INLINE_QOS Parse in-line Parameter List QoS
-- LATCH_LIFESPAN Store LIFESPAN_QOS
-- LATCH_KEY_HASH Store KEY_HASH -- LATCH_KEY_HASH Store KEY_HASH
-- LATCH_STATUS_INFO Store STATUS_INFO -- LATCH_STATUS_INFO Store STATUS_INFO
-- INITIATE_ADD_CACHE_CHANGE_REQUEST Initiate an ADD_CACHE_CHANGE Operation -- INITIATE_ADD_CACHE_CHANGE_REQUEST Initiate an ADD_CACHE_CHANGE Operation
@ -636,7 +641,7 @@ begin
case (opcode) is case (opcode) is
when SID_DATA => when SID_DATA =>
stage_next <= LATCH_EXTRA_DATA; stage_next <= LATCH_EXTRA_DATA;
mem_field_flags <= EMF_NEXT_SEQ_NR_FLAG; mem_field_flags <= EMF_NEXT_SEQ_NR_FLAG or EMF_LIFESPAN_DURATION_FLAG;
cnt_next <= 0; cnt_next <= 0;
when SID_HEARTBEAT => when SID_HEARTBEAT =>
stage_next <= LATCH_HEARTBEAT; stage_next <= LATCH_HEARTBEAT;
@ -665,8 +670,18 @@ begin
when 1 => when 1 =>
--assert (last_word_in_meta = '1') report "last_word_in_meta not set" severity FAILURE; --assert (last_word_in_meta = '1') report "last_word_in_meta not set" severity FAILURE;
-- NOTE: Reader Flags are ignored, since they are only relevant for Writer Endpoints
portn_next <= data_in_meta(WORD_WIDTH-1 downto WORD_WIDTH-UDP_PORT_WIDTH); portn_next <= data_in_meta(WORD_WIDTH-1 downto WORD_WIDTH-UDP_PORT_WIDTH);
cnt_next <= cnt + 1;
-- Lifespan Duration 1/2
when 2 =>
lifespan_next(0) <= unsigned(data_in_meta);
cnt_next <= cnt + 1;
-- Lifespan Duration 2/2
when 3 =>
lifespan_next(1) <= unsigned(data_in_meta);
stage_next <= METATRAFFIC_OPERATION; stage_next <= METATRAFFIC_OPERATION;
when others => when others =>
null; null;
@ -679,13 +694,15 @@ begin
when EMO_ENDPOINT_MATCH => when EMO_ENDPOINT_MATCH =>
-- Endpoint already in Memory -- Endpoint already in Memory
if (mem_addr_base /= ENDPOINT_MEMORY_MAX_ADDRESS) then if (mem_addr_base /= ENDPOINT_MEMORY_MAX_ADDRESS) then
-- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
-- Update the Endpoint Data -- Update the Endpoint Data
-- NOTE: The Lease Duration is NOT updated in case of an update. That is the responsibility of the Liveliness Update -- NOTE: The Lease Duration is NOT updated in case of an update. That is the responsibility of the Liveliness Update
mem_op_start <= '1'; mem_op_start <= '1';
mem_opcode <= UPDATE_ENDPOINT; mem_opcode <= UPDATE_ENDPOINT;
mem_field_flags <= EMF_IPV4_ADDR_FLAG or EMF_UDP_PORT_FLAG; -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_field_flags <= EMF_IPV4_ADDR_FLAG or EMF_UDP_PORT_FLAG or EMF_LIFESPAN_DURATION_FLAG;
else
mem_field_flags <= EMF_LIFESPAN_DURATION_FLAG;
end if; end if;
-- DONE -- DONE
stage_next <= IDLE; stage_next <= IDLE;
@ -1135,8 +1152,8 @@ begin
-- Ignore -- Ignore
null; null;
when PID_LIFESPAN => when PID_LIFESPAN =>
stage_next <= LATCH_LIFESPAN; -- Ignore
cnt_next <= 0; null;
when PID_CONTENT_FILTER_INFO => when PID_CONTENT_FILTER_INFO =>
-- Ignore -- Ignore
null; null;
@ -1185,35 +1202,6 @@ begin
end if; end if;
end case; end case;
end if; end if;
when LATCH_LIFESPAN =>
-- Input FIFO Guard
if (empty_user = '0') then
rd_guard := '1';
case (cnt) is
-- Lifespan 1/2
when 0 =>
-- NOTE: We are misusing the sn_latch_1 as temporal CDR_LONG storage
sn_latch_1_next(0) <= unsigned(data_in_swapped);
cnt_next <= cnt + 1;
-- Lifespan 2/2
when 1 =>
tmp_dw := (0 => sn_latch_1(0), 1 => unsigned(data_in_swapped));
-- TODO: Use source timestamp if clocks with remote synchronized
-- Calculate Sample Lifespan Deadline
if (tmp_dw /= DURATION_INFINITE) then
lifespan_next <= time + tmp_dw;
else
lifespan_next <= TIME_INVALID;
end if;
-- DONE
stage_next <= SKIP_PARAMETER;
when others =>
null;
end case;
end if;
when LATCH_KEY_HASH => when LATCH_KEY_HASH =>
-- Input FIFO Guard -- Input FIFO Guard
if (empty_user = '0') then if (empty_user = '0') then
@ -1253,11 +1241,11 @@ begin
stage_next <= SKIP_PARAMETER; stage_next <= SKIP_PARAMETER;
end if; end if;
when INITIATE_ADD_CACHE_CHANGE_REQUEST => when INITIATE_ADD_CACHE_CHANGE_REQUEST =>
-- Precondition: mem_endpoint_data set (EMF_NEXT_SEQ_NR_FLAG) -- Precondition: mem_endpoint_data set (EMF_NEXT_SEQ_NR_FLAG, EMF_LIFESPAN_DURATION_FLAG)
-- Wait for Endpoint Data -- Wait for Endpoint Data
if (mem_op_done = '1') then if (mem_op_done = '1') then
assert check_mask(current_emf, EMF_NEXT_SEQ_NR_FLAG) severity FAILURE; assert check_mask(current_emf, EMF_NEXT_SEQ_NR_FLAG or EMF_LIFESPAN_DURATION_FLAG) severity FAILURE;
-- Unknown Endpoint -- Unknown Endpoint
if (mem_addr_base = ENDPOINT_MEMORY_MAX_ADDRESS) then if (mem_addr_base = ENDPOINT_MEMORY_MAX_ADDRESS) then
@ -1275,6 +1263,12 @@ begin
opcode_hc <= ADD_CACHE_CHANGE; opcode_hc <= ADD_CACHE_CHANGE;
-- Wait until History Cache acknowledges request -- Wait until History Cache acknowledges request
if (ack_hc = '1') then if (ack_hc = '1') then
-- TODO: Use source timestamp if clocks with remote synchronized
-- Calculate Sample Lifespan Deadline
if (mem_endpoint_data.lifespan /= DURATION_INFINITE) then
lifespan_next <= time + mem_endpoint_data.lifespan;
end if;
stage_next <= ADD_CACHE_CHANGE; stage_next <= ADD_CACHE_CHANGE;
cnt_next <= 0; cnt_next <= 0;
end if; end if;
@ -1808,6 +1802,7 @@ begin
addr => addr_next, addr => addr_next,
portn => portn_next, portn => portn_next,
lease_deadline => lease_deadline, lease_deadline => lease_deadline,
lifespan => lifespan_next,
res_time => res_time, res_time => res_time,
next_seq_nr => next_seq_nr_next, next_seq_nr => next_seq_nr_next,
field_flag => mem_field_flags field_flag => mem_field_flags
@ -1835,6 +1830,7 @@ begin
mem_endpoint_data_next.next_seq_nr <= FIRST_SEQUENCENUMBER; mem_endpoint_data_next.next_seq_nr <= FIRST_SEQUENCENUMBER;
end if; end if;
mem_endpoint_data_next.lease_deadline <= lease_deadline; mem_endpoint_data_next.lease_deadline <= lease_deadline;
mem_endpoint_data_next.lifespan <= lifespan_next;
mem_endpoint_data_next.res_time <= TIME_INVALID; mem_endpoint_data_next.res_time <= TIME_INVALID;
mem_addr_base_next <= FIRST_ENDPOINT_ADDRESS; mem_addr_base_next <= FIRST_ENDPOINT_ADDRESS;
@ -1853,8 +1849,10 @@ begin
mem_cnt_next <= 2; mem_cnt_next <= 2;
elsif check_mask(mem_field_flags,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_field_flags,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 4; mem_cnt_next <= 4;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_field_flags,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_field_flags,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_field_flags,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 8;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -1908,8 +1906,10 @@ begin
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif check_mask(mem_field_flags,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_field_flags,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_field_flags,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_field_flags,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_field_flags,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -2061,8 +2061,10 @@ begin
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -2092,10 +2094,12 @@ begin
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
else elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12; mem_cnt_next <= 12;
else
mem_cnt_next <= 14;
end if; end if;
end if; end if;
-- GET GUID Prefix 1/3 -- GET GUID Prefix 1/3
@ -2131,13 +2135,15 @@ begin
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
else elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 12; mem_cnt_next <= 12;
else else
mem_cnt_next <= 13; if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 14;
else
mem_cnt_next <= 15;
end if; end if;
end if; end if;
end if; end if;
@ -2156,15 +2162,17 @@ begin
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif ((RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
elsif ((RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else else
if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 12; mem_cnt_next <= 14;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then
mem_cnt_next <= 13; mem_cnt_next <= 15;
else else
mem_cnt_next <= 16; mem_cnt_next <= 18;
end if; end if;
end if; end if;
end if; end if;
@ -2182,17 +2190,19 @@ begin
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else else
if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 12; mem_cnt_next <= 14;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then
mem_cnt_next <= 13; mem_cnt_next <= 15;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then
mem_cnt_next <= 16; mem_cnt_next <= 18;
else else
mem_cnt_next <= 17; mem_cnt_next <= 19;
end if; end if;
end if; end if;
end if; end if;
@ -2215,19 +2225,21 @@ begin
if (mem_ready_in = '1') then if (mem_ready_in = '1') then
if check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else else
if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 12; mem_cnt_next <= 14;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then
mem_cnt_next <= 13; mem_cnt_next <= 15;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then
mem_cnt_next <= 16;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 17;
else
mem_cnt_next <= 18; mem_cnt_next <= 18;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 19;
else
mem_cnt_next <= 20;
end if; end if;
end if; end if;
end if; end if;
@ -2247,26 +2259,64 @@ begin
mem_read <= '1'; mem_read <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_ready_in = '1') then if (mem_ready_in = '1') then
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else else
if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 12; mem_cnt_next <= 14;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then
mem_cnt_next <= 13; mem_cnt_next <= 15;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then
mem_cnt_next <= 16;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 17;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 18; mem_cnt_next <= 18;
else elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 19;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 20; mem_cnt_next <= 20;
else
mem_cnt_next <= 22;
end if;
end if;
end if;
-- GET Lifespan Duration 1/2
when 10 =>
mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_LIFESPAN_DURATION_OFFSET;
mem_read <= '1';
-- Memory Flow Control Guard
if (mem_ready_in = '1') then
mem_cnt_next <= mem_cnt + 1;
end if;
-- GET Lifespan Duration 2/2
when 11 =>
mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_LIFESPAN_DURATION_OFFSET + 1;
mem_read <= '1';
-- Memory Flow Control Guard
if (mem_ready_in = '1') then
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else
if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 14;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then
mem_cnt_next <= 15;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then
mem_cnt_next <= 18;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 19;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 20;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 22;
else
mem_cnt_next <= 24;
end if; end if;
end if; end if;
end if; end if;
-- GET Response Time 1/2 -- GET Response Time 1/2
when 10 => when 12 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_valid_in <= '1'; mem_valid_in <= '1';
@ -2278,7 +2328,7 @@ begin
end if; end if;
end if; end if;
-- GET Response Time 2/2 -- GET Response Time 2/2
when 11 => when 13 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_valid_in <= '1'; mem_valid_in <= '1';
@ -2287,48 +2337,52 @@ begin
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_ready_in = '1') then if (mem_ready_in = '1') then
if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_ENTITYID_FLAG) then
mem_cnt_next <= 12; mem_cnt_next <= 14;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then
mem_cnt_next <= 13; mem_cnt_next <= 15;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then
mem_cnt_next <= 16;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 17;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 18; mem_cnt_next <= 18;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 19;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 20; mem_cnt_next <= 20;
else elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 22; mem_cnt_next <= 22;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 24;
else
mem_cnt_next <= 26;
end if; end if;
end if; end if;
end if; end if;
-- READ Entity ID -- READ Entity ID
when 12 => when 14 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
mem_endpoint_data_next.guid(3) <= mem_read_data; mem_endpoint_data_next.guid(3) <= mem_read_data;
if check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_GUIDPREFIX_FLAG) then
mem_cnt_next <= 13; mem_cnt_next <= 15;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then
mem_cnt_next <= 16;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 17;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 18; mem_cnt_next <= 18;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 19;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 20; mem_cnt_next <= 20;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 22; mem_cnt_next <= 22;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 24;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 26;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
end if; end if;
end if; end if;
-- READ GUID Prefix 1/3 -- READ GUID Prefix 1/3
when 13 => when 15 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
@ -2337,7 +2391,7 @@ begin
mem_cnt_next <= mem_cnt + 1; mem_cnt_next <= mem_cnt + 1;
end if; end if;
-- READ GUID Prefix 2/3 -- READ GUID Prefix 2/3
when 14 => when 16 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
@ -2346,29 +2400,31 @@ begin
mem_cnt_next <= mem_cnt + 1; mem_cnt_next <= mem_cnt + 1;
end if; end if;
-- READ GUID Prefix 3/3 -- READ GUID Prefix 3/3
when 15 => when 17 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
mem_endpoint_data_next.guid(2) <= mem_read_data; mem_endpoint_data_next.guid(2) <= mem_read_data;
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_IPV4_ADDR_FLAG)) then
mem_cnt_next <= 16;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 17;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 18; mem_cnt_next <= 18;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 19;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 20; mem_cnt_next <= 20;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 22; mem_cnt_next <= 22;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 24;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 26;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
end if; end if;
end if; end if;
-- READ IPv4 Address -- READ IPv4 Address
when 16 => when 18 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_ready_out <= '1'; mem_ready_out <= '1';
@ -2377,13 +2433,15 @@ begin
mem_endpoint_data_next.addr <= mem_read_data; mem_endpoint_data_next.addr <= mem_read_data;
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_UDP_PORT_FLAG)) then
mem_cnt_next <= 17; mem_cnt_next <= 19;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 18;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 20; mem_cnt_next <= 20;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 22; mem_cnt_next <= 22;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 24;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 26;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -2391,7 +2449,7 @@ begin
end if; end if;
end if; end if;
-- READ UDP Port -- READ UDP Port
when 17 => when 19 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_ready_out <= '1'; mem_ready_out <= '1';
@ -2400,11 +2458,13 @@ begin
mem_endpoint_data_next.portn <= mem_read_data(WORD_WIDTH-1 downto WORD_WIDTH-UDP_PORT_WIDTH); mem_endpoint_data_next.portn <= mem_read_data(WORD_WIDTH-1 downto WORD_WIDTH-UDP_PORT_WIDTH);
if check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_NEXT_SEQ_NR_FLAG) then
mem_cnt_next <= 18;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 20; mem_cnt_next <= 20;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 22; mem_cnt_next <= 22;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 24;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 26;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -2412,7 +2472,7 @@ begin
end if; end if;
end if; end if;
-- READ Next Sequence Number 1/2 -- READ Next Sequence Number 1/2
when 18 => when 20 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
@ -2421,23 +2481,25 @@ begin
mem_cnt_next <= mem_cnt + 1; mem_cnt_next <= mem_cnt + 1;
end if; end if;
-- READ Next Sequence Number 2/2 -- READ Next Sequence Number 2/2
when 19 => when 21 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
mem_endpoint_data_next.next_seq_nr(1) <= unsigned(mem_read_data); mem_endpoint_data_next.next_seq_nr(1) <= unsigned(mem_read_data);
if check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 20;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 22; mem_cnt_next <= 22;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 24;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 26;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
end if; end if;
end if; end if;
-- READ Lease Deadline 1/2 -- READ Lease Deadline 1/2
when 20 => when 22 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
@ -2446,21 +2508,46 @@ begin
mem_cnt_next <= mem_cnt + 1; mem_cnt_next <= mem_cnt + 1;
end if; end if;
-- READ Lease Deadline 2/2 -- READ Lease Deadline 2/2
when 21 => when 23 =>
mem_ready_out <= '1'; mem_ready_out <= '1';
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_valid_out = '1') then if (mem_valid_out = '1') then
mem_endpoint_data_next.lease_deadline(1) <= unsigned(mem_read_data); mem_endpoint_data_next.lease_deadline(1) <= unsigned(mem_read_data);
if check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 24;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 26;
else
-- DONE
mem_stage_next <= IDLE;
end if;
end if;
-- READ Lifespan Duration 1/2
when 24 =>
mem_ready_out <= '1';
-- Memory Flow Control Guard
if (mem_valid_out = '1') then
mem_endpoint_data_next.lifespan(0) <= unsigned(mem_read_data);
mem_cnt_next <= mem_cnt + 1;
end if;
-- READ Lifespan Duration 2/2
when 25 =>
mem_ready_out <= '1';
-- Memory Flow Control Guard
if (mem_valid_out = '1') then
mem_endpoint_data_next.lifespan(1) <= unsigned(mem_read_data);
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 22; mem_cnt_next <= 26;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
end if; end if;
end if; end if;
-- READ Response Time 1/2 -- READ Response Time 1/2
when 22 => when 26 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_ready_out <= '1'; mem_ready_out <= '1';
@ -2472,7 +2559,7 @@ begin
end if; end if;
end if; end if;
-- READ Response Time 2/2 -- READ Response Time 2/2
when 23 => when 27 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_ready_out <= '1'; mem_ready_out <= '1';
@ -2585,6 +2672,22 @@ begin
mem_valid_in <= '1'; mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_LEASE_DEADLINE_OFFSET + 1; mem_addr <= mem_addr_base + EMF_LEASE_DEADLINE_OFFSET + 1;
mem_write_data <= std_logic_vector(mem_endpoint_latch_data.lease_deadline(1)); mem_write_data <= std_logic_vector(mem_endpoint_latch_data.lease_deadline(1));
if (mem_ready_in = '1') then
mem_cnt_next <= mem_cnt + 1;
end if;
-- Lifespan Duration 1/2
when 10 =>
mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_LIFESPAN_DURATION_OFFSET;
mem_write_data <= std_logic_vector(mem_endpoint_latch_data.lifespan(0));
if (mem_ready_in = '1') then
mem_cnt_next <= mem_cnt + 1;
end if;
-- Lifespan Duration 2/2
when 11 =>
mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_LIFESPAN_DURATION_OFFSET + 1;
mem_write_data <= std_logic_vector(mem_endpoint_latch_data.lifespan(1));
if (mem_ready_in = '1') then if (mem_ready_in = '1') then
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_cnt_next <= mem_cnt + 1; mem_cnt_next <= mem_cnt + 1;
@ -2594,7 +2697,7 @@ begin
end if; end if;
end if; end if;
-- Response Time 1/2 -- Response Time 1/2
when 10 => when 12 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_valid_in <= '1'; mem_valid_in <= '1';
@ -2605,7 +2708,7 @@ begin
end if; end if;
end if; end if;
-- Response Time 2/2 -- Response Time 2/2
when 11 => when 13 =>
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_valid_in <= '1'; mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_RES_TIME_OFFSET + 1; mem_addr <= mem_addr_base + EMF_RES_TIME_OFFSET + 1;
@ -2636,8 +2739,10 @@ begin
mem_cnt_next <= 2; mem_cnt_next <= 2;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 4; mem_cnt_next <= 4;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 8;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -2658,8 +2763,10 @@ begin
mem_cnt_next <= 2; mem_cnt_next <= 2;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 4; mem_cnt_next <= 4;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 8;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -2685,8 +2792,10 @@ begin
if (mem_ready_in = '1') then if (mem_ready_in = '1') then
if check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 4; mem_cnt_next <= 4;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 8;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
@ -2709,15 +2818,41 @@ begin
mem_endpoint_data_next.lease_deadline <= mem_endpoint_latch_data.lease_deadline; mem_endpoint_data_next.lease_deadline <= mem_endpoint_latch_data.lease_deadline;
-- Memory Flow Control Guard -- Memory Flow Control Guard
if (mem_ready_in = '1') then if (mem_ready_in = '1') then
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then if check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 8;
else
-- DONE
mem_stage_next <= IDLE;
end if;
end if;
-- Lifespan Duration 1/2
when 6 =>
mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_LIFESPAN_DURATION_OFFSET;
mem_write_data <= std_logic_vector(mem_endpoint_latch_data.lifespan(0));
-- Memory Flow Control Guard
if (mem_ready_in = '1') then
mem_cnt_next <= mem_cnt + 1;
end if;
-- Lifespan Duration 2/2
when 7 =>
mem_valid_in <= '1';
mem_addr <= mem_addr_base + EMF_LIFESPAN_DURATION_OFFSET + 1;
mem_write_data <= std_logic_vector(mem_endpoint_latch_data.lifespan(1));
mem_endpoint_data_next.lifespan <= mem_endpoint_latch_data.lifespan;
-- Memory Flow Control Guard
if (mem_ready_in = '1') then
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 8;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;
end if; end if;
end if; end if;
-- Response Time 1/2 -- Response Time 1/2
when 6 => when 8 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_valid_in <= '1'; mem_valid_in <= '1';
@ -2729,7 +2864,7 @@ begin
end if; end if;
end if; end if;
-- Response Time 2/2 -- Response Time 2/2
when 7 => when 9 =>
-- Synthesis Guard -- Synthesis Guard
if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then if (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS) then
mem_valid_in <= '1'; mem_valid_in <= '1';
@ -2906,8 +3041,10 @@ begin
mem_cnt_next <= 6; mem_cnt_next <= 6;
elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LEASE_DEADLINE_FLAG) then
mem_cnt_next <= 8; mem_cnt_next <= 8;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then elsif check_mask(mem_endpoint_latch_data.field_flag,EMF_LIFESPAN_DURATION_FLAG) then
mem_cnt_next <= 10; mem_cnt_next <= 10;
elsif (RELIABILITY_QOS = RELIABLE_RELIABILITY_QOS and check_mask(mem_endpoint_latch_data.field_flag,EMF_RES_TIME_FLAG)) then
mem_cnt_next <= 12;
else else
-- DONE -- DONE
mem_stage_next <= IDLE; mem_stage_next <= IDLE;

View File

@ -24,9 +24,9 @@ package rtps_test_package is
-- rtps_builtin_endpoint Participant Frame Size -- rtps_builtin_endpoint Participant Frame Size
constant PARTICIPANT_FRAME_SIZE : natural := 24; constant PARTICIPANT_FRAME_SIZE : natural := 24;
-- rtps_reader Endpoint Frame Size (RELIABLE=TRUE) -- rtps_reader Endpoint Frame Size (RELIABLE=TRUE)
constant WRITER_ENDPOINT_FRAME_SIZE_A : natural := 12; constant WRITER_ENDPOINT_FRAME_SIZE_A : natural := 14;
-- rtps_reader Endpoint Frame Size (RELIABLE=FALSE) -- rtps_reader Endpoint Frame Size (RELIABLE=FALSE)
constant WRITER_ENDPOINT_FRAME_SIZE_B : natural := 8; constant WRITER_ENDPOINT_FRAME_SIZE_B : natural := 10;
-- rtps_writer Endpoint Frame Size (RELIABLE=TRUE) -- rtps_writer Endpoint Frame Size (RELIABLE=TRUE)
constant READER_ENDPOINT_FRAME_SIZE_A : natural := 15; constant READER_ENDPOINT_FRAME_SIZE_A : natural := 15;
-- rtps_writer Endpoint Frame Size (RELIABLE=FALSE) -- rtps_writer Endpoint Frame Size (RELIABLE=FALSE)
@ -473,19 +473,19 @@ package rtps_test_package is
-- pos ID (Memory Position) of Source Remote Writer -- pos ID (Memory Position) of Source Remote Writer
-- output Destination of generated output -- output Destination of generated output
procedure gen_add_cache_change_dds(ref : in CACHE_CHANGE_TYPE; lifespan_deadline : in TIME_TYPE; pos : in natural; output : inout TEST_PACKET_TYPE); procedure gen_add_cache_change_dds(ref : in CACHE_CHANGE_TYPE; lifespan_deadline : in TIME_TYPE; pos : in natural; output : inout TEST_PACKET_TYPE);
-- Generate a rtps_reader memory Participant Frame based on "ref". (A Version)
function gen_reader_endpoint_mem_frame_a (ref : ENDPOINT_DATA_TYPE) return TEST_READER_ENDPOINT_MEMORY_FRAME_TYPE_A;
-- Generate a rtps_reader memory Participant Frame based on "ref". (B Version)
function gen_reader_endpoint_mem_frame_b (ref : ENDPOINT_DATA_TYPE) return TEST_READER_ENDPOINT_MEMORY_FRAME_TYPE_B;
-- *RTPS WRITER*
-- Generate a rtps_writer memory Participant Frame based on "ref". (A Version) -- Generate a rtps_writer memory Participant Frame based on "ref". (A Version)
function gen_writer_endpoint_mem_frame_a (ref : ENDPOINT_DATA_TYPE) return TEST_WRITER_ENDPOINT_MEMORY_FRAME_TYPE_A; function gen_writer_endpoint_mem_frame_a (ref : ENDPOINT_DATA_TYPE) return TEST_WRITER_ENDPOINT_MEMORY_FRAME_TYPE_A;
-- Generate a rtps_writer memory Participant Frame based on "ref". (B Version) -- Generate a rtps_writer memory Participant Frame based on "ref". (B Version)
function gen_writer_endpoint_mem_frame_b (ref : ENDPOINT_DATA_TYPE) return TEST_WRITER_ENDPOINT_MEMORY_FRAME_TYPE_B; function gen_writer_endpoint_mem_frame_b (ref : ENDPOINT_DATA_TYPE) return TEST_WRITER_ENDPOINT_MEMORY_FRAME_TYPE_B;
-- *RTPS WRITER*
-- Generate a rtps_reader memory Participant Frame based on "ref". (A Version)
function gen_reader_endpoint_mem_frame_a (ref : ENDPOINT_DATA_TYPE) return TEST_READER_ENDPOINT_MEMORY_FRAME_TYPE_A;
-- Generate a rtps_reader memory Participant Frame based on "ref". (B Version)
function gen_reader_endpoint_mem_frame_b (ref : ENDPOINT_DATA_TYPE) return TEST_READER_ENDPOINT_MEMORY_FRAME_TYPE_B;
-- *RTPS_HANDLER* -- *RTPS_HANDLER*
-- Generates RTPS_HANDLER output -- Generates RTPS_HANDLER output
-- ref RTPS Submessage -- ref RTPS Submessage
@ -1960,6 +1960,20 @@ package body rtps_test_package is
else else
ret(i).data := (others => '-'); ret(i).data := (others => '-');
end if; end if;
-- Lifespan Duration 1/2
when 10 =>
if (ref.match = MATCH) then
ret(i).data := std_logic_vector(ref.lifespan(0));
else
ret(i).data := (others => '-');
end if;
-- Lifespan Duration 2/2
when 11 =>
if (ref.match = MATCH) then
ret(i).data := std_logic_vector(ref.lifespan(1));
else
ret(i).data := (others => '-');
end if;
-- Other Fields Ignored -- Other Fields Ignored
when others => when others =>
ret(i).data := (others => '-'); ret(i).data := (others => '-');
@ -2013,6 +2027,20 @@ package body rtps_test_package is
else else
ret(i).data := (others => '-'); ret(i).data := (others => '-');
end if; end if;
-- Lifespan Duration 1/2
when 8 =>
if (ref.match = MATCH) then
ret(i).data := std_logic_vector(ref.lifespan(0));
else
ret(i).data := (others => '-');
end if;
-- Lifespan Duration 2/2
when 9 =>
if (ref.match = MATCH) then
ret(i).data := std_logic_vector(ref.lifespan(1));
else
ret(i).data := (others => '-');
end if;
-- Other Fields Ignored -- Other Fields Ignored
when others => when others =>
ret(i).data := (others => '-'); ret(i).data := (others => '-');
@ -2655,6 +2683,13 @@ package body rtps_test_package is
output.data(output.length)(READER_IS_BEST_EFFORT_FLAG) := '1' when (ref.reliability = BEST_EFFORT_RELIABILITY_QOS) else '0'; output.data(output.length)(READER_IS_BEST_EFFORT_FLAG) := '1' when (ref.reliability = BEST_EFFORT_RELIABILITY_QOS) else '0';
end if; end if;
output.length := output.length + 1; output.length := output.length + 1;
-- Lifespan Duration
if (not ref.reader) then
output.data(output.length) := std_logic_vector(ref.lifespan(0));
output.length := output.length + 1;
output.data(output.length) := std_logic_vector(ref.lifespan(1));
output.length := output.length + 1;
end if;
end if; end if;
-- Mark Last Word -- Mark Last Word