include/ecrt.h
author Florian Pose <fp@igh-essen.com>
Mon, 19 Jan 2009 08:17:30 +0000
branchstable-1.4
changeset 1694 fe4c953b7a70
parent 1689 3cf22779c0cb
permissions -rw-r--r--
Fixed datagram cleaning.
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/******************************************************************************
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
 *
125
b01bd5b830d7 Sch?nheitskorrekturen.
Florian Pose <fp@igh-essen.com>
parents: 114
diff changeset
     3
 *  $Id$
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
 *
1685
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
     5
 *  Copyright (C) 2006-2008  Florian Pose, Ingenieurgemeinschaft IgH
197
b9a6e2c22745 GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents: 195
diff changeset
     6
 *
b9a6e2c22745 GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents: 195
diff changeset
     7
 *  This file is part of the IgH EtherCAT Master.
b9a6e2c22745 GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents: 195
diff changeset
     8
 *
1685
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
     9
 *  The IgH EtherCAT Master is free software; you can redistribute it and/or
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    10
 *  modify it under the terms of the GNU General Public License version 2, as
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    11
 *  published by the Free Software Foundation.
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    12
 *
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    13
 *  The IgH EtherCAT Master is distributed in the hope that it will be useful,
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    14
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    15
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    16
 *  Public License for more details.
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    17
 *
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    18
 *  You should have received a copy of the GNU General Public License along
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    19
 *  with the IgH EtherCAT Master; if not, write to the Free Software
197
b9a6e2c22745 GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents: 195
diff changeset
    20
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
b9a6e2c22745 GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents: 195
diff changeset
    21
 *
1685
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    22
 *  Using the EtherCAT technology and brand is permitted in compliance with
399ef727bf62 Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1182
diff changeset
    23
 *  the industrial property and similar rights of Beckhoff Automation GmbH.
246
0bf7c769de06 Changed license headers and added EtherCAT license notice.
Florian Pose <fp@igh-essen.com>
parents: 206
diff changeset
    24
 *
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
 *****************************************************************************/
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
786
ad618c76e9bd Updated doxygen docs.
Florian Pose <fp@igh-essen.com>
parents: 781
diff changeset
    27
/** \file
ad618c76e9bd Updated doxygen docs.
Florian Pose <fp@igh-essen.com>
parents: 781
diff changeset
    28
 *
1182
f5e725aa5483 ApplicationInterface
Florian Pose <fp@igh-essen.com>
parents: 1113
diff changeset
    29
 * EtherCAT master application interface.
f5e725aa5483 ApplicationInterface
Florian Pose <fp@igh-essen.com>
parents: 1113
diff changeset
    30
 *
f5e725aa5483 ApplicationInterface
Florian Pose <fp@igh-essen.com>
parents: 1113
diff changeset
    31
 * \defgroup ApplicationInterface EtherCAT Application Interface
786
ad618c76e9bd Updated doxygen docs.
Florian Pose <fp@igh-essen.com>
parents: 781
diff changeset
    32
 *
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
    33
 * EtherCAT interface for realtime applications. This interface is designed
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
    34
 * for realtime modules that want to use EtherCAT. There are functions to
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
    35
 * request a master, to map process data, to communicate with slaves via CoE
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
    36
 * and to configure and activate the bus.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    37
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    38
 * Changes in Version 1.4:
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    39
 *
1083
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
    40
 * - Replaced ec_slave_t with ec_slave_config_t, separating the bus
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
    41
 *   configuration from the actual slaves. Therefore, renamed
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    42
 *   ecrt_master_get_slave() to ecrt_master_slave_config().
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    43
 * - Replaced slave address string with alias and position values. See
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    44
 *   ecrt_master_slave_config().
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    45
 * - Removed ecrt_master_get_slave_by_pos(), because it is no longer
807
f8bca95ab75d Moved ecrt_domain_reg_pdo_entry() to
Florian Pose <fp@igh-essen.com>
parents: 793
diff changeset
    46
 *   necessary due to alias/position addressing.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    47
 * - Added ec_slave_config_state_t for the new method
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    48
 *   ecrt_slave_config_state().
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    49
 * - Process data memory for a domain can now be allocated externally. This
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
    50
 *   offers the possibility to use a shared-memory region. Therefore,
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
    51
 *   added the domain methods ecrt_domain_size() and
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
    52
 *   ecrt_domain_external_memory().
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    53
 * - PDO entry registration functions do not return a process data pointer,
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
    54
 *   but an offset in the domain's process data. In addition, an optional bit
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
    55
 *   position can be requested. This was necessary for the external domain
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
    56
 *   memory. An additional advantage is, that the returned offset is
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
    57
 *   immediately valid. If the domain's process data is allocated internally,
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
    58
 *   the start address can be retrieved with ecrt_domain_data().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    59
 * - Replaced ecrt_slave_pdo_mapping/add/clear() with
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    60
 *   ecrt_slave_config_pdo_assign_add() to add a PDO to a sync manager's PDO
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    61
 *   assignment and ecrt_slave_config_pdo_mapping_add() to add a PDO entry to a
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    62
 *   PDO's mapping. ecrt_slave_config_pdos() is a convenience function
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
    63
 *   for both, that uses the new data types ec_pdo_info_t and
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    64
 *   ec_pdo_entry_info_t. PDO entries, that are mapped with these functions
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
    65
 *   can now immediately be registered, even if the bus is offline.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    66
 * - Renamed ec_bus_status_t, ec_master_status_t to ec_bus_state_t and
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    67
 *   ec_master_state_t, respectively. Renamed ecrt_master_get_status() to
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    68
 *   ecrt_master_state(), for consistency reasons.
1083
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
    69
 * - Added ec_domain_state_t and #ec_wc_state_t for a new output parameter
832
a5b4f1d17908 Updated news.
Florian Pose <fp@igh-essen.com>
parents: 810
diff changeset
    70
 *   of ecrt_domain_state(). The domain state object does now contain
a5b4f1d17908 Updated news.
Florian Pose <fp@igh-essen.com>
parents: 810
diff changeset
    71
 *   information, if the process data was exchanged completely.
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    72
 * - Former "PDO registration" meant PDO entry registration in fact, therefore
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    73
 *   renamed ec_pdo_reg_t to ec_pdo_entry_reg_t and ecrt_domain_register_pdo()
807
f8bca95ab75d Moved ecrt_domain_reg_pdo_entry() to
Florian Pose <fp@igh-essen.com>
parents: 793
diff changeset
    74
 *   to ecrt_slave_config_reg_pdo_entry().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    75
 * - Removed ecrt_domain_register_pdo_range(), because it's functionality can
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    76
 *   be reached by specifying an explicit PDO assignment/mapping and
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    77
 *   registering the mapped PDO entries.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    78
 * - Added an SDO access interface, working with SDO requests. These can be
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
    79
 *   scheduled for reading and writing during realtime operation.
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
    80
 * - Exported ecrt_slave_config_sdo(), the generic SDO configuration function.
900
f8b5c6d21705 Removed bus validation; slave configuration during realtime operation;
Florian Pose <fp@igh-essen.com>
parents: 894
diff changeset
    81
 * - Removed the bus_state and bus_tainted flags from ec_master_state_t.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    82
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
    83
 * @{
786
ad618c76e9bd Updated doxygen docs.
Florian Pose <fp@igh-essen.com>
parents: 781
diff changeset
    84
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    85
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    86
/*****************************************************************************/
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    87
125
b01bd5b830d7 Sch?nheitskorrekturen.
Florian Pose <fp@igh-essen.com>
parents: 114
diff changeset
    88
#ifndef __ECRT_H__
b01bd5b830d7 Sch?nheitskorrekturen.
Florian Pose <fp@igh-essen.com>
parents: 114
diff changeset
    89
#define __ECRT_H__
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    90
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    91
#include <asm/byteorder.h>
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    92
110
2346e2963087 Integer-Typen in ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 106
diff changeset
    93
#ifdef __KERNEL__
2346e2963087 Integer-Typen in ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 106
diff changeset
    94
#include <linux/types.h>
2346e2963087 Integer-Typen in ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 106
diff changeset
    95
#else
2346e2963087 Integer-Typen in ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 106
diff changeset
    96
#include <stdint.h>
2346e2963087 Integer-Typen in ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 106
diff changeset
    97
#endif
2346e2963087 Integer-Typen in ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 106
diff changeset
    98
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
    99
/******************************************************************************
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   100
 * Global definitions
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   101
 *****************************************************************************/
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   102
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   103
/** EtherCAT realtime interface major version number.
758
8fa6f825eb7d Updated Doxygen documentation.
Florian Pose <fp@igh-essen.com>
parents: 707
diff changeset
   104
 */
637
d5d04c868e0e Removed ecrt_master_run(), removed datagram queueing from state
Florian Pose <fp@igh-essen.com>
parents: 635
diff changeset
   105
#define ECRT_VER_MAJOR 1
758
8fa6f825eb7d Updated Doxygen documentation.
Florian Pose <fp@igh-essen.com>
parents: 707
diff changeset
   106
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   107
/** EtherCAT realtime interface minor version number.
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   108
 */
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   109
#define ECRT_VER_MINOR 4
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   110
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   111
/** EtherCAT realtime interface version word generator.
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   112
 */
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   113
#define ECRT_VERSION(a, b) (((a) << 8) + (b))
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   114
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   115
/** EtherCAT realtime interface version word.
758
8fa6f825eb7d Updated Doxygen documentation.
Florian Pose <fp@igh-essen.com>
parents: 707
diff changeset
   116
 */
541
5a2b1658b67f Introduced ECRT version magic.
Florian Pose <fp@igh-essen.com>
parents: 495
diff changeset
   117
#define ECRT_VERSION_MAGIC ECRT_VERSION(ECRT_VER_MAJOR, ECRT_VER_MINOR)
5a2b1658b67f Introduced ECRT version magic.
Florian Pose <fp@igh-essen.com>
parents: 495
diff changeset
   118
878
40c379697ebf Introduced EC_MAP_END.
Florian Pose <fp@igh-essen.com>
parents: 869
diff changeset
   119
/*****************************************************************************/
40c379697ebf Introduced EC_MAP_END.
Florian Pose <fp@igh-essen.com>
parents: 869
diff changeset
   120
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   121
/** End of list marker.
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   122
 *
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   123
 * This can be used with ecrt_slave_config_pdos().
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   124
 */
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   125
#define EC_END ~0U
878
40c379697ebf Introduced EC_MAP_END.
Florian Pose <fp@igh-essen.com>
parents: 869
diff changeset
   126
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   127
/** Maximum number of sync managers per slave.
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   128
 */
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   129
#define EC_MAX_SYNC_MANAGERS 16
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   130
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   131
/******************************************************************************
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   132
 * Data types 
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   133
 *****************************************************************************/
541
5a2b1658b67f Introduced ECRT version magic.
Florian Pose <fp@igh-essen.com>
parents: 495
diff changeset
   134
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   135
struct ec_master;
286
f3352378b4d4 Added missing documentation.
Florian Pose <fp@igh-essen.com>
parents: 276
diff changeset
   136
typedef struct ec_master ec_master_t; /**< \see ec_master */
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   137
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   138
struct ec_slave_config;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   139
typedef struct ec_slave_config ec_slave_config_t; /**< \see ec_slave_config */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   140
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   141
struct ec_domain;
286
f3352378b4d4 Added missing documentation.
Florian Pose <fp@igh-essen.com>
parents: 276
diff changeset
   142
typedef struct ec_domain ec_domain_t; /**< \see ec_domain */
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   143
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   144
struct ec_sdo_request;
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   145
typedef struct ec_sdo_request ec_sdo_request_t; /**< \see ec_sdo_request. */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   146
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   147
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   148
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   149
/** Master state.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   150
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   151
 * This is used for the output parameter of ecrt_master_state().
1020
9bf2ddf05e17 Completed ec_master_state_t and documented ec_master_state_t and
Florian Pose <fp@igh-essen.com>
parents: 1010
diff changeset
   152
 *
9bf2ddf05e17 Completed ec_master_state_t and documented ec_master_state_t and
Florian Pose <fp@igh-essen.com>
parents: 1010
diff changeset
   153
 * \see ecrt_master_state().
612
aede068f9a74 Introduced master status, ecrt_master_get_status(), tainted flag,
Florian Pose <fp@igh-essen.com>
parents: 541
diff changeset
   154
 */
aede068f9a74 Introduced master status, ecrt_master_get_status(), tainted flag,
Florian Pose <fp@igh-essen.com>
parents: 541
diff changeset
   155
typedef struct {
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   156
    unsigned int slaves_responding; /**< Number of slaves in the bus. */
1022
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   157
    unsigned int al_states : 4; /**< Application-layer states of all slaves.
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   158
                                  The states are coded in the lower 4 bits.
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   159
                                  If a bit is set, it means that at least one
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   160
                                  slave in the bus is in the corresponding
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   161
                                  state:
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   162
                                  - Bit 0: \a INIT
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   163
                                  - Bit 1: \a PREOP
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   164
                                  - Bit 2: \a SAFEOP
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   165
                                  - Bit 3: \a OP */
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   166
    unsigned int link_up : 1; /**< \a true, if the network link is up. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   167
} ec_master_state_t;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   168
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   169
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   170
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   171
/** Slave configuration state.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   172
 *
1020
9bf2ddf05e17 Completed ec_master_state_t and documented ec_master_state_t and
Florian Pose <fp@igh-essen.com>
parents: 1010
diff changeset
   173
 * This is used as an output parameter of ecrt_slave_config_state().
9bf2ddf05e17 Completed ec_master_state_t and documented ec_master_state_t and
Florian Pose <fp@igh-essen.com>
parents: 1010
diff changeset
   174
 * 
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   175
 * \see ecrt_slave_config_state().
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   176
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   177
typedef struct  {
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   178
    unsigned int online : 1; /**< The slave is online. */
1020
9bf2ddf05e17 Completed ec_master_state_t and documented ec_master_state_t and
Florian Pose <fp@igh-essen.com>
parents: 1010
diff changeset
   179
    unsigned int operational : 1; /**< The slave was brought into \a OP state
9bf2ddf05e17 Completed ec_master_state_t and documented ec_master_state_t and
Florian Pose <fp@igh-essen.com>
parents: 1010
diff changeset
   180
                                    using the specified configuration. */
1022
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   181
    unsigned int al_state : 4; /**< The application-layer state of the slave.
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   182
                                 - 1: \a INIT
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   183
                                 - 2: \a PREOP
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   184
                                 - 4: \a SAFEOP
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   185
                                 - 8: \a OP
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   186
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   187
                                 Note that each state is coded in a different
8e49b519e6ba Implemented ecrt_slave_config_state(); minor changes in
Florian Pose <fp@igh-essen.com>
parents: 1020
diff changeset
   188
                                 bit! */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   189
} ec_slave_config_state_t;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   190
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   191
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   192
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   193
/** Domain working counter interpretation.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   194
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   195
 * This is used in ec_domain_state_t.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   196
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   197
typedef enum {
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   198
    EC_WC_ZERO = 0,   /**< No registered process data were exchanged. */
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   199
    EC_WC_INCOMPLETE, /**< Some of the registered process data were
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   200
                        exchanged. */
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   201
    EC_WC_COMPLETE    /**< All registered process data were exchanged. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   202
} ec_wc_state_t;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   203
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   204
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   205
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   206
/** Domain state.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   207
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   208
 * This is used for the output parameter of ecrt_domain_state().
640
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   209
 */
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   210
typedef struct {
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   211
    unsigned int working_counter; /**< Value of the last working counter. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   212
    ec_wc_state_t wc_state; /**< Working counter interpretation. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   213
} ec_domain_state_t;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   214
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   215
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   216
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   217
/** Direction type for PDO assignment functions.
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   218
 */
635
d304ef4af542 Implemented alternative PDO mapping configuration interface.
Florian Pose <fp@igh-essen.com>
parents: 612
diff changeset
   219
typedef enum {
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   220
    EC_DIR_INVALID, /**< Invalid direction. Do not use this value. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   221
    EC_DIR_OUTPUT, /**< Values written by the master. */
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   222
    EC_DIR_INPUT, /**< Values read by the master. */
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   223
    EC_DIR_COUNT /**< Number of directions. For internal use only. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   224
} ec_direction_t;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   225
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   226
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   227
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   228
/** PDO entry configuration information.
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   229
 *
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   230
 * This is the data type of the \a entries field in ec_pdo_info_t.
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   231
 *
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   232
 * \see ecrt_slave_config_pdos().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   233
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   234
typedef struct {
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   235
    uint16_t index; /**< PDO entry index. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   236
    uint8_t subindex; /**< PDO entry subindex. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   237
    uint8_t bit_length; /**< Size of the PDO entry in bit. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   238
} ec_pdo_entry_info_t;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   239
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   240
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   241
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   242
/** PDO configuration information.
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   243
 * 
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   244
 * This is the data type of the \a pdos field in ec_sync_info_t.
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   245
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   246
 * \see ecrt_slave_config_pdos().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   247
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   248
typedef struct {
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   249
    uint16_t index; /**< PDO index. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   250
    unsigned int n_entries; /**< Number of PDO entries in \a entries to map.
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   251
                              Zero means, that the default mapping shall be
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   252
                              used (this can only be done if the slave is
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   253
                              present at bus configuration time). */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   254
    ec_pdo_entry_info_t *entries; /**< Array of PDO entries to map. Can either
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   255
                                    be \a NULL, or must contain at
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   256
                                    least \a n_entries values. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   257
} ec_pdo_info_t;
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   258
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   259
/*****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   260
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   261
/** Sync manager configuration information.
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   262
 *
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   263
 * This can be use to configure multiple sync managers including the PDO
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   264
 * assignment and PDO mapping. It is used as an input parameter type in
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   265
 * ecrt_slave_config_pdos().
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   266
 */
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   267
typedef struct {
1083
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   268
    uint8_t index; /**< Sync manager index. Must be less
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   269
                     than #EC_MAX_SYNC_MANAGERS for a valid sync manager,
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   270
                     but can also be \a 0xff to mark the end of the list. */
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   271
    ec_direction_t dir; /**< Sync manager direction. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   272
    unsigned int n_pdos; /**< Number of PDOs in \a pdos. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   273
    ec_pdo_info_t *pdos; /**< Array with PDOs to assign. This must contain
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   274
                            at least \a n_pdos PDOs. */
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   275
} ec_sync_info_t;
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   276
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   277
/*****************************************************************************/
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   278
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   279
/** List record type for PDO entry mass-registration.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   280
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   281
 * This type is used for the array parameter of the
923
a6b51990e7e6 Changed Pdo entry registration function - return byte and bit positions
Richard Hacker <ha@igh-essen.com>
parents: 916
diff changeset
   282
 * ecrt_domain_reg_pdo_entry_list()
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   283
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   284
typedef struct {
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   285
    uint16_t alias; /**< Slave alias address. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   286
    uint16_t position; /**< Slave position. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   287
    uint32_t vendor_id; /**< Slave vendor ID. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   288
    uint32_t product_code; /**< Slave product code. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   289
    uint16_t index; /**< PDO entry index. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   290
    uint8_t subindex; /**< PDO entry subindex. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   291
    unsigned int *offset; /**< Pointer to a variable to store the PDO entry's
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   292
                       (byte-)offset in the process data. */
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   293
    unsigned int *bit_position; /**< Pointer to a variable to store a bit 
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   294
                                  position (0-7) within the \a offset. Can be
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   295
                                  NULL, in which case an error is raised if the
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   296
                                  PDO entry does not byte-align. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   297
} ec_pdo_entry_reg_t;
416
4f007cd2a79d ecrt_domain_register_pdo_range() implemented.
Florian Pose <fp@igh-essen.com>
parents: 325
diff changeset
   298
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   299
/*****************************************************************************/
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   300
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   301
/** SDO request state.
861
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   302
 *
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   303
 * This is used as return type of ecrt_sdo_request_state().
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   304
 */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   305
typedef enum {
861
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   306
    EC_SDO_REQUEST_UNUSED, /**< Not requested. */
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   307
    EC_SDO_REQUEST_BUSY, /**< Request is being processed. */
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   308
    EC_SDO_REQUEST_SUCCESS, /**< Request was processed successfully. */
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   309
    EC_SDO_REQUEST_ERROR, /**< Request processing failed. */
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   310
} ec_sdo_request_state_t;
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   311
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   312
/******************************************************************************
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   313
 * Global functions
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   314
 *****************************************************************************/
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   315
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   316
/** Returns the version magic of the realtime interface.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   317
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   318
 * \return Value of ECRT_VERSION_MAGIC() at EtherCAT master compile time.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   319
 */
541
5a2b1658b67f Introduced ECRT version magic.
Florian Pose <fp@igh-essen.com>
parents: 495
diff changeset
   320
unsigned int ecrt_version_magic(void);
5a2b1658b67f Introduced ECRT version magic.
Florian Pose <fp@igh-essen.com>
parents: 495
diff changeset
   321
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   322
/** Requests an EtherCAT master for realtime operation.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   323
 * 
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   324
 * Before an application can access an EtherCAT master, it has to reserve one
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   325
 * for exclusive use.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   326
 *
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   327
 * This function has to be the first function an application has to call to
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   328
 * use EtherCAT. The function takes the index of the master as its argument.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   329
 * The first master has index 0, the n-th master has index n - 1. The number
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   330
 * of masters has to be specified when loading the master module.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   331
 *
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   332
 * \return Pointer to reserved master, or \a NULL on error.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   333
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   334
ec_master_t *ecrt_request_master(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   335
        unsigned int master_index /**< Index of the master to request. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   336
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   337
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   338
/** Releases a requested EtherCAT master.
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   339
 *
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   340
 * After use, a master it has to be released to make it available for other
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   341
 * applications.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   342
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   343
void ecrt_release_master(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   344
        ec_master_t *master /**< EtherCAT master */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   345
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   346
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   347
/******************************************************************************
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   348
 * Master methods
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   349
 *****************************************************************************/
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   350
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   351
/** Sets the locking callbacks.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   352
 *
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   353
 * For concurrent master access, the application has to provide a locking
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   354
 * mechanism (see section FIXME in the docs). The method takes two function
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   355
 * pointers and a data value as its parameters. The arbitrary \a cb_data value
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   356
 * will be passed as argument on every callback. Asynchronous master access
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   357
 * (like EoE processing) is only possible if the callbacks have been set.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   358
 *
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   359
 * The request_cb function must return zero, to allow another instance
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   360
 * (an EoE process for example) to access the master. Non-zero means,
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   361
 * that access is currently forbidden.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   362
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   363
void ecrt_master_callbacks(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   364
        ec_master_t *master, /**< EtherCAT master */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   365
        int (*request_cb)(void *), /**< Lock request function. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   366
        void (*release_cb)(void *), /**< Lock release function. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   367
        void *cb_data /**< Arbitrary user data. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   368
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   369
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   370
/** Creates a new process data domain.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   371
 *
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   372
 * For process data exchange, at least one process data domain is needed.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   373
 * This method creates a new process data domain and returns a pointer to the
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   374
 * new domain object. This object can be used for registering PDOs and
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   375
 * exchanging them in cyclic operation.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   376
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   377
 * \return Pointer to the new domain on success, else NULL.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   378
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   379
ec_domain_t *ecrt_master_create_domain(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   380
        ec_master_t *master /**< EtherCAT master. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   381
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   382
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   383
/** Obtains a slave configuration.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   384
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   385
 * Creates a slave configuration object for the given \a alias and \a position
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   386
 * tuple and returns it. If a configuration with the same \a alias and \a
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   387
 * position already exists, it will be re-used. In the latter case, the given
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   388
 * vendor ID and product code are compared to the stored ones. On mismatch, an
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   389
 * error message is raised and the function returns \a NULL.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   390
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   391
 * Slaves are addressed with the \a alias and \a position parameters.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   392
 * - If \a alias is zero, \a position is interpreted as the desired slave's
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   393
 *   ring position.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   394
 * - If \a alias is non-zero, it matches a slave with the given alias. In this
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   395
 *   case, \a position is interpreted as ring offset, starting from the
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   396
 *   aliased slave, so a position of zero means the aliased slave itself and a
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   397
 *   positive value matches the n-th slave behind the aliased one.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   398
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   399
 * If the slave with the given address is found during the bus configuration,
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   400
 * its vendor ID and product code are matched against the given value. On
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   401
 * mismatch, the slave is not configured and an error message is raised.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   402
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   403
 * If different slave configurations are pointing to the same slave during bus
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   404
 * configuration, a warning is raised and only the first configuration is
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   405
 * applied.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   406
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   407
 * \retval >0 Pointer to the slave configuration structure.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   408
 * \retval NULL in the error case.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   409
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   410
ec_slave_config_t *ecrt_master_slave_config(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   411
        ec_master_t *master, /**< EtherCAT master */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   412
        uint16_t alias, /**< Slave alias. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   413
        uint16_t position, /**< Slave position. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   414
        uint32_t vendor_id, /**< Expected vendor ID. */
1010
6672b86e7b10 Reverted revision number checking from r1228.
Florian Pose <fp@igh-essen.com>
parents: 1009
diff changeset
   415
        uint32_t product_code /**< Expected product code. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   416
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   417
1096
a32a102a30db Minor change.
Florian Pose <fp@igh-essen.com>
parents: 1092
diff changeset
   418
/** Finishes the configuration phase and prepares for cyclic operation.
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   419
 *
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   420
 * This function tells the master that the configuration phase is finished and
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   421
 * the realtime operation will begin. The function allocates internal memory
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   422
 * for the domains and calculates the logical FMMU addresses for domain
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   423
 * members. It tells the master state machine that the bus configuration is
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   424
 * now to be applied.
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   425
 *
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   426
 * \attention After this function has been called, the realtime application is
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   427
 * in charge of cyclically calling ecrt_master_send() and
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   428
 * ecrt_master_receive() to ensure bus communication. Before calling this
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   429
 * function, the master thread is responsible for that, so these functions may
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   430
 * not be called!
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   431
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   432
 * \return 0 in case of success, else < 0
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   433
 */
1007
b6c3527697c3 Minor change.
Florian Pose <fp@igh-essen.com>
parents: 925
diff changeset
   434
int ecrt_master_activate(
b6c3527697c3 Minor change.
Florian Pose <fp@igh-essen.com>
parents: 925
diff changeset
   435
        ec_master_t *master /**< EtherCAT master. */
b6c3527697c3 Minor change.
Florian Pose <fp@igh-essen.com>
parents: 925
diff changeset
   436
        );
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   437
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   438
/** Sends all datagrams in the queue.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   439
 *
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   440
 * This method takes all datagrams, that have been queued for transmission,
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   441
 * puts them into frames, and passes them to the Ethernet device for sending.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   442
 *
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   443
 * Has to be called cyclically by the application after ecrt_master_activate()
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   444
 * has returned.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   445
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   446
void ecrt_master_send(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   447
        ec_master_t *master /**< EtherCAT master. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   448
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   449
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   450
/** Fetches received frames from the hardware and processes the datagrams.
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   451
 *
1092
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   452
 * Queries the network device for received frames by calling the interrupt
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   453
 * service routine. Extracts received datagrams and dispatches the results to
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   454
 * the datagram objects in the queue. Received datagrams, and the ones that
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   455
 * timed out, will be marked, and dequeued.
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   456
 *
69393cf60399 Improved source code doc.
Florian Pose <fp@igh-essen.com>
parents: 1083
diff changeset
   457
 * Has to be called cyclically by the realtime application after
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   458
 * ecrt_master_activate() has returned.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   459
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   460
void ecrt_master_receive(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   461
        ec_master_t *master /**< EtherCAT master. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   462
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   463
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   464
/** Reads the current master state.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   465
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   466
 * Stores the master state information in the given \a state structure.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   467
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   468
void ecrt_master_state(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   469
        const ec_master_t *master, /**< EtherCAT master. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   470
        ec_master_state_t *state /**< Structure to store the information. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   471
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   472
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   473
/******************************************************************************
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   474
 * Slave configuration methods
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   475
 *****************************************************************************/
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   476
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   477
/** Configure a sync manager.
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   478
 *
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   479
 * Sets the direction of a sync manager. This overrides the direction bits
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   480
 * from the default control register from SII.
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   481
 *
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   482
 * \return zero on success, else non-zero
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   483
 */
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   484
int ecrt_slave_config_sync_manager(
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   485
        ec_slave_config_t *sc, /**< Slave configuration. */
1083
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   486
        uint8_t sync_index, /**< Sync manager index. Must be less
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   487
                              than #EC_MAX_SYNC_MANAGERS. */
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   488
        ec_direction_t dir /**< Input/Output. */
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   489
        );
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   490
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   491
/** Add a PDO to a sync manager's PDO assignment.
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   492
 *
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   493
 * \see ecrt_slave_config_pdos()
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   494
 * \return zero on success, else non-zero
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   495
 */
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   496
int ecrt_slave_config_pdo_assign_add(
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   497
        ec_slave_config_t *sc, /**< Slave configuration. */
1083
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   498
        uint8_t sync_index, /**< Sync manager index. Must be less
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   499
                              than #EC_MAX_SYNC_MANAGERS. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   500
        uint16_t index /**< Index of the PDO to assign. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   501
        );
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   502
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   503
/** Clear a sync manager's PDO assignment.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   504
 *
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   505
 * This can be called before assigning PDOs via
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   506
 * ecrt_slave_config_pdo_assign_add(), to clear the default assignment of a
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   507
 * sync manager.
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   508
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   509
 * \see ecrt_slave_config_pdos()
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   510
 */
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   511
void ecrt_slave_config_pdo_assign_clear(
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   512
        ec_slave_config_t *sc, /**< Slave configuration. */
1083
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   513
        uint8_t sync_index /**< Sync manager index. Must be less
1322dc34cb37 Updated header docs, features and news file.
Florian Pose <fp@igh-essen.com>
parents: 1082
diff changeset
   514
                              than #EC_MAX_SYNC_MANAGERS. */
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   515
        );
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   516
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   517
/** Add a PDO entry to the given PDO's mapping.
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   518
 *
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   519
 * \see ecrt_slave_config_pdos()
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   520
 * \return zero on success, else non-zero
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   521
 */
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   522
int ecrt_slave_config_pdo_mapping_add(
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   523
        ec_slave_config_t *sc, /**< Slave configuration. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   524
        uint16_t pdo_index, /**< Index of the PDO. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   525
        uint16_t entry_index, /**< Index of the PDO entry to add to the PDO's
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   526
                                mapping. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   527
        uint8_t entry_subindex, /**< Subindex of the PDO entry to add to the
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   528
                                  PDO's mapping. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   529
        uint8_t entry_bit_length /**< Size of the PDO entry in bit. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   530
        );
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   531
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   532
/** Clear the mapping of a given PDO.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   533
 *
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   534
 * This can be called before mapping PDO entries via
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   535
 * ecrt_slave_config_pdo_mapping_add(), to clear the default mapping.
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   536
 *
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   537
 * \see ecrt_slave_config_pdos()
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   538
 */
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   539
void ecrt_slave_config_pdo_mapping_clear(
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   540
        ec_slave_config_t *sc, /**< Slave configuration. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   541
        uint16_t pdo_index /**< Index of the PDO. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   542
        );
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   543
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   544
/** Specify a complete PDO configuration.
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   545
 *
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   546
 * This function is a convenience wrapper for the functions
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   547
 * ecrt_slave_config_sync_manager(), ecrt_slave_config_pdo_assign_clear(),
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   548
 * ecrt_slave_config_pdo_assign_add(), ecrt_slave_config_pdo_mapping_clear()
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   549
 * and ecrt_slave_config_pdo_mapping_add(), that are better suitable for
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   550
 * automatic code generation.
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   551
 *
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   552
 * The following example shows, how to specify a complete configuration,
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   553
 * including the PDO mappings. With this information, the master is able to
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   554
 * reserve the complete process data, even if the slave is not present at
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   555
 * configuration time:
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   556
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   557
 * \code
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   558
 * ec_pdo_entry_info_t el3162_channel1[] = {
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   559
 *     {0x3101, 1,  8}, // status
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   560
 *     {0x3101, 2, 16}  // value
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   561
 * };
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   562
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   563
 * ec_pdo_entry_info_t el3162_channel2[] = {
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   564
 *     {0x3102, 1,  8}, // status
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   565
 *     {0x3102, 2, 16}  // value
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   566
 * };
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   567
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   568
 * ec_pdo_info_t el3162_pdos[] = {
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   569
 *     {0x1A00, 2, el3162_channel1},
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   570
 *     {0x1A01, 2, el3162_channel2}
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   571
 * };
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   572
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   573
 * ec_sync_info_t el3162_syncs[] = {
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   574
 *     {2, EC_DIR_OUTPUT},
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   575
 *     {3, EC_DIR_INPUT, 2, el3162_pdos},
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   576
 *     {0xff}
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   577
 * };
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   578
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   579
 * if (ecrt_slave_config_pdos(sc_ana_in, EC_END, el3162_syncs)) {
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   580
 *     // handle error
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   581
 * }
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   582
 * \endcode
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   583
 * 
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   584
 * The next example shows, how to configure the PDO assignment only. The
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   585
 * entries for each assigned PDO are taken from the PDO's default mapping.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   586
 * Please note, that PDO entry registration will fail, if the PDO
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   587
 * configuration is left empty and the slave is offline.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   588
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   589
 * \code
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   590
 * ec_pdo_info_t pdos[] = {
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   591
 *     {0x1600}, // Channel 1
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   592
 *     {0x1601}  // Channel 2
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   593
 * };
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   594
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   595
 * ec_sync_info_t syncs[] = {
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   596
 *     {3, EC_DIR_INPUT, 2, pdos},
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   597
 * };
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   598
 * 
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   599
 * if (ecrt_slave_config_pdos(slave_config_ana_in, 1, syncs)) {
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   600
 *     // handle error
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   601
 * }
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   602
 * \endcode
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   603
 *
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   604
 * Processing of \a syncs will stop, if
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   605
 * - the number of processed items reaches \a n_syncs, or
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   606
 * - the \a index member of an ec_sync_info_t item is 0xff. In this case,
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   607
 *   \a n_syncs should set to a number greater than the number of list items;
879
9b395c5646ab Changed terms "Pdo mapping" -> "Pdo assignment" and "Pdo configuration"
Florian Pose <fp@igh-essen.com>
parents: 878
diff changeset
   608
 *   using EC_END is recommended.
878
40c379697ebf Introduced EC_MAP_END.
Florian Pose <fp@igh-essen.com>
parents: 869
diff changeset
   609
 *
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   610
 * \return zero on success, else non-zero
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   611
 */
1082
ff06c58e269c Renamed ecrt_slave_config_sync_managers() to ecrt_slave_config_pdos();
Florian Pose <fp@igh-essen.com>
parents: 1055
diff changeset
   612
int ecrt_slave_config_pdos(
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   613
        ec_slave_config_t *sc, /**< Slave configuration. */
1055
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   614
        unsigned int n_syncs, /**< Number of sync manager configurations in
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   615
                                \a syncs. */
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   616
        const ec_sync_info_t syncs[] /**< Array of sync manager
2be8918682fa Store sync manager configurations in ec_slave_config_t instead of Pdo
Florian Pose <fp@igh-essen.com>
parents: 1022
diff changeset
   617
                                       configurations. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   618
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   619
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   620
/** Registers a PDO entry for process data exchange in a domain.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   621
 *
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   622
 * Searches the assigned PDOs for the given PDO entry. An error is raised, if
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   623
 * the given entry is not mapped. Otherwise, the corresponding sync manager
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   624
 * and FMMU configurations are provided for slave configuration and the
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   625
 * respective sync manager's assigned PDOs are appended to the given domain,
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   626
 * if not already done. The offset of the requested PDO entry's data inside
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   627
 * the domain's process data is returned. Optionally, the PDO entry bit
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   628
 * position (0-7) can be retrieved via the \a bit_position output parameter.
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   629
 * This pointer may be \a NULL, in this case an error is raised if the PDO
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   630
 * entry does not byte-align.
842
40e27e5a8dce Added ecrt_slave_config_pdo() and ecrt_slave_config_pdo_entry().
Florian Pose <fp@igh-essen.com>
parents: 832
diff changeset
   631
 *
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   632
 * \retval >=0 Success: Offset of the PDO entry's process data.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   633
 * \retval -1  Error: PDO entry not found.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   634
 * \retval -2  Error: Failed to register PDO entry.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   635
 * \retval -3  Error: PDO entry is not byte-aligned.
807
f8bca95ab75d Moved ecrt_domain_reg_pdo_entry() to
Florian Pose <fp@igh-essen.com>
parents: 793
diff changeset
   636
 */
f8bca95ab75d Moved ecrt_domain_reg_pdo_entry() to
Florian Pose <fp@igh-essen.com>
parents: 793
diff changeset
   637
int ecrt_slave_config_reg_pdo_entry(
f8bca95ab75d Moved ecrt_domain_reg_pdo_entry() to
Florian Pose <fp@igh-essen.com>
parents: 793
diff changeset
   638
        ec_slave_config_t *sc, /**< Slave configuration. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   639
        uint16_t entry_index, /**< Index of the PDO entry to register. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   640
        uint8_t entry_subindex, /**< Subindex of the PDO entry to register. */
923
a6b51990e7e6 Changed Pdo entry registration function - return byte and bit positions
Richard Hacker <ha@igh-essen.com>
parents: 916
diff changeset
   641
        ec_domain_t *domain, /**< Domain. */
925
939f3e9bba1e Some improvements concerning bit_position.
Florian Pose <fp@igh-essen.com>
parents: 923
diff changeset
   642
        unsigned int *bit_position /**< Optional address if bit addressing 
923
a6b51990e7e6 Changed Pdo entry registration function - return byte and bit positions
Richard Hacker <ha@igh-essen.com>
parents: 916
diff changeset
   643
                                 is desired */
916
db73994fbdac Added bitwise Pdo registration.
Florian Pose <fp@igh-essen.com>
parents: 900
diff changeset
   644
        );
db73994fbdac Added bitwise Pdo registration.
Florian Pose <fp@igh-essen.com>
parents: 900
diff changeset
   645
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   646
/** Add an SDO configuration.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   647
 *
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   648
 * An SDO configuration is stored in the slave configuration object and is
893
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   649
 * downloaded to the slave whenever the slave is being configured by the
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   650
 * master. This usually happens once on master activation, but can be repeated
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   651
 * subsequently, for example after the slave's power supply failed.
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   652
 *
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   653
 * \attention The SDOs for PDO assignment (\p 0x1C10 - \p 0x1C2F) and PDO
1104
9e7fe258495e Added attention to ecrt_slave_config_sdo().
Florian Pose <fp@igh-essen.com>
parents: 1096
diff changeset
   654
 * mapping (\p 0x1600 - \p 0x17FF and \p 0x1A00 - \p 0x1BFF) should not be
9e7fe258495e Added attention to ecrt_slave_config_sdo().
Florian Pose <fp@igh-essen.com>
parents: 1096
diff changeset
   655
 * configured with this function, because they are part of the slave
9e7fe258495e Added attention to ecrt_slave_config_sdo().
Florian Pose <fp@igh-essen.com>
parents: 1096
diff changeset
   656
 * configuration done by the master. Please use ecrt_slave_config_pdos() and
9e7fe258495e Added attention to ecrt_slave_config_sdo().
Florian Pose <fp@igh-essen.com>
parents: 1096
diff changeset
   657
 * friends instead.
9e7fe258495e Added attention to ecrt_slave_config_sdo().
Florian Pose <fp@igh-essen.com>
parents: 1096
diff changeset
   658
 *
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   659
 * This is the generic function for adding an SDO configuration. Please note
893
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   660
 * that the this function does not do any endianess correction. If
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   661
 * datatype-specific functions are needed (that automatically correct the
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   662
 * endianess), have a look at ecrt_slave_config_sdo8(),
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   663
 * ecrt_slave_config_sdo16() and ecrt_slave_config_sdo32().
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   664
 *
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   665
 * \return 0 in case of success, else < 0
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   666
 */
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   667
int ecrt_slave_config_sdo(
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   668
        ec_slave_config_t *sc, /**< Slave configuration. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   669
        uint16_t index, /**< Index of the SDO to configure. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   670
        uint8_t subindex, /**< Subindex of the SDO to configure. */
893
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   671
        const uint8_t *data, /**< Pointer to the data. */
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   672
        size_t size /**< Size of the \a data. */
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   673
        );
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   674
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   675
/** Add a configuration value for an 8-bit SDO.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   676
 *
893
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   677
 * \see ecrt_slave_config_sdo().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   678
 * \return 0 in case of success, else < 0
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   679
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   680
int ecrt_slave_config_sdo8(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   681
        ec_slave_config_t *sc, /**< Slave configuration */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   682
        uint16_t sdo_index, /**< Index of the SDO to configure. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   683
        uint8_t sdo_subindex, /**< Subindex of the SDO to configure. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   684
        uint8_t value /**< Value to set. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   685
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   686
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   687
/** Add a configuration value for a 16-bit SDO.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   688
 *
893
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   689
 * \see ecrt_slave_config_sdo().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   690
 * \return 0 in case of success, else < 0
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   691
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   692
int ecrt_slave_config_sdo16(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   693
        ec_slave_config_t *sc, /**< Slave configuration */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   694
        uint16_t sdo_index, /**< Index of the SDO to configure. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   695
        uint8_t sdo_subindex, /**< Subindex of the SDO to configure. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   696
        uint16_t value /**< Value to set. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   697
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   698
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   699
/** Add a configuration value for a 32-bit SDO.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   700
 *
893
d921fff3d6e2 Exported ecrt_slave_config_sdo(); added documentation.
Florian Pose <fp@igh-essen.com>
parents: 886
diff changeset
   701
 * \see ecrt_slave_config_sdo().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   702
 * \return 0 in case of success, else < 0
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   703
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   704
int ecrt_slave_config_sdo32(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   705
        ec_slave_config_t *sc, /**< Slave configuration */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   706
        uint16_t sdo_index, /**< Index of the SDO to configure. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   707
        uint8_t sdo_subindex, /**< Subindex of the SDO to configure. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   708
        uint32_t value /**< Value to set. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   709
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   710
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   711
/** Create an SDO request to exchange SDOs during realtime operation.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   712
 *
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   713
 * The created SDO request object is freed automatically when the master is
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   714
 * released.
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   715
 */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   716
ec_sdo_request_t *ecrt_slave_config_create_sdo_request(
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   717
        ec_slave_config_t *sc, /**< Slave configuration. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   718
        uint16_t index, /**< SDO index. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   719
        uint8_t subindex, /**< SDO subindex. */
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   720
        size_t size /**< Data size to reserve. */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   721
        );
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   722
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   723
/** Outputs the state of the slave configuration.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   724
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   725
 * Stores the state information in the given \a state structure.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   726
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   727
void ecrt_slave_config_state(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   728
        const ec_slave_config_t *sc, /**< Slave configuration */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   729
        ec_slave_config_state_t *state /**< State object to write to. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   730
        );
325
7833cf70c4f2 VERSION 1.1: New realtime interface, only state machines.
Florian Pose <fp@igh-essen.com>
parents: 288
diff changeset
   731
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   732
/******************************************************************************
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   733
 * Domain methods
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   734
 *****************************************************************************/
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   735
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   736
/** Registers a bunch of PDO entries for a domain.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   737
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   738
 * \todo doc
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   739
 * \attention The registration array has to be terminated with an empty
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   740
 *            structure, or one with the \a index field set to zero!
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   741
 * \return 0 on success, else non-zero.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   742
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   743
int ecrt_domain_reg_pdo_entry_list(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   744
        ec_domain_t *domain, /**< Domain. */
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   745
        const ec_pdo_entry_reg_t *pdo_entry_regs /**< Array of PDO
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   746
                                                   registrations. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   747
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   748
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   749
/** Returns the current size of the domain's process data.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   750
 *
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   751
 * \return Size of the process data image.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   752
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   753
size_t ecrt_domain_size(
1689
3cf22779c0cb merge -c1501 trunk: ecrt_domain_size() const.
Florian Pose <fp@igh-essen.com>
parents: 1686
diff changeset
   754
        const ec_domain_t *domain /**< Domain. */
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   755
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   756
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   757
/** Provide external memory to store the domain's process data.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   758
 *
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   759
 * Call this after all PDO entries have been registered and before activating
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   760
 * the master.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   761
 *
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   762
 * The size of the allocated memory must be at least ecrt_domain_size(), after
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   763
 * all PDO entries have been registered.
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   764
 */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   765
void ecrt_domain_external_memory(
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   766
        ec_domain_t *domain, /**< Domain. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   767
        uint8_t *memory /**< Address of the memory to store the process
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   768
                          data in. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   769
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   770
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   771
/** Returns the domain's process data.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   772
 *
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   773
 * If external memory was provided with ecrt_domain_external_memory(), the
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   774
 * returned pointer will contain the address of that memory. Otherwise it will
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   775
 * point to the internally allocated memory.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   776
 *
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   777
 * \return Pointer to the process data memory.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   778
 */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   779
uint8_t *ecrt_domain_data(
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   780
        ec_domain_t *domain /**< Domain. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   781
        );
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 807
diff changeset
   782
886
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   783
/** Determines the states of the domain's datagrams.
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   784
 *
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   785
 * Evaluates the working counters of the received datagrams and outputs
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   786
 * statistics, if necessary. This must be called after ecrt_master_receive()
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   787
 * is expected to receive the domain datagrams in order to make
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   788
 * ecrt_domain_state() return the result of the last process data exchange.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   789
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   790
void ecrt_domain_process(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   791
        ec_domain_t *domain /**< Domain. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   792
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   793
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   794
/** (Re-)queues all domain datagrams in the master's datagram queue.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   795
 *
886
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   796
 * Call this function to mark the domain's datagrams for exchanging at the
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   797
 * next call of ecrt_master_send().
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   798
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   799
void ecrt_domain_queue(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   800
        ec_domain_t *domain /**< Domain. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   801
        );
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   802
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   803
/** Reads the state of a domain.
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   804
 *
886
ee1b25db1fbf Added a few docs.
Florian Pose <fp@igh-essen.com>
parents: 880
diff changeset
   805
 * Stores the domain state in the given \a state structure.
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   806
 */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   807
void ecrt_domain_state(
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   808
        const ec_domain_t *domain, /**< Domain. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   809
        ec_domain_state_t *state /**< Pointer to a state object to store the
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   810
                                   information. */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
   811
        );
635
d304ef4af542 Implemented alternative PDO mapping configuration interface.
Florian Pose <fp@igh-essen.com>
parents: 612
diff changeset
   812
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   813
/*****************************************************************************
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   814
 * SDO request methods.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   815
 ****************************************************************************/
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   816
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   817
/** Set the timeout for an SDO request.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   818
 *
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   819
 * If the request cannot be processed in the specified time, if will be marked
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   820
 * as failed.
1113
4d720feb915d Updated doc.
Florian Pose <fp@igh-essen.com>
parents: 1104
diff changeset
   821
 *
4d720feb915d Updated doc.
Florian Pose <fp@igh-essen.com>
parents: 1104
diff changeset
   822
 * The timeout is permanently stored in the request object and is valid until
4d720feb915d Updated doc.
Florian Pose <fp@igh-essen.com>
parents: 1104
diff changeset
   823
 * the next call of this method.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   824
 */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   825
void ecrt_sdo_request_timeout(
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   826
        ec_sdo_request_t *req, /**< SDO request. */
880
f6212c54a5e3 Implemented Sdo timeout.
Florian Pose <fp@igh-essen.com>
parents: 879
diff changeset
   827
        uint32_t timeout /**< Timeout in milliseconds. Zero means no
f6212c54a5e3 Implemented Sdo timeout.
Florian Pose <fp@igh-essen.com>
parents: 879
diff changeset
   828
                           timeout. */
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   829
        );
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   830
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   831
/** Access to the SDO request's data.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   832
 *
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   833
 * This function returns a pointer to the request's internal SDO data memory.
868
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   834
 *
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   835
 * - After a read operation was successful, integer data can be evaluated using
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   836
 *   the EC_READ_*() macros as usual. Example:
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   837
 *   \code
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   838
 *   uint16_t value = EC_READ_U16(ecrt_sdo_request_data(sdo)));
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   839
 *   \endcode
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   840
 * - If a write operation shall be triggered, the data have to be written to
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   841
 *   the internal memory. Use the EC_WRITE_*() macros, if you are writing
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   842
 *   integer data. Be sure, that the data fit into the memory. The memory size
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   843
 *   is a parameter of ecrt_slave_config_create_sdo_request().
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   844
 *   \code
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   845
 *   EC_WRITE_U16(ecrt_sdo_request_data(sdo), 0xFFFF);
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   846
 *   \endcode
aaf175ef0171 Added documentation.
Florian Pose <fp@igh-essen.com>
parents: 864
diff changeset
   847
 *
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   848
 * \attention The return value can be invalid during a read operation, because
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   849
 * the internal SDO data memory could be re-allocated if the read SDO data do
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   850
 * not fit inside.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   851
 *
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   852
 * \return Pointer to the internal SDO data memory.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   853
 */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   854
uint8_t *ecrt_sdo_request_data(
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   855
        ec_sdo_request_t *req /**< SDO request. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   856
        );
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   857
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   858
/** Returns the current SDO data size.
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   859
 *
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   860
 * When the SDO request is created, the data size is set to the size of the
869
6c2f4130ed46 Added ecrt_sdo_request_data_size().
Florian Pose <fp@igh-essen.com>
parents: 868
diff changeset
   861
 * reserved memory. After a read operation the size is set to the size of the
6c2f4130ed46 Added ecrt_sdo_request_data_size().
Florian Pose <fp@igh-essen.com>
parents: 868
diff changeset
   862
 * read data. The size is not modified in any other situation.
6c2f4130ed46 Added ecrt_sdo_request_data_size().
Florian Pose <fp@igh-essen.com>
parents: 868
diff changeset
   863
 *
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   864
 * \return SDO data size in bytes.
869
6c2f4130ed46 Added ecrt_sdo_request_data_size().
Florian Pose <fp@igh-essen.com>
parents: 868
diff changeset
   865
 */
6c2f4130ed46 Added ecrt_sdo_request_data_size().
Florian Pose <fp@igh-essen.com>
parents: 868
diff changeset
   866
size_t ecrt_sdo_request_data_size(
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   867
        const ec_sdo_request_t *req /**< SDO request. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   868
        );
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   869
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   870
/** Get the current state of the SDO request.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   871
 *
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   872
 * \return Request state.
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   873
 */
861
6e3de145421a Introduced ec_sdo_request_state_t, making ec_request_t private again;
Florian Pose <fp@igh-essen.com>
parents: 858
diff changeset
   874
ec_sdo_request_state_t ecrt_sdo_request_state(
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   875
    const ec_sdo_request_t *req /**< SDO request. */
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   876
    );
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   877
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   878
/** Schedule an SDO write operation.
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   879
 *
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   880
 * \attention This method may not be called while ecrt_sdo_request_state()
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   881
 * returns EC_SDO_REQUEST_BUSY.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   882
 */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   883
void ecrt_sdo_request_write(
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   884
        ec_sdo_request_t *req /**< SDO request. */
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   885
        );
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   886
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   887
/** Schedule an SDO read operation.
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   888
 *
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   889
 * \attention This method may not be called while ecrt_sdo_request_state()
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   890
 * returns EC_SDO_REQUEST_BUSY.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   891
 *
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   892
 * \attention After calling this function, the return value of
864
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   893
 * ecrt_sdo_request_data() must be considered as invalid while
5b6992df2931 Updated docs.
Florian Pose <fp@igh-essen.com>
parents: 861
diff changeset
   894
 * ecrt_sdo_request_state() returns EC_SDO_REQUEST_BUSY.
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   895
 */
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   896
void ecrt_sdo_request_read(
1686
e206f4485f60 Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents: 1685
diff changeset
   897
        ec_sdo_request_t *req /**< SDO request. */
858
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   898
        );
69122084d066 Basic reading realtime Sdo access working.
Florian Pose <fp@igh-essen.com>
parents: 851
diff changeset
   899
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   900
/******************************************************************************
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   901
 * Bitwise read/write macros
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   902
 *****************************************************************************/
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   903
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   904
/** Read a certain bit of an EtherCAT data byte.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   905
 *
640
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   906
 * \param DATA EtherCAT data pointer
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   907
 * \param POS bit position
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   908
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   909
#define EC_READ_BIT(DATA, POS) ((*((uint8_t *) (DATA)) >> (POS)) & 0x01)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   910
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   911
/** Write a certain bit of an EtherCAT data byte.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   912
 *
640
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   913
 * \param DATA EtherCAT data pointer
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   914
 * \param POS bit position
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   915
 * \param VAL new bit value
16e9ad7d8e12 Added parameters for vendor ID and product code to ecrt_get_slave(); PDO
Florian Pose <fp@igh-essen.com>
parents: 637
diff changeset
   916
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   917
#define EC_WRITE_BIT(DATA, POS, VAL) \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   918
    do { \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   919
        if (VAL) *((uint8_t *) (DATA)) |=  (1 << (POS)); \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   920
        else     *((uint8_t *) (DATA)) &= ~(1 << (POS)); \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   921
    } while (0)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   922
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   923
/******************************************************************************
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   924
 * Read macros
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   925
 *****************************************************************************/
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   926
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   927
/** Read an 8-bit unsigned value from EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   928
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   929
 * \return EtherCAT data value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   930
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   931
#define EC_READ_U8(DATA) \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   932
    ((uint8_t) *((uint8_t *) (DATA)))
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   933
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   934
/** Read an 8-bit signed value from EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   935
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   936
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   937
 * \return EtherCAT data value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   938
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   939
#define EC_READ_S8(DATA) \
288
89d3c61ef3e6 Minor changes to ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 286
diff changeset
   940
     ((int8_t) *((uint8_t *) (DATA)))
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   941
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   942
/** Read a 16-bit unsigned value from EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   943
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   944
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   945
 * \return EtherCAT data value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   946
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   947
#define EC_READ_U16(DATA) \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   948
     ((uint16_t) le16_to_cpup((void *) (DATA)))
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   949
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   950
/** Read a 16-bit signed value from EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   951
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   952
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   953
 * \return EtherCAT data value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   954
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   955
#define EC_READ_S16(DATA) \
288
89d3c61ef3e6 Minor changes to ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 286
diff changeset
   956
     ((int16_t) le16_to_cpup((void *) (DATA)))
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   957
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   958
/** Read a 32-bit unsigned value from EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   959
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   960
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   961
 * \return EtherCAT data value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   962
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   963
#define EC_READ_U32(DATA) \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   964
     ((uint32_t) le32_to_cpup((void *) (DATA)))
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   965
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   966
/** Read a 32-bit signed value from EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   967
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   968
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   969
 * \return EtherCAT data value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   970
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   971
#define EC_READ_S32(DATA) \
288
89d3c61ef3e6 Minor changes to ecrt.h.
Florian Pose <fp@igh-essen.com>
parents: 286
diff changeset
   972
     ((int32_t) le32_to_cpup((void *) (DATA)))
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   973
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   974
/******************************************************************************
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   975
 * Write macros
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   976
 *****************************************************************************/
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   977
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   978
/** Write an 8-bit unsigned value to EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   979
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   980
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   981
 * \param VAL new value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   982
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   983
#define EC_WRITE_U8(DATA, VAL) \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   984
    do { \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   985
        *((uint8_t *)(DATA)) = ((uint8_t) (VAL)); \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   986
    } while (0)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   987
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   988
/** Write an 8-bit signed value to EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   989
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   990
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   991
 * \param VAL new value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   992
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   993
#define EC_WRITE_S8(DATA, VAL) EC_WRITE_U8(DATA, VAL)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
   994
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   995
/** Write a 16-bit unsigned value to EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
   996
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   997
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   998
 * \param VAL new value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
   999
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1000
#define EC_WRITE_U16(DATA, VAL) \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1001
    do { \
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
  1002
        *((uint16_t *) (DATA)) = cpu_to_le16((uint16_t) (VAL)); \
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1003
    } while (0)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1004
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1005
/** Write a 16-bit signed value to EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
  1006
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1007
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1008
 * \param VAL new value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1009
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1010
#define EC_WRITE_S16(DATA, VAL) EC_WRITE_U16(DATA, VAL)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1011
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1012
/** Write a 32-bit unsigned value to EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
  1013
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1014
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1015
 * \param VAL new value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1016
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1017
#define EC_WRITE_U32(DATA, VAL) \
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1018
    do { \
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
  1019
        *((uint32_t *) (DATA)) = cpu_to_le32((uint32_t) (VAL)); \
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1020
    } while (0)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1021
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1022
/** Write a 32-bit signed value to EtherCAT data.
894
440c43d56b33 Improved EC_WRITE macros by replacing in-situ conversions
Florian Pose <fp@igh-essen.com>
parents: 893
diff changeset
  1023
 *
779
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1024
 * \param DATA EtherCAT data pointer
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1025
 * \param VAL new value
b39a6a4d3671 Prepared RT interface 1.4.
Florian Pose <fp@igh-essen.com>
parents: 758
diff changeset
  1026
 */
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1027
#define EC_WRITE_S32(DATA, VAL) EC_WRITE_U32(DATA, VAL)
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
  1028
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
  1029
/*****************************************************************************/
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
  1030
792
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
  1031
/** @} */
3778920f61e4 Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents: 786
diff changeset
  1032
104
052bc82d5442 MERGE branches/async -> trunk (alle Unterschiede ?bernommen)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
  1033
#endif