win32/nicdrv.h
Go to the documentation of this file.
1 /*
2  * Simple Open EtherCAT Master Library
3  *
4  * File : nicdrv.h
5  * Version : 1.3.0
6  * Date : 24-02-2013
7  * Copyright (C) 2005-2013 Speciaal Machinefabriek Ketels v.o.f.
8  * Copyright (C) 2005-2013 Arthur Ketels
9  * Copyright (C) 2008-2009 TU/e Technische Universiteit Eindhoven
10  *
11  * SOEM is free software; you can redistribute it and/or modify it under
12  * the terms of the GNU General Public License version 2 as published by the Free
13  * Software Foundation.
14  *
15  * SOEM is distributed in the hope that it will be useful, but WITHOUT ANY
16  * WARRANTY; without even the implied warranty of MERCHANTABILITY or
17  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18  * for more details.
19  *
20  * As a special exception, if other files instantiate templates or use macros
21  * or inline functions from this file, or you compile this file and link it
22  * with other works to produce a work based on this file, this file does not
23  * by itself cause the resulting work to be covered by the GNU General Public
24  * License. However the source code for this file must still be made available
25  * in accordance with section (3) of the GNU General Public License.
26  *
27  * This exception does not invalidate any other reasons why a work based on
28  * this file might be covered by the GNU General Public License.
29  *
30  * The EtherCAT Technology, the trade name and logo “EtherCAT” are the intellectual
31  * property of, and protected by Beckhoff Automation GmbH. You can use SOEM for
32  * the sole purpose of creating, using and/or selling or otherwise distributing
33  * an EtherCAT network master provided that an EtherCAT Master License is obtained
34  * from Beckhoff Automation GmbH.
35  *
36  * In case you did not receive a copy of the EtherCAT Master License along with
37  * SOEM write to Beckhoff Automation GmbH, Eiserstraße 5, D-33415 Verl, Germany
38  * (www.beckhoff.com).
39  */
40 
46 #ifndef _nicdrvh_
47 #define _nicdrvh_
48 
49 #ifdef __cplusplus
50 extern "C"
51 {
52 #endif
53 
54 #define HAVE_REMOTE
55 
56 #include <pcap.h>
57 #include <Packet32.h>
58 
60 typedef struct
61 {
63  pcap_t **sock;
65  ec_bufT (*txbuf)[EC_MAXBUF];
67  int (*txbuflength)[EC_MAXBUF];
69  ec_bufT *tempbuf;
71  ec_bufT (*rxbuf)[EC_MAXBUF];
73  int (*rxbufstat)[EC_MAXBUF];
75  int (*rxsa)[EC_MAXBUF];
76 } ec_stackT;
77 
79 typedef struct
80 {
81  ec_stackT stack;
82  pcap_t *sockhandle;
84  ec_bufT rxbuf[EC_MAXBUF];
86  int rxbufstat[EC_MAXBUF];
88  int rxsa[EC_MAXBUF];
90  ec_bufT tempinbuf;
91 } ecx_redportt;
92 
94 typedef struct
95 {
96  ec_stackT stack;
97  pcap_t *sockhandle;
99  ec_bufT rxbuf[EC_MAXBUF];
101  int rxbufstat[EC_MAXBUF];
103  int rxsa[EC_MAXBUF];
105  ec_bufT tempinbuf;
107  int tempinbufs;
109  ec_bufT txbuf[EC_MAXBUF];
111  int txbuflength[EC_MAXBUF];
113  ec_bufT txbuf2;
115  int txbuflength2;
117  int lastidx;
119  int redstate;
121  ecx_redportt *redport;
122  CRITICAL_SECTION getindex_mutex;
123  CRITICAL_SECTION tx_mutex;
124  CRITICAL_SECTION rx_mutex;
125 } ecx_portt;
126 
127 extern const uint16 priMAC[3];
128 extern const uint16 secMAC[3];
129 
130 #ifdef EC_VER1
131 extern ecx_portt ecx_port;
132 extern ecx_redportt ecx_redport;
133 
134 int ec_setupnic(const char * ifname, int secondary);
135 int ec_closenic(void);
136 void ec_setbufstat(int idx, int bufstat);
137 int ec_getindex(void);
138 int ec_outframe(int idx, int sock);
139 int ec_outframe_red(int idx);
140 int ec_waitinframe(int idx, int timeout);
141 int ec_srconfirm(int idx,int timeout);
142 #endif
143 
144 void ec_setupheader(void *p);
145 int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
146 int ecx_closenic(ecx_portt *port);
147 void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
148 int ecx_getindex(ecx_portt *port);
149 int ecx_outframe(ecx_portt *port, int idx, int sock);
150 int ecx_outframe_red(ecx_portt *port, int idx);
151 int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
152 int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
153 
154 #ifdef __cplusplus
155 }
156 #endif
157 
158 #endif
int ecx_closenic(ecx_portt *port)
Definition: linux/nicdrv.c:207
pcap_t * sockhandle
Definition: win32/nicdrv.h:97
#define EC_MAXBUF
Definition: ethercattype.h:88
int ecx_setupnic(ecx_portt *port, const char *ifname, int secondary)
Definition: linux/nicdrv.c:116
CRITICAL_SECTION tx_mutex
Definition: win32/nicdrv.h:123
uint16_t uint16
Definition: osal.h:34
int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
Definition: linux/nicdrv.c:592
pcap_t * sockhandle
Definition: win32/nicdrv.h:82
int ecx_outframe(ecx_portt *port, int idx, int sock)
Definition: linux/nicdrv.c:291
CRITICAL_SECTION getindex_mutex
Definition: win32/nicdrv.h:122
pcap_t ** sock
Definition: win32/nicdrv.h:63
int ecx_outframe_red(ecx_portt *port, int idx)
Definition: linux/nicdrv.c:316
int ecx_getindex(ecx_portt *port)
Definition: linux/nicdrv.c:239
void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
Definition: linux/nicdrv.c:278
uint8 ec_bufT[EC_BUFSIZE]
Definition: ethercattype.h:111
const uint16 secMAC[3]
Definition: linux/nicdrv.c:103
const uint16 priMAC[3]
Definition: linux/nicdrv.c:101
int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
Definition: linux/nicdrv.c:564
void ec_setupheader(void *p)
Definition: linux/nicdrv.c:222
CRITICAL_SECTION rx_mutex
Definition: win32/nicdrv.h:124


youbot_driver
Author(s): Jan Paulus
autogenerated on Mon Jun 10 2019 15:46:24