diff --git a/applications/rtl_xmc4_dynpdo/main.c b/applications/rtl_xmc4_dynpdo/main.c index 950bd12..328ae18 100644 --- a/applications/rtl_xmc4_dynpdo/main.c +++ b/applications/rtl_xmc4_dynpdo/main.c @@ -10,20 +10,9 @@ #include "config.h" #include "utypes.h" -/* Global variables used by the stack */ -uint8_t MBX[MBXBUFFERS * MAX(MBXSIZE,MBXSIZEBOOT)]; -_MBXcontrol MBXcontrol[MBXBUFFERS]; -_ESCvar ESCvar; -_SMmap SMmap2[MAX_MAPPINGS_SM2]; -_SMmap SMmap3[MAX_MAPPINGS_SM3]; - /* Application variables */ _Objects Obj; -/* Private variables */ -static uint8_t inputs[MAX_INPUT_SIZE] __attribute__((aligned (8))); -static uint8_t outputs[MAX_OUTPUT_SIZE] __attribute__((aligned (8))); - void cb_get_inputs (void) { Obj.IN1 = 1; @@ -36,7 +25,6 @@ void cb_set_outputs (void) { } - /* Setup of DC */ uint16_t dc_checker (void) { @@ -57,10 +45,6 @@ int main (void) .mbxsize = MBXSIZE, .mbxsizeboot = MBXSIZEBOOT, .mbxbuffers = MBXBUFFERS, - .rxpdos_address = outputs, - .rxpdos_mappings = MAX_SM_MAPPINGS, - .txpdos_address = inputs, - .txpdos_mappings = MAX_SM_MAPPINGS, .mb[0] = {MBX0_sma, MBX0_sml, MBX0_sme, MBX0_smc, 0}, .mb[1] = {MBX1_sma, MBX1_sml, MBX1_sme, MBX1_smc, 0}, .mb_boot[0] = {MBX0_sma_b, MBX0_sml_b, MBX0_sme_b, MBX0_smc_b, 0}, diff --git a/soes/ecat_slv.c b/soes/ecat_slv.c index 17b2f18..f4641c3 100644 --- a/soes/ecat_slv.c +++ b/soes/ecat_slv.c @@ -1,5 +1,7 @@ - -#ifndef SOES_V1 +/* + * Licensed under the GNU General Public License version 2 with exceptions. See + * LICENSE file in the project root for full license information + */ #include #include "esc.h" #include "esc_coe.h" @@ -10,12 +12,16 @@ #define IS_TXPDO(index) ((index) >= 0x1A00 && (index) < 0x1C00) /* Global variables used by the stack */ -extern _ESCvar ESCvar; -extern _SMmap SMmap2[]; -extern _SMmap SMmap3[]; +uint8_t MBX[MBXBUFFERS * MAX(MBXSIZE,MBXSIZEBOOT)]; +_MBXcontrol MBXcontrol[MBXBUFFERS]; +_SMmap SMmap2[MAX_MAPPINGS_SM2]; +_SMmap SMmap3[MAX_MAPPINGS_SM3]; +_ESCvar ESCvar; /* Private variables */ static volatile int watchdog; +static uint8_t rxpdo[MAX_RXPDO_SIZE] __attribute__((aligned (8))); +static uint8_t txpdo[MAX_TXPDO_SIZE] __attribute__((aligned (8))); /** Mandatory: Function to pre-qualify the incoming SDO download. * @@ -92,8 +98,8 @@ void TXPDO_update (void) } else { - COE_pdoPack (ESCvar.txpdos_address, ESCvar.sm3mappings, SMmap3); - ESC_write (ESC_SM3_sma, ESCvar.txpdos_address , ESCvar.ESC_SM3_sml); + COE_pdoPack (txpdo, ESCvar.sm3mappings, SMmap3); + ESC_write (ESC_SM3_sma, txpdo, ESCvar.ESC_SM3_sml); } } @@ -107,8 +113,8 @@ void RXPDO_update (void) } else { - ESC_read (ESC_SM2_sma, ESCvar.rxpdos_address, ESCvar.ESC_SM2_sml); - COE_pdoUnpack (ESCvar.rxpdos_address, ESCvar.sm2mappings, SMmap2); + ESC_read (ESC_SM2_sma, rxpdo, ESCvar.ESC_SM2_sml); + COE_pdoUnpack (rxpdo, ESCvar.sm2mappings, SMmap2); } } @@ -305,4 +311,3 @@ void ecat_slv_init (esc_cfg_t * config) ESC_stopinput(); ESC_stopoutput(); } -#endif diff --git a/soes/esc.c b/soes/esc.c index af3290c..56a9139 100644 --- a/soes/esc.c +++ b/soes/esc.c @@ -7,6 +7,7 @@ #include "esc.h" #include "esc_coe.h" #include "esc_foe.h" +#include "options.h" /** \file * \brief @@ -1037,7 +1038,7 @@ void ESC_state (void) case SAFEOP_TO_SAFEOP: { ESCvar.ESC_SM2_sml = sizeOfPDO (RX_PDO_OBJIDX, &ESCvar.sm2mappings, - SMmap2, ESCvar.rxpdos_mappings); + SMmap2, MAX_MAPPINGS_SM2); if (ESCvar.sm2mappings < 0) { an = ESCpreop | ESCerror; @@ -1046,7 +1047,7 @@ void ESC_state (void) } ESCvar.ESC_SM3_sml = sizeOfPDO (TX_PDO_OBJIDX, &ESCvar.sm3mappings, - SMmap3, ESCvar.txpdos_mappings); + SMmap3, MAX_MAPPINGS_SM3); if (ESCvar.sm3mappings < 0) { an = ESCpreop | ESCerror; @@ -1151,11 +1152,6 @@ void ESC_config (esc_cfg_t * cfg) ESCvar.mbxsizeboot = cfg->mbxsizeboot; ESCvar.mbxbuffers = cfg->mbxbuffers; - ESCvar.rxpdos_address = cfg->rxpdos_address; - ESCvar.rxpdos_mappings = cfg->rxpdos_mappings; - ESCvar.txpdos_address = cfg->txpdos_address; - ESCvar.txpdos_mappings = cfg->txpdos_mappings; - ESCvar.mb[0] = cfg->mb[0]; ESCvar.mb[1] = cfg->mb[1]; ESCvar.mbboot[0] = cfg->mb_boot[0]; diff --git a/soes/esc.h b/soes/esc.h index 9acfa17..2a79073 100644 --- a/soes/esc.h +++ b/soes/esc.h @@ -240,10 +240,6 @@ typedef struct esc_cfg size_t mbxsize; size_t mbxsizeboot; int mbxbuffers; - void * rxpdos_address; - int rxpdos_mappings; - void * txpdos_address; - int txpdos_mappings; sm_cfg_t mb[2]; sm_cfg_t mb_boot[2]; sm_cfg_t pdosm[2]; @@ -362,10 +358,6 @@ typedef struct size_t mbxsize; size_t mbxsizeboot; int mbxbuffers; - void * rxpdos_address; - int rxpdos_mappings; - void * txpdos_address; - int txpdos_mappings; sm_cfg_t mb[2]; sm_cfg_t mbboot[2]; sm_cfg_t pdosm[2]; diff --git a/soes/options.h b/soes/options.h index e724a69..488ce19 100644 --- a/soes/options.h +++ b/soes/options.h @@ -119,14 +119,14 @@ #define SM3_act 1 #endif -/* Max processdata size (inputs) */ -#ifndef MAX_INPUT_SIZE -#define MAX_INPUT_SIZE 128 +/* Max processdata size (outputs) */ +#ifndef MAX_RXPDO_SIZE +#define MAX_RXPDO_SIZE 128 #endif -/* Max processdata size (outputs) */ -#ifndef MAX_OUTPUT_SIZE -#define MAX_OUTPUT_SIZE 128 +/* Max processdata size (inputs) */ +#ifndef MAX_TXPDO_SIZE +#define MAX_TXPDO_SIZE 128 #endif /* Max number of mapped objects in SM2 */