Copter: only allow entering the CLI within 30 seconds of start-up

This commit is contained in:
Randy Mackay 2013-03-21 11:54:04 +09:00
parent 3f6eb87f23
commit dcf21eee8f
3 changed files with 13 additions and 1 deletions

View File

@ -122,6 +122,8 @@ public:
// see if we should send a stream now. Called at 50Hz // see if we should send a stream now. Called at 50Hz
bool stream_trigger(enum streams stream_num); bool stream_trigger(enum streams stream_num);
// call to reset the timeout window for entering the cli
void reset_cli_timeout();
private: private:
void handleMessage(mavlink_message_t * msg); void handleMessage(mavlink_message_t * msg);
@ -192,6 +194,10 @@ private:
// number of extra ticks to add to slow things down for the radio // number of extra ticks to add to slow things down for the radio
uint8_t stream_slowdown; uint8_t stream_slowdown;
// millis value to calculate cli timeout relative to.
// exists so we can separate the cli entry time from the system start time
uint32_t _cli_timeout;
}; };
#endif // __GCS_H #endif // __GCS_H

View File

@ -849,6 +849,7 @@ GCS_MAVLINK::init(AP_HAL::UARTDriver* port)
chan = MAVLINK_COMM_1; chan = MAVLINK_COMM_1;
} }
_queued_parameter = NULL; _queued_parameter = NULL;
reset_cli_timeout();
} }
void void
@ -867,7 +868,7 @@ GCS_MAVLINK::update(void)
#if CLI_ENABLED == ENABLED #if CLI_ENABLED == ENABLED
/* allow CLI to be started by hitting enter 3 times, if no /* allow CLI to be started by hitting enter 3 times, if no
* heartbeat packets have been received */ * heartbeat packets have been received */
if (mavlink_active == false) { if (mavlink_active == 0 && (millis() - _cli_timeout) < 30000) {
if (c == '\n' || c == '\r') { if (c == '\n' || c == '\r') {
crlf_count++; crlf_count++;
} else { } else {
@ -2178,6 +2179,10 @@ GCS_MAVLINK::queued_waypoint_send()
} }
} }
void GCS_MAVLINK::reset_cli_timeout() {
_cli_timeout = millis();
}
/* /*
* a delay() callback that processes MAVLink packets. We set this as the * a delay() callback that processes MAVLink packets. We set this as the
* callback in long running library initialisation routines to allow * callback in long running library initialisation routines to allow

View File

@ -181,6 +181,7 @@ static void init_ardupilot()
} else if (DataFlash.NeedErase()) { } else if (DataFlash.NeedErase()) {
gcs_send_text_P(SEVERITY_LOW, PSTR("ERASING LOGS")); gcs_send_text_P(SEVERITY_LOW, PSTR("ERASING LOGS"));
do_erase_logs(); do_erase_logs();
gcs0.reset_cli_timeout();
} }
if (g.log_bitmask != 0) { if (g.log_bitmask != 0) {
DataFlash.start_new_log(); DataFlash.start_new_log();