acomms_driver_node and modem_sim_node can now send ROS msg traffic in FDP ping payloads
Breaking Changes
- updates to
acomms_driver_nodedynamic reconfigure which require rebuilding the package. -
acomms_driver_nodenow sets starting state ofxmit.txinhibitinmodem_configsince it historically set it on the first dynamic reconf. call -
acomms_driver_nodenow sets starting state ofpwramp.txlevelinmodem_configsince it historically set it on the first dynamic reconf. call. -
acomms_driver_node: the value (if passed) inmodem_configforpwramp.txleveltakes priority over the value (if passed) topwramp_txlevelrosparam. The cached value (pwramp_txlevel) will match themodem_config: pwramp.txleveland the parameter server is updated with both.
New Features / Improvements
- added interface to
acomms_driver_nodeto allow sending ROS msg traffic in FDP ping payloads. To use, set~use_ping_payloadto True. To set the payload size pass:~ping_maximum_miniframe_bytes(default is 32, max). -
acomms_driver_nodenow sets the parameter server with the~modem_config(which we now cache) after updating and setting the values fortx_inhibitandpwramp_txlevel. -
modem_sim_nodenow supports same interface asacomms_driver_nodefor 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_nodehas 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_txlevelas a ros param or in themodem_configdict. Either way, it will be set in both places. the modem_config value wins if they differ.
- added enums for
-
acomms_driver_nodenow passes allCACFGstrings 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_nodebug 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_txlevelandtxinhibitout 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_configdict in dynamic reconf (this would probably require we watch for those params inhandle_config_update, called inmodem_nmea_handlerwhenever we come across aCACFGsomodem_configstays up to date)?
Edited by Caileigh Fitzgerald