master/fsm_slave_config.c
changeset 1822 74e6ac2369f4
parent 1520 09cf61d61af0
child 1844 b6bd88d4806b
equal deleted inserted replaced
1821:40321a37d085 1822:74e6ac2369f4
   417     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
   417     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
   418         return;
   418         return;
   419 
   419 
   420     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   420     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   421         fsm->state = ec_fsm_slave_config_state_error;
   421         fsm->state = ec_fsm_slave_config_state_error;
   422         EC_ERR("Failed to receive DC times datagram for slave %u"
   422         EC_ERR("Failed to receive DC times datagram for slave %u: ",
   423                 " (datagram state %u).\n",
   423                 slave->ring_position);
   424                 slave->ring_position, datagram->state);
   424         ec_datagram_print_state(datagram);
   425         return;
   425         return;
   426     }
   426     }
   427 
   427 
   428     if (datagram->working_counter != 1) {
   428     if (datagram->working_counter != 1) {
   429         slave->error_flag = 1;
   429         slave->error_flag = 1;
   466     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
   466     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
   467         return;
   467         return;
   468 
   468 
   469     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   469     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   470         fsm->state = ec_fsm_slave_config_state_error;
   470         fsm->state = ec_fsm_slave_config_state_error;
   471         EC_ERR("Failed to receive DC system time offset datagram for slave %u"
   471         EC_ERR("Failed to receive DC system time offset datagram for"
   472                 " (datagram state %u).\n",
   472                 " slave %u: ", slave->ring_position);
   473                 slave->ring_position, datagram->state);
   473         ec_datagram_print_state(datagram);
   474         return;
   474         return;
   475     }
   475     }
   476 
   476 
   477     if (datagram->working_counter != 1) {
   477     if (datagram->working_counter != 1) {
   478         slave->error_flag = 1;
   478         slave->error_flag = 1;
   634         return;
   634         return;
   635 
   635 
   636     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   636     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   637         fsm->state = ec_fsm_slave_config_state_error;
   637         fsm->state = ec_fsm_slave_config_state_error;
   638         EC_ERR("Failed to receive sync manager configuration datagram for"
   638         EC_ERR("Failed to receive sync manager configuration datagram for"
   639                " slave %u (datagram state %u).\n",
   639                " slave %u: ", slave->ring_position);
   640                slave->ring_position, datagram->state);
   640         ec_datagram_print_state(datagram);
   641         return;
   641         return;
   642     }
   642     }
   643 
   643 
   644     if (fsm->take_time) {
   644     if (fsm->take_time) {
   645         fsm->take_time = 0;
   645         fsm->take_time = 0;
   893         return;
   893         return;
   894 
   894 
   895     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   895     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   896         fsm->state = ec_fsm_slave_config_state_error;
   896         fsm->state = ec_fsm_slave_config_state_error;
   897         EC_ERR("Failed to receive watchdog divider configuration datagram for"
   897         EC_ERR("Failed to receive watchdog divider configuration datagram for"
   898                " slave %u (datagram state %u).\n",
   898                " slave %u: ", slave->ring_position);
   899                slave->ring_position, datagram->state);
   899         ec_datagram_print_state(datagram);
   900         return;
   900         return;
   901     }
   901     }
   902 
   902 
   903     if (datagram->working_counter != 1) {
   903     if (datagram->working_counter != 1) {
   904         slave->error_flag = 1;
   904         slave->error_flag = 1;
   954         return;
   954         return;
   955 
   955 
   956     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   956     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   957         fsm->state = ec_fsm_slave_config_state_error;
   957         fsm->state = ec_fsm_slave_config_state_error;
   958         EC_ERR("Failed to receive sync manager watchdog configuration "
   958         EC_ERR("Failed to receive sync manager watchdog configuration "
   959                 "datagram for slave %u (datagram state %u).\n",
   959                 "datagram for slave %u: ", slave->ring_position);
   960                 slave->ring_position, datagram->state);
   960         ec_datagram_print_state(datagram);
   961         return;
   961         return;
   962     }
   962     }
   963 
   963 
   964     if (datagram->working_counter != 1) {
   964     if (datagram->working_counter != 1) {
   965         EC_WARN("Failed to set process data watchdog intervals of slave %u: ",
   965         EC_WARN("Failed to set process data watchdog intervals of slave %u: ",
  1041         return;
  1041         return;
  1042 
  1042 
  1043     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1043     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1044         fsm->state = ec_fsm_slave_config_state_error;
  1044         fsm->state = ec_fsm_slave_config_state_error;
  1045         EC_ERR("Failed to receive process data sync manager configuration"
  1045         EC_ERR("Failed to receive process data sync manager configuration"
  1046                " datagram for slave %u (datagram state %u).\n",
  1046                " datagram for slave %u: ", slave->ring_position);
  1047                slave->ring_position, datagram->state);
  1047         ec_datagram_print_state(datagram);
  1048         return;
  1048         return;
  1049     }
  1049     }
  1050 
  1050 
  1051     if (datagram->working_counter != 1) {
  1051     if (datagram->working_counter != 1) {
  1052         slave->error_flag = 1;
  1052         slave->error_flag = 1;
  1128     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1128     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1129         return;
  1129         return;
  1130 
  1130 
  1131     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1131     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1132         fsm->state = ec_fsm_slave_config_state_error;
  1132         fsm->state = ec_fsm_slave_config_state_error;
  1133         EC_ERR("Failed to receive FMMUs datagram for slave %u"
  1133         EC_ERR("Failed to receive FMMUs datagram for slave %u: ",
  1134                 " (datagram state %u).\n",
  1134                slave->ring_position);
  1135                slave->ring_position, datagram->state);
  1135         ec_datagram_print_state(datagram);
  1136         return;
  1136         return;
  1137     }
  1137     }
  1138 
  1138 
  1139     if (datagram->working_counter != 1) {
  1139     if (datagram->working_counter != 1) {
  1140         slave->error_flag = 1;
  1140         slave->error_flag = 1;
  1212     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1212     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1213         return;
  1213         return;
  1214 
  1214 
  1215     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1215     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1216         fsm->state = ec_fsm_slave_config_state_error;
  1216         fsm->state = ec_fsm_slave_config_state_error;
  1217         EC_ERR("Failed to receive DC cycle times datagram for slave %u"
  1217         EC_ERR("Failed to receive DC cycle times datagram for slave %u: ",
  1218                 " (datagram state %u).\n",
  1218                 slave->ring_position);
  1219                 slave->ring_position, datagram->state);
  1219         ec_datagram_print_state(datagram);
  1220         return;
  1220         return;
  1221     }
  1221     }
  1222 
  1222 
  1223     if (datagram->working_counter != 1) {
  1223     if (datagram->working_counter != 1) {
  1224         slave->error_flag = 1;
  1224         slave->error_flag = 1;
  1290     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1290     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1291         return;
  1291         return;
  1292 
  1292 
  1293     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1293     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1294         fsm->state = ec_fsm_slave_config_state_error;
  1294         fsm->state = ec_fsm_slave_config_state_error;
  1295         EC_ERR("Failed to receive DC start time datagram for slave %u"
  1295         EC_ERR("Failed to receive DC start time datagram for slave %u: ",
  1296                 " (datagram state %u).\n",
  1296                 slave->ring_position);
  1297                 slave->ring_position, datagram->state);
  1297         ec_datagram_print_state(datagram);
  1298         return;
  1298         return;
  1299     }
  1299     }
  1300 
  1300 
  1301     if (datagram->working_counter != 1) {
  1301     if (datagram->working_counter != 1) {
  1302         slave->error_flag = 1;
  1302         slave->error_flag = 1;
  1332     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1332     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--)
  1333         return;
  1333         return;
  1334 
  1334 
  1335     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1335     if (datagram->state != EC_DATAGRAM_RECEIVED) {
  1336         fsm->state = ec_fsm_slave_config_state_error;
  1336         fsm->state = ec_fsm_slave_config_state_error;
  1337         EC_ERR("Failed to receive DC activation datagram for slave %u"
  1337         EC_ERR("Failed to receive DC activation datagram for slave %u: ",
  1338                 " (datagram state %u).\n",
  1338                 slave->ring_position);
  1339                 slave->ring_position, datagram->state);
  1339         ec_datagram_print_state(datagram);
  1340         return;
  1340         return;
  1341     }
  1341     }
  1342 
  1342 
  1343     if (datagram->working_counter != 1) {
  1343     if (datagram->working_counter != 1) {
  1344         slave->error_flag = 1;
  1344         slave->error_flag = 1;