# HG changeset patch # User Florian Pose # Date 1326450440 -3600 # Node ID 51d2b26a5d1ce4aa043ee101ecb5aef753bf10ba # Parent c5aca818cbeb87adb2c3104139011ca2d1fbbe4b Fixed reset of allow_scanning flag if ecrt_master_activate() was not called. diff -r c5aca818cbeb -r 51d2b26a5d1c master/master.c --- a/master/master.c Tue Jan 10 12:06:22 2012 +0100 +++ b/master/master.c Fri Jan 13 11:27:20 2012 +0100 @@ -594,7 +594,7 @@ if (ret) { EC_MASTER_INFO(master, "Finishing slave configuration" " interrupted by signal.\n"); - goto out_allow; + goto out_return; } EC_MASTER_DBG(master, 1, "Waiting for pending slave" @@ -645,6 +645,7 @@ out_allow: master->allow_scan = 1; +out_return: return ret; } @@ -662,6 +663,9 @@ ec_master_clear_config(master); } + /* Re-allow scanning for IDLE phase. */ + master->allow_scan = 1; + EC_MASTER_DBG(master, 1, "OPERATION -> IDLE.\n"); master->phase = EC_IDLE; @@ -2038,7 +2042,9 @@ return ret; } - master->allow_scan = 1; // allow re-scanning on topology change + /* Allow scanning after a topology change. */ + master->allow_scan = 1; + master->active = 1; // notify state machine, that the configuration shall now be applied @@ -2109,7 +2115,10 @@ "EtherCAT-IDLE")) EC_MASTER_WARN(master, "Failed to restart master thread!\n"); - master->allow_scan = 1; + /* Disallow scanning to get into the same state like after a master + * request (after ec_master_enter_operation_phase() is called). */ + master->allow_scan = 0; + master->active = 0; }