master/fsm_coe.c
changeset 713 ae41cadd25b6
parent 637 d5d04c868e0e
child 739 4a02162a6301
equal deleted inserted replaced
712:14f899ac51f0 713:ae41cadd25b6
   287         return;
   287         return;
   288     }
   288     }
   289 
   289 
   290     if (datagram->working_counter != 1) {
   290     if (datagram->working_counter != 1) {
   291         fsm->state = ec_fsm_coe_error;
   291         fsm->state = ec_fsm_coe_error;
   292         EC_ERR("Reception of CoE dictionary request failed - slave %i did"
   292         EC_ERR("Reception of CoE dictionary request failed on slave %i: ",
   293                " not respond.\n", slave->ring_position);
   293                 slave->ring_position);
       
   294         ec_datagram_print_wc_error(datagram);
   294         return;
   295         return;
   295     }
   296     }
   296 
   297 
   297     fsm->cycles_start = datagram->cycles_sent;
   298     fsm->cycles_start = datagram->cycles_sent;
   298 
   299 
   323         return;
   324         return;
   324     }
   325     }
   325 
   326 
   326     if (datagram->working_counter != 1) {
   327     if (datagram->working_counter != 1) {
   327         fsm->state = ec_fsm_coe_error;
   328         fsm->state = ec_fsm_coe_error;
   328         EC_ERR("Reception of CoE mailbox check datagram failed - slave %i did"
   329         EC_ERR("Reception of CoE mailbox check datagram failed on slave %i: ",
   329                " not respond.\n",
       
   330                slave->ring_position);
   330                slave->ring_position);
       
   331         ec_datagram_print_wc_error(datagram);
   331         return;
   332         return;
   332     }
   333     }
   333 
   334 
   334     if (!ec_slave_mbox_check(datagram)) {
   335     if (!ec_slave_mbox_check(datagram)) {
   335         if (datagram->cycles_received
   336         if (datagram->cycles_received
   379         return;
   380         return;
   380     }
   381     }
   381 
   382 
   382     if (datagram->working_counter != 1) {
   383     if (datagram->working_counter != 1) {
   383         fsm->state = ec_fsm_coe_error;
   384         fsm->state = ec_fsm_coe_error;
   384         EC_ERR("Reception of CoE dictionary response failed - slave %i did"
   385         EC_ERR("Reception of CoE dictionary response failed on slave %i: ",
   385                " not respond.\n", slave->ring_position);
   386                 slave->ring_position);
       
   387         ec_datagram_print_wc_error(datagram);
   386         return;
   388         return;
   387     }
   389     }
   388 
   390 
   389     if (!(data = ec_slave_mbox_fetch(slave, datagram,
   391     if (!(data = ec_slave_mbox_fetch(slave, datagram,
   390 				     &mbox_prot, &rec_size))) {
   392 				     &mbox_prot, &rec_size))) {
   504         return;
   506         return;
   505     }
   507     }
   506 
   508 
   507     if (datagram->working_counter != 1) {
   509     if (datagram->working_counter != 1) {
   508         fsm->state = ec_fsm_coe_error;
   510         fsm->state = ec_fsm_coe_error;
   509         EC_ERR("Reception of CoE SDO description request failed - slave %i did"
   511         EC_ERR("Reception of CoE SDO description"
   510                " not respond.\n", slave->ring_position);
   512                 " request failed on slave %i: ", slave->ring_position);
       
   513         ec_datagram_print_wc_error(datagram);
   511         return;
   514         return;
   512     }
   515     }
   513 
   516 
   514     fsm->cycles_start = datagram->cycles_sent;
   517     fsm->cycles_start = datagram->cycles_sent;
   515 
   518 
   540         return;
   543         return;
   541     }
   544     }
   542 
   545 
   543     if (datagram->working_counter != 1) {
   546     if (datagram->working_counter != 1) {
   544         fsm->state = ec_fsm_coe_error;
   547         fsm->state = ec_fsm_coe_error;
   545         EC_ERR("Reception of CoE mailbox check datagram failed - slave %i did"
   548         EC_ERR("Reception of CoE mailbox check"
   546                " not respond.\n", slave->ring_position);
   549                 " datagram failed on slave %i: ", slave->ring_position);
       
   550         ec_datagram_print_wc_error(datagram);
   547         return;
   551         return;
   548     }
   552     }
   549 
   553 
   550     if (!ec_slave_mbox_check(datagram)) {
   554     if (!ec_slave_mbox_check(datagram)) {
   551         if (datagram->cycles_received
   555         if (datagram->cycles_received
   594         return;
   598         return;
   595     }
   599     }
   596 
   600 
   597     if (datagram->working_counter != 1) {
   601     if (datagram->working_counter != 1) {
   598         fsm->state = ec_fsm_coe_error;
   602         fsm->state = ec_fsm_coe_error;
   599         EC_ERR("Reception of CoE SDO description response failed - slave %i"
   603         EC_ERR("Reception of CoE SDO description"
   600                " did not respond.\n", slave->ring_position);
   604                 " response failed on slave %i: ", slave->ring_position);
       
   605         ec_datagram_print_wc_error(datagram);
   601         return;
   606         return;
   602     }
   607     }
   603 
   608 
   604     if (!(data = ec_slave_mbox_fetch(slave, datagram,
   609     if (!(data = ec_slave_mbox_fetch(slave, datagram,
   605 				     &mbox_prot, &rec_size))) {
   610 				     &mbox_prot, &rec_size))) {
   707         return;
   712         return;
   708     }
   713     }
   709 
   714 
   710     if (datagram->working_counter != 1) {
   715     if (datagram->working_counter != 1) {
   711         fsm->state = ec_fsm_coe_error;
   716         fsm->state = ec_fsm_coe_error;
   712         EC_ERR("Reception of CoE SDO entry request failed - slave %i did"
   717         EC_ERR("Reception of CoE SDO entry request failed on slave %i: ",
   713                " not respond.\n", slave->ring_position);
   718                 slave->ring_position);
       
   719         ec_datagram_print_wc_error(datagram);
   714         return;
   720         return;
   715     }
   721     }
   716 
   722 
   717     fsm->cycles_start = datagram->cycles_sent;
   723     fsm->cycles_start = datagram->cycles_sent;
   718 
   724 
   744         return;
   750         return;
   745     }
   751     }
   746 
   752 
   747     if (datagram->working_counter != 1) {
   753     if (datagram->working_counter != 1) {
   748         fsm->state = ec_fsm_coe_error;
   754         fsm->state = ec_fsm_coe_error;
   749         EC_ERR("Reception of CoE mailbox check datagram failed - slave %i did"
   755         EC_ERR("Reception of CoE mailbox check"
   750                " not respond.\n", slave->ring_position);
   756                 " datagram failed on slave %i: ", slave->ring_position);
       
   757         ec_datagram_print_wc_error(datagram);
   751         return;
   758         return;
   752     }
   759     }
   753 
   760 
   754     if (!ec_slave_mbox_check(datagram)) {
   761     if (!ec_slave_mbox_check(datagram)) {
   755         if (datagram->cycles_received
   762         if (datagram->cycles_received
   799         return;
   806         return;
   800     }
   807     }
   801 
   808 
   802     if (datagram->working_counter != 1) {
   809     if (datagram->working_counter != 1) {
   803         fsm->state = ec_fsm_coe_error;
   810         fsm->state = ec_fsm_coe_error;
   804         EC_ERR("Reception of CoE SDO description response failed - slave %i"
   811         EC_ERR("Reception of CoE SDO description"
   805                " did not respond.\n", slave->ring_position);
   812                 " response failed on slave %i: ", slave->ring_position);
       
   813         ec_datagram_print_wc_error(datagram);
   806         return;
   814         return;
   807     }
   815     }
   808 
   816 
   809     if (!(data = ec_slave_mbox_fetch(slave, datagram,
   817     if (!(data = ec_slave_mbox_fetch(slave, datagram,
   810 				     &mbox_prot, &rec_size))) {
   818 				     &mbox_prot, &rec_size))) {
   989         return;
   997         return;
   990     }
   998     }
   991 
   999 
   992     if (datagram->working_counter != 1) {
  1000     if (datagram->working_counter != 1) {
   993         fsm->state = ec_fsm_coe_error;
  1001         fsm->state = ec_fsm_coe_error;
   994         EC_ERR("Reception of CoE download request failed - slave %i did not"
  1002         EC_ERR("Reception of CoE download request failed on slave %i: ",
   995                " respond.\n", slave->ring_position);
  1003                 slave->ring_position);
       
  1004         ec_datagram_print_wc_error(datagram);
   996         return;
  1005         return;
   997     }
  1006     }
   998 
  1007 
   999     fsm->cycles_start = datagram->cycles_sent;
  1008     fsm->cycles_start = datagram->cycles_sent;
  1000 
  1009 
  1025         return;
  1034         return;
  1026     }
  1035     }
  1027 
  1036 
  1028     if (datagram->working_counter != 1) {
  1037     if (datagram->working_counter != 1) {
  1029         fsm->state = ec_fsm_coe_error;
  1038         fsm->state = ec_fsm_coe_error;
  1030         EC_ERR("Reception of CoE mailbox check datagram failed - slave %i did"
  1039         EC_ERR("Reception of CoE mailbox check"
  1031                " not respond.\n", slave->ring_position);
  1040                 " datagram failed on slave %i: ", slave->ring_position);
       
  1041         ec_datagram_print_wc_error(datagram);
  1032         return;
  1042         return;
  1033     }
  1043     }
  1034 
  1044 
  1035     if (!ec_slave_mbox_check(datagram)) {
  1045     if (!ec_slave_mbox_check(datagram)) {
  1036         if (datagram->cycles_received
  1046         if (datagram->cycles_received
  1078         return;
  1088         return;
  1079     }
  1089     }
  1080 
  1090 
  1081     if (datagram->working_counter != 1) {
  1091     if (datagram->working_counter != 1) {
  1082         fsm->state = ec_fsm_coe_error;
  1092         fsm->state = ec_fsm_coe_error;
  1083         EC_ERR("Reception of CoE download response failed - slave %i did not"
  1093         EC_ERR("Reception of CoE download response failed on slave %i: ",
  1084                " respond.\n", slave->ring_position);
  1094                 slave->ring_position);
       
  1095         ec_datagram_print_wc_error(datagram);
  1085         return;
  1096         return;
  1086     }
  1097     }
  1087 
  1098 
  1088     if (!(data = ec_slave_mbox_fetch(slave, datagram,
  1099     if (!(data = ec_slave_mbox_fetch(slave, datagram,
  1089 				     &mbox_prot, &rec_size))) {
  1100 				     &mbox_prot, &rec_size))) {
  1198         return;
  1209         return;
  1199     }
  1210     }
  1200 
  1211 
  1201     if (datagram->working_counter != 1) {
  1212     if (datagram->working_counter != 1) {
  1202         fsm->state = ec_fsm_coe_error;
  1213         fsm->state = ec_fsm_coe_error;
  1203         EC_ERR("Reception of CoE upload request failed - slave %i did not"
  1214         EC_ERR("Reception of CoE upload request failed on slave %i: ",
  1204                " respond.\n", slave->ring_position);
  1215                 slave->ring_position);
       
  1216         ec_datagram_print_wc_error(datagram);
  1205         return;
  1217         return;
  1206     }
  1218     }
  1207 
  1219 
  1208     fsm->cycles_start = datagram->cycles_sent;
  1220     fsm->cycles_start = datagram->cycles_sent;
  1209 
  1221 
  1234         return;
  1246         return;
  1235     }
  1247     }
  1236 
  1248 
  1237     if (datagram->working_counter != 1) {
  1249     if (datagram->working_counter != 1) {
  1238         fsm->state = ec_fsm_coe_error;
  1250         fsm->state = ec_fsm_coe_error;
  1239         EC_ERR("Reception of CoE mailbox check datagram failed - slave %i did"
  1251         EC_ERR("Reception of CoE mailbox check"
  1240                " not respond.\n", slave->ring_position);
  1252                 " datagram failed on slave %i: ", slave->ring_position);
       
  1253         ec_datagram_print_wc_error(datagram);
  1241         return;
  1254         return;
  1242     }
  1255     }
  1243 
  1256 
  1244     if (!ec_slave_mbox_check(datagram)) {
  1257     if (!ec_slave_mbox_check(datagram)) {
  1245         if (datagram->cycles_received
  1258         if (datagram->cycles_received
  1292         return;
  1305         return;
  1293     }
  1306     }
  1294 
  1307 
  1295     if (datagram->working_counter != 1) {
  1308     if (datagram->working_counter != 1) {
  1296         fsm->state = ec_fsm_coe_error;
  1309         fsm->state = ec_fsm_coe_error;
  1297         EC_ERR("Reception of CoE upload response failed - slave %i did not"
  1310         EC_ERR("Reception of CoE upload response failed on slave %i: ",
  1298                " respond.\n", slave->ring_position);
  1311                 slave->ring_position);
       
  1312         ec_datagram_print_wc_error(datagram);
  1299         return;
  1313         return;
  1300     }
  1314     }
  1301 
  1315 
  1302     if (!(data = ec_slave_mbox_fetch(slave, datagram,
  1316     if (!(data = ec_slave_mbox_fetch(slave, datagram,
  1303 				     &mbox_prot, &rec_size))) {
  1317 				     &mbox_prot, &rec_size))) {
  1437         return;
  1451         return;
  1438     }
  1452     }
  1439 
  1453 
  1440     if (datagram->working_counter != 1) {
  1454     if (datagram->working_counter != 1) {
  1441         fsm->state = ec_fsm_coe_error;
  1455         fsm->state = ec_fsm_coe_error;
  1442         EC_ERR("Reception of CoE upload segment request failed - slave %i did"
  1456         EC_ERR("Reception of CoE upload segment"
  1443                " not respond.\n", slave->ring_position);
  1457                 " request failed on slave %i: ", slave->ring_position);
       
  1458         ec_datagram_print_wc_error(datagram);
  1444         return;
  1459         return;
  1445     }
  1460     }
  1446 
  1461 
  1447     fsm->cycles_start = datagram->cycles_sent;
  1462     fsm->cycles_start = datagram->cycles_sent;
  1448 
  1463 
  1473         return;
  1488         return;
  1474     }
  1489     }
  1475 
  1490 
  1476     if (datagram->working_counter != 1) {
  1491     if (datagram->working_counter != 1) {
  1477         fsm->state = ec_fsm_coe_error;
  1492         fsm->state = ec_fsm_coe_error;
  1478         EC_ERR("Reception of CoE mailbox check datagram failed - slave %i did"
  1493         EC_ERR("Reception of CoE mailbox check"
  1479                " not respond.\n", slave->ring_position);
  1494                 " datagram failed on slave %i: ", slave->ring_position);
       
  1495         ec_datagram_print_wc_error(datagram);
  1480         return;
  1496         return;
  1481     }
  1497     }
  1482 
  1498 
  1483     if (!ec_slave_mbox_check(datagram)) {
  1499     if (!ec_slave_mbox_check(datagram)) {
  1484         if (datagram->cycles_received
  1500         if (datagram->cycles_received
  1531         return;
  1547         return;
  1532     }
  1548     }
  1533 
  1549 
  1534     if (datagram->working_counter != 1) {
  1550     if (datagram->working_counter != 1) {
  1535         fsm->state = ec_fsm_coe_error;
  1551         fsm->state = ec_fsm_coe_error;
  1536         EC_ERR("Reception of CoE upload segment response failed - slave %i"
  1552         EC_ERR("Reception of CoE upload segment"
  1537                " did not respond.\n", slave->ring_position);
  1553                 " response failed on slave %i: ", slave->ring_position);
       
  1554         ec_datagram_print_wc_error(datagram);
  1538         return;
  1555         return;
  1539     }
  1556     }
  1540 
  1557 
  1541     if (!(data = ec_slave_mbox_fetch(slave, datagram,
  1558     if (!(data = ec_slave_mbox_fetch(slave, datagram,
  1542 				     &mbox_prot, &rec_size))) {
  1559 				     &mbox_prot, &rec_size))) {