master/datagram.h
author Patrick Bruenn <p.bruenn@beckhoff.com>
Tue, 12 Apr 2016 11:17:36 +0200
branchstable-1.5
changeset 2654 b3f6b3e5ef29
parent 2269 1d0711235a61
permissions -rw-r--r--
devices/ccat: revert "limit rx processing to one frame per poll"

revert "limit rx processing to one frame per poll", which caused etherlab
frame timeouts in setups with more than one frame per cycle.
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/******************************************************************************
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
 *
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
 *  $Id$
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
 *
1326
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
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
 *
1326
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
     9
 *  The IgH EtherCAT Master is free software; you can redistribute it and/or
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
    10
 *  modify it under the terms of the GNU General Public License version 2, as
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
    11
 *  published by the Free Software Foundation.
197
b9a6e2c22745 GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents: 195
diff changeset
    12
 *
1326
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
    13
 *  The IgH EtherCAT Master is distributed in the hope that it will be useful,
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
    14
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
    15
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
    16
 *  Public License for more details.
197
b9a6e2c22745 GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents: 195
diff changeset
    17
 *
1326
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
diff changeset
    18
 *  You should have received a copy of the GNU General Public License along
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1225
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
 *
1363
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    22
 *  ---
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    23
 *
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    24
 *  The license mentioned above concerns the source code only. Using the
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    25
 *  EtherCAT technology and brand is only permitted in compliance with the
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    26
 *  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: 238
diff changeset
    27
 *
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
 *****************************************************************************/
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    30
/**
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    31
   \file
293
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
    32
   EtherCAT datagram structure.
199
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    33
*/
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    34
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    35
/*****************************************************************************/
04ecf40fc2e9 Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents: 197
diff changeset
    36
883
4963e22a267a Equalized defines against duplicated header inclusion.
Florian Pose <fp@igh-essen.com>
parents: 816
diff changeset
    37
#ifndef __EC_DATAGRAM_H__
4963e22a267a Equalized defines against duplicated header inclusion.
Florian Pose <fp@igh-essen.com>
parents: 816
diff changeset
    38
#define __EC_DATAGRAM_H__
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
#include <linux/list.h>
294
feea8d850c65 Applied include patch by M. Schwerin.
Florian Pose <fp@igh-essen.com>
parents: 293
diff changeset
    41
#include <linux/time.h>
208
b7797f8a813d command timeout, EoE processing with kernel timer.
Florian Pose <fp@igh-essen.com>
parents: 199
diff changeset
    42
#include <linux/timex.h>
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
#include "globals.h"
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
/*****************************************************************************/
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    48
/** EtherCAT datagram type.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    49
 */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    50
typedef enum {
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    51
    EC_DATAGRAM_NONE = 0x00, /**< Dummy. */
815
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    52
    EC_DATAGRAM_APRD = 0x01, /**< Auto Increment Physical Read. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    53
    EC_DATAGRAM_APWR = 0x02, /**< Auto Increment Physical Write. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    54
    EC_DATAGRAM_APRW = 0x03, /**< Auto Increment Physical ReadWrite. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    55
    EC_DATAGRAM_FPRD = 0x04, /**< Configured Address Physical Read. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    56
    EC_DATAGRAM_FPWR = 0x05, /**< Configured Address Physical Write. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    57
    EC_DATAGRAM_FPRW = 0x06, /**< Configured Address Physical ReadWrite. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    58
    EC_DATAGRAM_BRD  = 0x07, /**< Broadcast Read. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    59
    EC_DATAGRAM_BWR  = 0x08, /**< Broadcast Write. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    60
    EC_DATAGRAM_BRW  = 0x09, /**< Broadcast ReadWrite. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    61
    EC_DATAGRAM_LRD  = 0x0A, /**< Logical Read. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    62
    EC_DATAGRAM_LWR  = 0x0B, /**< Logical Write. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    63
    EC_DATAGRAM_LRW  = 0x0C, /**< Logical ReadWrite. */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    64
    EC_DATAGRAM_ARMW = 0x0D, /**< Auto Increment Physical Read Multiple
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    65
                               Write.  */
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    66
    EC_DATAGRAM_FRMW = 0x0E, /**< Configured Address Physical Read Multiple
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
    67
                               Write. */
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    68
} ec_datagram_type_t;
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    69
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    70
/*****************************************************************************/
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    71
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    72
/** EtherCAT datagram state.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    73
 */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    74
typedef enum {
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    75
    EC_DATAGRAM_INIT,      /**< Initial state of a new datagram. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    76
    EC_DATAGRAM_QUEUED,    /**< Queued for sending. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    77
    EC_DATAGRAM_SENT,      /**< Sent (still in the queue). */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    78
    EC_DATAGRAM_RECEIVED,  /**< Received (dequeued). */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    79
    EC_DATAGRAM_TIMED_OUT, /**< Timed out (dequeued). */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    80
    EC_DATAGRAM_ERROR      /**< Error while sending/receiving (dequeued). */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    81
} ec_datagram_state_t;
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    82
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    83
/*****************************************************************************/
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    84
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    85
/** EtherCAT datagram.
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    86
 */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    87
typedef struct {
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    88
    struct list_head queue; /**< Master datagram queue item. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    89
    struct list_head sent; /**< Master list item for sent datagrams. */
2268
5e1d3c9430e0 Datagram device_index member.
Florian Pose <fp@igh-essen.com>
parents: 1822
diff changeset
    90
    ec_device_index_t device_index; /**< Device via which the datagram shall
5e1d3c9430e0 Datagram device_index member.
Florian Pose <fp@igh-essen.com>
parents: 1822
diff changeset
    91
                                      be / was sent. */
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    92
    ec_datagram_type_t type; /**< Datagram type (APRD, BWR, etc.). */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    93
    uint8_t address[EC_ADDR_LEN]; /**< Recipient address. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    94
    uint8_t *data; /**< Datagram payload. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    95
    ec_origin_t data_origin; /**< Origin of the \a data memory. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    96
    size_t mem_size; /**< Datagram \a data memory size. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    97
    size_t data_size; /**< Size of the data in \a data. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    98
    uint8_t index; /**< Index (set by master). */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
    99
    uint16_t working_counter; /**< Working counter. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   100
    ec_datagram_state_t state; /**< State. */
1040
d2527675cdd5 Disable use of CPU timestamp counter by default.
Florian Pose <fp@igh-essen.com>
parents: 883
diff changeset
   101
#ifdef EC_HAVE_CYCLES
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   102
    cycles_t cycles_sent; /**< Time, when the datagram was sent. */
1040
d2527675cdd5 Disable use of CPU timestamp counter by default.
Florian Pose <fp@igh-essen.com>
parents: 883
diff changeset
   103
#endif
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   104
    unsigned long jiffies_sent; /**< Jiffies, when the datagram was sent. */
1040
d2527675cdd5 Disable use of CPU timestamp counter by default.
Florian Pose <fp@igh-essen.com>
parents: 883
diff changeset
   105
#ifdef EC_HAVE_CYCLES
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   106
    cycles_t cycles_received; /**< Time, when the datagram was received. */
1040
d2527675cdd5 Disable use of CPU timestamp counter by default.
Florian Pose <fp@igh-essen.com>
parents: 883
diff changeset
   107
#endif
809
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   108
    unsigned long jiffies_received; /**< Jiffies, when the datagram was
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   109
                                      received. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   110
    unsigned int skip_count; /**< Number of requeues when not yet received. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   111
    unsigned long stats_output_jiffies; /**< Last statistics output. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   112
    char name[EC_DATAGRAM_NAME_SIZE]; /**< Description of the datagram. */
ec4ef8911824 External domain memory.
Florian Pose <fp@igh-essen.com>
parents: 719
diff changeset
   113
} ec_datagram_t;
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   114
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   115
/*****************************************************************************/
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   116
293
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
   117
void ec_datagram_init(ec_datagram_t *);
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
   118
void ec_datagram_clear(ec_datagram_t *);
1553
4e8d56d6f12a Bugfix: Unqueue datagram before destroying.
Florian Pose <fp@igh-essen.com>
parents: 1485
diff changeset
   119
void ec_datagram_unqueue(ec_datagram_t *);
293
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
   120
int ec_datagram_prealloc(ec_datagram_t *, size_t);
1225
4d5b739edcb5 Introduced ec_datagram_zero().
Florian Pose <fp@igh-essen.com>
parents: 1040
diff changeset
   121
void ec_datagram_zero(ec_datagram_t *);
144
fdc24bf62f80 Dynamischer Kommandospeicher, Domain-Kommandos als Liste.
Florian Pose <fp@igh-essen.com>
parents: 98
diff changeset
   122
293
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
   123
int ec_datagram_aprd(ec_datagram_t *, uint16_t, uint16_t, size_t);
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
   124
int ec_datagram_apwr(ec_datagram_t *, uint16_t, uint16_t, size_t);
815
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
   125
int ec_datagram_aprw(ec_datagram_t *, uint16_t, uint16_t, size_t);
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
   126
int ec_datagram_armw(ec_datagram_t *, uint16_t, uint16_t, size_t);
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
   127
int ec_datagram_fprd(ec_datagram_t *, uint16_t, uint16_t, size_t);
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
   128
int ec_datagram_fpwr(ec_datagram_t *, uint16_t, uint16_t, size_t);
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
   129
int ec_datagram_fprw(ec_datagram_t *, uint16_t, uint16_t, size_t);
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
   130
int ec_datagram_frmw(ec_datagram_t *, uint16_t, uint16_t, size_t);
293
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
   131
int ec_datagram_brd(ec_datagram_t *, uint16_t, size_t);
14aeb79aa992 Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents: 246
diff changeset
   132
int ec_datagram_bwr(ec_datagram_t *, uint16_t, size_t);
815
002fe9ec778f Implemented missing datagram types.
Florian Pose <fp@igh-essen.com>
parents: 809
diff changeset
   133
int ec_datagram_brw(ec_datagram_t *, uint16_t, size_t);
2269
1d0711235a61 Redundant outputs via datagram pairs.
Florian Pose <fp@igh-essen.com>
parents: 2268
diff changeset
   134
int ec_datagram_lrd(ec_datagram_t *, uint32_t, size_t);
1d0711235a61 Redundant outputs via datagram pairs.
Florian Pose <fp@igh-essen.com>
parents: 2268
diff changeset
   135
int ec_datagram_lwr(ec_datagram_t *, uint32_t, size_t);
1d0711235a61 Redundant outputs via datagram pairs.
Florian Pose <fp@igh-essen.com>
parents: 2268
diff changeset
   136
int ec_datagram_lrw(ec_datagram_t *, uint32_t, size_t);
1d0711235a61 Redundant outputs via datagram pairs.
Florian Pose <fp@igh-essen.com>
parents: 2268
diff changeset
   137
int ec_datagram_lrd_ext(ec_datagram_t *, uint32_t, size_t, uint8_t *);
1d0711235a61 Redundant outputs via datagram pairs.
Florian Pose <fp@igh-essen.com>
parents: 2268
diff changeset
   138
int ec_datagram_lwr_ext(ec_datagram_t *, uint32_t, size_t, uint8_t *);
1d0711235a61 Redundant outputs via datagram pairs.
Florian Pose <fp@igh-essen.com>
parents: 2268
diff changeset
   139
int ec_datagram_lrw_ext(ec_datagram_t *, uint32_t, size_t, uint8_t *);
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   140
1822
74e6ac2369f4 Introduced ec_datagram_print_state() method and used it at all places where
Florian Pose <fp@igh-essen.com>
parents: 1553
diff changeset
   141
void ec_datagram_print_state(const ec_datagram_t *);
713
ae41cadd25b6 Better handling of unexpected working counters; introduced
Florian Pose <fp@igh-essen.com>
parents: 708
diff changeset
   142
void ec_datagram_print_wc_error(const ec_datagram_t *);
816
d02761e14eb0 Introduced ec_datagram_type_string().
Florian Pose <fp@igh-essen.com>
parents: 815
diff changeset
   143
void ec_datagram_output_stats(ec_datagram_t *);
d02761e14eb0 Introduced ec_datagram_type_string().
Florian Pose <fp@igh-essen.com>
parents: 815
diff changeset
   144
const char *ec_datagram_type_string(const ec_datagram_t *);
713
ae41cadd25b6 Better handling of unexpected working counters; introduced
Florian Pose <fp@igh-essen.com>
parents: 708
diff changeset
   145
98
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   146
/*****************************************************************************/
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   147
f564d0929292 MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   148
#endif