Browse Source

Add fRunPreArmChecks flag

This is to allow unit tests to be written which do not perform pre-arm
checks
sbg
Don Gagne 11 years ago
parent
commit
014fd5f47b
  1. 13
      src/modules/commander/state_machine_helper.cpp
  2. 2
      src/modules/commander/state_machine_helper.h

13
src/modules/commander/state_machine_helper.cpp

@ -99,11 +99,12 @@ static const char * const state_names[ARMING_STATE_MAX] = {
}; };
transition_result_t transition_result_t
arming_state_transition(struct vehicle_status_s *status, /// current vehicle status arming_state_transition(struct vehicle_status_s *status, ///< current vehicle status
const struct safety_s *safety, /// current safety settings const struct safety_s *safety, ///< current safety settings
arming_state_t new_arming_state, /// arming state requested arming_state_t new_arming_state, ///< arming state requested
struct actuator_armed_s *armed, /// current armed status struct actuator_armed_s *armed, ///< current armed status
const int mavlink_fd) /// mavlink fd for error reporting, 0 for none bool fRunPreArmChecks, ///< true: run the pre-arm checks, false: no pre-arm checks, for unit testing
const int mavlink_fd) ///< mavlink fd for error reporting, 0 for none
{ {
// Double check that our static arrays are still valid // Double check that our static arrays are still valid
ASSERT(ARMING_STATE_INIT == 0); ASSERT(ARMING_STATE_INIT == 0);
@ -125,7 +126,7 @@ arming_state_transition(struct vehicle_status_s *status, /// current
int prearm_ret = OK; int prearm_ret = OK;
/* only perform the check if we have to */ /* only perform the check if we have to */
if (new_arming_state == ARMING_STATE_ARMED) { if (fRunPreArmChecks && new_arming_state == ARMING_STATE_ARMED) {
prearm_ret = prearm_check(status, mavlink_fd); prearm_ret = prearm_check(status, mavlink_fd);
} }

2
src/modules/commander/state_machine_helper.h

@ -57,7 +57,7 @@ typedef enum {
bool is_safe(const struct vehicle_status_s *current_state, const struct safety_s *safety, const struct actuator_armed_s *armed); bool is_safe(const struct vehicle_status_s *current_state, const struct safety_s *safety, const struct actuator_armed_s *armed);
transition_result_t arming_state_transition(struct vehicle_status_s *current_state, const struct safety_s *safety, transition_result_t arming_state_transition(struct vehicle_status_s *current_state, const struct safety_s *safety,
arming_state_t new_arming_state, struct actuator_armed_s *armed, const int mavlink_fd); arming_state_t new_arming_state, struct actuator_armed_s *armed, bool fRunPreArmChecks, const int mavlink_fd);
transition_result_t main_state_transition(struct vehicle_status_s *current_state, main_state_t new_main_state); transition_result_t main_state_transition(struct vehicle_status_s *current_state, main_state_t new_main_state);

Loading…
Cancel
Save