diff --git a/msg/onboard_computer_status.msg b/msg/onboard_computer_status.msg index 5e429d42f8..c35085288f 100644 --- a/msg/onboard_computer_status.msg +++ b/msg/onboard_computer_status.msg @@ -4,19 +4,19 @@ uint32 uptime # time since system boot (miliseconds) uint8 type # type of onboard computer uint8[8] cpu_cores -uint8 cpu_combined +uint8[10] cpu_combined uint8[4] gpu_cores uint8[10] gpu_combined int8 temperature_board -int8 tempearture_core -int16 fan_speed +int8[8] temperature_core +int16[4] fan_speed uint32 ram_usage uint32 ram_total uint32[4] storage_type uint32[4] storage_usage uint32[4] storage_total -uint32 link_type -uint32 link_tx_rate -uint32 link_rx_rate -uint32 link_tx_max -uint32 link_rx_max +uint32[6] link_type +uint32[6] link_tx_rate +uint32[6] link_rx_rate +uint32[6] link_tx_max +uint32[6] link_rx_max diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index afe60a1fcf..c4a04b1b9f 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -2547,14 +2547,29 @@ MavlinkReceiver::handle_message_onboard_computer_status(mavlink_message_t *msg) onboard_computer_status_s onboard_computer_status_topic{}; - onboard_computer_status_topic.cpu_cores[0] = status_msg.cpu_cores[0]; - onboard_computer_status_topic.cpu_cores[1] = status_msg.cpu_cores[1]; - onboard_computer_status_topic.cpu_cores[2] = status_msg.cpu_cores[2]; - onboard_computer_status_topic.cpu_cores[3] = status_msg.cpu_cores[3]; - onboard_computer_status_topic.cpu_cores[4] = status_msg.cpu_cores[4]; - onboard_computer_status_topic.cpu_cores[5] = status_msg.cpu_cores[5]; - onboard_computer_status_topic.cpu_cores[6] = status_msg.cpu_cores[6]; - onboard_computer_status_topic.cpu_cores[7] = status_msg.cpu_cores[7]; + onboard_computer_status_topic.timestamp = hrt_absolute_time(); + onboard_computer_status_topic.uptime = status_msg.uptime; + + onboard_computer_status_topic.type = status_msg.type; + + memcpy(onboard_computer_status_topic.cpu_cores, status_msg.cpu_cores, sizeof(status_msg.cpu_cores)); + memcpy(onboard_computer_status_topic.cpu_combined, status_msg.cpu_combined, sizeof(status_msg.cpu_combined)); + memcpy(onboard_computer_status_topic.gpu_cores, status_msg.gpu_cores, sizeof(status_msg.gpu_cores)); + memcpy(onboard_computer_status_topic.gpu_combined, status_msg.gpu_combined, sizeof(status_msg.gpu_combined)); + onboard_computer_status_topic.temperature_board = status_msg.temperature_board; + memcpy(onboard_computer_status_topic.temperature_core, status_msg.temperature_core, + sizeof(status_msg.temperature_core)); + memcpy(onboard_computer_status_topic.fan_speed, status_msg.fan_speed, sizeof(status_msg.fan_speed)); + onboard_computer_status_topic.ram_usage = status_msg.ram_usage; + onboard_computer_status_topic.ram_total = status_msg.ram_total; + memcpy(onboard_computer_status_topic.storage_type, status_msg.storage_type, sizeof(status_msg.storage_type)); + memcpy(onboard_computer_status_topic.storage_usage, status_msg.storage_usage, sizeof(status_msg.storage_usage)); + memcpy(onboard_computer_status_topic.storage_total, status_msg.storage_total, sizeof(status_msg.storage_total)); + memcpy(onboard_computer_status_topic.link_type, status_msg.link_type, sizeof(status_msg.link_type)); + memcpy(onboard_computer_status_topic.link_tx_rate, status_msg.link_tx_rate, sizeof(status_msg.link_tx_rate)); + memcpy(onboard_computer_status_topic.link_rx_rate, status_msg.link_rx_rate, sizeof(status_msg.link_rx_rate)); + memcpy(onboard_computer_status_topic.link_tx_max, status_msg.link_tx_max, sizeof(status_msg.link_tx_max)); + memcpy(onboard_computer_status_topic.link_rx_max, status_msg.link_rx_max, sizeof(status_msg.link_rx_max)); _onboard_computer_status_pub.publish(onboard_computer_status_topic); }