From d6d72af9a0a98ac8d2b3344e9d1c69b952ba1fe1 Mon Sep 17 00:00:00 2001 From: ryanpdx Date: Sun, 26 Nov 2023 12:50:11 -0800 Subject: [PATCH] add #define to disable hb consumer --- common/CO_threads.c | 12 ++++++++++++ common/include/CO_driver_target.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/common/CO_threads.c b/common/CO_threads.c index 7e7862cf..7d0af871 100644 --- a/common/CO_threads.c +++ b/common/CO_threads.c @@ -8,10 +8,14 @@ static thread_t *nmt_tp; static thread_t *sdo_srv_tp[OD_CNT_SDO_SRV]; +#if OD_CNT_SDO_CLI > 0 static thread_t *sdo_cli_tp[OD_CNT_SDO_CLI]; +#endif static thread_t *em_tp; static thread_t *pdo_sync_tp; +#if OD_CNT_HB_CONS == 1 static thread_t *hbcons_tp; +#endif static CO_NMT_internalState_t NMTstate; @@ -218,6 +222,7 @@ THD_FUNCTION(pdo_sync, arg) chThdExit(MSG_OK); } +#if OD_CNT_HB_CONS == 1 /* CANopen Heartbeat Consumer thread */ THD_FUNCTION(hb_cons, arg) { @@ -239,6 +244,7 @@ THD_FUNCTION(hb_cons, arg) CO_HBconsumer_initCallbackPre(HBcons, NULL, NULL); chThdExit(MSG_OK); } +#endif /* CANopen NMT and Heartbeat thread */ THD_FUNCTION(nmt, arg) @@ -266,7 +272,9 @@ THD_FUNCTION(nmt, arg) #endif em_tp = chThdCreateFromHeap(NULL, THD_WORKING_AREA_SIZE(0x200), "Emergency", HIGHPRIO-2, em, co->em); pdo_sync_tp = chThdCreateFromHeap(NULL, THD_WORKING_AREA_SIZE(0x200), "PDO SYNC", HIGHPRIO-2, pdo_sync, co); +#if OD_CNT_HB_CONS == 1 hbcons_tp = chThdCreateFromHeap(NULL, THD_WORKING_AREA_SIZE(0x200), "HB Consumer", HIGHPRIO-3, hb_cons, co->HBcons); +#endif /* Enter normal operating mode */ CO_CANsetNormalMode(co->CANmodule); @@ -308,8 +316,10 @@ THD_FUNCTION(nmt, arg) chEvtSignal(em_tp, CO_EVT_TERMINATE); chThdTerminate(pdo_sync_tp); chEvtSignal(pdo_sync_tp, CO_EVT_TERMINATE); +#if OD_CNT_HB_CONS == 1 chThdTerminate(hbcons_tp); chEvtSignal(hbcons_tp, CO_EVT_TERMINATE); +#endif /* Wait for CANopen threads to end */ #if OD_CNT_SDO_CLI > 0 @@ -322,7 +332,9 @@ THD_FUNCTION(nmt, arg) } chThdWait(em_tp); chThdWait(pdo_sync_tp); +#if OD_CNT_HB_CONS == 1 chThdWait(hbcons_tp); +#endif /* Terminate and return reset value */ chThdExit(reset); diff --git a/common/include/CO_driver_target.h b/common/include/CO_driver_target.h index 30a431b3..be4278a7 100644 --- a/common/include/CO_driver_target.h +++ b/common/include/CO_driver_target.h @@ -52,6 +52,8 @@ extern "C" { #endif #ifndef CO_CONFIG_HB_CONS +#define CO_CONFIG_HB_CONS 0 +#else #define CO_CONFIG_HB_CONS (CO_CONFIG_HB_CONS_ENABLE | \ CO_CONFIG_HB_CONS_CALLBACK_MULTI | \ CO_CONFIG_HB_CONS_QUERY_FUNCT | \