Add uxrce dds flow control flag (#26209)

* added flow control bitfield

* shortened to 16 char param name length

* refactored changes for uxrce flow control param

* reverted additions to docs

* Update src/modules/uxrce_dds_client/module.yaml

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

---------

Co-authored-by: minotico <81227020-minotico@users.noreply.github.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
This commit is contained in:
Pascal
2026-01-08 02:59:03 +01:00
committed by GitHub
parent 598066653a
commit 0ef4f1b7bd
3 changed files with 23 additions and 3 deletions
+11
View File
@@ -142,3 +142,14 @@ parameters:
category: System
reboot_required: true
default: -1
UXRCE_DDS_FLCTRL:
description:
short: Enable serial flow control for UXRCE interface
long: |
This is used to enable flow control for the serial uXRCE instance.
Used for reliable high bandwidth communication.
type: boolean
category: System
reboot_required: true
default: 0
@@ -837,8 +837,16 @@ bool UxrceddsClient::setBaudrate(int fd, unsigned baud)
//
uart_config.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN | ISIG);
/* no parity, one stop bit, disable flow control */
uart_config.c_cflag &= ~(CSTOPB | PARENB | CRTSCTS);
/* no parity, one stop bit */
uart_config.c_cflag &= ~(CSTOPB | PARENB);
/* enable flow control if needed */
if (_param_uxrce_dds_flctrl.get() > 0) {
uart_config.c_cflag |= CRTSCTS;
} else {
uart_config.c_cflag &= ~CRTSCTS;
}
/* set baud rate */
if ((termios_state = cfsetispeed(&uart_config, speed)) < 0) {
@@ -210,6 +210,7 @@ private:
(ParamInt<px4::params::UXRCE_DDS_SYNCC>) _param_uxrce_dds_syncc,
(ParamInt<px4::params::UXRCE_DDS_SYNCT>) _param_uxrce_dds_synct,
(ParamInt<px4::params::UXRCE_DDS_TX_TO>) _param_uxrce_dds_tx_to,
(ParamInt<px4::params::UXRCE_DDS_RX_TO>) _param_uxrce_dds_rx_to
(ParamInt<px4::params::UXRCE_DDS_RX_TO>) _param_uxrce_dds_rx_to,
(ParamInt<px4::params::UXRCE_DDS_FLCTRL>) _param_uxrce_dds_flctrl
)
};