From 99e0c9efc7237f7468b5313dfb675144a91b40e7 Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Tue, 25 May 2010 14:12:02 +0200 Subject: [PATCH] Introduced configure switch --enable-regalias for enabling reading alias addresses from registers. Disabled by default. --- configure.ac | 24 ++++++++++++++++++++++++ master/fsm_slave_scan.c | 27 ++++++++++++++++++++------- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 68d2ac70..3d8d93cf 100644 --- a/configure.ac +++ b/configure.ac @@ -512,6 +512,30 @@ if test "x${hrtimer}" = "x1"; then AC_DEFINE([EC_USE_HRTIMER], [1], [Use hrtimer for scheduling]) fi +#------------------------------------------------------------------------------ +# Read alias address from register +#------------------------------------------------------------------------------ + +AC_ARG_ENABLE([regalias], + AS_HELP_STRING([--enable-regalias], + [Read alias adresses from register (default: no)]), + [ + case "${enableval}" in + yes) regalias=1 + ;; + no) regalias=0 + ;; + *) AC_MSG_ERROR([Invalid value for --enable-regalias]) + ;; + esac + ], + [regalias=0] +) + +if test "x${regalias}" = "x1"; then + AC_DEFINE([EC_REGALIAS], [1], [Read alias adresses from register]) +fi + #------------------------------------------------------------------------------ # Command-line tool #----------------------------------------------------------------------------- diff --git a/master/fsm_slave_scan.c b/master/fsm_slave_scan.c index 7bc3a393..460a1336 100644 --- a/master/fsm_slave_scan.c +++ b/master/fsm_slave_scan.c @@ -52,7 +52,9 @@ void ec_fsm_slave_scan_state_dc_times(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_datalink(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_sii_size(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_sii_data(ec_fsm_slave_scan_t *); +#ifdef EC_REGALIAS void ec_fsm_slave_scan_state_regalias(ec_fsm_slave_scan_t *); +#endif void ec_fsm_slave_scan_state_preop(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_sync(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_pdos(ec_fsm_slave_scan_t *); @@ -61,7 +63,9 @@ void ec_fsm_slave_scan_state_end(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_error(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_enter_datalink(ec_fsm_slave_scan_t *); +#ifdef EC_REGALIAS void ec_fsm_slave_scan_enter_regalias(ec_fsm_slave_scan_t *); +#endif void ec_fsm_slave_scan_enter_preop(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_enter_pdos(ec_fsm_slave_scan_t *); @@ -694,7 +698,15 @@ void ec_fsm_slave_scan_state_sii_data(ec_fsm_slave_scan_t *fsm /**< slave state } } +#ifdef EC_REGALIAS ec_fsm_slave_scan_enter_regalias(fsm); +#else + if (slave->sii.mailbox_protocols & EC_MBOX_COE) { + ec_fsm_slave_scan_enter_preop(fsm); + } else { + fsm->state = ec_fsm_slave_scan_state_end; + } +#endif return; end: @@ -703,13 +715,12 @@ end: fsm->state = ec_fsm_slave_scan_state_error; } - /*****************************************************************************/ -/** - Slave scan entry function: REGALIAS. -*/ +#ifdef EC_REGALIAS +/** Slave scan entry function: REGALIAS. + */ void ec_fsm_slave_scan_enter_regalias( ec_fsm_slave_scan_t *fsm /**< slave state machine */ ) @@ -727,9 +738,8 @@ void ec_fsm_slave_scan_enter_regalias( /*****************************************************************************/ -/** - Slave scan state: REGALIAS. -*/ +/** Slave scan state: REGALIAS. + */ void ec_fsm_slave_scan_state_regalias( ec_fsm_slave_scan_t *fsm /**< slave state machine */ ) @@ -754,6 +764,7 @@ void ec_fsm_slave_scan_state_regalias( EC_SLAVE_DBG(slave, 1, "Read alias %u from register.\n", slave->effective_alias); } + if (slave->sii.mailbox_protocols & EC_MBOX_COE) { ec_fsm_slave_scan_enter_preop(fsm); } else { @@ -761,6 +772,8 @@ void ec_fsm_slave_scan_state_regalias( } } +#endif // defined EC_REGALIAS + /*****************************************************************************/ /** Enter slave scan state PREOP. -- GitLab