mirror of https://github.com/ArduPilot/ardupilot
APM_RC - Interupt safe get_last_update();
This commit is contained in:
parent
3a4d122e32
commit
47d2602019
|
@ -49,14 +49,20 @@ public:
|
||||||
virtual void Force_Out2_Out3(void) = 0;
|
virtual void Force_Out2_Out3(void) = 0;
|
||||||
virtual void Force_Out6_Out7(void) = 0;
|
virtual void Force_Out6_Out7(void) = 0;
|
||||||
|
|
||||||
// get the time of the last radio update
|
// get the time of the last radio update (_last_update modified by interrupt, so reading of variable must be interrupt safe)
|
||||||
virtual uint32_t get_last_update() { return _last_update; };
|
virtual uint32_t get_last_update() {
|
||||||
|
|
||||||
|
uint32_t _tmp = _last_update;
|
||||||
|
while( _tmp != _last_update ) _tmp = _last_update;
|
||||||
|
|
||||||
|
return _tmp;
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
uint16_t _map_speed(uint16_t speed_hz) {
|
uint16_t _map_speed(uint16_t speed_hz) {
|
||||||
return 2000000UL / speed_hz;
|
return 2000000UL / speed_hz;
|
||||||
}
|
}
|
||||||
static uint32_t _last_update;
|
static volatile uint32_t _last_update; // Modified by interrupt
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue