1
0
Fork 0

Convert {T,R}PDO_CALLS_EXTENSION to CO_CONFIG_{T,R}PDO_CALLS_EXTENSION

User can now enable extension callbacks in RPDO/TPDO handling paths
simply by configuration flags instead of modifying sources or by passing
the defines directly to the compiler.
This commit is contained in:
Freddie Chopin 2020-05-06 18:22:50 +02:00
parent 9b8a296fb7
commit b4b0fe069f
4 changed files with 19 additions and 11 deletions

View file

@ -891,14 +891,13 @@ uint8_t CO_TPDOisCOS(CO_TPDO_t *TPDO){
return 0; return 0;
} }
//#define TPDO_CALLS_EXTENSION
/******************************************************************************/ /******************************************************************************/
int16_t CO_TPDOsend(CO_TPDO_t *TPDO){ int16_t CO_TPDOsend(CO_TPDO_t *TPDO){
int16_t i; int16_t i;
uint8_t* pPDOdataByte; uint8_t* pPDOdataByte;
uint8_t** ppODdataByte; uint8_t** ppODdataByte;
#ifdef TPDO_CALLS_EXTENSION #if (CO_CONFIG_PDO) & CO_CONFIG_TPDO_CALLS_EXTENSION
if(TPDO->SDO->ODExtensions){ if(TPDO->SDO->ODExtensions){
/* for each mapped OD, check mapping to see if an OD extension is available, and call it if it is */ /* for each mapped OD, check mapping to see if an OD extension is available, and call it if it is */
const uint32_t* pMap = &TPDO->TPDOMapPar->mappedObject1; const uint32_t* pMap = &TPDO->TPDOMapPar->mappedObject1;
@ -940,7 +939,6 @@ int16_t CO_TPDOsend(CO_TPDO_t *TPDO){
return CO_CANsend(TPDO->CANdevTx, TPDO->CANtxBuff); return CO_CANsend(TPDO->CANdevTx, TPDO->CANtxBuff);
} }
//#define RPDO_CALLS_EXTENSION
/******************************************************************************/ /******************************************************************************/
void CO_RPDO_process(CO_RPDO_t *RPDO, bool_t syncWas){ void CO_RPDO_process(CO_RPDO_t *RPDO, bool_t syncWas){
bool_t process_rpdo = true; bool_t process_rpdo = true;
@ -959,9 +957,9 @@ void CO_RPDO_process(CO_RPDO_t *RPDO, bool_t syncWas){
} }
else if(process_rpdo) else if(process_rpdo)
{ {
#if defined(RPDO_CALLS_EXTENSION) #if (CO_CONFIG_PDO) & CO_CONFIG_RPDO_CALLS_EXTENSION
bool_t update = false; bool_t update = false;
#endif /* defined(RPDO_CALLS_EXTENSION) */ #endif
uint8_t bufNo = 0; uint8_t bufNo = 0;
@ -987,11 +985,11 @@ void CO_RPDO_process(CO_RPDO_t *RPDO, bool_t syncWas){
for(; i>0; i--) { for(; i>0; i--) {
**(ppODdataByte++) = *(pPDOdataByte++); **(ppODdataByte++) = *(pPDOdataByte++);
} }
#if defined(RPDO_CALLS_EXTENSION) #if (CO_CONFIG_PDO) & CO_CONFIG_RPDO_CALLS_EXTENSION
update = true; update = true;
#endif /* defined(RPDO_CALLS_EXTENSION) */ #endif
} }
#ifdef RPDO_CALLS_EXTENSION #if (CO_CONFIG_PDO) & CO_CONFIG_RPDO_CALLS_EXTENSION
if(update && RPDO->SDO->ODExtensions){ if(update && RPDO->SDO->ODExtensions){
int16_t i; int16_t i;
/* for each mapped OD, check mapping to see if an OD extension is available, and call it if it is */ /* for each mapped OD, check mapping to see if an OD extension is available, and call it if it is */

View file

@ -199,11 +199,17 @@ extern "C" {
* - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable * - #CO_CONFIG_FLAG_TIMERNEXT - Enable calculation of timerNext_us variable
* inside CO_TPDO_process(). * inside CO_TPDO_process().
* - CO_CONFIG_PDO_SYNC_ENABLE - Enable SYNC object inside PDO objects. * - CO_CONFIG_PDO_SYNC_ENABLE - Enable SYNC object inside PDO objects.
* - CO_CONFIG_RPDO_CALLS_EXTENSION - Enable calling configured extension
* callbacks when received RPDO CAN message modifies OD entries.
* - CO_CONFIG_TPDO_CALLS_EXTENSION - Enable calling configured extension
* callbacks before TPDO CAN message is sent.
*/ */
#ifdef CO_DOXYGEN #ifdef CO_DOXYGEN
#define CO_CONFIG_PDO (CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_PDO_SYNC_ENABLE) #define CO_CONFIG_PDO (CO_CONFIG_FLAG_CALLBACK_PRE | CO_CONFIG_FLAG_TIMERNEXT | CO_CONFIG_PDO_SYNC_ENABLE | CO_CONFIG_RPDO_CALLS_EXTENSION | CO_CONFIG_TPDO_CALLS_EXTENSION)
#endif #endif
#define CO_CONFIG_PDO_SYNC_ENABLE 0x01 #define CO_CONFIG_PDO_SYNC_ENABLE 0x01
#define CO_CONFIG_RPDO_CALLS_EXTENSION 0x02
#define CO_CONFIG_TPDO_CALLS_EXTENSION 0x04
/** /**

View file

@ -80,7 +80,9 @@ extern "C" {
#ifndef CO_CONFIG_PDO #ifndef CO_CONFIG_PDO
#define CO_CONFIG_PDO (CO_CONFIG_FLAG_CALLBACK_PRE | \ #define CO_CONFIG_PDO (CO_CONFIG_FLAG_CALLBACK_PRE | \
CO_CONFIG_FLAG_TIMERNEXT | \ CO_CONFIG_FLAG_TIMERNEXT | \
CO_CONFIG_PDO_SYNC_ENABLE) CO_CONFIG_PDO_SYNC_ENABLE | \
CO_CONFIG_RPDO_CALLS_EXTENSION | \
CO_CONFIG_TPDO_CALLS_EXTENSION)
#endif #endif
#ifndef CO_CONFIG_SYNC #ifndef CO_CONFIG_SYNC

View file

@ -86,7 +86,9 @@ extern "C" {
#ifndef CO_CONFIG_PDO #ifndef CO_CONFIG_PDO
#define CO_CONFIG_PDO (CO_CONFIG_FLAG_CALLBACK_PRE | \ #define CO_CONFIG_PDO (CO_CONFIG_FLAG_CALLBACK_PRE | \
CO_CONFIG_FLAG_TIMERNEXT | \ CO_CONFIG_FLAG_TIMERNEXT | \
CO_CONFIG_PDO_SYNC_ENABLE) CO_CONFIG_PDO_SYNC_ENABLE | \
CO_CONFIG_RPDO_CALLS_EXTENSION | \
CO_CONFIG_TPDO_CALLS_EXTENSION)
#endif #endif
#ifndef CO_CONFIG_SYNC #ifndef CO_CONFIG_SYNC