Lines Matching refs:CANmodule
25 CO_CANmodule_t *CANmodule; member
71 static void canopen_detach_all_rx_filters(CO_CANmodule_t *CANmodule) in canopen_detach_all_rx_filters() argument
75 if (!CANmodule || !CANmodule->rx_array || !CANmodule->configured) { in canopen_detach_all_rx_filters()
79 for (i = 0U; i < CANmodule->rx_size; i++) { in canopen_detach_all_rx_filters()
80 if (CANmodule->rx_array[i].filter_id != -ENOSPC) { in canopen_detach_all_rx_filters()
81 can_remove_rx_filter(CANmodule->dev, in canopen_detach_all_rx_filters()
82 CANmodule->rx_array[i].filter_id); in canopen_detach_all_rx_filters()
83 CANmodule->rx_array[i].filter_id = -ENOSPC; in canopen_detach_all_rx_filters()
90 CO_CANmodule_t *CANmodule = (CO_CANmodule_t *)user_data; in canopen_rx_callback() local
99 for (i = 0; i < CANmodule->rx_size; i++) { in canopen_rx_callback()
100 buffer = &CANmodule->rx_array[i]; in canopen_rx_callback()
126 CO_CANmodule_t *CANmodule = arg; in canopen_tx_callback() local
130 if (!CANmodule) { in canopen_tx_callback()
136 CANmodule->first_tx_msg = false; in canopen_tx_callback()
146 CO_CANmodule_t *CANmodule = container->CANmodule; in canopen_tx_retry() local
156 for (i = 0; i < CANmodule->tx_size; i++) { in canopen_tx_retry()
157 buffer = &CANmodule->tx_array[i]; in canopen_tx_retry()
164 err = can_send(CANmodule->dev, &frame, K_NO_WAIT, in canopen_tx_retry()
165 canopen_tx_callback, CANmodule); in canopen_tx_retry()
171 CO_errorReport(CANmodule->em, in canopen_tx_retry()
195 void CO_CANsetNormalMode(CO_CANmodule_t *CANmodule) in CO_CANsetNormalMode() argument
199 err = can_start(CANmodule->dev); in CO_CANsetNormalMode()
205 CANmodule->CANnormal = true; in CO_CANsetNormalMode()
208 CO_ReturnError_t CO_CANmodule_init(CO_CANmodule_t *CANmodule, in CO_CANmodule_init() argument
221 if (!CANmodule || !rxArray || !txArray || !CANdriverState) { in CO_CANmodule_init()
243 canopen_detach_all_rx_filters(CANmodule); in CO_CANmodule_init()
244 canopen_tx_queue.CANmodule = CANmodule; in CO_CANmodule_init()
246 CANmodule->dev = ctx->dev; in CO_CANmodule_init()
247 CANmodule->rx_array = rxArray; in CO_CANmodule_init()
248 CANmodule->rx_size = rxSize; in CO_CANmodule_init()
249 CANmodule->tx_array = txArray; in CO_CANmodule_init()
250 CANmodule->tx_size = txSize; in CO_CANmodule_init()
251 CANmodule->CANnormal = false; in CO_CANmodule_init()
252 CANmodule->first_tx_msg = true; in CO_CANmodule_init()
253 CANmodule->errors = 0; in CO_CANmodule_init()
254 CANmodule->em = NULL; in CO_CANmodule_init()
266 err = can_set_bitrate(CANmodule->dev, KHZ(CANbitRate)); in CO_CANmodule_init()
272 err = can_set_mode(CANmodule->dev, CAN_MODE_NORMAL); in CO_CANmodule_init()
278 CANmodule->configured = true; in CO_CANmodule_init()
283 void CO_CANmodule_disable(CO_CANmodule_t *CANmodule) in CO_CANmodule_disable() argument
287 if (!CANmodule || !CANmodule->dev) { in CO_CANmodule_disable()
291 canopen_detach_all_rx_filters(CANmodule); in CO_CANmodule_disable()
293 err = can_stop(CANmodule->dev); in CO_CANmodule_disable()
304 CO_ReturnError_t CO_CANrxBufferInit(CO_CANmodule_t *CANmodule, uint16_t index, in CO_CANrxBufferInit() argument
312 if (CANmodule == NULL) { in CO_CANrxBufferInit()
316 if (!pFunct || (index >= CANmodule->rx_size)) { in CO_CANrxBufferInit()
318 CO_errorReport(CANmodule->em, CO_EM_GENERIC_SOFTWARE_ERROR, in CO_CANrxBufferInit()
323 buffer = &CANmodule->rx_array[index]; in CO_CANrxBufferInit()
332 CO_errorReport(CANmodule->em, CO_EM_GENERIC_SOFTWARE_ERROR, in CO_CANrxBufferInit()
345 can_remove_rx_filter(CANmodule->dev, buffer->filter_id); in CO_CANrxBufferInit()
348 buffer->filter_id = can_add_rx_filter(CANmodule->dev, in CO_CANrxBufferInit()
350 CANmodule, &filter); in CO_CANrxBufferInit()
353 CO_errorReport(CANmodule->em, CO_EM_MEMORY_ALLOCATION_ERROR, in CO_CANrxBufferInit()
361 CO_CANtx_t *CO_CANtxBufferInit(CO_CANmodule_t *CANmodule, uint16_t index, in CO_CANtxBufferInit() argument
367 if (CANmodule == NULL) { in CO_CANtxBufferInit()
371 if (index >= CANmodule->tx_size) { in CO_CANtxBufferInit()
373 CO_errorReport(CANmodule->em, CO_EM_GENERIC_SOFTWARE_ERROR, in CO_CANtxBufferInit()
378 buffer = &CANmodule->tx_array[index]; in CO_CANtxBufferInit()
388 CO_ReturnError_t CO_CANsend(CO_CANmodule_t *CANmodule, CO_CANtx_t *buffer) in CO_CANsend() argument
394 if (!CANmodule || !CANmodule->dev || !buffer) { in CO_CANsend()
403 if (!CANmodule->first_tx_msg) { in CO_CANsend()
404 CO_errorReport(CANmodule->em, CO_EM_CAN_TX_OVERFLOW, in CO_CANsend()
416 err = can_send(CANmodule->dev, &frame, K_NO_WAIT, canopen_tx_callback, in CO_CANsend()
417 CANmodule); in CO_CANsend()
422 CO_errorReport(CANmodule->em, CO_EM_GENERIC_SOFTWARE_ERROR, in CO_CANsend()
432 void CO_CANclearPendingSyncPDOs(CO_CANmodule_t *CANmodule) in CO_CANclearPendingSyncPDOs() argument
438 if (!CANmodule) { in CO_CANclearPendingSyncPDOs()
444 for (i = 0; i < CANmodule->tx_size; i++) { in CO_CANclearPendingSyncPDOs()
445 buffer = &CANmodule->tx_array[i]; in CO_CANclearPendingSyncPDOs()
455 CO_errorReport(CANmodule->em, CO_EM_TPDO_OUTSIDE_WINDOW, in CO_CANclearPendingSyncPDOs()
460 void CO_CANverifyErrors(CO_CANmodule_t *CANmodule) in CO_CANverifyErrors() argument
462 CO_EM_t *em = (CO_EM_t *)CANmodule->em; in CO_CANverifyErrors()
475 err = can_get_state(CANmodule->dev, &state, &err_cnt); in CO_CANverifyErrors()
485 if (errors != CANmodule->errors) { in CO_CANverifyErrors()
486 CANmodule->errors = errors; in CO_CANverifyErrors()
518 !CANmodule->first_tx_msg) { in CO_CANverifyErrors()