AP_HAL_Linux: use take_blocking instead of HAL_SEMAPHORE_BLOCK_FOREVER

this makes for cleaner and smaller code as the failure case is not
needed
This commit is contained in:
Andrew Tridgell 2020-01-19 08:42:33 +11:00
parent 0aae8e13c1
commit 67bd4ed396
4 changed files with 12 additions and 32 deletions

View File

@ -105,7 +105,7 @@ I2CBus::~I2CBus()
void I2CBus::start_cb()
{
sem.take(HAL_SEMAPHORE_BLOCK_FOREVER);
sem.take_blocking();
}
void I2CBus::end_cb()

View File

@ -109,9 +109,7 @@ void RCOutput_Bebop::_start_prop()
{
uint8_t data = BEBOP_BLDC_STARTPROP;
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_dev->get_semaphore()->take_blocking();
if (_dev->transfer(&data, sizeof(data), nullptr, 0)) {
_state = BEBOP_BLDC_STARTED;
@ -138,9 +136,7 @@ void RCOutput_Bebop::_set_ref_speed(uint16_t rpm[BEBOP_BLDC_MOTORS_NUM])
data.enable_security = 0;
data.checksum = _checksum((uint8_t *) &data, sizeof(data) - 1);
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_dev->get_semaphore()->take_blocking();
_dev->transfer((uint8_t *)&data, sizeof(data), nullptr, 0);
@ -155,9 +151,7 @@ bool RCOutput_Bebop::_get_info(struct bldc_info *info)
memset(info, 0, sizeof(struct bldc_info));
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return false;
}
_dev->get_semaphore()->take_blocking();
_dev->read_registers(BEBOP_BLDC_GET_INFO, (uint8_t*)info, sizeof(*info));
_dev->get_semaphore()->give();
return true;
@ -186,9 +180,7 @@ int RCOutput_Bebop::read_obs_data(BebopBLDC_ObsData &obs)
} data;
memset(&data, 0, sizeof(data));
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return -EBUSY;
}
_dev->get_semaphore()->take_blocking();
_dev->read_registers(BEBOP_BLDC_GETOBSDATA, (uint8_t *)&data, sizeof(data));
_dev->get_semaphore()->give();
@ -241,9 +233,7 @@ int RCOutput_Bebop::read_obs_data(BebopBLDC_ObsData &obs)
void RCOutput_Bebop::_toggle_gpio(uint8_t mask)
{
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_dev->get_semaphore()->take_blocking();
_dev->write_register(BEBOP_BLDC_TOGGLE_GPIO, mask);
_dev->get_semaphore()->give();
@ -253,9 +243,7 @@ void RCOutput_Bebop::_stop_prop()
{
uint8_t data = BEBOP_BLDC_STOP_PROP;
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_dev->get_semaphore()->take_blocking();
_dev->transfer(&data, sizeof(data), nullptr, 0);
_dev->get_semaphore()->give();
@ -265,9 +253,7 @@ void RCOutput_Bebop::_clear_error()
{
uint8_t data = BEBOP_BLDC_CLEAR_ERROR;
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_dev->get_semaphore()->take_blocking();
_dev->transfer(&data, sizeof(data), nullptr, 0);
_dev->get_semaphore()->give();
@ -275,9 +261,7 @@ void RCOutput_Bebop::_clear_error()
void RCOutput_Bebop::_play_sound(uint8_t sound)
{
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_dev->get_semaphore()->take_blocking();
_dev->write_register(BEBOP_BLDC_PLAY_SOUND, sound);
_dev->get_semaphore()->give();
@ -309,9 +293,7 @@ void RCOutput_Bebop::play_note(uint8_t pwm,
msg.period = htobe16(period_us);
msg.duration = htobe16(duration_ms);
if (!_dev->get_semaphore()->take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_dev->get_semaphore()->take_blocking();
_dev->transfer((uint8_t *)&msg, sizeof(msg), nullptr, 0);
_dev->get_semaphore()->give();

View File

@ -200,7 +200,7 @@ SPIBus::~SPIBus()
void SPIBus::start_cb()
{
sem.take(HAL_SEMAPHORE_BLOCK_FOREVER);
sem.take_blocking();
}
void SPIBus::end_cb()

View File

@ -237,9 +237,7 @@ void Scheduler::_timer_task()
void Scheduler::_run_io(void)
{
if (!_io_semaphore.take(HAL_SEMAPHORE_BLOCK_FOREVER)) {
return;
}
_io_semaphore.take_blocking();
// now call the IO based drivers
for (int i = 0; i < _num_io_procs; i++) {