aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Wilks <sjwilks@gmail.com>2015-04-27 13:29:36 +0200
committerSimon Wilks <sjwilks@gmail.com>2015-04-27 13:30:37 +0200
commitef63babb7137b1a0c2cdfed8af5881e0268b26b2 (patch)
tree642ab1c3e58e7484a5fbf5b457184c6bcf8be897
parent868b9b33ed6d7f521d20d28429cd8c7d57311409 (diff)
downloadpx4-firmware-ef63babb7137b1a0c2cdfed8af5881e0268b26b2.tar.gz
px4-firmware-ef63babb7137b1a0c2cdfed8af5881e0268b26b2.tar.bz2
px4-firmware-ef63babb7137b1a0c2cdfed8af5881e0268b26b2.zip
Make sure circuit breakers are ready before the first preflight check call.
-rw-r--r--src/modules/commander/commander.cpp30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index 5eb0ab6ec..7aaf5e5cd 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -213,6 +213,8 @@ int commander_thread_main(int argc, char *argv[]);
void control_status_leds(vehicle_status_s *status, const actuator_armed_s *actuator_armed, bool changed);
+void get_circuit_breaker_params();
+
void check_valid(hrt_abstime timestamp, hrt_abstime timeout, bool valid_in, bool *valid_out, bool *changed);
transition_result_t set_main_state_rc(struct vehicle_status_s *status, struct manual_control_setpoint_s *sp_man);
@@ -1114,6 +1116,8 @@ int commander_thread_main(int argc, char *argv[])
param_get(_param_sys_type, &(status.system_type)); // get system type
status.is_rotary_wing = is_rotary_wing(&status) || is_vtol(&status);
+ get_circuit_breaker_params();
+
bool checkAirspeed = false;
/* Perform airspeed check only if circuit breaker is not
* engaged and it's not a rotary wing */
@@ -1121,9 +1125,9 @@ int commander_thread_main(int argc, char *argv[])
checkAirspeed = true;
}
- //Run preflight check
+ // Run preflight check
status.condition_system_sensors_initialized = Commander::preflightCheck(mavlink_fd, true, true, true, true, checkAirspeed, true);
- if(!status.condition_system_sensors_initialized) {
+ if (!status.condition_system_sensors_initialized) {
set_tune_override(TONE_GPS_WARNING_TUNE); //sensor fail tune
}
else {
@@ -1207,14 +1211,7 @@ int commander_thread_main(int argc, char *argv[])
param_get(_param_system_id, &(status.system_id));
param_get(_param_component_id, &(status.component_id));
- status.circuit_breaker_engaged_power_check =
- circuit_breaker_enabled("CBRK_SUPPLY_CHK", CBRK_SUPPLY_CHK_KEY);
- status.circuit_breaker_engaged_airspd_check =
- circuit_breaker_enabled("CBRK_AIRSPD_CHK", CBRK_AIRSPD_CHK_KEY);
- status.circuit_breaker_engaged_enginefailure_check =
- circuit_breaker_enabled("CBRK_ENGINEFAIL", CBRK_ENGINEFAIL_KEY);
- status.circuit_breaker_engaged_gpsfailure_check =
- circuit_breaker_enabled("CBRK_GPSFAIL", CBRK_GPSFAIL_KEY);
+ get_circuit_breaker_params();
status_changed = true;
@@ -2108,6 +2105,19 @@ int commander_thread_main(int argc, char *argv[])
}
void
+get_circuit_breaker_params()
+{
+ status.circuit_breaker_engaged_power_check =
+ circuit_breaker_enabled("CBRK_SUPPLY_CHK", CBRK_SUPPLY_CHK_KEY);
+ status.circuit_breaker_engaged_airspd_check =
+ circuit_breaker_enabled("CBRK_AIRSPD_CHK", CBRK_AIRSPD_CHK_KEY);
+ status.circuit_breaker_engaged_enginefailure_check =
+ circuit_breaker_enabled("CBRK_ENGINEFAIL", CBRK_ENGINEFAIL_KEY);
+ status.circuit_breaker_engaged_gpsfailure_check =
+ circuit_breaker_enabled("CBRK_GPSFAIL", CBRK_GPSFAIL_KEY);
+}
+
+void
check_valid(hrt_abstime timestamp, hrt_abstime timeout, bool valid_in, bool *valid_out, bool *changed)
{
hrt_abstime t = hrt_absolute_time();