00001 // $Id: ethercat_master.h,v 1.25 2006/02/20 15:57:33 kgad Exp $ 00002 //=========================================================================== 00003 // This file is part of "EtherCAT Master Library". 00004 // Copyright (C) 2005 FMTC vzw, Diamant Building, A. Reyerslaan 80, 00005 // B-1030 Brussels, Belgium. 00006 // 00007 // EtherCAT Master Library is free software; you can redistribute it 00008 // and/or modify it under the terms of the GNU General Public License 00009 // as published by the Free Software Foundation; either version 2 or 00010 // (at your option) any later version. 00011 // 00012 // EtherCAT Master Code is distributed in the hope that it will be 00013 // useful, but WITHOUT ANY WARRANTY; without even the implied 00014 // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00015 // PURPOSE. See the GNU General Public License for more details. 00016 // 00017 // You should have received a copy of the GNU General Public License 00018 // along with the EtherCAT Master Library; if not, write to the Free 00019 // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 00020 // 02111-1307 USA. 00021 // 00022 // EtherCAT, the EtherCAT trade name and logo are the intellectual 00023 // property of, and protected by Beckhoff. You can use "EtherCAT 00024 // Master Library" for creating and/or selling or otherwise 00025 // distributing an EtherCAT network master under the terms of the 00026 // EtherCAT Master License. 00027 // 00028 // You should have received a copy of the EtherCAT Master License 00029 // along with the EtherCAT Master Library; if not, write to Beckhoff 00030 // Automation GmbH, Eiserstrasse 5, D-33415 Verl, Germany. 00031 //=========================================================================== 00032 00033 #ifndef __ethercat_master__ 00034 #define __ethercat_master__ 00035 00036 // Forward declarations 00037 class EtherCAT_AL; 00038 class EtherCAT_SlaveHandler; 00039 class EtherCAT_Router; 00040 class EtherCAT_PD_Buffer; 00041 class EC_Logic; 00042 class EtherCAT_DataLinkLayer; 00043 00044 #include "ros/ros.h" 00045 #include "ros_ethercat_eml/ethercat_mbx.h" 00046 #include "ros_ethercat_eml/ethercat_process_data.h" 00047 #include "ros_ethercat_eml/ethercat_slave_memory.h" 00048 #include "ros_ethercat_eml/ethercat_router.h" 00049 00051 00052 class EtherCAT_Master 00053 { 00054 public: 00055 EtherCAT_Master(EtherCAT_AL *_m_al_instance, 00056 EtherCAT_Router *_m_router_instance, 00057 EtherCAT_PD_Buffer *_m_pdbuf_instance, 00058 EC_Logic *_m_logic_instance, 00059 EtherCAT_DataLinkLayer *_m_dll_instance) : 00060 m_al_instance(_m_al_instance), 00061 m_router_instance(_m_router_instance), 00062 m_pdbuf_instance(_m_pdbuf_instance), 00063 m_logic_instance(_m_logic_instance), 00064 m_dll_instance(_m_dll_instance) 00065 { 00066 ROS_ASSERT(m_al_instance); 00067 ROS_ASSERT(m_router_instance); 00068 ROS_ASSERT(m_pdbuf_instance); 00069 ROS_ASSERT(m_logic_instance); 00070 ROS_ASSERT(m_dll_instance); 00071 } 00072 00074 00077 EtherCAT_SlaveHandler * get_slave_handler(EC_FixedStationAddress address); 00078 00080 00086 bool txandrx_PD(size_t datalen, unsigned char * data); 00087 00088 private: 00090 EtherCAT_AL * m_al_instance; 00092 EtherCAT_Router * m_router_instance; 00094 EtherCAT_PD_Buffer * m_pdbuf_instance; 00095 00097 EC_Logic * m_logic_instance; 00099 EtherCAT_DataLinkLayer * m_dll_instance; 00100 }; 00101 00102 #endif