Fixed STM32 Event

This commit is contained in:
Pavel Kirienko 2014-04-05 16:34:37 +04:00
parent db334f9fab
commit 54606e494a

View File

@ -13,14 +13,18 @@ namespace uavcan_stm32
*/
bool Event::wait(uavcan::MonotonicDuration duration)
{
static const uavcan::int64_t MaxDelayMSec = 0x000FFFFF;
const uavcan::int64_t msec = duration.toMSec();
msg_t ret = msg_t();
if (!duration.isPositive())
if (msec <= 0)
{
sem_.waitTimeout(TIME_IMMEDIATE);
ret = sem_.waitTimeout(TIME_IMMEDIATE);
}
else
{
sem_.waitTimeout(MS2ST(duration.toMSec()));
ret = sem_.waitTimeout((msec > MaxDelayMSec) ? MS2ST(MaxDelayMSec) : MS2ST(msec));
}
return ret == RDY_OK;
}