ab@2054: /****************************************************************************** ab@2054: * ab@2054: * $Id$ ab@2054: * ab@2054: * ec_rtdm.h Copyright (C) 2009-2010 Moehwald GmbH B.Benner ab@2054: * 2011 IgH Andreas Stewering-Bone ab@2054: * ab@2055: * This file is part of the IgH EtherCAT master ab@2054: * ab@2055: * The IgH EtherCAT master is free software; you can ab@2054: * redistribute it and/or modify it under the terms of the GNU Lesser General ab@2054: * Public License as published by the Free Software Foundation; version 2.1 ab@2054: * of the License. ab@2054: * ab@2054: * The IgH EtherCAT master userspace library is distributed in the hope that ab@2054: * it will be useful, but WITHOUT ANY WARRANTY; without even the implied ab@2054: * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ab@2054: * GNU Lesser General Public License for more details. ab@2054: * ab@2054: * You should have received a copy of the GNU Lesser General Public License ab@2054: * along with the IgH EtherCAT master userspace library. If not, see ab@2054: * . ab@2054: * ab@2054: * The license mentioned above concerns the source code only. Using the ab@2054: * EtherCAT technology and brand is only permitted in compliance with the ab@2054: * industrial property and similar rights of Beckhoff Automation GmbH. ab@2054: * ab@2054: *****************************************************************************/ ab@2054: #ifndef __ECRT_RTDM_H ab@2054: #define __ECRT_RTDM_H ab@2054: ab@2054: ab@2054: // ab@2054: // Basefilename of RTDM device ab@2054: // ab@2054: #define EC_RTDM_DEV_FILE_NAME "ec_rtdm" ab@2054: ab@2054: // ab@2054: // IOCTRL Values for RTDM_EXTENSION ab@2054: // ab@2054: // Realtime IOCTRL function ab@2055: #define EC_RTDM_MSTRATTACH 1 // attach to a running master ab@2055: #define EC_RTDM_MSTRGETMUTNAME 2 // return the mutexname ab@2055: #define EC_RTDM_MASTER_RECEIVE 3 // call the master receive ab@2055: #define EC_RTDM_DOMAIN_PROCESS 4 // process domain data ab@2055: #define EC_RTDM_DOMAIN_QUEQUE 5 // prepare domain data ab@2055: #define EC_RTDM_MASTER_SEND 6 // call the master send ab@2055: #define EC_RTDM_DOMAINSTATE 7 // get domain state ab@2055: #define EC_RTDM_MASTERSTATE 8 // get master state ab@2055: #define EC_RTDM_MASTER_APP_TIME 9 // set app time ab@2055: #define EC_RTDM_SYNC_REF_CLOCK 10 // sync ref clock ab@2055: #define EC_RTDM_SYNC_SLAVE_CLOCK 11 // sync slave clocks ab@2055: #define EC_RTDM_MASTER_SYNC_MONITOR_QUEQUE 12 // prepare DC sync information ab@2055: #define EC_RTDM_MASTER_SYNC_MONITOR_PROCESS 13 // get DC sync information ab@2054: ab@2054: typedef struct _CstructMstrAttach ab@2054: { ab@2054: unsigned int domainindex; ab@2054: unsigned int masterindex; ab@2054: } CstructMstrAttach; ab@2054: ab@2054: ab@2055: #define ecrt_rtdm_master_attach(X,Y) rt_dev_ioctl(X, EC_RTDM_MSTRATTACH, Y) ab@2055: #define ecrt_rtdm_master_recieve(X) rt_dev_ioctl(X, EC_RTDM_MASTER_RECEIVE) ab@2055: #define ecrt_rtdm_domain_process(X) rt_dev_ioctl(X, EC_RTDM_DOMAIN_PROCESS) ab@2055: #define ecrt_rtdm_domain_queque(X) rt_dev_ioctl(X, EC_RTDM_DOMAIN_QUEQUE) ab@2055: #define ecrt_rtdm_master_send(X) rt_dev_ioctl(X, EC_RTDM_MASTER_SEND) ab@2055: #define ecrt_rtdm_domain_state(X,Y) rt_dev_ioctl(X, EC_RTDM_DOMAINSTATE, Y) ab@2055: #define ecrt_rtdm_master_state(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTERSTATE, Y) ab@2055: #define ecrt_rtdm_master_application_time(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTER_APP_TIME, Y) ab@2055: #define ecrt_rtdm_master_sync_reference_clock(X) rt_dev_ioctl(X, EC_RTDM_SYNC_REF_CLOCK) ab@2055: #define ecrt_rtdm_master_sync_slave_clocks(X) rt_dev_ioctl(X, EC_RTDM_SYNC_SLAVE_CLOCK) ab@2055: #define ecrt_rtdm_master_sync_monitor_queque(X) rt_dev_ioctl(X, EC_RTDM_MASTER_MONITOR_QUEQUE) ab@2055: #define ecrt_rtdm_master_sync_monitor_process(X,Y) rt_dev_ioctl(X, EC_RTDM_MASTER_MONITOR_PROCESS,Y) ab@2054: ab@2054: #endif ab@2054: ab@2054: