master/fsm_coe.c
changeset 1791 27030c6b2de3
parent 1563 ddedb71b3a85
child 1792 3eb466e9bad5
equal deleted inserted replaced
1790:c4e3ee5632b2 1791:27030c6b2de3
    46 #define EC_FSM_COE_DICT_TIMEOUT 3000
    46 #define EC_FSM_COE_DICT_TIMEOUT 3000
    47 
    47 
    48 #define EC_COE_DOWN_REQ_HEADER_SIZE      10
    48 #define EC_COE_DOWN_REQ_HEADER_SIZE      10
    49 #define EC_COE_DOWN_SEG_REQ_HEADER_SIZE  3
    49 #define EC_COE_DOWN_SEG_REQ_HEADER_SIZE  3
    50 #define EC_COE_DOWN_SEG_MIN_DATA_SIZE    7
    50 #define EC_COE_DOWN_SEG_MIN_DATA_SIZE    7
       
    51 
       
    52 #define DEBUG_RETRIES 0
    51 
    53 
    52 /*****************************************************************************/
    54 /*****************************************************************************/
    53 
    55 
    54 void ec_fsm_coe_dict_start(ec_fsm_coe_t *);
    56 void ec_fsm_coe_dict_start(ec_fsm_coe_t *);
    55 void ec_fsm_coe_dict_request(ec_fsm_coe_t *);
    57 void ec_fsm_coe_dict_request(ec_fsm_coe_t *);
  1211     if (datagram->working_counter != 1) {
  1213     if (datagram->working_counter != 1) {
  1212         if (!datagram->working_counter) {
  1214         if (!datagram->working_counter) {
  1213             unsigned long diff_ms =
  1215             unsigned long diff_ms =
  1214                 (jiffies - fsm->request->jiffies_sent) * 1000 / HZ;
  1216                 (jiffies - fsm->request->jiffies_sent) * 1000 / HZ;
  1215             if (diff_ms < fsm->request->response_timeout) {
  1217             if (diff_ms < fsm->request->response_timeout) {
       
  1218 #if DEBUG_RETRIES
  1216                 if (fsm->slave->master->debug_level) {
  1219                 if (fsm->slave->master->debug_level) {
  1217                     EC_DBG("Slave %u did not respond to SDO download request. "
  1220                     EC_DBG("Slave %u did not respond to SDO download request. "
  1218                             "Retrying after %u ms...\n",
  1221                             "Retrying after %u ms...\n",
  1219                             slave->ring_position, (u32) diff_ms);
  1222                             slave->ring_position, (u32) diff_ms);
  1220                 }
  1223                 }
       
  1224 #endif
  1221                 // no response; send request datagram again
  1225                 // no response; send request datagram again
  1222                 return;
  1226                 return;
  1223             }
  1227             }
  1224         }
  1228         }
  1225         fsm->state = ec_fsm_coe_error;
  1229         fsm->state = ec_fsm_coe_error;
  1704     if (datagram->working_counter != 1) {
  1708     if (datagram->working_counter != 1) {
  1705         if (!datagram->working_counter) {
  1709         if (!datagram->working_counter) {
  1706             unsigned long diff_ms =
  1710             unsigned long diff_ms =
  1707                 (jiffies - fsm->request->jiffies_sent) * 1000 / HZ;
  1711                 (jiffies - fsm->request->jiffies_sent) * 1000 / HZ;
  1708             if (diff_ms < fsm->request->response_timeout) {
  1712             if (diff_ms < fsm->request->response_timeout) {
       
  1713 #if DEBUG_RETRIES
  1709                 if (fsm->slave->master->debug_level) {
  1714                 if (fsm->slave->master->debug_level) {
  1710                     EC_DBG("Slave %u did not respond to SDO upload request. "
  1715                     EC_DBG("Slave %u did not respond to SDO upload request. "
  1711                             "Retrying after %u ms...\n",
  1716                             "Retrying after %u ms...\n",
  1712                             slave->ring_position, (u32) diff_ms);
  1717                             slave->ring_position, (u32) diff_ms);
  1713                 }
  1718                 }
       
  1719 #endif
  1714                 // no response; send request datagram again
  1720                 // no response; send request datagram again
  1715                 return;
  1721                 return;
  1716             }
  1722             }
  1717         }
  1723         }
  1718         fsm->state = ec_fsm_coe_error;
  1724         fsm->state = ec_fsm_coe_error;