File tree Expand file tree Collapse file tree 1 file changed +7
-6
lines changed
libuavcan_drivers/stm32/driver/src Expand file tree Collapse file tree 1 file changed +7
-6
lines changed Original file line number Diff line number Diff line change @@ -17,12 +17,13 @@ namespace uavcan_stm32
1717 */
1818bool BusEvent::wait (uavcan::MonotonicDuration duration)
1919{
20- static const uavcan::int64_t MaxDelayMSec = 0x000FFFFF ;
20+ // set maximum time to allow for 16 bit timers running at 1MHz
21+ static const uavcan::int64_t MaxDelayUSec = 0x000FFFF ;
2122
22- const uavcan::int64_t msec = duration.toMSec ();
23+ const uavcan::int64_t usec = duration.toUSec ();
2324 msg_t ret = msg_t ();
2425
25- if (msec <= 0 )
26+ if (usec <= 0 )
2627 {
2728# if (CH_KERNEL_MAJOR == 2)
2829 ret = sem_.waitTimeout (TIME_IMMEDIATE);
@@ -33,11 +34,11 @@ bool BusEvent::wait(uavcan::MonotonicDuration duration)
3334 else
3435 {
3536# if (CH_KERNEL_MAJOR == 2)
36- ret = sem_.waitTimeout ((msec > MaxDelayMSec ) ? MS2ST (MaxDelayMSec ) : MS2ST (msec ));
37+ ret = sem_.waitTimeout ((usec > MaxDelayUSec ) ? US2ST (MaxDelayUSec ) : US2ST (usec ));
3738# elif defined(MS2ST) // ChibiOS 3+
38- ret = sem_.wait ((msec > MaxDelayMSec ) ? MS2ST (MaxDelayMSec ) : MS2ST (msec ));
39+ ret = sem_.wait ((usec > MaxDelayUSec ) ? US2ST (MaxDelayUSec ) : US2ST (usec ));
3940# else // ChibiOS 17+
40- ret = sem_.wait (::systime_t ((msec > MaxDelayMSec ) ? TIME_MS2I (MaxDelayMSec ) : TIME_MS2I (msec )));
41+ ret = sem_.wait (::systime_t ((usec > MaxDelayUSec ) ? TIME_US2I (MaxDelayUSec ) : TIME_US2I (usec )));
4142# endif
4243 }
4344# if (CH_KERNEL_MAJOR == 2)
You can’t perform that action at this time.
0 commit comments