MCPcopy Create free account
hub / github.com/CANopenNode/CANopenNode / CO_SDOclient_setup

Function CO_SDOclient_setup

301/CO_SDOclient.c:310–358  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

308#endif
309
310CO_SDO_return_t
311CO_SDOclient_setup(CO_SDOclient_t* SDO_C, uint32_t COB_IDClientToServer, uint32_t COB_IDServerToClient,
312 uint8_t nodeIDOfTheSDOServer) {
313 /* verify parameters */
314 if (SDO_C == NULL) {
315 return CO_SDO_RT_wrongArguments;
316 }
317
318 /* Configure object variables */
319 SDO_C->state = CO_SDO_ST_IDLE;
320 CO_FLAG_CLEAR(SDO_C->CANrxNew);
321 SDO_C->nodeIDOfTheSDOServer = nodeIDOfTheSDOServer;
322
323#if ((CO_CONFIG_SDO_CLI)&CO_CONFIG_FLAG_OD_DYNAMIC) != 0
324 /* proceed only, if parameters change */
325 if ((COB_IDClientToServer == SDO_C->COB_IDClientToServer)
326 && (COB_IDServerToClient == SDO_C->COB_IDServerToClient)) {
327 return CO_SDO_RT_ok_communicationEnd;
328 }
329 /* store variables */
330 SDO_C->COB_IDClientToServer = COB_IDClientToServer;
331 SDO_C->COB_IDServerToClient = COB_IDServerToClient;
332#endif
333
334 /* verify valid bit */
335 uint16_t CanIdC2S = ((COB_IDClientToServer & 0x80000000UL) == 0U) ? (uint16_t)(COB_IDClientToServer & 0x7FFU) : 0U;
336 uint16_t CanIdS2C = ((COB_IDServerToClient & 0x80000000UL) == 0U) ? (uint16_t)(COB_IDServerToClient & 0x7FFU) : 0U;
337 if ((CanIdC2S != 0U) && (CanIdS2C != 0U)) {
338 SDO_C->valid = true;
339 } else {
340 CanIdC2S = 0;
341 CanIdS2C = 0;
342 SDO_C->valid = false;
343 }
344
345 /* configure SDO client CAN reception */
346 CO_ReturnError_t ret = CO_CANrxBufferInit(SDO_C->CANdevRx, SDO_C->CANdevRxIdx, CanIdS2C, 0x7FF, false, (void*)SDO_C,
347 CO_SDOclient_receive);
348
349 /* configure SDO client CAN transmission */
350 SDO_C->CANtxBuff = CO_CANtxBufferInit(SDO_C->CANdevTx, SDO_C->CANdevTxIdx, CanIdC2S, false, 8, false);
351
352 if ((ret != CO_ERROR_NO) || (SDO_C->CANtxBuff == NULL)) {
353 SDO_C->valid = false;
354 return CO_SDO_RT_wrongArguments;
355 }
356
357 return CO_SDO_RT_ok_communicationEnd;
358}
359
360/******************************************************************************
361 * DOWNLOAD *

Callers 3

ifFunction · 0.85
OD_write_1280Function · 0.85
CO_SDOclient_initFunction · 0.85

Calls 2

CO_CANrxBufferInitFunction · 0.85
CO_CANtxBufferInitFunction · 0.85

Tested by

no test coverage detected