From 7c7a215934cae75e922610ae3966b8df222dd552 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 11 Jan 2013 12:20:43 +1100 Subject: [PATCH] HAL_PX4: fixes for new Scheduler API --- libraries/AP_HAL_PX4/HAL_PX4_Class.cpp | 1 + libraries/AP_HAL_PX4/Scheduler.cpp | 16 ++++++++++++++++ libraries/AP_HAL_PX4/Scheduler.h | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/libraries/AP_HAL_PX4/HAL_PX4_Class.cpp b/libraries/AP_HAL_PX4/HAL_PX4_Class.cpp index 8e39cfb676..33cc477b53 100644 --- a/libraries/AP_HAL_PX4/HAL_PX4_Class.cpp +++ b/libraries/AP_HAL_PX4/HAL_PX4_Class.cpp @@ -82,6 +82,7 @@ static int main_loop(int argc, char **argv) hal.rcout->init(NULL); setup(); + hal.scheduler->system_initialized(); while (true) { loop(); diff --git a/libraries/AP_HAL_PX4/Scheduler.cpp b/libraries/AP_HAL_PX4/Scheduler.cpp index dda50b2f4d..6fa58e6313 100644 --- a/libraries/AP_HAL_PX4/Scheduler.cpp +++ b/libraries/AP_HAL_PX4/Scheduler.cpp @@ -187,4 +187,20 @@ void PX4Scheduler::panic(const prog_char_t *errormsg) { exit(1); } +bool PX4Scheduler::in_timerprocess() { + return _in_timer_proc; +} + +bool PX4Scheduler::system_initializing() { + return !_initialized; +} + +void PX4Scheduler::system_initialized() { + if (_initialized) { + panic(PSTR("PANIC: scheduler::system_initialized called" + "more than once")); + } + _initialized = true; +} + #endif diff --git a/libraries/AP_HAL_PX4/Scheduler.h b/libraries/AP_HAL_PX4/Scheduler.h index 83baf55e4a..797ae6cc93 100644 --- a/libraries/AP_HAL_PX4/Scheduler.h +++ b/libraries/AP_HAL_PX4/Scheduler.h @@ -33,7 +33,12 @@ public: void panic(const prog_char_t *errormsg); bool interrupts_are_blocked(void) { return _nested_atomic_ctr != 0; } + bool in_timerprocess(); + bool system_initializing(); + void system_initialized(); + private: + bool _initialized; static uint8_t _nested_atomic_ctr; AP_HAL::Proc _delay_cb; uint16_t _min_delay_cb_ms;