@@ -185,48 +185,49 @@ void initActiveBoxIds(void)
185185
186186 activeBoxIds [activeBoxIdCount ++ ] = BOXHEADINGHOLD ;
187187
188- if ((sensors (SENSOR_ACC ) || sensors (SENSOR_MAG )) && STATE (MULTIROTOR )) {
189- activeBoxIds [activeBoxIdCount ++ ] = BOXHEADFREE ;
190- activeBoxIds [activeBoxIdCount ++ ] = BOXHEADADJ ;
191- }
192-
193- if (STATE (ALTITUDE_CONTROL ) && STATE (MULTIROTOR )) {
194- activeBoxIds [activeBoxIdCount ++ ] = BOXFPVANGLEMIX ;
195- }
196-
197188 //Camstab mode is enabled always
198189 activeBoxIds [activeBoxIdCount ++ ] = BOXCAMSTAB ;
199190
200- #ifdef USE_GPS
201- if (STATE (ALTITUDE_CONTROL ) && (sensors (SENSOR_BARO ) || (feature (FEATURE_GPS ) && (STATE (AIRPLANE ) || positionEstimationConfig ()-> use_gps_no_baro )))) {
202- activeBoxIds [activeBoxIdCount ++ ] = BOXNAVALTHOLD ;
203- if (STATE (MULTIROTOR )) {
191+ if (STATE (MULTIROTOR )) {
192+ if ((sensors (SENSOR_ACC ) || sensors (SENSOR_MAG ))) {
193+ activeBoxIds [activeBoxIdCount ++ ] = BOXHEADFREE ;
194+ activeBoxIds [activeBoxIdCount ++ ] = BOXHEADADJ ;
195+ }
196+ if (sensors (SENSOR_BARO ) && sensors (SENSOR_RANGEFINDER ) && sensors (SENSOR_OPFLOW )) {
204197 activeBoxIds [activeBoxIdCount ++ ] = BOXSURFACE ;
205198 }
199+ activeBoxIds [activeBoxIdCount ++ ] = BOXFPVANGLEMIX ;
206200 }
207201
208- const bool navReadyMultirotor = STATE (MULTIROTOR ) && (getHwCompassStatus () != HW_SENSOR_NONE ) && sensors (SENSOR_ACC ) && feature (FEATURE_GPS );
209- const bool navReadyOther = !STATE (MULTIROTOR ) && sensors (SENSOR_ACC ) && feature (FEATURE_GPS );
202+ bool navReadyAltControl = sensors (SENSOR_BARO );
203+ #ifdef USE_GPS
204+ navReadyAltControl = navReadyAltControl || (feature (FEATURE_GPS ) && (STATE (AIRPLANE ) || positionEstimationConfig ()-> use_gps_no_baro ));
205+
210206 const bool navFlowDeadReckoning = sensors (SENSOR_OPFLOW ) && sensors (SENSOR_ACC ) && positionEstimationConfig ()-> allow_dead_reckoning ;
211- if (navFlowDeadReckoning || navReadyMultirotor || navReadyOther ) {
212- if (!STATE (ROVER ) && !STATE (BOAT )) {
213- activeBoxIds [activeBoxIdCount ++ ] = BOXNAVPOSHOLD ;
214- }
207+ bool navReadyPosControl = sensors (SENSOR_ACC ) && feature (FEATURE_GPS );
208+ if (STATE (MULTIROTOR )) {
209+ navReadyPosControl = navReadyPosControl && getHwCompassStatus () != HW_SENSOR_NONE ;
210+ }
211+
212+ if (STATE (ALTITUDE_CONTROL ) && navReadyAltControl && (navReadyPosControl || navFlowDeadReckoning )) {
213+ activeBoxIds [activeBoxIdCount ++ ] = BOXNAVPOSHOLD ;
215214 if (STATE (AIRPLANE )) {
216215 activeBoxIds [activeBoxIdCount ++ ] = BOXLOITERDIRCHN ;
217216 }
218217 }
219218
220- if (navReadyMultirotor || navReadyOther ) {
221- activeBoxIds [activeBoxIdCount ++ ] = BOXNAVRTH ;
222- activeBoxIds [activeBoxIdCount ++ ] = BOXNAVWP ;
223- activeBoxIds [activeBoxIdCount ++ ] = BOXHOMERESET ;
224- activeBoxIds [activeBoxIdCount ++ ] = BOXGCSNAV ;
225- activeBoxIds [activeBoxIdCount ++ ] = BOXPLANWPMISSION ;
219+ if (navReadyPosControl ) {
220+ if (!STATE (ALTITUDE_CONTROL ) || (STATE (ALTITUDE_CONTROL ) && navReadyAltControl )) {
221+ activeBoxIds [activeBoxIdCount ++ ] = BOXNAVRTH ;
222+ activeBoxIds [activeBoxIdCount ++ ] = BOXNAVWP ;
223+ activeBoxIds [activeBoxIdCount ++ ] = BOXHOMERESET ;
224+ activeBoxIds [activeBoxIdCount ++ ] = BOXGCSNAV ;
225+ activeBoxIds [activeBoxIdCount ++ ] = BOXPLANWPMISSION ;
226+ }
226227
227228 if (STATE (AIRPLANE )) {
228- activeBoxIds [activeBoxIdCount ++ ] = BOXNAVCOURSEHOLD ;
229229 activeBoxIds [activeBoxIdCount ++ ] = BOXNAVCRUISE ;
230+ activeBoxIds [activeBoxIdCount ++ ] = BOXNAVCOURSEHOLD ;
230231 activeBoxIds [activeBoxIdCount ++ ] = BOXSOARING ;
231232 }
232233 }
@@ -236,8 +237,10 @@ void initActiveBoxIds(void)
236237 activeBoxIds [activeBoxIdCount ++ ] = BOXBRAKING ;
237238 }
238239#endif
239-
240- #endif
240+ #endif // GPS
241+ if (STATE (ALTITUDE_CONTROL ) && navReadyAltControl ) {
242+ activeBoxIds [activeBoxIdCount ++ ] = BOXNAVALTHOLD ;
243+ }
241244
242245 if (STATE (AIRPLANE ) || STATE (ROVER ) || STATE (BOAT )) {
243246 activeBoxIds [activeBoxIdCount ++ ] = BOXMANUAL ;
0 commit comments