12345678910111213141516171819202122232425262728 |
- #include "AP_HAL.h"
- extern const AP_HAL::HAL &hal;
- /*
- implement WithSemaphore class for WITH_SEMAPHORE() support
- */
- WithSemaphore::WithSemaphore(AP_HAL::Semaphore *mtx, uint32_t line) :
- WithSemaphore(*mtx, line)
- {}
- WithSemaphore::WithSemaphore(AP_HAL::Semaphore &mtx, uint32_t line) :
- _mtx(mtx)
- {
- bool in_main = hal.scheduler->in_main_thread();
- if (in_main) {
- hal.util->persistent_data.semaphore_line = line;
- }
- _mtx.take_blocking();
- if (in_main) {
- hal.util->persistent_data.semaphore_line = 0;
- }
- }
- WithSemaphore::~WithSemaphore()
- {
- _mtx.give();
- }
|