HAL_ChibiOS: removed hal.util->new_semaphore()

replaced with HAL_Semaphore
This commit is contained in:
Andrew Tridgell 2018-10-12 10:35:32 +11:00
parent b455c7a769
commit 4416404137
3 changed files with 36 additions and 41 deletions

View File

@ -17,6 +17,7 @@
#include <AP_HAL/AP_HAL.h>
#include "ch.h"
#include "hal.h"
#include <AP_Common/Semaphore.h>
#if HAL_USE_ADC == TRUE
@ -76,15 +77,14 @@ AnalogSource::AnalogSource(int16_t pin, float initial_value) :
_sum_value(0),
_sum_ratiometric(0)
{
_semaphore = hal.util->new_semaphore();
}
float AnalogSource::read_average()
{
if (_semaphore->take(1)) {
WITH_SEMAPHORE(_semaphore);
if (_sum_count == 0) {
_semaphore->give();
return _value;
}
_value = _sum_value / _sum_count;
@ -92,8 +92,7 @@ float AnalogSource::read_average()
_sum_value = 0;
_sum_ratiometric = 0;
_sum_count = 0;
_semaphore->give();
}
return _value;
}
@ -148,7 +147,7 @@ void AnalogSource::set_pin(uint8_t pin)
if (_pin == pin) {
return;
}
if (_semaphore->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
WITH_SEMAPHORE(_semaphore);
_pin = pin;
_sum_value = 0;
_sum_ratiometric = 0;
@ -156,8 +155,6 @@ void AnalogSource::set_pin(uint8_t pin)
_latest_value = 0;
_value = 0;
_value_ratiometric = 0;
_semaphore->give();
}
}
/*
@ -165,7 +162,8 @@ void AnalogSource::set_pin(uint8_t pin)
*/
void AnalogSource::_add_value(float v, float vcc5V)
{
if (_semaphore->take(1)) {
WITH_SEMAPHORE(_semaphore);
_latest_value = v;
_sum_value += v;
if (vcc5V < 3.0f) {
@ -181,8 +179,6 @@ void AnalogSource::_add_value(float v, float vcc5V)
_sum_ratiometric /= 2;
_sum_count /= 2;
}
_semaphore->give();
}
}

View File

@ -50,7 +50,7 @@ private:
float _sum_ratiometric;
void _add_value(float v, float vcc5V);
float _pin_scaler();
AP_HAL::Semaphore *_semaphore;
HAL_Semaphore _semaphore;
};
class ChibiOS::AnalogIn : public AP_HAL::AnalogIn {

View File

@ -27,7 +27,6 @@ public:
}
bool run_debug_shell(AP_HAL::BetterStream *stream) override { return false; }
AP_HAL::Semaphore *new_semaphore(void) override { return new ChibiOS::Semaphore; }
uint32_t available_memory() override;
// Special Allocation Routines