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.
21 lines
1.2 KiB
Plaintext
21 lines
1.2 KiB
Plaintext
SERVICE
|
|
#######
|
|
|
|
GENERAL
|
|
=======
|
|
|
|
The Service VHDL generation closely follows the general RTPS IDL interface generation.
|
|
For each Service (i.e. .srv File) two files are generated, a server and a client file.
|
|
Each file contains both encoding and decoding functionality (similar to the key_holder files).
|
|
The code generation follows the normal code generation for encoding and decoding with following changes:
|
|
|
|
* Encoding and Decoding stages get a "RQ_"or "RR_" prepended to the <NAME> to differentiate between
|
|
Request and Response message members, respectively.
|
|
e.g. GET_A -> GET_RQ_A, WRITE_SUM -> WRITE_RR_SUM
|
|
* Similar to the previous point, the <SERVICENAME>_package differentiates the MAX_* sizes of the Request
|
|
and Response message members.
|
|
e.g. MAX_A_SIZE -> MAX_RQ_A_SIZE, MAX_SUM_SIZE -> MAX_RR_SUM_SIZE
|
|
* The <SERVICENAME>_package calculates both a maximum request and response message size, named
|
|
MAX_<SERVICENAME>_RQ_SIZE and MAX_<SERVICENAME>_RR_SIZE, respectively.
|
|
The maximum includes the service overhead bytes that are contained in the DDS Payloads. The constant
|
|
SERVICE_OVERHEAD_BYTES from ros_package gives this overhead bytes. |