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:
parent
9b8a296fb7
commit
b4b0fe069f
4 changed files with 19 additions and 11 deletions
14
301/CO_PDO.c
14
301/CO_PDO.c
|
|
@ -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 */
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue