diff --git a/boards/airmind/mindpx-v2/default.cmake b/boards/airmind/mindpx-v2/default.cmake index 589c546d25..05b4da96de 100644 --- a/boards/airmind/mindpx-v2/default.cmake +++ b/boards/airmind/mindpx-v2/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 1 diff --git a/boards/ark/can-flow/canbootloader.cmake b/boards/ark/can-flow/canbootloader.cmake index 98b5367cc1..e9b1a27581 100644 --- a/boards/ark/can-flow/canbootloader.cmake +++ b/boards/ark/can-flow/canbootloader.cmake @@ -24,6 +24,7 @@ px4_add_board( LABEL canbootloader TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY DRIVERS bootloaders ) diff --git a/boards/ark/can-flow/default.cmake b/boards/ark/can-flow/default.cmake index 800dd40232..73cf17bcac 100644 --- a/boards/ark/can-flow/default.cmake +++ b/boards/ark/can-flow/default.cmake @@ -25,6 +25,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT cannode UAVCAN_INTERFACES 1 DRIVERS diff --git a/boards/bitcraze/crazyflie/default.cmake b/boards/bitcraze/crazyflie/default.cmake index d756e0578a..3192198f07 100644 --- a/boards/bitcraze/crazyflie/default.cmake +++ b/boards/bitcraze/crazyflie/default.cmake @@ -5,6 +5,7 @@ px4_add_board( MODEL crazyflie TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common CONSTRAINED_FLASH DRIVERS diff --git a/boards/bitcraze/crazyflie21/default.cmake b/boards/bitcraze/crazyflie21/default.cmake index eb778918a1..e1cce5892d 100644 --- a/boards/bitcraze/crazyflie21/default.cmake +++ b/boards/bitcraze/crazyflie21/default.cmake @@ -5,6 +5,7 @@ px4_add_board( MODEL crazyflie21 TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common CONSTRAINED_FLASH DRIVERS diff --git a/boards/cuav/can-gps-v1/canbootloader.cmake b/boards/cuav/can-gps-v1/canbootloader.cmake index ef09b096e0..d87b5b3511 100644 --- a/boards/cuav/can-gps-v1/canbootloader.cmake +++ b/boards/cuav/can-gps-v1/canbootloader.cmake @@ -24,6 +24,7 @@ px4_add_board( LABEL canbootloader TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY DRIVERS bootloaders ) diff --git a/boards/cuav/can-gps-v1/default.cmake b/boards/cuav/can-gps-v1/default.cmake index 5c6dda9a04..8a03049938 100644 --- a/boards/cuav/can-gps-v1/default.cmake +++ b/boards/cuav/can-gps-v1/default.cmake @@ -26,6 +26,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT cannode UAVCAN_INTERFACES 1 DRIVERS diff --git a/boards/intel/aerofc-v1/default.cmake b/boards/intel/aerofc-v1/default.cmake index f4547d216c..77a8168204 100644 --- a/boards/intel/aerofc-v1/default.cmake +++ b/boards/intel/aerofc-v1/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common CONSTRAINED_FLASH SERIAL_PORTS diff --git a/boards/intel/aerofc-v1/rtps.cmake b/boards/intel/aerofc-v1/rtps.cmake index d70cb7371d..dd47790a00 100644 --- a/boards/intel/aerofc-v1/rtps.cmake +++ b/boards/intel/aerofc-v1/rtps.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL rtps TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common SERIAL_PORTS GPS1:/dev/ttyS5 diff --git a/boards/mro/x21/default.cmake b/boards/mro/x21/default.cmake index 2a9afdd7d7..283ca92b68 100644 --- a/boards/mro/x21/default.cmake +++ b/boards/mro/x21/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default TESTING diff --git a/boards/nxp/fmuk66-e/default.cmake b/boards/nxp/fmuk66-e/default.cmake index 4fe3ccec4e..40a617bfa9 100644 --- a/boards/nxp/fmuk66-e/default.cmake +++ b/boards/nxp/fmuk66-e/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 2 diff --git a/boards/nxp/fmuk66-e/socketcan.cmake b/boards/nxp/fmuk66-e/socketcan.cmake index c8394ee3c6..3ef9be2606 100644 --- a/boards/nxp/fmuk66-e/socketcan.cmake +++ b/boards/nxp/fmuk66-e/socketcan.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL socketcan TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 2 diff --git a/boards/nxp/fmuk66-v3/default.cmake b/boards/nxp/fmuk66-v3/default.cmake index ab4f7597b6..81b403fb6b 100644 --- a/boards/nxp/fmuk66-v3/default.cmake +++ b/boards/nxp/fmuk66-v3/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 2 diff --git a/boards/nxp/fmuk66-v3/rtps.cmake b/boards/nxp/fmuk66-v3/rtps.cmake index c296678279..f00cee07e7 100644 --- a/boards/nxp/fmuk66-v3/rtps.cmake +++ b/boards/nxp/fmuk66-v3/rtps.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL rtps TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 2 diff --git a/boards/nxp/fmuk66-v3/socketcan.cmake b/boards/nxp/fmuk66-v3/socketcan.cmake index abd0660527..76d1068ba9 100644 --- a/boards/nxp/fmuk66-v3/socketcan.cmake +++ b/boards/nxp/fmuk66-v3/socketcan.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL socketcan TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 2 diff --git a/boards/nxp/ucans32k146/default.cmake b/boards/nxp/ucans32k146/default.cmake index 449b5d647f..faf3826e59 100644 --- a/boards/nxp/ucans32k146/default.cmake +++ b/boards/nxp/ucans32k146/default.cmake @@ -25,6 +25,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT cannode UAVCAN_INTERFACES 2 DRIVERS diff --git a/boards/omnibus/f4sd/default.cmake b/boards/omnibus/f4sd/default.cmake index 1befdaee81..a0a5d06d84 100644 --- a/boards/omnibus/f4sd/default.cmake +++ b/boards/omnibus/f4sd/default.cmake @@ -5,6 +5,7 @@ px4_add_board( MODEL f4sd TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common CONSTRAINED_FLASH SERIAL_PORTS diff --git a/boards/px4/fmu-v2/default.cmake b/boards/px4/fmu-v2/default.cmake index 3c2a081646..84c983da4b 100644 --- a/boards/px4/fmu-v2/default.cmake +++ b/boards/px4/fmu-v2/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common BOOTLOADER ${PX4_SOURCE_DIR}/ROMFS/px4fmu_common/extras/px4fmuv3_bl.bin IO px4_io-v2_default diff --git a/boards/px4/fmu-v2/fixedwing.cmake b/boards/px4/fmu-v2/fixedwing.cmake index 5505673700..5222e88a1d 100644 --- a/boards/px4/fmu-v2/fixedwing.cmake +++ b/boards/px4/fmu-v2/fixedwing.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL fixedwing TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default #TESTING diff --git a/boards/px4/fmu-v2/lpe.cmake b/boards/px4/fmu-v2/lpe.cmake index d9e54a2450..f0540820ef 100644 --- a/boards/px4/fmu-v2/lpe.cmake +++ b/boards/px4/fmu-v2/lpe.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL lpe TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common BOOTLOADER ${PX4_SOURCE_DIR}/ROMFS/px4fmu_common/extras/px4fmuv3_bl.bin IO px4_io-v2_default diff --git a/boards/px4/fmu-v2/multicopter.cmake b/boards/px4/fmu-v2/multicopter.cmake index ae9578f422..c3982cd205 100644 --- a/boards/px4/fmu-v2/multicopter.cmake +++ b/boards/px4/fmu-v2/multicopter.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL multicopter TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default #UAVCAN_INTERFACES 2 diff --git a/boards/px4/fmu-v2/rover.cmake b/boards/px4/fmu-v2/rover.cmake index edfb0320cc..537db8dadc 100644 --- a/boards/px4/fmu-v2/rover.cmake +++ b/boards/px4/fmu-v2/rover.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL rover TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default CONSTRAINED_FLASH diff --git a/boards/px4/fmu-v2/test.cmake b/boards/px4/fmu-v2/test.cmake index 633255a76e..088b207ae7 100644 --- a/boards/px4/fmu-v2/test.cmake +++ b/boards/px4/fmu-v2/test.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL test TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_test IO px4_io-v2_default TESTING diff --git a/boards/px4/fmu-v3/ctrlalloc.cmake b/boards/px4/fmu-v3/ctrlalloc.cmake index 700684576a..00e745cec0 100644 --- a/boards/px4/fmu-v3/ctrlalloc.cmake +++ b/boards/px4/fmu-v3/ctrlalloc.cmake @@ -8,6 +8,7 @@ px4_add_board( LABEL ctrlalloc TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default TESTING diff --git a/boards/px4/fmu-v3/default.cmake b/boards/px4/fmu-v3/default.cmake index a895867b37..14cf1fcf1e 100644 --- a/boards/px4/fmu-v3/default.cmake +++ b/boards/px4/fmu-v3/default.cmake @@ -8,6 +8,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default TESTING diff --git a/boards/px4/fmu-v3/rtps.cmake b/boards/px4/fmu-v3/rtps.cmake index a8937a0ac0..736cf3c7df 100644 --- a/boards/px4/fmu-v3/rtps.cmake +++ b/boards/px4/fmu-v3/rtps.cmake @@ -8,6 +8,7 @@ px4_add_board( LABEL rtps TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default TESTING diff --git a/boards/px4/fmu-v3/stackcheck.cmake b/boards/px4/fmu-v3/stackcheck.cmake index 4a925a6839..b647895b5e 100644 --- a/boards/px4/fmu-v3/stackcheck.cmake +++ b/boards/px4/fmu-v3/stackcheck.cmake @@ -8,6 +8,7 @@ px4_add_board( LABEL stackcheck TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default TESTING diff --git a/boards/px4/fmu-v4/cannode.cmake b/boards/px4/fmu-v4/cannode.cmake index 57c3d87c80..cb54af827d 100644 --- a/boards/px4/fmu-v4/cannode.cmake +++ b/boards/px4/fmu-v4/cannode.cmake @@ -25,6 +25,7 @@ px4_add_board( LABEL cannode TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT cannode UAVCAN_INTERFACES 1 SERIAL_PORTS diff --git a/boards/px4/fmu-v4/ctrlalloc.cmake b/boards/px4/fmu-v4/ctrlalloc.cmake index 9c9f199cac..9970fa75d6 100644 --- a/boards/px4/fmu-v4/ctrlalloc.cmake +++ b/boards/px4/fmu-v4/ctrlalloc.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL ctrlalloc TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 1 diff --git a/boards/px4/fmu-v4/default.cmake b/boards/px4/fmu-v4/default.cmake index 81da152d20..3d657b650b 100644 --- a/boards/px4/fmu-v4/default.cmake +++ b/boards/px4/fmu-v4/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 1 diff --git a/boards/px4/fmu-v4/optimized.cmake b/boards/px4/fmu-v4/optimized.cmake index ac06b05374..1dba592281 100644 --- a/boards/px4/fmu-v4/optimized.cmake +++ b/boards/px4/fmu-v4/optimized.cmake @@ -10,6 +10,7 @@ px4_add_board( LABEL optimized TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 1 diff --git a/boards/px4/fmu-v4/rtps.cmake b/boards/px4/fmu-v4/rtps.cmake index d8b51abb17..a7f1793216 100644 --- a/boards/px4/fmu-v4/rtps.cmake +++ b/boards/px4/fmu-v4/rtps.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL rtps TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING UAVCAN_INTERFACES 1 diff --git a/boards/px4/fmu-v4/stackcheck.cmake b/boards/px4/fmu-v4/stackcheck.cmake index 67af305537..610e7231f6 100644 --- a/boards/px4/fmu-v4/stackcheck.cmake +++ b/boards/px4/fmu-v4/stackcheck.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL stackcheck TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common TESTING #UAVCAN_INTERFACES 1 diff --git a/boards/px4/fmu-v4pro/default.cmake b/boards/px4/fmu-v4pro/default.cmake index 9b1824e29c..3ef740388c 100644 --- a/boards/px4/fmu-v4pro/default.cmake +++ b/boards/px4/fmu-v4pro/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default TESTING diff --git a/boards/px4/fmu-v4pro/rtps.cmake b/boards/px4/fmu-v4pro/rtps.cmake index 7a87c46b58..537f1fece4 100644 --- a/boards/px4/fmu-v4pro/rtps.cmake +++ b/boards/px4/fmu-v4pro/rtps.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL rtps TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common IO px4_io-v2_default TESTING diff --git a/boards/uvify/core/default.cmake b/boards/uvify/core/default.cmake index ff72978077..4755c6d31e 100644 --- a/boards/uvify/core/default.cmake +++ b/boards/uvify/core/default.cmake @@ -6,6 +6,7 @@ px4_add_board( LABEL default TOOLCHAIN arm-none-eabi ARCHITECTURE cortex-m4 + CONSTRAINED_MEMORY ROMFSROOT px4fmu_common UAVCAN_INTERFACES 1 SERIAL_PORTS diff --git a/cmake/px4_add_board.cmake b/cmake/px4_add_board.cmake index 11ec1a7eac..5f03a70e04 100644 --- a/cmake/px4_add_board.cmake +++ b/cmake/px4_add_board.cmake @@ -56,6 +56,7 @@ # [ EXAMPLES ] # [ SERIAL_PORTS ] # [ CONSTRAINED_FLASH ] +# [ CONSTRAINED_MEMORY ] # [ TESTING ] # [ LINKER_PREFIX ] # [ EMBEDDED_METADATA ] @@ -80,6 +81,7 @@ # SERIAL_PORTS : mapping of user configurable serial ports and param facing name # EMBEDDED_METADATA : list of metadata to embed to ROMFS # CONSTRAINED_FLASH : flag to enable constrained flash options (eg limit init script status text) +# CONSTRAINED_MEMORY : flag to enable constrained memory options (eg limit maximum number of uORB publications) # TESTING : flag to enable automatic inclusion of PX4 testing modules # LINKER_PREFIX : optional to prefix on the Linker script. # @@ -156,6 +158,7 @@ function(px4_add_board) OPTIONS BUILD_BOOTLOADER CONSTRAINED_FLASH + CONSTRAINED_MEMORY TESTING REQUIRED PLATFORM @@ -248,6 +251,11 @@ function(px4_add_board) add_definitions(-DCONSTRAINED_FLASH) endif() + if(CONSTRAINED_MEMORY) + set(px4_constrained_memory_build "1" CACHE INTERNAL "constrained memory build" FORCE) + add_definitions(-DCONSTRAINED_MEMORY) + endif() + if(TESTING) set(PX4_TESTING "1" CACHE INTERNAL "testing enabled" FORCE) endif() diff --git a/src/modules/ekf2/EKF2Selector.hpp b/src/modules/ekf2/EKF2Selector.hpp index 3ec29a7bb6..a98908e7a8 100644 --- a/src/modules/ekf2/EKF2Selector.hpp +++ b/src/modules/ekf2/EKF2Selector.hpp @@ -53,8 +53,11 @@ #include #include -static constexpr uint8_t EKF2_MAX_INSTANCES{9}; -static_assert(EKF2_MAX_INSTANCES <= ORB_MULTI_MAX_INSTANCES, "EKF2_MAX_INSTANCES must be <= ORB_MULTI_MAX_INSTANCES"); +#if CONSTRAINED_MEMORY +# define EKF2_MAX_INSTANCES 2 +#else +# define EKF2_MAX_INSTANCES 9 +#endif using namespace time_literals; @@ -84,6 +87,7 @@ private: // Subscriptions (per estimator instance) struct EstimatorInstance { + EstimatorInstance(EKF2Selector *selector, uint8_t i) : estimator_attitude_sub{selector, ORB_ID(estimator_attitude), i}, estimator_status_sub{selector, ORB_ID(estimator_status), i}, @@ -119,13 +123,17 @@ private: EstimatorInstance _instance[EKF2_MAX_INSTANCES] { {this, 0}, {this, 1}, +#if EKF2_MAX_INSTANCES > 2 {this, 2}, {this, 3}, +#if EKF2_MAX_INSTANCES > 4 {this, 4}, {this, 5}, {this, 6}, {this, 7}, {this, 8}, +#endif +#endif }; static constexpr uint8_t IMU_STATUS_SIZE = (sizeof(sensors_status_imu_s::gyro_inconsistency_rad_s) / sizeof( @@ -136,7 +144,7 @@ private: static_assert(IMU_STATUS_SIZE == sizeof(estimator_selector_status_s::accumulated_accel_error) / sizeof( estimator_selector_status_s::accumulated_accel_error[0]), "increase estimator_selector_status_s::accumulated_accel_error size"); - static_assert(EKF2_MAX_INSTANCES == sizeof(estimator_selector_status_s::combined_test_ratio) / sizeof( + static_assert(EKF2_MAX_INSTANCES <= sizeof(estimator_selector_status_s::combined_test_ratio) / sizeof( estimator_selector_status_s::combined_test_ratio[0]), "increase estimator_selector_status_s::combined_test_ratio size"); diff --git a/src/modules/logger/logged_topics.cpp b/src/modules/logger/logged_topics.cpp index 9eb81aa1fd..6fbab5b3e3 100644 --- a/src/modules/logger/logged_topics.cpp +++ b/src/modules/logger/logged_topics.cpp @@ -111,7 +111,7 @@ void LoggedTopics::add_default_topics() add_topic("vehicle_status_flags"); add_topic("vtol_vehicle_status", 200); - // Control allocaton topics + // Control allocation topics add_topic("vehicle_angular_acceleration_setpoint", 20); add_topic("vehicle_angular_acceleration", 20); add_topic("vehicle_thrust_setpoint", 20); @@ -126,7 +126,12 @@ void LoggedTopics::add_default_topics() add_topic_multi("telemetry_status", 1000, 4); // EKF multi topics (currently max 9 estimators) - static constexpr uint8_t MAX_ESTIMATOR_INSTANCES = 4; +#if CONSTRAINED_MEMORY + static constexpr uint8_t MAX_ESTIMATOR_INSTANCES = 2; +#else + static constexpr uint8_t MAX_ESTIMATOR_INSTANCES = 6; // artificailly limited until PlotJuggler fixed +#endif + add_topic("estimator_selector_status"); add_topic_multi("ekf_gps_drift", 1000, MAX_ESTIMATOR_INSTANCES); add_topic_multi("estimator_attitude", 500, MAX_ESTIMATOR_INSTANCES); diff --git a/src/modules/uORB/uORB.h b/src/modules/uORB/uORB.h index 5c5ea7995d..b9d0f2705f 100644 --- a/src/modules/uORB/uORB.h +++ b/src/modules/uORB/uORB.h @@ -58,9 +58,13 @@ struct orb_metadata { typedef const struct orb_metadata *orb_id_t; /** - * Maximum number of multi topic instances + * Maximum number of multi topic instances. This must be <= 10 (because it's the last char of the node path) */ -#define ORB_MULTI_MAX_INSTANCES 10 // This must be <= 10 (because it's the last char of the node path) +#if defined(CONSTRAINED_MEMORY) +# define ORB_MULTI_MAX_INSTANCES 4 +#else +# define ORB_MULTI_MAX_INSTANCES 10 +#endif /** * Generates a pointer to the uORB metadata structure for diff --git a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp index d248118dc4..e57bd0a984 100644 --- a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp +++ b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp @@ -727,12 +727,14 @@ int uORBTest::UnitTest::test_SubscriptionMulti() ORB_ID::orb_test, ORB_ID::orb_test, ORB_ID::orb_test, +#if ORB_MULTI_MAX_INSTANCES > 4 ORB_ID::orb_test, ORB_ID::orb_test, ORB_ID::orb_test, ORB_ID::orb_test, ORB_ID::orb_test, ORB_ID::orb_test, +#endif }; uORB::SubscriptionMultiArray orb_test_sub_multi_array{ORB_ID::orb_test};