acomms_driver_node and modem_sim_node can now send ROS msg traffic in FDP ping payloads
Breaking Changes
- updates to
acomms_driver_node
dynamic reconfigure which require rebuilding the package. -
acomms_driver_node
now sets starting state ofxmit.txinhibit
inmodem_config
since it historically set it on the first dynamic reconf. call -
acomms_driver_node
now sets starting state ofpwramp.txlevel
inmodem_config
since it historically set it on the first dynamic reconf. call. -
acomms_driver_node
: the value (if passed) inmodem_config
forpwramp.txlevel
takes priority over the value (if passed) topwramp_txlevel
rosparam. The cached value (pwramp_txlevel
) will match themodem_config: pwramp.txlevel
and the parameter server is updated with both.
New Features / Improvements
- added interface to
acomms_driver_node
to allow sending ROS msg traffic in FDP ping payloads. To use, set~use_ping_payload
to True. To set the payload size pass:~ping_maximum_miniframe_bytes
(default is 32, max). -
acomms_driver_node
now sets the parameter server with the~modem_config
(which we now cache) after updating and setting the values fortx_inhibit
andpwramp_txlevel
. -
modem_sim_node
now supports same interface asacomms_driver_node
for using the ping_payload to transport ros msgs. (no dynamic reconf for modem sim though)- same rosparams used in the
acomms_driver_node
:~use_ping_payload (default:false)
~ping_maximum_miniframe_bytes (default:32)
- same rosparams used in the
-
test_use_ping_payload.launch
, working test launch for sim or hw - added test case for use_ping_payload to gitlab ci. Currently only running in sim and using
tdma_advanced
Bugfixes
-
acomms_driver_node
has major clean up/bug fixes for dynamic reconfigure.- added enums for
pwramp_txlevel
(volume) to clarify that 0 is max and 3 is quiet in rqt. - added toggle for using the ping payload and setting payload size via dynamic reconf
- added flag to init so we can set the correct values for pwramp and inhibit on first dynamic reconfigure callback. Now we can define
pwramp_txlevel
as a ros param or in themodem_config
dict. Either way, it will be set in both places. the modem_config value wins if they differ.
- added enums for
-
acomms_driver_node
now passes allCACFG
strings through a method that will update the config params (only pwramp and inhibit currently) so next call to dynamic reconfigure will set the latest values. -
modem_sim_node
bug fix: we weren't sending the payload from the request to the method that fills thesim_packet
. Now we are plus, renamed internal callback args for more clarity
Notes:
- Note, there is code in place to handle tracking
pwramp_txlevel
andtxinhibit
out of band of dynamic reconfigure, However; we need to publish an update to the dynamic reconfigure clients topic so rqt (or other front end that uses dynamic reconf) updates the value set on the modem to reflect in the UI. Since we don't have that in place yet (#44), this still mirrors the old behavior. Whenever a dynamic reconf request is recvd, it will set the value passed from the user on the modem even if that value has not change. - TODO: consider setting
modem_config
dict in dynamic reconf (this would probably require we watch for those params inhandle_config_update
, called inmodem_nmea_handler
whenever we come across aCACFG
somodem_config
stays up to date)?
Edited by Caileigh Fitzgerald