mirror of
https://gitlab.com/etherlab.org/ethercat.git
synced 2026-02-06 11:51:45 +08:00
Introduced EC_MAP_END.
This commit is contained in:
@@ -96,6 +96,7 @@ static ec_pdo_entry_info_t el3162_channel2[] = {
|
||||
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 @@ int __init init_mini_module(void)
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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 @@ int ecrt_slave_config_pdo_entry(
|
||||
* 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(
|
||||
|
||||
@@ -582,6 +582,10 @@ int ecrt_slave_config_mapping(ec_slave_config_t *sc, unsigned int n_infos,
|
||||
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user