equal
deleted
inserted
replaced
280 } |
280 } |
281 |
281 |
282 /*****************************************************************************/ |
282 /*****************************************************************************/ |
283 |
283 |
284 /** |
284 /** |
285 */ |
285 * SDO kobject clear method. |
|
286 */ |
286 |
287 |
287 void ec_slave_sdos_clear(struct kobject *kobj /**< kobject for SDOs */) |
288 void ec_slave_sdos_clear(struct kobject *kobj /**< kobject for SDOs */) |
288 { |
289 { |
289 } |
290 } |
290 |
291 |
372 } |
373 } |
373 |
374 |
374 /*****************************************************************************/ |
375 /*****************************************************************************/ |
375 |
376 |
376 /** |
377 /** |
|
378 * Request a slave state and resets the error flag. |
377 */ |
379 */ |
378 |
380 |
379 void ec_slave_request_state(ec_slave_t *slave, /**< EtherCAT slave */ |
381 void ec_slave_request_state(ec_slave_t *slave, /**< EtherCAT slave */ |
380 ec_slave_state_t state /**< new state */ |
382 ec_slave_state_t state /**< new state */ |
381 ) |
383 ) |
873 /** |
875 /** |
874 * Schedules an EEPROM write request. |
876 * Schedules an EEPROM write request. |
875 * \return 0 case of success, otherwise error code. |
877 * \return 0 case of success, otherwise error code. |
876 */ |
878 */ |
877 |
879 |
878 int ec_slave_schedule_eeprom_writing(ec_eeprom_write_request_t *request) |
880 int ec_slave_schedule_eeprom_writing( |
|
881 ec_eeprom_write_request_t *request /**< EEPROM write request */ |
|
882 ) |
879 { |
883 { |
880 ec_master_t *master = request->slave->master; |
884 ec_master_t *master = request->slave->master; |
881 |
885 |
882 request->state = EC_REQUEST_QUEUED; |
886 request->state = EC_REQUEST_QUEUED; |
883 |
887 |
922 * --reflect-out=0 --xor-out=0 --generate c --algorithm=bit-by-bit |
926 * --reflect-out=0 --xor-out=0 --generate c --algorithm=bit-by-bit |
923 * |
927 * |
924 * \return CRC8 |
928 * \return CRC8 |
925 */ |
929 */ |
926 |
930 |
927 uint8_t ec_slave_eeprom_crc(const uint8_t *data, size_t length) |
931 uint8_t ec_slave_eeprom_crc( |
|
932 const uint8_t *data, /**< pointer to data */ |
|
933 size_t length /**< number of bytes in \a data */ |
|
934 ) |
928 { |
935 { |
929 unsigned int i; |
936 unsigned int i; |
930 uint8_t bit, byte, crc = 0x48; |
937 uint8_t bit, byte, crc = 0x48; |
931 |
938 |
932 while (length--) { |
939 while (length--) { |
1177 } |
1184 } |
1178 |
1185 |
1179 /*****************************************************************************/ |
1186 /*****************************************************************************/ |
1180 |
1187 |
1181 /** |
1188 /** |
|
1189 * Get the sync manager for either Rx- or Tx-PDOs. |
|
1190 * \return pointer to sync manager, or NULL. |
1182 */ |
1191 */ |
1183 |
1192 |
1184 ec_sync_t *ec_slave_get_pdo_sync( |
1193 ec_sync_t *ec_slave_get_pdo_sync( |
1185 ec_slave_t *slave, /**< EtherCAT slave */ |
1194 ec_slave_t *slave, /**< EtherCAT slave */ |
1186 ec_direction_t dir /**< input or output */ |
1195 ec_direction_t dir /**< input or output */ |
1370 return ec_slave_conf_sdo(slave, sdo_index, sdo_subindex, data, 4); |
1379 return ec_slave_conf_sdo(slave, sdo_index, sdo_subindex, data, 4); |
1371 } |
1380 } |
1372 |
1381 |
1373 /*****************************************************************************/ |
1382 /*****************************************************************************/ |
1374 |
1383 |
|
1384 /** |
|
1385 * Clear slave's PDO mapping. |
|
1386 */ |
|
1387 |
1375 void ecrt_slave_pdo_mapping_clear( |
1388 void ecrt_slave_pdo_mapping_clear( |
1376 ec_slave_t *slave, /**< EtherCAT slave */ |
1389 ec_slave_t *slave, /**< EtherCAT slave */ |
1377 ec_direction_t dir /**< output/input */ |
1390 ec_direction_t dir /**< output/input */ |
1378 ) |
1391 ) |
1379 { |
1392 { |
1391 sync->alt_mapping = 1; |
1404 sync->alt_mapping = 1; |
1392 } |
1405 } |
1393 |
1406 |
1394 /*****************************************************************************/ |
1407 /*****************************************************************************/ |
1395 |
1408 |
|
1409 /** |
|
1410 * Add a PDO to the list of known mapped PDOs. |
|
1411 */ |
|
1412 |
1396 int ecrt_slave_pdo_mapping_add( |
1413 int ecrt_slave_pdo_mapping_add( |
1397 ec_slave_t *slave, /**< EtherCAT slave */ |
1414 ec_slave_t *slave, /**< EtherCAT slave */ |
1398 ec_direction_t dir, /**< input/output */ |
1415 ec_direction_t dir, /**< input/output */ |
1399 uint16_t pdo_index /**< Index of PDO mapping list */) |
1416 uint16_t pdo_index /**< Index of mapped PDO */) |
1400 { |
1417 { |
1401 ec_pdo_t *pdo; |
1418 ec_pdo_t *pdo; |
1402 ec_sync_t *sync; |
1419 ec_sync_t *sync; |
1403 unsigned int not_found = 1; |
1420 unsigned int not_found = 1; |
1404 |
1421 |
1441 sync->alt_mapping = 1; |
1458 sync->alt_mapping = 1; |
1442 return 0; |
1459 return 0; |
1443 } |
1460 } |
1444 |
1461 |
1445 /*****************************************************************************/ |
1462 /*****************************************************************************/ |
|
1463 |
|
1464 /** |
|
1465 * Convenience function for ecrt_slave_pdo_mapping_clear() and |
|
1466 * ecrt_slave_pdo_mapping_add(). |
|
1467 */ |
1446 |
1468 |
1447 int ecrt_slave_pdo_mapping(ec_slave_t *slave, /**< EtherCAT slave */ |
1469 int ecrt_slave_pdo_mapping(ec_slave_t *slave, /**< EtherCAT slave */ |
1448 ec_direction_t dir, /**< input/output */ |
1470 ec_direction_t dir, /**< input/output */ |
1449 unsigned int num_args, /**< Number of following arguments */ |
1471 unsigned int num_args, /**< Number of following arguments */ |
1450 ... /**< PDO indices to map */ |
1472 ... /**< PDO indices to map */ |