# HG changeset patch # User Florian Pose # Date 1206956557 0 # Node ID 40c379697ebfb920fb986cd6671e0c9d0d5fbf90 # Parent d2915690047f4df0f16e19b62ad052386697960b Introduced EC_MAP_END. diff -r d2915690047f -r 40c379697ebf examples/mini/mini.c --- a/examples/mini/mini.c Wed Mar 19 10:51:18 2008 +0000 +++ b/examples/mini/mini.c Mon Mar 31 09:42:37 2008 +0000 @@ -96,6 +96,7 @@ static ec_pdo_info_t el3162_mapping[] = { {EC_DIR_INPUT, 0x1A00, 2, el3162_channel1}, {EC_DIR_INPUT, 0x1A01, 2, el3162_channel2}, + {EC_MAP_END} }; static ec_pdo_entry_info_t el2004_channels[] = { @@ -279,7 +280,7 @@ goto out_release_master; } - if (ecrt_slave_config_mapping(sc, 2, el3162_mapping)) { + if (ecrt_slave_config_mapping(sc, EC_MAP_END, el3162_mapping)) { printk(KERN_ERR PFX "Failed to configure Pdo mapping.\n"); goto out_release_master; } diff -r d2915690047f -r 40c379697ebf include/ecrt.h --- a/include/ecrt.h Wed Mar 19 10:51:18 2008 +0000 +++ b/include/ecrt.h Mon Mar 31 09:42:37 2008 +0000 @@ -120,6 +120,14 @@ */ #define ECRT_VERSION_MAGIC ECRT_VERSION(ECRT_VER_MAJOR, ECRT_VER_MINOR) +/*****************************************************************************/ + +/** End of mapping. + * + * This is used in ecrt_slave_config_mapping(). + */ +#define EC_MAP_END ~0U + /****************************************************************************** * Data types *****************************************************************************/ @@ -467,6 +475,12 @@ * return -1; // error * \endcode * + * Processing of \a pdo_infos will stop, if + * - the number of processed items reaches \a n_infos, or + * - the \a dir member of an ec_pdo_info_t item is EC_MAP_END. In this case, + * \a n_infos should set to a number greater than the number of list items; + * using EC_MAP_END is recommended. + * * \return zero on success, else non-zero */ int ecrt_slave_config_mapping( diff -r d2915690047f -r 40c379697ebf master/slave_config.c --- a/master/slave_config.c Wed Mar 19 10:51:18 2008 +0000 +++ b/master/slave_config.c Mon Mar 31 09:42:37 2008 +0000 @@ -582,6 +582,10 @@ for (i = 0; i < n_infos; i++) { pi = &pdo_infos[i]; + + if (pi->dir == EC_MAP_END) + break; + pm = &sc->mapping[pi->dir]; if (pm->default_mapping) {