master/fsm_slave.c
changeset 738 880c6153101f
parent 737 5a770085161c
child 742 03d2fe3d4a93
equal deleted inserted replaced
737:5a770085161c 738:880c6153101f
   593     ec_datagram_t *datagram = fsm->datagram;
   593     ec_datagram_t *datagram = fsm->datagram;
   594 
   594 
   595     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
   595     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
   596 
   596 
   597     if (!ec_fsm_change_success(&fsm->fsm_change)) {
   597     if (!ec_fsm_change_success(&fsm->fsm_change)) {
   598         slave->error_flag = 1;
   598         if (!fsm->fsm_change.spontaneous_change)
       
   599             slave->error_flag = 1;
   599         fsm->state = ec_fsm_slave_state_error;
   600         fsm->state = ec_fsm_slave_state_error;
   600         return;
   601         return;
   601     }
   602     }
   602 
   603 
   603     slave->self_configured = 1;
   604     slave->self_configured = 1;
   797     ec_master_t *master = fsm->slave->master;
   798     ec_master_t *master = fsm->slave->master;
   798 
   799 
   799     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
   800     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
   800 
   801 
   801     if (!ec_fsm_change_success(&fsm->fsm_change)) {
   802     if (!ec_fsm_change_success(&fsm->fsm_change)) {
   802         slave->error_flag = 1;
   803         if (!fsm->fsm_change.spontaneous_change)
       
   804             slave->error_flag = 1;
   803         fsm->state = ec_fsm_slave_state_error;
   805         fsm->state = ec_fsm_slave_state_error;
   804         return;
   806         return;
   805     }
   807     }
   806 
   808 
   807     // slave is now in PREOP
   809     // slave is now in PREOP
  1075     ec_slave_t *slave = fsm->slave;
  1077     ec_slave_t *slave = fsm->slave;
  1076 
  1078 
  1077     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
  1079     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
  1078 
  1080 
  1079     if (!ec_fsm_change_success(&fsm->fsm_change)) {
  1081     if (!ec_fsm_change_success(&fsm->fsm_change)) {
  1080         fsm->slave->error_flag = 1;
  1082         if (!fsm->fsm_change.spontaneous_change)
       
  1083             fsm->slave->error_flag = 1;
  1081         fsm->state = ec_fsm_slave_state_error;
  1084         fsm->state = ec_fsm_slave_state_error;
  1082         return;
  1085         return;
  1083     }
  1086     }
  1084 
  1087 
  1085     // slave is now in SAVEOP
  1088     // slave is now in SAVEOP
  1115     ec_slave_t *slave = fsm->slave;
  1118     ec_slave_t *slave = fsm->slave;
  1116 
  1119 
  1117     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
  1120     if (ec_fsm_change_exec(&fsm->fsm_change)) return;
  1118 
  1121 
  1119     if (!ec_fsm_change_success(&fsm->fsm_change)) {
  1122     if (!ec_fsm_change_success(&fsm->fsm_change)) {
  1120         slave->error_flag = 1;
  1123         if (!fsm->fsm_change.spontaneous_change)
       
  1124             slave->error_flag = 1;
  1121         fsm->state = ec_fsm_slave_state_error;
  1125         fsm->state = ec_fsm_slave_state_error;
  1122         return;
  1126         return;
  1123     }
  1127     }
  1124 
  1128 
  1125     // slave is now in OP
  1129     // slave is now in OP