1
0
Fork 0

Make calculation of timerNext_us optional.

This commit is contained in:
Janez 2020-03-20 16:44:37 +01:00
parent 3fd799f919
commit 6e28914ca9
11 changed files with 132 additions and 22 deletions

View file

@ -308,7 +308,6 @@ void CO_EM_process(
(em->bufReadPtr != em->bufWritePtr || em->bufFull))
{
uint32_t preDEF; /* preDefinedErrorField */
uint16_t diff;
if (emPr->inhibitEmTimer >= emInhTime_us) {
/* inhibit time elapsed, send message */
@ -367,13 +366,16 @@ void CO_EM_process(
CO_CANsend(emPr->CANdev, emPr->CANtxBuff);
}
#if (CO_CONFIG_EM) & CO_CONFIG_FLAG_TIMERNEXT
else if (timerNext_us != NULL) {
uint32_t diff;
/* check again after inhibit time elapsed */
diff = emInhTime_us - emPr->inhibitEmTimer;
if (*timerNext_us > diff) {
*timerNext_us = diff;
}
}
#endif
}
return;

View file

@ -386,6 +386,7 @@ void CO_HBconsumer_process(
monitoredNode->HBstate = CO_HBconsumer_TIMEOUT;
}
#if (CO_CONFIG_HB_CONS) & CO_CONFIG_FLAG_TIMERNEXT
else if (timerNext_us != NULL) {
/* Calculate timerNext_us for next timeout checking. */
uint32_t diff = monitoredNode->time_us
@ -394,6 +395,7 @@ void CO_HBconsumer_process(
*timerNext_us = diff;
}
}
#endif
}
if(monitoredNode->HBstate != CO_HBconsumer_ACTIVE) {

View file

@ -275,12 +275,14 @@ CO_NMT_reset_cmd_t CO_NMT_process(
if (NMT->LEDtimer >= 50000) {
NMT->LEDtimer -= 50000;
#if (CO_CONFIG_NMT) & CO_CONFIG_FLAG_TIMERNEXT
if (timerNext_us != NULL) {
uint32_t diff = 50000 - NMT->LEDtimer;
if (*timerNext_us > diff) {
*timerNext_us = diff;
}
}
#endif
if (++NMT->LEDflickering >= 1) NMT->LEDflickering = -1;
@ -402,12 +404,15 @@ CO_NMT_reset_cmd_t CO_NMT_process(
NMT->pFunctNMT(NMT->operatingState);
}
#endif
#if (CO_CONFIG_NMT) & CO_CONFIG_FLAG_TIMERNEXT
/* execute next CANopen processing immediately */
if (timerNext_us != NULL) {
*timerNext_us = 0;
}
#endif
}
#if (CO_CONFIG_NMT) & CO_CONFIG_FLAG_TIMERNEXT
/* Calculate, when next Heartbeat needs to be send and lower timerNext_us if necessary. */
if (HBtime != 0 && timerNext_us != NULL) {
if (NMT->HBproducerTimer < HBtime) {
@ -419,6 +424,7 @@ CO_NMT_reset_cmd_t CO_NMT_process(
*timerNext_us = 0;
}
}
#endif
return (CO_NMT_reset_cmd_t) NMT->resetCommand;
}

View file

@ -991,6 +991,7 @@ void CO_TPDO_process(
TPDO->eventTimer = ((uint32_t) TPDO->TPDOCommPar->eventTimer) * 1000;
}
}
#if (CO_CONFIG_PDO) & CO_CONFIG_FLAG_TIMERNEXT
if(timerNext_us != NULL){
if(TPDO->sendRequest && *timerNext_us > TPDO->inhibitTimer){
*timerNext_us = TPDO->inhibitTimer; /* Schedule for just beyond inhibit window */
@ -998,6 +999,7 @@ void CO_TPDO_process(
*timerNext_us = TPDO->eventTimer; /* Schedule for next maximum event time */
}
}
#endif
}
/* Synchronous PDOs */

View file

@ -372,10 +372,12 @@ CO_SDOclient_return_t CO_SDOclientDownloadInitiate(
/* if nodeIDOfTheSDOServer == node-ID of this node, then exchange data with this node */
if(SDO_C->SDOClientPar->nodeIDOfTheSDOServer == SDO_C->SDO->nodeId){
#if (CO_CONFIG_SDO_CLI) & CO_CONFIG_FLAG_TIMERNEXT
/* Optional signal to RTOS. We can immediately continue SDO Client */
if(timerNext_us != NULL) {
*timerNext_us = 0;
}
#endif
return CO_SDOcli_ok_communicationEnd;
}
@ -642,6 +644,7 @@ CO_SDOclient_return_t CO_SDOclientDownload(
CO_SDOclient_abort(SDO_C, *pSDOabortCode);
return CO_SDOcli_endedWithTimeout;
}
#if (CO_CONFIG_SDO_CLI) & CO_CONFIG_FLAG_TIMERNEXT
else if (timerNext_us != NULL) {
/* check again after timeout time elapsed */
uint32_t diff = SDO_C->SDOtimeoutTime_us - SDO_C->timeoutTimer;
@ -649,6 +652,7 @@ CO_SDOclient_return_t CO_SDOclientDownload(
*timerNext_us = diff;
}
}
#endif
/* TX data ******************************************************************************************* */
if(SDO_C->CANtxBuff->bufferFull) {
@ -720,12 +724,14 @@ CO_SDOclient_return_t CO_SDOclientDownload(
else if (SDO_C->block_seqno >= SDO_C->block_blksize) {
SDO_C->state = SDO_STATE_BLOCKDOWNLOAD_BLOCK_ACK;
}
#if (CO_CONFIG_SDO_CLI) & CO_CONFIG_FLAG_TIMERNEXT
else {
/* Inform OS to call this function again without delay. */
if (timerNext_us != NULL) {
*timerNext_us = 0;
}
}
#endif
/* tx data */
SDO_C->timeoutTimer = 0;
@ -830,10 +836,12 @@ CO_SDOclient_return_t CO_SDOclientUploadInitiate(
/* if nodeIDOfTheSDOServer == node-ID of this node, then exchange data with this node */
if(SDO_C->SDOClientPar->nodeIDOfTheSDOServer == SDO_C->SDO->nodeId){
#if (CO_CONFIG_SDO_CLI) & CO_CONFIG_FLAG_TIMERNEXT
/* Optional signal to RTOS. We can immediately continue SDO Client */
if(timerNext_us != NULL) {
*timerNext_us = 0;
}
#endif
return CO_SDOcli_ok_communicationEnd;
}
@ -1156,6 +1164,7 @@ CO_SDOclient_return_t CO_SDOclientUpload(
CO_SDOclient_abort(SDO_C, *pSDOabortCode);
return CO_SDOcli_endedWithTimeout;
}
#if (CO_CONFIG_SDO_CLI) & CO_CONFIG_FLAG_TIMERNEXT
else if (timerNext_us != NULL) {
/* check again after timeout time elapsed */
uint32_t diff = SDO_C->SDOtimeoutTime_us - SDO_C->timeoutTimer;
@ -1163,11 +1172,13 @@ CO_SDOclient_return_t CO_SDOclientUpload(
*timerNext_us = diff;
}
}
#endif
/* block TMO */
if (SDO_C->timeoutTimerBLOCK >= SDO_C->SDOtimeoutTimeHalf_us) {
SDO_C->state = SDO_STATE_BLOCKUPLOAD_BLOCK_ACK;
}
#if (CO_CONFIG_SDO_CLI) & CO_CONFIG_FLAG_TIMERNEXT
else if (timerNext_us != NULL) {
/* check again after inhibit time elapsed */
uint32_t diff = SDO_C->SDOtimeoutTimeHalf_us - SDO_C->timeoutTimerBLOCK;
@ -1175,6 +1186,7 @@ CO_SDOclient_return_t CO_SDOclientUpload(
*timerNext_us = diff;
}
}
#endif
/* TX data ******************************************************************************** */

View file

@ -900,6 +900,7 @@ int8_t CO_SDO_process(
return -1;
}
}
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
else if (timerNext_us != NULL) {
/* check again after timeout time elapsed */
uint32_t diff = SDO->SDOtimeoutTime_us - SDO->timeoutTimer;
@ -907,6 +908,7 @@ int8_t CO_SDO_process(
*timerNext_us = diff;
}
}
#endif
/* return immediately if still idle */
if(state == CO_SDO_ST_IDLE){
@ -952,8 +954,10 @@ int8_t CO_SDO_process(
/* finish the communication and run mainline processing again */
SDO->state = CO_SDO_ST_IDLE;
sendResponse = true;
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
if (timerNext_us != NULL)
*timerNext_us = 0;
#endif
}
/* Segmented transfer */
@ -1030,8 +1034,10 @@ int8_t CO_SDO_process(
/* finish the communication and run mainline processing again */
SDO->state = CO_SDO_ST_IDLE;
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
if (timerNext_us != NULL)
*timerNext_us = 0;
#endif
}
/* download segment response and alternate toggle bit */
@ -1177,8 +1183,10 @@ int8_t CO_SDO_process(
SDO->CANtxBuff->data[0] = 0xA1;
SDO->state = CO_SDO_ST_IDLE;
sendResponse = true;
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
if (timerNext_us != NULL)
*timerNext_us = 0;
#endif
break;
}
@ -1198,8 +1206,10 @@ int8_t CO_SDO_process(
/* finish the communication and run mainline processing again */
SDO->state = CO_SDO_ST_IDLE;
sendResponse = true;
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
if (timerNext_us != NULL)
*timerNext_us = 0;
#endif
}
/* Segmented transfer */
@ -1284,8 +1294,10 @@ int8_t CO_SDO_process(
/* finish the communication and run mainline processing again */
SDO->state = CO_SDO_ST_IDLE;
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
if (timerNext_us != NULL)
*timerNext_us = 0;
#endif
}
/* send response */
@ -1474,10 +1486,12 @@ int8_t CO_SDO_process(
/* send response */
CO_CANsend(SDO->CANdevTx, SDO->CANtxBuff);
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
/* Inform OS to call this function again without delay. */
if (timerNext_us != NULL) {
*timerNext_us = 0;
}
#endif
/* don't call CO_FLAG_CLEAR, so return directly */
return 1;
@ -1492,8 +1506,10 @@ int8_t CO_SDO_process(
/* finish the communication and run mainline processing again */
SDO->state = CO_SDO_ST_IDLE;
#if (CO_CONFIG_SDO) & CO_CONFIG_FLAG_TIMERNEXT
if (timerNext_us != NULL)
*timerNext_us = 0;
#endif
break;
}

View file

@ -343,7 +343,6 @@ uint8_t CO_SYNC_process(
/* SYNC producer */
if(SYNC->isProducer && SYNC->periodTime){
uint32_t diff;
if(SYNC->timer >= SYNC->periodTime){
if(++SYNC->counter > SYNC->counterOverflowValue) SYNC->counter = 1;
SYNC->timer = 0;
@ -351,17 +350,16 @@ uint8_t CO_SYNC_process(
SYNC->CANrxToggle = SYNC->CANrxToggle ? false : true;
SYNC->CANtxBuff->data[0] = SYNC->counter;
CO_CANsend(SYNC->CANdevTx, SYNC->CANtxBuff);
diff = SYNC->periodTime;
}else{
/* Calculate when next SYNC needs to be sent */
diff = SYNC->periodTime - SYNC->timer;
}
/* Set lower timerNext_us if necessary. */
#if (CO_CONFIG_SYNC) & CO_CONFIG_FLAG_TIMERNEXT
/* Calculate when next SYNC needs to be sent */
if(timerNext_us != NULL){
uint32_t diff = SYNC->periodTime - SYNC->timer;
if(*timerNext_us > diff){
*timerNext_us = diff;
}
}
#endif
}
/* Synchronous PDOs are allowed only inside time window */
@ -385,12 +383,14 @@ uint8_t CO_SYNC_process(
if(SYNC->timer > SYNC->periodTimeoutTime) {
CO_errorReport(SYNC->em, CO_EM_SYNC_TIME_OUT, CO_EMC_COMMUNICATION, SYNC->timer);
}
#if (CO_CONFIG_SYNC) & CO_CONFIG_FLAG_TIMERNEXT
else if(timerNext_us != NULL) {
uint32_t diff = SYNC->periodTimeoutTime - SYNC->timer;
if(*timerNext_us > diff){
*timerNext_us = diff;
}
}
#endif
}
}
else {

View file

@ -73,12 +73,25 @@ extern "C" {
#define CO_CONFIG_FLAG_CALLBACK_PRE 0x0100
/**
* Enable calculation of timerNext_us variable.
*
* Calculation of the timerNext_us variable is useful for smooth operation on
* operating system. See also @ref CO_process() function.
*
* This flag is common to multiple configuration macros.
*/
#define CO_CONFIG_FLAG_TIMERNEXT 0x0200
/**
* Configuration of NMT_Heartbeat object
*
* Possible flags, can be ORed:
* - #CO_CONFIG_FLAG_CALLBACK_PRE - Enable custom callback after preprocessing
* received NMT CAN message.
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_NMT_process().
* Callback is configured by CO_NMT_initCallbackPre().
* - CO_CONFIG_NMT_CALLBACK_CHANGE - Enable custom callback after NMT
* state changes. Callback is configured by
@ -88,7 +101,7 @@ extern "C" {
* be used for LEDs.
*/
#ifdef CO_DOXYGEN
#define CO_CONFIG_NMT CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_NMT_CALLBACK_CHANGE | CO_CONFIG_NMT_MASTER | CO_CONFIG_NMT_LEDS
#define CO_CONFIG_NMT CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_NMT_CALLBACK_CHANGE | CO_CONFIG_NMT_MASTER | CO_CONFIG_NMT_LEDS
#endif
#define CO_CONFIG_NMT_CALLBACK_CHANGE 0x01
#define CO_CONFIG_NMT_MASTER 0x02
@ -101,13 +114,15 @@ extern "C" {
* Possible flags, can be ORed:
* - #CO_CONFIG_FLAG_CALLBACK_PRE - Enable custom callback after preprocessing
* received SDO CAN message.
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_SDO_process().
* Callback is configured by CO_SDO_initCallbackPre().
* - CO_CONFIG_SDO_SEGMENTED - Enable SDO server segmented transfer.
* - CO_CONFIG_SDO_BLOCK - Enable SDO server block transfer. If set, then
* CO_CONFIG_SDO_SEGMENTED must also be set.
*/
#ifdef CO_DOXYGEN
#define CO_CONFIG_SDO CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_SDO_SEGMENTED | CO_CONFIG_SDO_BLOCK
#define CO_CONFIG_SDO CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_SDO_SEGMENTED | CO_CONFIG_SDO_BLOCK
#endif
/* TODO with new OD */
#define CO_CONFIG_SDO_SEGMENTED 0x01
@ -136,10 +151,12 @@ extern "C" {
* - #CO_CONFIG_FLAG_CALLBACK_PRE - Enable custom callback after preprocessing
* emergency condition by CO_errorReport() or CO_errorReset() call.
* Callback is configured by CO_EM_initCallbackPre().
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_EM_process().
* - CO_CONFIG_EM_CONSUMER - Enable emergency consumer.
*/
#ifdef CO_DOXYGEN
#define CO_CONFIG_EM CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_EM_CONSUMER
#define CO_CONFIG_EM CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_EM_CONSUMER
#endif
#define CO_CONFIG_EM_CONSUMER 0x01
@ -151,6 +168,8 @@ extern "C" {
* - #CO_CONFIG_FLAG_CALLBACK_PRE - Enable custom callback after preprocessing
* received heartbeat CAN message.
* Callback is configured by CO_HBconsumer_initCallbackPre().
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_HBconsumer_process().
* - CO_CONFIG_HB_CONS_CALLBACK_CHANGE - Enable custom callback after NMT
* state of the monitored node changes. Callback is configured by
* CO_HBconsumer_initCallbackNmtChanged().
@ -163,13 +182,37 @@ extern "C" {
* NMT state of the specific monitored node.
*/
#ifdef CO_DOXYGEN
#define CO_CONFIG_HB_CONS CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_HB_CONS_CALLBACK_CHANGE | CO_CONFIG_HB_CONS_CALLBACK_MULTI | CO_CONFIG_HB_CONS_QUERY_FUNCT
#define CO_CONFIG_HB_CONS CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_HB_CONS_CALLBACK_CHANGE | CO_CONFIG_HB_CONS_CALLBACK_MULTI | CO_CONFIG_HB_CONS_QUERY_FUNCT
#endif
#define CO_CONFIG_HB_CONS_CALLBACK_CHANGE 0x01
#define CO_CONFIG_HB_CONS_CALLBACK_MULTI 0x02
#define CO_CONFIG_HB_CONS_QUERY_FUNCT 0x04
/**
* Configuration of PDO
*
* Possible flags, can be ORed:
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_TPDO_process().
*/
#ifdef CO_DOXYGEN
#define CO_CONFIG_PDO CO_CONFIG_FLAG_TIMERNEXT
#endif
/**
* Configuration of SYNC
*
* Possible flags, can be ORed:
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_SYNC_process().
*/
#ifdef CO_DOXYGEN
#define CO_CONFIG_SYNC CO_CONFIG_FLAG_TIMERNEXT
#endif
/**
* Configuration of SDO client object
*
@ -177,9 +220,12 @@ extern "C" {
* - #CO_CONFIG_FLAG_CALLBACK_PRE - Enable custom callback after preprocessing
* received SDO CAN message.
* Callback is configured by CO_SDOclient_initCallbackPre().
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_SDOclientDownloadInitiate(), CO_SDOclientDownload(),
* CO_SDOclientUploadInitiate(), CO_SDOclientUpload().
*/
#ifdef CO_DOXYGEN
#define CO_CONFIG_SDO_CLI CO_CONFIG_FLAG_CALLBACK_PRE
#define CO_CONFIG_SDO_CLI CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT
#endif

View file

@ -57,6 +57,14 @@ extern "C" {
#define CO_CONFIG_HB_CONS 0
#endif
#ifndef CO_CONFIG_PDO
#define CO_CONFIG_PDO 0
#endif
#ifndef CO_CONFIG_SYNC
#define CO_CONFIG_SYNC 0
#endif
#ifndef CO_CONFIG_SDO_CLI
#define CO_CONFIG_SDO_CLI 0
#endif

View file

@ -45,11 +45,11 @@ extern "C" {
/* Stack configuration override from CO_driver.h. Compile full stack.
* For more information see file CO_config.h. */
#ifndef CO_CONFIG_NMT
#define CO_CONFIG_NMT CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_NMT_CALLBACK_CHANGE | CO_CONFIG_NMT_MASTER | CO_CONFIG_NMT_LEDS
#define CO_CONFIG_NMT CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_NMT_CALLBACK_CHANGE | CO_CONFIG_NMT_MASTER | CO_CONFIG_NMT_LEDS
#endif
#ifndef CO_CONFIG_SDO
#define CO_CONFIG_SDO CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_SDO_SEGMENTED | CO_CONFIG_SDO_BLOCK
#define CO_CONFIG_SDO CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_SDO_SEGMENTED | CO_CONFIG_SDO_BLOCK
#endif
#ifndef CO_CONFIG_SDO_BUFFER_SIZE
@ -57,15 +57,23 @@ extern "C" {
#endif
#ifndef CO_CONFIG_EM
#define CO_CONFIG_EM CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_EM_CONSUMER
#define CO_CONFIG_EM CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_EM_CONSUMER
#endif
#ifndef CO_CONFIG_HB_CONS
#define CO_CONFIG_HB_CONS CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_HB_CONS_CALLBACK_CHANGE | CO_CONFIG_HB_CONS_CALLBACK_MULTI | CO_CONFIG_HB_CONS_QUERY_FUNCT
#define CO_CONFIG_HB_CONS CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_HB_CONS_CALLBACK_CHANGE | CO_CONFIG_HB_CONS_CALLBACK_MULTI | CO_CONFIG_HB_CONS_QUERY_FUNCT
#endif
#ifndef CO_CONFIG_PDO
#define CO_CONFIG_PDO CO_CONFIG_FLAG_TIMERNEXT
#endif
#ifndef CO_CONFIG_SYNC
#define CO_CONFIG_SYNC CO_CONFIG_FLAG_TIMERNEXT
#endif
#ifndef CO_CONFIG_SDO_CLI
#define CO_CONFIG_SDO_CLI CO_CONFIG_FLAG_CALLBACK_PRE
#define CO_CONFIG_SDO_CLI CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT
#endif
#ifndef CO_CONFIG_LSS_MST

View file

@ -53,11 +53,11 @@ extern "C" {
/* Stack configuration override from CO_driver.h.
* For more information see file CO_config.h. */
#ifndef CO_CONFIG_NMT
#define CO_CONFIG_NMT CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_NMT_CALLBACK_CHANGE | CO_CONFIG_NMT_MASTER | CO_CONFIG_NMT_LEDS
#define CO_CONFIG_NMT CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_NMT_CALLBACK_CHANGE | CO_CONFIG_NMT_MASTER | CO_CONFIG_NMT_LEDS
#endif
#ifndef CO_CONFIG_SDO
#define CO_CONFIG_SDO CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_SDO_SEGMENTED | CO_CONFIG_SDO_BLOCK
#define CO_CONFIG_SDO CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_SDO_SEGMENTED | CO_CONFIG_SDO_BLOCK
#endif
#ifndef CO_CONFIG_SDO_BUFFER_SIZE
@ -65,15 +65,23 @@ extern "C" {
#endif
#ifndef CO_CONFIG_EM
#define CO_CONFIG_EM CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_EM_CONSUMER
#define CO_CONFIG_EM CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_EM_CONSUMER
#endif
#ifndef CO_CONFIG_HB_CONS
#define CO_CONFIG_HB_CONS CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_HB_CONS_CALLBACK_CHANGE
#define CO_CONFIG_HB_CONS CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_HB_CONS_CALLBACK_CHANGE
#endif
#ifndef CO_CONFIG_PDO
#define CO_CONFIG_PDO CO_CONFIG_FLAG_TIMERNEXT
#endif
#ifndef CO_CONFIG_SYNC
#define CO_CONFIG_SYNC CO_CONFIG_FLAG_TIMERNEXT
#endif
#ifndef CO_CONFIG_SDO_CLI
#define CO_CONFIG_SDO_CLI CO_CONFIG_FLAG_CALLBACK_PRE
#define CO_CONFIG_SDO_CLI CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT
#endif
#ifndef CO_CONFIG_LSS_MST