186 \return 0 in case of success, else < 0 |
186 \return 0 in case of success, else < 0 |
187 */ |
187 */ |
188 |
188 |
189 int ec_domain_reg_pdo_entry(ec_domain_t *domain, /**< EtherCAT domain */ |
189 int ec_domain_reg_pdo_entry(ec_domain_t *domain, /**< EtherCAT domain */ |
190 ec_slave_t *slave, /**< slave */ |
190 ec_slave_t *slave, /**< slave */ |
191 const ec_sii_pdo_t *pdo, /**< PDO */ |
191 const ec_pdo_t *pdo, /**< PDO */ |
192 const ec_sii_pdo_entry_t *entry, |
192 const ec_pdo_entry_t *entry, |
193 /**< PDO registration entry */ |
193 /**< PDO registration entry */ |
194 void **data_ptr /**< pointer to the process data |
194 void **data_ptr /**< pointer to the process data |
195 pointer */ |
195 pointer */ |
196 ) |
196 ) |
197 { |
197 { |
198 ec_data_reg_t *data_reg; |
198 ec_data_reg_t *data_reg; |
199 const ec_sii_sync_t *sync; |
199 const ec_sii_sync_t *sync; |
200 const ec_sii_pdo_t *other_pdo; |
200 const ec_pdo_t *other_pdo; |
201 const ec_sii_pdo_entry_t *other_entry; |
201 const ec_pdo_entry_t *other_entry; |
202 unsigned int bit_offset, byte_offset; |
202 unsigned int bit_offset, byte_offset; |
203 |
203 |
204 // Find sync manager for PDO |
204 // Find sync manager for PDO |
205 if (pdo->sync_index >= slave->sii_sync_count) { |
205 if (pdo->sync_index >= slave->sii_sync_count) { |
206 EC_ERR("No sync manager for PDO 0x%04X:%i.", |
206 EC_ERR("No sync manager for PDO 0x%04X:%i.", |
497 pointer */ |
497 pointer */ |
498 ) |
498 ) |
499 { |
499 { |
500 ec_slave_t *slave; |
500 ec_slave_t *slave; |
501 ec_master_t *master; |
501 ec_master_t *master; |
502 const ec_sii_pdo_t *pdo; |
502 const ec_pdo_t *pdo; |
503 const ec_sii_pdo_entry_t *entry; |
503 const ec_pdo_entry_t *entry; |
504 |
504 |
505 master = domain->master; |
505 master = domain->master; |
506 |
506 |
507 // translate address and validate slave |
507 // translate address and validate slave |
508 if (!(slave = ecrt_master_get_slave(master, address))) return NULL; |
508 if (!(slave = ecrt_master_get_slave(master, address))) return NULL; |