diff --git a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp index 28a67fd84846ddd10fbe095f4cd375354ea45ead..7be4f30fbfee0ab866173d302f8f741b90eb17ff 100644 --- a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp +++ b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp @@ -46,6 +46,11 @@ OutgoingMessagesViewerModule::OutgoingMessagesViewerModule() this, [this](const Message& message, const Filter& filter) { handleNack(message); }); + MessageBroker::getInstance().subscribe( + Filter::fromString(SkywardHubStrings::mavlink_received_msg_WACK_topic), + this, + [this](const Message& message, const Filter& filter) + { handleWack(message); }); } OutgoingMessagesViewerModule::~OutgoingMessagesViewerModule() { delete ui; } @@ -74,7 +79,7 @@ void OutgoingMessagesViewerModule::handleAck(const Message& ack) { Message msg = messages[i].getMsg(); - // Color the message the ack is for by checking the message is and + // Color the message the ack is for by checking the message id and // sequence number if (msg.getField("message_id") == ack.getField("recv_msgid")) if (msg.getField("sequence_number") == ack.getField("seq_ack")) @@ -88,7 +93,7 @@ void OutgoingMessagesViewerModule::handleNack(const Message& nack) { Message msg = messages[i].getMsg(); - // Color the message the nack is for by checking the message is and + // Color the message the nack is for by checking the message id and // sequence number if (msg.getField("message_id") == nack.getField("recv_msgid")) if (msg.getField("sequence_number") == nack.getField("seq_ack")) @@ -96,6 +101,21 @@ void OutgoingMessagesViewerModule::handleNack(const Message& nack) } } +void OutgoingMessagesViewerModule::handleWack(const Message& wack) +{ + for (int i = 0; i < messages.count(); i++) + { + Message msg = messages[i].getMsg(); + + // Color the message the wack is for by checking the message id and + // sequence number + if (msg.getField("message_id") == wack.getField("recv_msgid")) + if (msg.getField("sequence_number") == wack.getField("seq_ack")) + messages[i].getItem()->setBackground( + QBrush(QColor(255, 255, 255))); + } +} + int OutgoingMessagesViewerModule::updateVerticalHeaders(const Message& msg) { int row = 0; // Insert on top diff --git a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h index c51592123f215b75a086135d729e33e2ced3b6c1..4fccc266820f00568f7f791a4b3989c3b96799c5 100644 --- a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h +++ b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h @@ -58,6 +58,7 @@ public: void addMsgSent(const Message& msg); void handleAck(const Message& ack); void handleNack(const Message& nack); + void handleWack(const Message& wack); protected: int updateVerticalHeaders(const Message& msg); diff --git a/src/shared/Modules/SkywardHubStrings.h b/src/shared/Modules/SkywardHubStrings.h index 3fe3e14c9ae661b3dea8b87ec0c3b055a4f149c6..1742e9079cf505d1c4a8e73712d6f6e7b0cc8ff3 100644 --- a/src/shared/Modules/SkywardHubStrings.h +++ b/src/shared/Modules/SkywardHubStrings.h @@ -74,6 +74,8 @@ static const QString mavlink_received_msg_ACK_topic = mavlink_received_msg_topic + "/ACK_TM"; static const QString mavlink_received_msg_NACK_topic = mavlink_received_msg_topic + "/NACK_TM"; +static const QString mavlink_received_msg_WACK_topic = + mavlink_received_msg_topic + "/WACK_TM"; static const QString mavlink_system_id_name = "system_id"; static const QString mavlink_component_id_name = "component_id";