Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add redundancy switcher interface mrm v0.6 for gen2 #1756

Prev Previous commit
Next Next commit
style(pre-commit): autofix
pre-commit-ci[bot] committed Jan 10, 2025
commit 37a1020524fc9661befa2104672dbf33fb951032
Original file line number Diff line number Diff line change
@@ -35,13 +35,15 @@ void ResetConverter::setUdpSender(const std::string & dest_ip, const std::string

void ResetConverter::setUdpReceiver(const std::string & src_ip, const std::string & src_port)
{
udp_reset_response_receiver_ = std::make_unique<UdpReceiver<ResetResponse>>(src_ip, src_port, false);
udp_reset_response_receiver_ =
std::make_unique<UdpReceiver<ResetResponse>>(src_ip, src_port, false);
}

void ResetConverter::setService()
{
srv_reset_ = node_->create_service<autoware_adapi_v1_msgs::srv::RedundancySwitcherReset>(
"~/service/reset", std::bind(&ResetConverter::onResetRequest, this, std::placeholders::_1, std::placeholders::_2));
"~/service/reset",
std::bind(&ResetConverter::onResetRequest, this, std::placeholders::_1, std::placeholders::_2));
}

void ResetConverter::onResetRequest(
@@ -56,7 +58,8 @@ void ResetConverter::onResetRequest(

ResetResponse udp_response;
try {
bool result = udp_reset_response_receiver_->receive(udp_response, 30);;
bool result = udp_reset_response_receiver_->receive(udp_response, 30);
;
if (!result) {
response->status.success = false;
response->status.code = autoware_adapi_v1_msgs::msg::ResponseStatus::SERVICE_TIMEOUT;
@@ -72,7 +75,7 @@ void ResetConverter::onResetRequest(
response->status.message = "Reset successfully.";
RCLCPP_INFO(node_->get_logger(), "Reset successfully.");
}
} catch (const std::exception &e) {
} catch (const std::exception & e) {
response->status.success = false;
response->status.code = autoware_adapi_v1_msgs::msg::ResponseStatus::TRANSFORM_ERROR;
response->status.message = "Failed to receive UDP response.";
Original file line number Diff line number Diff line change
@@ -12,11 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef RESET__CONVERTER__RESET_CONVERTER_HPP_
#define RESET__CONVERTER__RESET_CONVERTER_HPP_
#ifndef COMMON__CONVERTER__RESET_CONVERTER_HPP_
#define COMMON__CONVERTER__RESET_CONVERTER_HPP_

#include "udp_sender.hpp"
#include "udp_receiver.hpp"
#include "udp_sender.hpp"

#include <rclcpp/rclcpp.hpp>

@@ -60,4 +60,4 @@ class ResetConverter

} // namespace redundancy_switcher_interface

#endif // RESET__CONVERTER__RESET_CONVERTER_HPP_
#endif // COMMON__CONVERTER__RESET_CONVERTER_HPP_
Original file line number Diff line number Diff line change
@@ -45,8 +45,8 @@ class UdpReceiver
~UdpReceiver();

bool receive(T & data, int timeout); // for non callback and timeout
bool receive(T & data); // for non callback
void receive(); // for callback
bool receive(T & data); // for non callback
void receive(); // for callback

private:
int socketfd_;
@@ -132,7 +132,8 @@ bool UdpReceiver<T>::receive(T & data, int timeout)
memset(&addr, 0, sizeof(addr));

if (has_received_udp_date(timeout)) {
ssize_t recv_size = recvfrom(socketfd_, &data, sizeof(T), 0, (struct sockaddr *)&addr, &addr_len);
ssize_t recv_size =
recvfrom(socketfd_, &data, sizeof(T), 0, (struct sockaddr *)&addr, &addr_len);
if (recv_size < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
return false;

Unchanged files with check annotations Beta

## Overview
The redundancy switcher interface node is responsible for relaying UDP packets and ROS2 topics between the redundancy_switcher invoked by systemd and Autoware executed on ROS2.

Check warning on line 5 in system/redundancy_switcher_interface/README.md

GitHub Actions / spell-check-differential

Forbidden word (ROS2)

Check warning on line 5 in system/redundancy_switcher_interface/README.md

GitHub Actions / spell-check-differential

Forbidden word (ROS2)
## availability converter