Browse Source

AP_HAL: added begin_atomic and end_atomic to scheduler

mission-4.1.18
Pat Hickey 12 years ago committed by Andrew Tridgell
parent
commit
c9541d3b00
  1. 3
      libraries/AP_HAL/Scheduler.h
  2. 8
      libraries/AP_HAL_AVR/Scheduler.cpp
  3. 2
      libraries/AP_HAL_AVR/Scheduler.h

3
libraries/AP_HAL/Scheduler.h

@ -22,6 +22,9 @@ public:
uint32_t period_us) = 0; uint32_t period_us) = 0;
virtual void suspend_timer_procs() = 0; virtual void suspend_timer_procs() = 0;
virtual void resume_timer_procs() = 0; virtual void resume_timer_procs() = 0;
virtual void begin_atomic() = 0;
virtual void end_atomic() = 0;
}; };
#endif // __AP_HAL_SCHEDULER_H__ #endif // __AP_HAL_SCHEDULER_H__

8
libraries/AP_HAL_AVR/Scheduler.cpp

@ -321,3 +321,11 @@ void ArduinoScheduler::_timer_event() {
_in_timer_proc = false; _in_timer_proc = false;
} }
void ArduinoScheduler::begin_atomic() {
cli();
}
void ArduinoScheduler::end_atomic() {
sei();
}

2
libraries/AP_HAL_AVR/Scheduler.h

@ -25,6 +25,8 @@ public:
void register_timer_failsafe(AP_HAL::TimedProc, uint32_t period_us); void register_timer_failsafe(AP_HAL::TimedProc, uint32_t period_us);
void suspend_timer_procs(); void suspend_timer_procs();
void resume_timer_procs(); void resume_timer_procs();
void begin_atomic();
void end_atomic();
private: private:
/* Implementation specific methods: */ /* Implementation specific methods: */

Loading…
Cancel
Save