From bb806fe4c18e628b546291dab906928ebdb46627 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Tue, 2 Jan 2018 11:17:31 +0000 Subject: Added callbacks capability to the CAN driver. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11213 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/src/hal_can.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'os/hal/src') diff --git a/os/hal/src/hal_can.c b/os/hal/src/hal_can.c index 122e5eb76..6d174f7b6 100644 --- a/os/hal/src/hal_can.c +++ b/os/hal/src/hal_can.c @@ -67,10 +67,11 @@ void canInit(void) { */ void canObjectInit(CANDriver *canp) { - canp->state = CAN_STOP; - canp->config = NULL; + canp->state = CAN_STOP; + canp->config = NULL; osalThreadQueueObjectInit(&canp->txqueue); osalThreadQueueObjectInit(&canp->rxqueue); +#if !defined(CAN_ENFORCE_USE_CALLBACKS) osalEventObjectInit(&canp->rxfull_event); osalEventObjectInit(&canp->txempty_event); osalEventObjectInit(&canp->error_event); @@ -78,6 +79,14 @@ void canObjectInit(CANDriver *canp) { osalEventObjectInit(&canp->sleep_event); osalEventObjectInit(&canp->wakeup_event); #endif +#else /* defined(CAN_ENFORCE_USE_CALLBACKS) */ + canp->rxfull_cb = NULL; + canp->txempty_cb = NULL; + canp->error_cb = NULL; +#if CAN_USE_SLEEP_MODE == TRUE + canp->wakeup_cb = NULL; +#endif +#endif /* defined(CAN_ENFORCE_USE_CALLBACKS) */ } /** @@ -327,8 +336,10 @@ void canSleep(CANDriver *canp) { if (canp->state == CAN_READY) { can_lld_sleep(canp); canp->state = CAN_SLEEP; +#if !defined(CAN_ENFORCE_USE_CALLBACKS) osalEventBroadcastFlagsI(&canp->sleep_event, (eventflags_t)0); osalOsRescheduleS(); +#endif } osalSysUnlock(); } @@ -350,8 +361,10 @@ void canWakeup(CANDriver *canp) { if (canp->state == CAN_SLEEP) { can_lld_wakeup(canp); canp->state = CAN_READY; +#if !defined(CAN_ENFORCE_USE_CALLBACKS) osalEventBroadcastFlagsI(&canp->wakeup_event, (eventflags_t)0); osalOsRescheduleS(); +#endif } osalSysUnlock(); } -- cgit v1.2.3