Removed dummy master.

This commit is contained in:
Florian Pose 2008-04-03 15:31:34 +00:00
parent 0a6b984c26
commit 8887d6d26d
9 changed files with 12 additions and 703 deletions

View File

@ -31,6 +31,6 @@
#
#------------------------------------------------------------------------------
obj-m := master/ devices/ dummy/
obj-m := master/ devices/
#------------------------------------------------------------------------------

View File

@ -31,9 +31,9 @@
#
#------------------------------------------------------------------------------
SUBDIRS = master devices script include dummy
SUBDIRS = master devices script include
DIST_SUBDIRS = master devices script include examples dummy
DIST_SUBDIRS = master devices script include examples
EXTRA_DIST = \
Doxyfile \
@ -48,7 +48,6 @@ modules:
modules_install:
$(MAKE) -C master modules_install
$(MAKE) -C devices modules_install
$(MAKE) -C dummy modules_install
clean-local:
$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean

View File

@ -406,29 +406,6 @@ if test "x${debugring}" = "x1"; then
AC_DEFINE([EC_DEBUG_RING], [1], [Debug ring enabled])
fi
#------------------------------------------------------------------------------
# Dummy master module
#------------------------------------------------------------------------------
AC_ARG_ENABLE([dummy],
AS_HELP_STRING([--enable-dummy],
[Build the dummy master module @<:@NO@:>@]),
[
case "${enableval}" in
yes) dummy=1
;;
no) dummy=0
;;
*) AC_MSG_ERROR([Invalid value for --enable-dummy])
;;
esac
],
[dummy=0]
)
AM_CONDITIONAL(ENABLE_DUMMY, test "x$dummy" = "x1")
AC_SUBST(ENABLE_DUMMY,[$dummy])
#------------------------------------------------------------------------------
# Ethernet-over-EtherCAT support
#------------------------------------------------------------------------------
@ -461,25 +438,23 @@ AC_CONFIG_FILES([
Doxyfile
Kbuild
Makefile
master/Kbuild
master/Makefile
devices/Kbuild
devices/Makefile
devices/e1000/Makefile
devices/e1000/Kbuild
script/Makefile
script/init.d/Makefile
script/sysconfig/Makefile
include/Makefile
devices/e1000/Makefile
examples/Makefile
examples/mini/Kbuild
examples/mini/Makefile
examples/rtai/Kbuild
examples/rtai/Makefile
examples/msr/Kbuild
examples/msr/Makefile
dummy/Kbuild
dummy/Makefile
examples/rtai/Kbuild
examples/rtai/Makefile
include/Makefile
master/Kbuild
master/Makefile
script/Makefile
script/init.d/Makefile
script/sysconfig/Makefile
])
AC_OUTPUT

View File

@ -1,46 +0,0 @@
#------------------------------------------------------------------------------
#
# $Id$
#
# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH
#
# This file is part of the IgH EtherCAT Master.
#
# The IgH EtherCAT Master is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# The IgH EtherCAT Master is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with the IgH EtherCAT Master; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The right to use EtherCAT Technology is granted and comes free of
# charge under condition of compatibility of product made by
# Licensee. People intending to distribute/sell products based on the
# code, have to sign an agreement to guarantee that products using
# software based on IgH EtherCAT master stay compatible with the actual
# EtherCAT specification (which are released themselves as an open
# standard) as the (only) precondition to have the right to use EtherCAT
# Technology, IP and trade marks.
#
#------------------------------------------------------------------------------
REV := $(shell if test -s $(src)/../svnrevision; then \
cat $(src)/../svnrevision; \
else \
svnversion $(src) 2>/dev/null || echo "unknown"; \
fi)
ifeq (@ENABLE_DUMMY@,1)
obj-m := ec_dummy.o
ec_dummy-objs := module.o master.o slave.o domain.o
CFLAGS_dummy.o := -DSVNREV=$(REV)
endif
#------------------------------------------------------------------------------

View File

@ -1,53 +0,0 @@
#------------------------------------------------------------------------------
#
# $Id$
#
# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH
#
# This file is part of the IgH EtherCAT Master.
#
# The IgH EtherCAT Master is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# The IgH EtherCAT Master is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with the IgH EtherCAT Master; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The right to use EtherCAT Technology is granted and comes free of
# charge under condition of compatibility of product made by
# Licensee. People intending to distribute/sell products based on the
# code, have to sign an agreement to guarantee that products using
# software based on IgH EtherCAT master stay compatible with the actual
# EtherCAT specification (which are released themselves as an open
# standard) as the (only) precondition to have the right to use EtherCAT
# Technology, IP and trade marks.
#
#------------------------------------------------------------------------------
EXTRA_DIST = \
Kbuild.in \
module.c \
master.c \
slave.c \
domain.c
modules:
$(MAKE) -C "@abs_top_srcdir@" modules
modules_install:
mkdir -p $(DESTDIR)$(LINUX_MOD_PATH)
if ENABLE_DUMMY
cp $(srcdir)/ec_dummy.ko $(DESTDIR)$(LINUX_MOD_PATH)
endif
clean-local:
$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean
#------------------------------------------------------------------------------

View File

@ -1,155 +0,0 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT Master.
*
* The IgH EtherCAT Master is free software; you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* The IgH EtherCAT Master is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the IgH EtherCAT Master; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* The right to use EtherCAT Technology is granted and comes free of
* charge under condition of compatibility of product made by
* Licensee. People intending to distribute/sell products based on the
* code, have to sign an agreement to guarantee that products using
* software based on IgH EtherCAT master stay compatible with the actual
* EtherCAT specification (which are released themselves as an open
* standard) as the (only) precondition to have the right to use EtherCAT
* Technology, IP and trade marks.
*
*****************************************************************************/
/**
\file
EtherCAT DUMMY domain methods.
*/
/*****************************************************************************/
#include "../master/globals.h"
#include "../master/domain.h"
#include "../master/master.h"
uint8_t *get_dummy_data(void);
/*****************************************************************************/
/** \cond */
int ecrt_domain_register_pdo(
ec_domain_t *domain, /**< EtherCAT domain */
ec_slave_t *slave, /**< EtherCAT slave */
uint16_t pdo_entry_index, /**< PDO entry index */
uint8_t pdo_entry_subindex, /**< PDO entry subindex */
void **data_ptr /**< address of the process data pointer */
)
{
*data_ptr = get_dummy_data();
return 0;
}
/*****************************************************************************/
/**
* Registers a bunch of data fields.
* \attention The list has to be terminated with a NULL structure ({})!
* \return 0 in case of success, else < 0
* \ingroup RealtimeInterface
*/
int ecrt_domain_register_pdo_list(
ec_domain_t *domain, /**< EtherCAT domain */
const ec_pdo_reg_t *pdo_regs /**< array of PDO registrations */
)
{
const ec_pdo_reg_t *reg;
for (reg = pdo_regs; reg->slave_address; reg++) {
*(reg->data_ptr) = get_dummy_data();
}
return 0;
}
/*****************************************************************************/
/**
* Registers a PDO range in a domain.
* \return 0 on success, else non-zero
* \ingroup RealtimeInterface
*/
int ecrt_domain_register_pdo_range(
ec_domain_t *domain, /**< EtherCAT domain */
ec_slave_t *slave, /**< EtherCAT slave */
ec_direction_t dir, /**< data direction */
uint16_t offset, /**< offset in slave's PDO range */
uint16_t length, /**< length of this range */
void **data_ptr /**< address of the process data pointer */
)
{
*data_ptr = get_dummy_data();
return 0;
}
/*****************************************************************************/
/**
Processes received process data and requeues the domain datagram(s).
\ingroup RealtimeInterface
*/
void ecrt_domain_process(ec_domain_t *domain /**< EtherCAT domain */)
{
}
/*****************************************************************************/
/**
Places all process data datagrams in the masters datagram queue.
\ingroup RealtimeInterface
*/
void ecrt_domain_queue(ec_domain_t *domain /**< EtherCAT domain */)
{
}
/*****************************************************************************/
/**
Returns the state of a domain.
\return 0 if all datagrams were received, else -1.
\ingroup RealtimeInterface
*/
int ecrt_domain_state(const ec_domain_t *domain /**< EtherCAT domain */)
{
return 0;
}
/*****************************************************************************/
/** \cond */
EXPORT_SYMBOL(ecrt_domain_register_pdo);
EXPORT_SYMBOL(ecrt_domain_register_pdo_list);
EXPORT_SYMBOL(ecrt_domain_register_pdo_range);
EXPORT_SYMBOL(ecrt_domain_process);
EXPORT_SYMBOL(ecrt_domain_queue);
EXPORT_SYMBOL(ecrt_domain_state);
/** \endcond */
/*****************************************************************************/

View File

@ -1,121 +0,0 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT Master.
*
* The IgH EtherCAT Master is free software; you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* The IgH EtherCAT Master is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the IgH EtherCAT Master; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* The right to use EtherCAT Technology is granted and comes free of
* charge under condition of compatibility of product made by
* Licensee. People intending to distribute/sell products based on the
* code, have to sign an agreement to guarantee that products using
* software based on IgH EtherCAT master stay compatible with the actual
* EtherCAT specification (which are released themselves as an open
* standard) as the (only) precondition to have the right to use EtherCAT
* Technology, IP and trade marks.
*
*****************************************************************************/
/**
\file
EtherCAT DUMMY master methods.
*/
/*****************************************************************************/
#include "../include/ecrt.h"
#include "../master/master.h"
/******************************************************************************
* Realtime interface
*****************************************************************************/
/** \cond */
ec_domain_t *ecrt_master_create_domain(ec_master_t *master)
{
static unsigned int domain = 1;
return (ec_domain_t *) domain++;
}
/*****************************************************************************/
int ecrt_master_activate(ec_master_t *master)
{
return 0;
}
/*****************************************************************************/
void ecrt_master_send(ec_master_t *master)
{
}
/*****************************************************************************/
void ecrt_master_receive(ec_master_t *master)
{
}
/*****************************************************************************/
ec_slave_t *ecrt_master_get_slave(
const ec_master_t *master,
const char *address,
uint32_t v,
uint32_t p
)
{
static unsigned int slave = 1;
return (ec_slave_t *) slave++;
}
/*****************************************************************************/
void ecrt_master_callbacks(ec_master_t *m,
int (*q)(void *),
void (*l)(void *),
void *u
)
{
}
/*****************************************************************************/
void ecrt_master_get_status(const ec_master_t *master, /**< EtherCAT master */
ec_master_status_t *status /**< target status object */
)
{
status->bus_status = EC_BUS_OK;
status->bus_tainted = 0;
status->slaves_responding = 999;
}
/*****************************************************************************/
EXPORT_SYMBOL(ecrt_master_create_domain);
EXPORT_SYMBOL(ecrt_master_activate);
EXPORT_SYMBOL(ecrt_master_send);
EXPORT_SYMBOL(ecrt_master_receive);
EXPORT_SYMBOL(ecrt_master_callbacks);
EXPORT_SYMBOL(ecrt_master_get_slave);
EXPORT_SYMBOL(ecrt_master_get_status);
/** \endcond */
/*****************************************************************************/

View File

@ -1,156 +0,0 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT Master.
*
* The IgH EtherCAT Master is free software; you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* The IgH EtherCAT Master is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the IgH EtherCAT Master; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* The right to use EtherCAT Technology is granted and comes free of
* charge under condition of compatibility of product made by
* Licensee. People intending to distribute/sell products based on the
* code, have to sign an agreement to guarantee that products using
* software based on IgH EtherCAT master stay compatible with the actual
* EtherCAT specification (which are released themselves as an open
* standard) as the (only) precondition to have the right to use EtherCAT
* Technology, IP and trade marks.
*
*****************************************************************************/
/**
\file
Dummy EtherCAT master driver module.
*/
/*****************************************************************************/
#include <linux/module.h>
//#include <linux/kernel.h>
//#include <linux/init.h>
#include "../master/globals.h"
#include "../include/ecrt.h"
/*****************************************************************************/
int __init ec_init_module(void);
void __exit ec_cleanup_module(void);
char *ec_master_version_str = EC_MASTER_VERSION;
/*****************************************************************************/
/** \cond */
MODULE_AUTHOR("Florian Pose <fp@igh-essen.com>");
MODULE_DESCRIPTION("DUMMY EtherCAT master driver module");
MODULE_LICENSE("GPL");
MODULE_VERSION(EC_MASTER_VERSION);
/** \endcond */
/*****************************************************************************/
#define DUMMY_SIZE (PAGE_SIZE * 8)
uint8_t dummy_data[DUMMY_SIZE];
off_t dummy_off = 0;
uint8_t *get_dummy_data(void)
{
off_t cur = dummy_off;
dummy_off += 64;
dummy_off %= DUMMY_SIZE;
return dummy_data + cur;
}
/*****************************************************************************/
/**
* Module initialization.
* Initializes \a ec_master_count masters.
* \return 0 on success, else < 0
*/
int __init ec_init_module(void)
{
EC_INFO("Master DUMMY driver %s\n", EC_MASTER_VERSION);
memset(dummy_data, 0x00, DUMMY_SIZE);
return 0;
}
/*****************************************************************************/
/**
Module cleanup.
Clears all master instances.
*/
void __exit ec_cleanup_module(void)
{
EC_INFO("Master DUMMY module cleaned up.\n");
}
/******************************************************************************
* Realtime interface
*****************************************************************************/
unsigned int ecrt_version_magic(void)
{
return ECRT_VERSION_MAGIC;
}
/*****************************************************************************/
ec_master_t *ecrt_request_master(unsigned int master_index
/**< master index */
)
{
EC_INFO("Requesting DUMMY master %u...\n", master_index);
return (void *) master_index + 1;
}
/*****************************************************************************/
/**
Releases a reserved EtherCAT master.
\ingroup RealtimeInterface
*/
void ecrt_release_master(ec_master_t *master /**< EtherCAT master */)
{
EC_INFO("Released DUMMY master %u.\n", (unsigned int) master - 1);
}
/*****************************************************************************/
/** \cond */
module_init(ec_init_module);
module_exit(ec_cleanup_module);
EXPORT_SYMBOL(ecrt_request_master);
EXPORT_SYMBOL(ecrt_release_master);
EXPORT_SYMBOL(ecrt_version_magic);
/** \endcond */
/*****************************************************************************/

View File

@ -1,134 +0,0 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT Master.
*
* The IgH EtherCAT Master is free software; you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* The IgH EtherCAT Master is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the IgH EtherCAT Master; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* The right to use EtherCAT Technology is granted and comes free of
* charge under condition of compatibility of product made by
* Licensee. People intending to distribute/sell products based on the
* code, have to sign an agreement to guarantee that products using
* software based on IgH EtherCAT master stay compatible with the actual
* EtherCAT specification (which are released themselves as an open
* standard) as the (only) precondition to have the right to use EtherCAT
* Technology, IP and trade marks.
*
*****************************************************************************/
/**
\file
EtherCAT DUMMY slave methods.
*/
/*****************************************************************************/
#include "../include/ecrt.h"
#include "../master/master.h"
#include "../master/slave.h"
/*****************************************************************************/
/** \cond */
int ecrt_slave_conf_sdo8(ec_slave_t *slave, /**< EtherCAT slave */
uint16_t sdo_index, /**< SDO index */
uint8_t sdo_subindex, /**< SDO subindex */
uint8_t value /**< new SDO value */
)
{
return 0;
}
/*****************************************************************************/
/**
\return 0 in case of success, else < 0
\ingroup RealtimeInterface
*/
int ecrt_slave_conf_sdo16(ec_slave_t *slave, /**< EtherCAT slave */
uint16_t sdo_index, /**< SDO index */
uint8_t sdo_subindex, /**< SDO subindex */
uint16_t value /**< new SDO value */
)
{
return 0;
}
/*****************************************************************************/
/**
\return 0 in case of success, else < 0
\ingroup RealtimeInterface
*/
int ecrt_slave_conf_sdo32(ec_slave_t *slave, /**< EtherCAT slave */
uint16_t sdo_index, /**< SDO index */
uint8_t sdo_subindex, /**< SDO subindex */
uint32_t value /**< new SDO value */
)
{
return 0;
}
/*****************************************************************************/
void ecrt_slave_pdo_mapping_clear(
ec_slave_t *slave, /**< EtherCAT slave */
ec_direction_t dir /**< output/input */
)
{
}
/*****************************************************************************/
int ecrt_slave_pdo_mapping_add(
ec_slave_t *slave, /**< EtherCAT slave */
ec_direction_t dir, /**< input/output */
uint16_t pdo_index /**< Index of PDO mapping list */)
{
return 0;
}
/*****************************************************************************/
int ecrt_slave_pdo_mapping(ec_slave_t *slave, /**< EtherCAT slave */
ec_direction_t dir, /**< input/output */
unsigned int num_args, /**< Number of following arguments */
... /**< PDO indices to map */
)
{
return 0;
}
/*****************************************************************************/
/** \cond */
EXPORT_SYMBOL(ecrt_slave_conf_sdo8);
EXPORT_SYMBOL(ecrt_slave_conf_sdo16);
EXPORT_SYMBOL(ecrt_slave_conf_sdo32);
EXPORT_SYMBOL(ecrt_slave_pdo_mapping_clear);
EXPORT_SYMBOL(ecrt_slave_pdo_mapping_add);
EXPORT_SYMBOL(ecrt_slave_pdo_mapping);
/** \endcond */
/*****************************************************************************/