3 * $Id$ |
3 * $Id$ |
4 * |
4 * |
5 * ec_rtdm.h Copyright (C) 2009-2010 Moehwald GmbH B.Benner |
5 * ec_rtdm.h Copyright (C) 2009-2010 Moehwald GmbH B.Benner |
6 * 2011 IgH Andreas Stewering-Bone |
6 * 2011 IgH Andreas Stewering-Bone |
7 * |
7 * |
8 * This file is used for Prisma RT to interface to EtherCAT devices |
8 * This file is part of the IgH EtherCAT master |
9 * |
|
10 * This file is part of ethercatrtdm interface to IgH EtherCAT master |
|
11 * |
9 * |
12 * The Moehwald ethercatrtdm interface is free software; you can |
10 * The IgH EtherCAT master is free software; you can |
13 * redistribute it and/or modify it under the terms of the GNU Lesser General |
11 * redistribute it and/or modify it under the terms of the GNU Lesser General |
14 * Public License as published by the Free Software Foundation; version 2.1 |
12 * Public License as published by the Free Software Foundation; version 2.1 |
15 * of the License. |
13 * of the License. |
16 * |
14 * |
17 * The IgH EtherCAT master userspace library is distributed in the hope that |
15 * The IgH EtherCAT master userspace library is distributed in the hope that |
39 |
37 |
40 // |
38 // |
41 // IOCTRL Values for RTDM_EXTENSION |
39 // IOCTRL Values for RTDM_EXTENSION |
42 // |
40 // |
43 // Realtime IOCTRL function |
41 // Realtime IOCTRL function |
44 #define EC_RTDM_MSTRATTACH 1 // attach to a running master |
42 #define EC_RTDM_MSTRATTACH 1 // attach to a running master |
45 #define EC_RTDM_MSTRGETMUTNAME 2 // return the mutexname |
43 #define EC_RTDM_MSTRGETMUTNAME 2 // return the mutexname |
46 #define EC_RTDM_MSTRRECEIVE 3 // call the master receive |
44 #define EC_RTDM_MASTER_RECEIVE 3 // call the master receive |
47 #define EC_RTDM_MSTRSEND 4 // call the master send |
45 #define EC_RTDM_DOMAIN_PROCESS 4 // process domain data |
48 #define EC_RTDM_DOMAINSTATE 5 // get domain state |
46 #define EC_RTDM_DOMAIN_QUEQUE 5 // prepare domain data |
49 #define EC_RTDM_MASTERSTATE 6 // get master state |
47 #define EC_RTDM_MASTER_SEND 6 // call the master send |
50 #define EC_RTDM_MASTER_APP_TIME 7 |
48 #define EC_RTDM_DOMAINSTATE 7 // get domain state |
51 #define EC_RTDM_SYNC_REF_CLOCK 8 |
49 #define EC_RTDM_MASTERSTATE 8 // get master state |
52 #define EC_RTDM_SYNC_SLAVE_CLOCK 9 |
50 #define EC_RTDM_MASTER_APP_TIME 9 // set app time |
|
51 #define EC_RTDM_SYNC_REF_CLOCK 10 // sync ref clock |
|
52 #define EC_RTDM_SYNC_SLAVE_CLOCK 11 // sync slave clocks |
|
53 #define EC_RTDM_MASTER_SYNC_MONITOR_QUEQUE 12 // prepare DC sync information |
|
54 #define EC_RTDM_MASTER_SYNC_MONITOR_PROCESS 13 // get DC sync information |
53 |
55 |
54 typedef struct _CstructMstrAttach |
56 typedef struct _CstructMstrAttach |
55 { |
57 { |
56 unsigned int domainindex; |
58 unsigned int domainindex; |
57 unsigned int masterindex; |
59 unsigned int masterindex; |
58 } CstructMstrAttach; |
60 } CstructMstrAttach; |
59 |
61 |
60 |
62 |
61 #define ecrt_rtdm_master_attach(X,Y) rt_dev_ioctl(X, EC_RTDM_MSTRATTACH, Y) |
63 #define ecrt_rtdm_master_attach(X,Y) rt_dev_ioctl(X, EC_RTDM_MSTRATTACH, Y) |
62 #define ecrt_rtdm_master_recieve(X) rt_dev_ioctl(X, EC_RTDM_MSTRRECEIVE) |
64 #define ecrt_rtdm_master_recieve(X) rt_dev_ioctl(X, EC_RTDM_MASTER_RECEIVE) |
63 #define ecrt_rtdm_master_send(X) rt_dev_ioctl(X, EC_RTDM_MSTRSEND) |
65 #define ecrt_rtdm_domain_process(X) rt_dev_ioctl(X, EC_RTDM_DOMAIN_PROCESS) |
64 #define ecrt_rtdm_domain_state(X,Y) rt_dev_ioctl(X, EC_RTDM_DOMAINSTATE, Y) |
66 #define ecrt_rtdm_domain_queque(X) rt_dev_ioctl(X, EC_RTDM_DOMAIN_QUEQUE) |
65 #define ecrt_rtdm_master_state(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTERSTATE, Y) |
67 #define ecrt_rtdm_master_send(X) rt_dev_ioctl(X, EC_RTDM_MASTER_SEND) |
66 #define ecrt_rtdm_master_application_time(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTER_APP_TIME, Y) |
68 #define ecrt_rtdm_domain_state(X,Y) rt_dev_ioctl(X, EC_RTDM_DOMAINSTATE, Y) |
67 #define ecrt_rtdm_master_sync_reference_clock(X) rt_dev_ioctl(X, EC_RTDM_SYNC_REF_CLOCK) |
69 #define ecrt_rtdm_master_state(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTERSTATE, Y) |
68 #define ecrt_rtdm_master_sync_slave_clocks(X) rt_dev_ioctl(X, EC_RTDM_SYNC_SLAVE_CLOCK); |
70 #define ecrt_rtdm_master_application_time(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTER_APP_TIME, Y) |
|
71 #define ecrt_rtdm_master_sync_reference_clock(X) rt_dev_ioctl(X, EC_RTDM_SYNC_REF_CLOCK) |
|
72 #define ecrt_rtdm_master_sync_slave_clocks(X) rt_dev_ioctl(X, EC_RTDM_SYNC_SLAVE_CLOCK) |
|
73 #define ecrt_rtdm_master_sync_monitor_queque(X) rt_dev_ioctl(X, EC_RTDM_MASTER_MONITOR_QUEQUE) |
|
74 #define ecrt_rtdm_master_sync_monitor_process(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTER_MONITOR_PROCESS,Y) |
69 |
75 |
70 #endif |
76 #endif |
71 |
77 |
72 |
78 |