equal
deleted
inserted
replaced
302 return; // FIXME: request again? |
302 return; // FIXME: request again? |
303 |
303 |
304 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
304 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
305 fsm->state = ec_fsm_coe_error; |
305 fsm->state = ec_fsm_coe_error; |
306 EC_ERR("Failed to receive CoE dictionary request datagram for" |
306 EC_ERR("Failed to receive CoE dictionary request datagram for" |
307 " slave %u (datagram state %i).\n", |
307 " slave %u (datagram state %u).\n", |
308 slave->ring_position, datagram->state); |
308 slave->ring_position, datagram->state); |
309 return; |
309 return; |
310 } |
310 } |
311 |
311 |
312 if (datagram->working_counter != 1) { |
312 if (datagram->working_counter != 1) { |
339 return; |
339 return; |
340 |
340 |
341 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
341 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
342 fsm->state = ec_fsm_coe_error; |
342 fsm->state = ec_fsm_coe_error; |
343 EC_ERR("Failed to receive CoE mailbox check datagram for slave %u" |
343 EC_ERR("Failed to receive CoE mailbox check datagram for slave %u" |
344 " (datagram state %i).\n", |
344 " (datagram state %u).\n", |
345 slave->ring_position, datagram->state); |
345 slave->ring_position, datagram->state); |
346 return; |
346 return; |
347 } |
347 } |
348 |
348 |
349 if (datagram->working_counter != 1) { |
349 if (datagram->working_counter != 1) { |
395 return; // FIXME: request again? |
395 return; // FIXME: request again? |
396 |
396 |
397 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
397 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
398 fsm->state = ec_fsm_coe_error; |
398 fsm->state = ec_fsm_coe_error; |
399 EC_ERR("Failed to receive CoE dictionary response datagram for" |
399 EC_ERR("Failed to receive CoE dictionary response datagram for" |
400 " slave %u (datagram state %i).\n", |
400 " slave %u (datagram state %u).\n", |
401 slave->ring_position, datagram->state); |
401 slave->ring_position, datagram->state); |
402 return; |
402 return; |
403 } |
403 } |
404 |
404 |
405 if (datagram->working_counter != 1) { |
405 if (datagram->working_counter != 1) { |
534 return; // FIXME: check for response first? |
534 return; // FIXME: check for response first? |
535 |
535 |
536 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
536 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
537 fsm->state = ec_fsm_coe_error; |
537 fsm->state = ec_fsm_coe_error; |
538 EC_ERR("Failed to receive CoE Sdo description request datagram for" |
538 EC_ERR("Failed to receive CoE Sdo description request datagram for" |
539 " slave %u (datagram state %i).\n", |
539 " slave %u (datagram state %u).\n", |
540 slave->ring_position, datagram->state); |
540 slave->ring_position, datagram->state); |
541 return; |
541 return; |
542 } |
542 } |
543 |
543 |
544 if (datagram->working_counter != 1) { |
544 if (datagram->working_counter != 1) { |
571 return; |
571 return; |
572 |
572 |
573 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
573 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
574 fsm->state = ec_fsm_coe_error; |
574 fsm->state = ec_fsm_coe_error; |
575 EC_ERR("Failed to receive CoE mailbox check datagram from slave %u" |
575 EC_ERR("Failed to receive CoE mailbox check datagram from slave %u" |
576 " (datagram state %i).\n", |
576 " (datagram state %u).\n", |
577 slave->ring_position, datagram->state); |
577 slave->ring_position, datagram->state); |
578 return; |
578 return; |
579 } |
579 } |
580 |
580 |
581 if (datagram->working_counter != 1) { |
581 if (datagram->working_counter != 1) { |
626 return; // FIXME: request again? |
626 return; // FIXME: request again? |
627 |
627 |
628 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
628 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
629 fsm->state = ec_fsm_coe_error; |
629 fsm->state = ec_fsm_coe_error; |
630 EC_ERR("Failed to receive CoE Sdo description response datagram from" |
630 EC_ERR("Failed to receive CoE Sdo description response datagram from" |
631 " slave %u (datagram state %i).\n", |
631 " slave %u (datagram state %u).\n", |
632 slave->ring_position, datagram->state); |
632 slave->ring_position, datagram->state); |
633 return; |
633 return; |
634 } |
634 } |
635 |
635 |
636 if (datagram->working_counter != 1) { |
636 if (datagram->working_counter != 1) { |
748 return; // FIXME: check for response first? |
748 return; // FIXME: check for response first? |
749 |
749 |
750 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
750 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
751 fsm->state = ec_fsm_coe_error; |
751 fsm->state = ec_fsm_coe_error; |
752 EC_ERR("Failed to receive CoE Sdo entry request datagram for" |
752 EC_ERR("Failed to receive CoE Sdo entry request datagram for" |
753 " slave %u (datagram state %i).\n", |
753 " slave %u (datagram state %u).\n", |
754 slave->ring_position, datagram->state); |
754 slave->ring_position, datagram->state); |
755 return; |
755 return; |
756 } |
756 } |
757 |
757 |
758 if (datagram->working_counter != 1) { |
758 if (datagram->working_counter != 1) { |
786 return; |
786 return; |
787 |
787 |
788 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
788 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
789 fsm->state = ec_fsm_coe_error; |
789 fsm->state = ec_fsm_coe_error; |
790 EC_ERR("Failed to receive CoE mailbox check datagram from slave %u" |
790 EC_ERR("Failed to receive CoE mailbox check datagram from slave %u" |
791 " (datagram state %i).\n", |
791 " (datagram state %u).\n", |
792 slave->ring_position, datagram->state); |
792 slave->ring_position, datagram->state); |
793 return; |
793 return; |
794 } |
794 } |
795 |
795 |
796 if (datagram->working_counter != 1) { |
796 if (datagram->working_counter != 1) { |
842 return; // FIXME: request again? |
842 return; // FIXME: request again? |
843 |
843 |
844 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
844 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
845 fsm->state = ec_fsm_coe_error; |
845 fsm->state = ec_fsm_coe_error; |
846 EC_ERR("Failed to receive CoE Sdo description response datagram from" |
846 EC_ERR("Failed to receive CoE Sdo description response datagram from" |
847 " slave %u (datagram state %i).\n", |
847 " slave %u (datagram state %u).\n", |
848 slave->ring_position, datagram->state); |
848 slave->ring_position, datagram->state); |
849 return; |
849 return; |
850 } |
850 } |
851 |
851 |
852 if (datagram->working_counter != 1) { |
852 if (datagram->working_counter != 1) { |
1054 return; // FIXME: check for response first? |
1054 return; // FIXME: check for response first? |
1055 |
1055 |
1056 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1056 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1057 fsm->state = ec_fsm_coe_error; |
1057 fsm->state = ec_fsm_coe_error; |
1058 EC_ERR("Failed to receive CoE download request datagram for" |
1058 EC_ERR("Failed to receive CoE download request datagram for" |
1059 " slave %u (datagram state %i).\n", |
1059 " slave %u (datagram state %u).\n", |
1060 slave->ring_position, datagram->state); |
1060 slave->ring_position, datagram->state); |
1061 return; |
1061 return; |
1062 } |
1062 } |
1063 |
1063 |
1064 if (datagram->working_counter != 1) { |
1064 if (datagram->working_counter != 1) { |
1091 return; |
1091 return; |
1092 |
1092 |
1093 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1093 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1094 fsm->state = ec_fsm_coe_error; |
1094 fsm->state = ec_fsm_coe_error; |
1095 EC_ERR("Failed to receive CoE mailbox check datagram for slave %u" |
1095 EC_ERR("Failed to receive CoE mailbox check datagram for slave %u" |
1096 " (datagram state %i).\n", |
1096 " (datagram state %u).\n", |
1097 slave->ring_position, datagram->state); |
1097 slave->ring_position, datagram->state); |
1098 return; |
1098 return; |
1099 } |
1099 } |
1100 |
1100 |
1101 if (datagram->working_counter != 1) { |
1101 if (datagram->working_counter != 1) { |
1145 return; // FIXME: request again? |
1145 return; // FIXME: request again? |
1146 |
1146 |
1147 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1147 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1148 fsm->state = ec_fsm_coe_error; |
1148 fsm->state = ec_fsm_coe_error; |
1149 EC_ERR("Failed to receive CoE download response datagram from" |
1149 EC_ERR("Failed to receive CoE download response datagram from" |
1150 " slave %u (datagram state %i).\n", |
1150 " slave %u (datagram state %u).\n", |
1151 slave->ring_position, datagram->state); |
1151 slave->ring_position, datagram->state); |
1152 return; |
1152 return; |
1153 } |
1153 } |
1154 |
1154 |
1155 if (datagram->working_counter != 1) { |
1155 if (datagram->working_counter != 1) { |
1283 return; // FIXME: check for response first? |
1283 return; // FIXME: check for response first? |
1284 |
1284 |
1285 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1285 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1286 fsm->state = ec_fsm_coe_error; |
1286 fsm->state = ec_fsm_coe_error; |
1287 EC_ERR("Failed to receive CoE upload request for slave %u" |
1287 EC_ERR("Failed to receive CoE upload request for slave %u" |
1288 " (datagram state %i).\n", |
1288 " (datagram state %u).\n", |
1289 slave->ring_position, datagram->state); |
1289 slave->ring_position, datagram->state); |
1290 return; |
1290 return; |
1291 } |
1291 } |
1292 |
1292 |
1293 if (datagram->working_counter != 1) { |
1293 if (datagram->working_counter != 1) { |
1320 return; |
1320 return; |
1321 |
1321 |
1322 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1322 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1323 fsm->state = ec_fsm_coe_error; |
1323 fsm->state = ec_fsm_coe_error; |
1324 EC_ERR("Failed to receive CoE mailbox check datagram from slave %u" |
1324 EC_ERR("Failed to receive CoE mailbox check datagram from slave %u" |
1325 " (datagram state %i).\n", |
1325 " (datagram state %u).\n", |
1326 slave->ring_position, datagram->state); |
1326 slave->ring_position, datagram->state); |
1327 return; |
1327 return; |
1328 } |
1328 } |
1329 |
1329 |
1330 if (datagram->working_counter != 1) { |
1330 if (datagram->working_counter != 1) { |
1377 return; // FIXME: request again? |
1377 return; // FIXME: request again? |
1378 |
1378 |
1379 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1379 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1380 fsm->state = ec_fsm_coe_error; |
1380 fsm->state = ec_fsm_coe_error; |
1381 EC_ERR("Failed to receive CoE upload response datagram for" |
1381 EC_ERR("Failed to receive CoE upload response datagram for" |
1382 " slave %u (datagram state %i).\n", |
1382 " slave %u (datagram state %u).\n", |
1383 slave->ring_position, datagram->state); |
1383 slave->ring_position, datagram->state); |
1384 return; |
1384 return; |
1385 } |
1385 } |
1386 |
1386 |
1387 if (datagram->working_counter != 1) { |
1387 if (datagram->working_counter != 1) { |
1523 } |
1523 } |
1524 |
1524 |
1525 fsm->toggle = 0; |
1525 fsm->toggle = 0; |
1526 |
1526 |
1527 if (data_size < complete_size) { |
1527 if (data_size < complete_size) { |
1528 EC_WARN("Sdo data incomplete (%i / %i).\n", |
1528 EC_WARN("Sdo data incomplete (%u / %u).\n", |
1529 data_size, complete_size); |
1529 data_size, complete_size); |
1530 |
1530 |
1531 if (!(data = ec_slave_mbox_prepare_send(slave, datagram, |
1531 if (!(data = ec_slave_mbox_prepare_send(slave, datagram, |
1532 0x03, 3))) { |
1532 0x03, 3))) { |
1533 fsm->state = ec_fsm_coe_error; |
1533 fsm->state = ec_fsm_coe_error; |
1573 return; // FIXME: check for response first? |
1573 return; // FIXME: check for response first? |
1574 |
1574 |
1575 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1575 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1576 fsm->state = ec_fsm_coe_error; |
1576 fsm->state = ec_fsm_coe_error; |
1577 EC_ERR("Failed to receive CoE upload segment request datagram for" |
1577 EC_ERR("Failed to receive CoE upload segment request datagram for" |
1578 " slave %u (datagram state %i).\n", |
1578 " slave %u (datagram state %u).\n", |
1579 slave->ring_position, datagram->state); |
1579 slave->ring_position, datagram->state); |
1580 return; |
1580 return; |
1581 } |
1581 } |
1582 |
1582 |
1583 if (datagram->working_counter != 1) { |
1583 if (datagram->working_counter != 1) { |
1610 return; |
1610 return; |
1611 |
1611 |
1612 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1612 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1613 fsm->state = ec_fsm_coe_error; |
1613 fsm->state = ec_fsm_coe_error; |
1614 EC_ERR("Failed to receive CoE mailbox check datagram for slave %u" |
1614 EC_ERR("Failed to receive CoE mailbox check datagram for slave %u" |
1615 " (datagram state %i).\n", |
1615 " (datagram state %u).\n", |
1616 slave->ring_position, datagram->state); |
1616 slave->ring_position, datagram->state); |
1617 return; |
1617 return; |
1618 } |
1618 } |
1619 |
1619 |
1620 if (datagram->working_counter != 1) { |
1620 if (datagram->working_counter != 1) { |
1668 return; // FIXME: request again? |
1668 return; // FIXME: request again? |
1669 |
1669 |
1670 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1670 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
1671 fsm->state = ec_fsm_coe_error; |
1671 fsm->state = ec_fsm_coe_error; |
1672 EC_ERR("Failed to receive CoE upload segment response datagram for" |
1672 EC_ERR("Failed to receive CoE upload segment response datagram for" |
1673 " slave %u (datagram state %i).\n", |
1673 " slave %u (datagram state %u).\n", |
1674 slave->ring_position, datagram->state); |
1674 slave->ring_position, datagram->state); |
1675 return; |
1675 return; |
1676 } |
1676 } |
1677 |
1677 |
1678 if (datagram->working_counter != 1) { |
1678 if (datagram->working_counter != 1) { |
1737 last_segment = EC_READ_U8(data + 2) & 0x01; |
1737 last_segment = EC_READ_U8(data + 2) & 0x01; |
1738 seg_size = (EC_READ_U8(data + 2) & 0xE) >> 1; |
1738 seg_size = (EC_READ_U8(data + 2) & 0xE) >> 1; |
1739 data_size = rec_size - 10; |
1739 data_size = rec_size - 10; |
1740 |
1740 |
1741 if (data_size != seg_size) { |
1741 if (data_size != seg_size) { |
1742 EC_WARN("Sdo segment data invalid (%i / %i)" |
1742 EC_WARN("Sdo segment data invalid (%u / %u)" |
1743 " - Fragmenting not implemented.\n", |
1743 " - Fragmenting not implemented.\n", |
1744 data_size, seg_size); |
1744 data_size, seg_size); |
1745 } |
1745 } |
1746 |
1746 |
1747 memcpy(request->data + request->data_size, data + 10, data_size); |
1747 memcpy(request->data + request->data_size, data + 10, data_size); |