diff --git a/src/modules/mavlink/CMakeLists.txt b/src/modules/mavlink/CMakeLists.txt index cd7135338b..50aa298c77 100644 --- a/src/modules/mavlink/CMakeLists.txt +++ b/src/modules/mavlink/CMakeLists.txt @@ -66,10 +66,6 @@ px4_add_module( DEPENDS airspeed component_general_json # for checksums.h - drivers_accelerometer - drivers_barometer - drivers_gyroscope - drivers_magnetometer git_mavlink_v2 conversion geo @@ -80,3 +76,18 @@ px4_add_module( if(PX4_TESTING) add_subdirectory(mavlink_tests) endif() + +if (NOT ${PX4_PLATFORM} STREQUAL "nuttx" OR CONFIG_BUILD_FLAT) + target_link_libraries(modules__mavlink + PRIVATE + drivers_accelerometer + drivers_barometer + drivers_gyroscope + drivers_magnetometer + ) +endif() + +if(${PX4_PLATFORM} STREQUAL "nuttx" AND CONFIG_NET) + # netlib_get_ipv4addr + target_link_libraries(modules__mavlink PRIVATE nuttx_apps) +endif() diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index 022d8002eb..ede0c14562 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -73,10 +73,12 @@ MavlinkReceiver::~MavlinkReceiver() { delete _tune_publisher; +#if !defined(__PX4_NUTTX) || defined(CONFIG_BUILD_FLAT) delete _px4_accel; delete _px4_baro; delete _px4_gyro; delete _px4_mag; +#endif } MavlinkReceiver::MavlinkReceiver(Mavlink *parent) : @@ -2223,6 +2225,7 @@ MavlinkReceiver::handle_message_hil_sensor(mavlink_message_t *msg) const uint64_t timestamp = hrt_absolute_time(); +#if !defined(__PX4_NUTTX) || defined(CONFIG_BUILD_FLAT) // temperature only updated with baro float temperature = NAN; @@ -2291,6 +2294,8 @@ MavlinkReceiver::handle_message_hil_sensor(mavlink_message_t *msg) } } +#endif + // differential pressure if ((hil_sensor.fields_updated & SensorSource::DIFF_PRESS) == SensorSource::DIFF_PRESS) { differential_pressure_s report{}; @@ -2697,7 +2702,7 @@ MavlinkReceiver::handle_message_hil_state_quaternion(mavlink_message_t *msg) hil_local_pos.timestamp = hrt_absolute_time(); _local_pos_pub.publish(hil_local_pos); } - +#if !defined(__PX4_NUTTX) || defined(CONFIG_BUILD_FLAT) /* accelerometer */ { if (_px4_accel == nullptr) { @@ -2731,7 +2736,7 @@ MavlinkReceiver::handle_message_hil_state_quaternion(mavlink_message_t *msg) _px4_gyro->update(timestamp_sample, hil_state.rollspeed, hil_state.pitchspeed, hil_state.yawspeed); } } - +#endif /* battery status */ { battery_status_s hil_battery_status{}; diff --git a/src/modules/mavlink/mavlink_receiver.h b/src/modules/mavlink/mavlink_receiver.h index 5b7cf1f998..6817ef463f 100644 --- a/src/modules/mavlink/mavlink_receiver.h +++ b/src/modules/mavlink/mavlink_receiver.h @@ -340,10 +340,13 @@ private: BARO = 0b1101000000000, DIFF_PRESS = 0b10000000000 }; - PX4Accelerometer *_px4_accel{nullptr}; + +#if !defined(__PX4_NUTTX) || defined(CONFIG_BUILD_FLAT) + PX4Accelerometer *_px4_accel {nullptr}; PX4Barometer *_px4_baro{nullptr}; PX4Gyroscope *_px4_gyro{nullptr}; PX4Magnetometer *_px4_mag{nullptr}; +#endif static constexpr unsigned int MOM_SWITCH_COUNT{8}; uint8_t _mom_switch_pos[MOM_SWITCH_COUNT] {};