* Code cleanup
* Varius fixes * Code Comment
This commit is contained in:
parent
73dbc87c08
commit
74515d0ecc
@ -134,7 +134,7 @@ PARTICICPANT DATA
|
|||||||
+ LEASE_DEADLINE +
|
+ LEASE_DEADLINE +
|
||||||
12| |
|
12| |
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
13|P|S|M| EXTRA_FLAGS |Q|
|
13| UNUSED |P|S|M|Q|
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
14| |
|
14| |
|
||||||
+ ACKNACK_RES_TIME +
|
+ ACKNACK_RES_TIME +
|
||||||
@ -192,7 +192,7 @@ ENDPOINT MATCH FRAME
|
|||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
06| IPv4_ADDRESS |
|
06| IPv4_ADDRESS |
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
07| UDP_PORT | EXTRA_FLAGS |Q|
|
07| UDP_PORT | UNUSED |Q|
|
||||||
+-------------------------------------------------------------+
|
+-------------------------------------------------------------+
|
||||||
|
|
||||||
ENDPOINT UNMATCH FRAME
|
ENDPOINT UNMATCH FRAME
|
||||||
|
|||||||
@ -100,5 +100,11 @@ DESIGN DECISIONS
|
|||||||
* !REJECTED! (Use the unused extra flags in the stored participant data)
|
* !REJECTED! (Use the unused extra flags in the stored participant data)
|
||||||
Use the lowest bit of the Heartbeat/Acknack Deadline stored in the Participant Data to differentiate
|
Use the lowest bit of the Heartbeat/Acknack Deadline stored in the Participant Data to differentiate
|
||||||
between Delay and Suppression. This reduces the resolution from 0.23 ns to 0.47 ns
|
between Delay and Suppression. This reduces the resolution from 0.23 ns to 0.47 ns
|
||||||
|
|
||||||
|
|
||||||
|
-- Input FIFO Guard
|
||||||
|
-- Output FIFO Guard
|
||||||
|
-- Memory Operation Guard
|
||||||
|
-- Ignore in-line QoS
|
||||||
|
-- Only relevant for Endpoint Discovery Protocol
|
||||||
|
-- Check QoS Compatibility (Unmark match on incompatibility)
|
||||||
|
-- COMPATIBLE (DDS v1.4): offered >= requested, with INSTANCE < TOPIC < GROUP
|
||||||
File diff suppressed because it is too large
Load Diff
@ -95,6 +95,7 @@ package rtps_package is
|
|||||||
constant ENDPOINT_TYPE_STRING : ENDPOINT_STRING_TYPE := (0 => "Placeholder" & (12 to 256 => NUL));
|
constant ENDPOINT_TYPE_STRING : ENDPOINT_STRING_TYPE := (0 => "Placeholder" & (12 to 256 => NUL));
|
||||||
constant ENDPOINT_TYPE : ENDPOINT_STRING_SLV_TYPE; -- Deferred to Package Body
|
constant ENDPOINT_TYPE : ENDPOINT_STRING_SLV_TYPE; -- Deferred to Package Body
|
||||||
constant ENDPOINT_DURABILITY : QOS_TYPE := (0 => VOLATILE_DURABILITY_QOS);
|
constant ENDPOINT_DURABILITY : QOS_TYPE := (0 => VOLATILE_DURABILITY_QOS);
|
||||||
|
-- TODO: Make sure GROUP is not selected
|
||||||
constant ENDPOINT_PRESENTATION : QOS_TYPE := (0 => INSTANCE_PRESENTATION_QOS);
|
constant ENDPOINT_PRESENTATION : QOS_TYPE := (0 => INSTANCE_PRESENTATION_QOS);
|
||||||
constant ENDPOINT_COHERENT_ACCESS : std_logic_vector(0 to MAX_ENDPOINTS-1) := (others => '0');
|
constant ENDPOINT_COHERENT_ACCESS : std_logic_vector(0 to MAX_ENDPOINTS-1) := (others => '0');
|
||||||
constant ENDPOINT_ORDERED_ACCESS : std_logic_vector(0 to MAX_ENDPOINTS-1) := (others => '0');
|
constant ENDPOINT_ORDERED_ACCESS : std_logic_vector(0 to MAX_ENDPOINTS-1) := (others => '0');
|
||||||
@ -114,11 +115,25 @@ package rtps_package is
|
|||||||
constant ENDPOINT_MAX_INSTANCES : QOS_SLV_TYPE := (0 => std_logic_vector(to_unsigned(0,32))); --TODO: Assert
|
constant ENDPOINT_MAX_INSTANCES : QOS_SLV_TYPE := (0 => std_logic_vector(to_unsigned(0,32))); --TODO: Assert
|
||||||
constant ENDPOINT_MAX_SAMP_PER_INST : QOS_SLV_TYPE := (0 => std_logic_vector(to_unsigned(0,32))); --TODO: Assert
|
constant ENDPOINT_MAX_SAMP_PER_INST : QOS_SLV_TYPE := (0 => std_logic_vector(to_unsigned(0,32))); --TODO: Assert
|
||||||
|
|
||||||
|
constant ENDPOINT_HEARTBEAT_PERIOD : ENDPOINT_DURATION_TYPE := (0 => (to_unsigned(3,32),to_unsigned(0,32))); -- 3s
|
||||||
|
constant ENDPOINT_HEARTBEAT_RESPONSE_DELAY : ENDPOINT_DURATION_TYPE := (0 => (to_unsigned(0,32),to_unsigned(2147483648,32))); -- 500 ms
|
||||||
|
constant ENDPOINT_HEARTBEAT_SUPPRESSION_DELAY : ENDPOINT_DURATION_TYPE := (0 => (to_unsigned(0,32),to_unsigned(0,32)));
|
||||||
|
constant ENDPOINT_ACKNACK_RESPONSE_DELAY : ENDPOINT_DURATION_TYPE := (0 => (to_unsigned(0,32),to_unsigned(858993459,32))); -- 200 ms
|
||||||
|
constant ENDPOINT_ACKNACK_SUPPRESSION_DELAY : ENDPOINT_DURATION_TYPE := (0 => (to_unsigned(0,32),to_unsigned(0,32)));
|
||||||
|
|
||||||
|
constant PARTICIPANT_HEARTBEAT_PERIOD : DURATION_TYPE := (to_unsigned(3,32),to_unsigned(0,32)); -- 3s
|
||||||
|
constant PARTICIPANT_HEARTBEAT_RESPONSE_DELAY : DURATION_TYPE := (to_unsigned(0,32),to_unsigned(2147483648,32)); -- 500 ms
|
||||||
|
constant PARTICIPANT_HEARTBEAT_SUPPRESSION_DELAY : DURATION_TYPE := (to_unsigned(0,32),to_unsigned(0,32));
|
||||||
|
constant PARTICIPANT_ACKNACK_RESPONSE_DELAY : DURATION_TYPE := (to_unsigned(0,32),to_unsigned(858993459,32)); -- 200 ms
|
||||||
|
constant PARTICIPANT_ACKNACK_SUPPRESSION_DELAY : DURATION_TYPE := (to_unsigned(0,32),to_unsigned(0,32));
|
||||||
|
|
||||||
|
constant DURATION_DELTA : DURATION_TYPE := (to_unsigned(0,32),to_unsigned(429496730,32)); --100 ms
|
||||||
|
|
||||||
constant DEFAULT_PARTICIPANT_LEASE_DURATION : DOUBLE_WORD_ARRAY := (to_unsigned(100,32),to_unsigned(0,32);
|
constant DEFAULT_PARTICIPANT_LEASE_DURATION : DOUBLE_WORD_ARRAY := (to_unsigned(100,32),to_unsigned(0,32);
|
||||||
constant PARTICIPANT_LEASE_DURATION : DOUBLE_WORD_ARRAY := DEFAULT_PARTICIPANT_LEASE_DURATION;
|
constant PARTICIPANT_LEASE_DURATION : DOUBLE_WORD_ARRAY := DEFAULT_PARTICIPANT_LEASE_DURATION;
|
||||||
|
|
||||||
-- NOTE: The buffer will not only store participants, but also endpoint data
|
-- NOTE: The buffer will not only store participants, but also endpoint data
|
||||||
-- Used to determine the size of the built-inendpoint buffer
|
-- Used to determine the size of the builtin endpoint buffer
|
||||||
constant MAX_REMOTE_PARTICIPANTS : natural := 50;
|
constant MAX_REMOTE_PARTICIPANTS : natural := 50;
|
||||||
|
|
||||||
--*****DDSI-RTPS 2.3*****
|
--*****DDSI-RTPS 2.3*****
|
||||||
@ -358,11 +373,23 @@ package rtps_package is
|
|||||||
function convert_from_double_word (seq: DOUBLE_WORD_ARRAY) return unsigned;
|
function convert_from_double_word (seq: DOUBLE_WORD_ARRAY) return unsigned;
|
||||||
function convert_to_double_word (seq: unsigned(63 downto 0)) return DOUBLE_WORD_ARRAY;
|
function convert_to_double_word (seq: unsigned(63 downto 0)) return DOUBLE_WORD_ARRAY;
|
||||||
function ">" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function ">" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
|
function ">" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean;
|
||||||
|
function ">" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
function "<" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function "<" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
|
function "<" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean;
|
||||||
|
function "<" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
function ">=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function ">=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
|
function ">=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean;
|
||||||
|
function ">=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
function "<=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function "<=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
|
function "<=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean;
|
||||||
|
function "<=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
function "=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function "=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
|
function "=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean;
|
||||||
|
function "=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
function "/=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function "/=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
|
function "/=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean;
|
||||||
|
function "/=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
function "+" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY;
|
function "+" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY;
|
||||||
function "+" (L: DOUBLE_WORD_ARRAY, R: natural) return DOUBLE_WORD_ARRAY;
|
function "+" (L: DOUBLE_WORD_ARRAY, R: natural) return DOUBLE_WORD_ARRAY;
|
||||||
function "+" (L: natural, R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY;
|
function "+" (L: natural, R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY;
|
||||||
@ -431,7 +458,7 @@ package body rtps_package is
|
|||||||
begin
|
begin
|
||||||
ret := (others => others => '0'));
|
ret := (others => others => '0'));
|
||||||
for i in 0 to ret'length-1 loop
|
for i in 0 to ret'length-1 loop
|
||||||
ret(i) := std_logic_vector(to_unsigned(character'POS(str(i)), 8)) & std_logic_vector(to_unsigned(character'POS(str(i+1)), 8)) & std_logic_vector(to_unsigned(character'POS(str(i+2)), 8)) & std_logic_vector(to_unsigned(character'POS(str(i+3)), 8));
|
ret(i) := std_logic_vector(to_unsigned(character'POS(str(i*4)), 8)) & std_logic_vector(to_unsigned(character'POS(str((i*4)+1)), 8)) & std_logic_vector(to_unsigned(character'POS(str((i*4)+2)), 8)) & std_logic_vector(to_unsigned(character'POS(str((i*4)+3)), 8));
|
||||||
end loop;
|
end loop;
|
||||||
return ret;
|
return ret;
|
||||||
end function;
|
end function;
|
||||||
@ -960,31 +987,91 @@ package body rtps_package is
|
|||||||
return convert_from_double_word(L) > convert_from_double_word(R);
|
return convert_from_double_word(L) > convert_from_double_word(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
function ">" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean is
|
||||||
|
begin
|
||||||
|
return convert_from_double_word(L) > R;
|
||||||
|
end function;
|
||||||
|
|
||||||
|
function ">" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
|
begin
|
||||||
|
return L > convert_from_double_word(R);
|
||||||
|
end function;
|
||||||
|
|
||||||
function "<" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function "<" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) < convert_from_double_word(R);
|
return convert_from_double_word(L) < convert_from_double_word(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
function "<" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean is
|
||||||
|
begin
|
||||||
|
return convert_from_double_word(L) < R;
|
||||||
|
end function;
|
||||||
|
|
||||||
|
function "<" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
|
begin
|
||||||
|
return L < convert_from_double_word(R);
|
||||||
|
end function;
|
||||||
|
|
||||||
function ">=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function ">=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) >= convert_from_double_word(R);
|
return convert_from_double_word(L) >= convert_from_double_word(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
function ">=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean is
|
||||||
|
begin
|
||||||
|
return convert_from_double_word(L) >= R;
|
||||||
|
end function;
|
||||||
|
|
||||||
|
function ">=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
|
begin
|
||||||
|
return L >= convert_from_double_word(R);
|
||||||
|
end function;
|
||||||
|
|
||||||
function "<=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function "<=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) <= convert_from_double_word(R);
|
return convert_from_double_word(L) <= convert_from_double_word(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
function "<=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean is
|
||||||
|
begin
|
||||||
|
return convert_from_double_word(L) <= R;
|
||||||
|
end function;
|
||||||
|
|
||||||
|
function "<=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
|
begin
|
||||||
|
return L <= convert_from_double_word(R);
|
||||||
|
end function;
|
||||||
|
|
||||||
function "=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
function "=" (L,R: DOUBLE_WORD_ARRAY) return boolean;
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) = convert_from_double_word(R);
|
return convert_from_double_word(L) = convert_from_double_word(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
function "=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean is
|
||||||
|
begin
|
||||||
|
return convert_from_double_word(L) = R;
|
||||||
|
end function;
|
||||||
|
|
||||||
|
function "=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
|
begin
|
||||||
|
return L = convert_from_double_word(R);
|
||||||
|
end function;
|
||||||
|
|
||||||
function "/=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
function "/=" (L,R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
begin
|
begin
|
||||||
return convert_from_double_word(L) /= convert_from_double_word(R);
|
return convert_from_double_word(L) /= convert_from_double_word(R);
|
||||||
end function;
|
end function;
|
||||||
|
|
||||||
|
function "/=" (L: DOUBLE_WORD_ARRAY, R: natural) return boolean is
|
||||||
|
begin
|
||||||
|
return convert_from_double_word(L) /= R;
|
||||||
|
end function;
|
||||||
|
|
||||||
|
function "/=" (L: natural, R: DOUBLE_WORD_ARRAY) return boolean is
|
||||||
|
begin
|
||||||
|
return L /= convert_from_double_word(R);
|
||||||
|
end function;
|
||||||
|
|
||||||
function "+" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
function "+" (L,R: DOUBLE_WORD_ARRAY) return DOUBLE_WORD_ARRAY is
|
||||||
begin
|
begin
|
||||||
return convert_to_double_word(convert_from_double_word(L) + convert_from_double_word(R));
|
return convert_to_double_word(convert_from_double_word(L) + convert_from_double_word(R));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user