All the necessary "glue" logic to convert ROS Data to a form that the
DDS/RTPS back-end can use is implemented in packages.
The ROS Node discovery information is statically generated in packages
(similar to the RTPS Participant Data), and a special dds writer is
implemented (ros_static_discovery_writer) that has this static data as
its only payload sample.
Some definitions are moved out of rtps_config_package to prevent
circular package dependency.
Apparently Cyclone DDS does not support Readers with the inline QoS
Flag.
Change rtps_test_package to generate only necessary PIDs (e.g. no
PID_EXPECTS_INLINE_QOS for writers)
Using seperately compiled Libraries we interconnect two systems, and
test their communication and interaction.
A bug in rtps_builtin_endpoint was fixed (were if only the SUB data was
to be sent, it was never actually sent).
The writer_wrapper was modified to allow changing the used endian via
generic. This allows to test Little Endian handling in simulations.
The Test2 are basically Test1 with Little Endian
Backport Memory Controller and Memory FSM from RTPS/DDS Endpoints to
RTPS Builtin Endpoint.
The Memory is now using a single linked list and the FSM uses Frame Field
Flags.
The main FSM uses check_time to initiate stale checks, and the stale
checks are done in the main FSM.
Testbench was modified to accomodate the changes (Previous L0 Test4 was
removed and integrated in L0 Test 1).
The REMOVE_WRITER DDS Operation of DDS Reader now generates Samples if
the Instance State changes.
Updated testbench.
Added checks for DATA_AVAILABLE communication status.
Test RTPS GET_MIN_SN, GET_MAX_SN, GET_CACHE_CHANGE, REMOVE_CACHE_CHANGE,
ACK_CACHE_CHANGE, and NACK_CACHE_CHANGE Operations.
Test DDS Register, Unregister, Write, Dispose, and Lookup Instance
Operations.
The instantiation of the KEY related entities is moved outside the DDS
Endpoints (Currently only changed in DDS Writer). Define new KEY_HOLDER
entity that is responsible for all Key related type-specific code.
Fix syntax of DDS Writer, and misc code refactoring.
Each Entity that contains a memory will have an independent size
generic. The testbench was modified to accomodate different RAM memory
sizes. This in effect makes all Memory related stuff pre-entity
dependant. The rtps_test_package needs updated Frame Sizes for the Tests
to work properly.
The reader falgs (Expects In-line QoS, Expects Historical Data, Is Best
Effort) of the remote reader is transfered in the Metatraffic Endpoint
Match Frame.
The Level 1 rtps_builtin_endpoint test was also fixed.
Amongst other fixes the interface between RTPS-HC/DDS was changed.
The Liveliness Update metatraffic operation was also made QOS dependant
and put behind synthesis guards.
Instance Removal trigger was modified. While before at least 1 instance
slot needed to be empty at all times (similar to the sample slot), thsi
was changed to only remove instances on demand. This is controlled via
a signal that holds the current number of stale (removalble) instances.
Since the payload can only be padded until the next 4-byte aligned
address, we needed a way to read out only the actual payload in case the
payload was not aligned in the last payload slot (did not go until the
end of the payload slot). This is now handled by an additional bit flag
in the Sample Status Info which denotes if the payload is aligned. In
the case the payload is unaligned, the last address of the last payload
slot contains the offset of the actual payload end.
This commit also adds MEMORY RESET states for the Sample, payload, and
instance Memory.
The Memory Control Process is made more generic (with less specialised
code), to allow the main process more control. I.e. all Memory Frame
Fields are individually addressable (during GET and UPDATE).
The RAM instance is hidden behind a Memory Controller with Flow Control
Signals, allowing easy future integration to different Memory Interfaces
(e.g. AXI Lite).
Finalized DDS Reader interface. Implemented read/take,
read_next_sample/take_next_sample, read_instance/take_instance,
read_next_instance/take_next_instance operations.
Instance Get operations were made generic to allow returning 2 variants
of instance data.
Redefined Sample Memory Format. The design decision was made to handle
most (if not all) of the DDS QOS inside the History Cache, which allows
storing needed information in a more efiicient way.
A (dual port) Instance Memory was added into the HC, to support the QOS
operations.
This commit only implements the A side processes for the READER case.
RESOURCE_LIMITS_QOS, TIME_BASED_FILTER_QOS, and HISTORY_QOS are handled.
The inter-entity communication was changed to allow the HC to mark
parsed changes as rejected, and allow future re-transmission (in the
case of Reliable communication).
- Change Testbench naming Convention (File and Internal)
- Remove Component declarations and use direct instantiating
* Add more static generated SLVs in rtps_config_package
- Remove endpoint data from memory. Store only participant data
- Write PARTICIPANT_UNMATCH_FRAME to all endpoints on remote participant removal
- Write ENDPOINT_MATCH and ENDPOINT_UNMATCH frames for all remote endpoints
* Update testbenches to accomodate re-design
* Streamline scorboard reference pushing and testbench completion detection
* Small change in rtps_builtin_endpoint_test1
- Empty Signal was not toggling
* Added rtps_builtin_endpoint_test2
- Compiling and Passing
* Update rtps_test_package
* Various bug Fixes in rtps_builtin_endpoint
* Add test RAM (Used for testbenches)
* Add Data Structures and functions to check memory contents
* Add rtps_builtin_endpoint_test1
- Compiles and Passes
* Various bug fixes in rtps_builtin_endpoint to Pass testbench
* Merged stimulus generation procedures to one single procedure
* Integrated OSVVM into testbench
* Generated OSVVM Project Script File
* Various Bug Fixes to compile testbench
- New functions
- Renames
- New Definitions
* rtps_handler overhaul
- Validity Check for Submessages
- OVERREAD Guard
- Info Timestamp parsed and sent to Endpoints