master/fsm_coe.c
changeset 2194 1b583b3110cb
parent 2094 83e9160319ec
child 2195 d9146c0ff00f
equal deleted inserted replaced
2190:3fe304fea395 2194:1b583b3110cb
   505         fsm->retries = EC_FSM_RETRIES;
   505         fsm->retries = EC_FSM_RETRIES;
   506         fsm->state = ec_fsm_coe_dict_check;
   506         fsm->state = ec_fsm_coe_dict_check;
   507         return;
   507         return;
   508     }
   508     }
   509 
   509 
   510     if (rec_size < 8 || rec_size % 2) {
       
   511         EC_SLAVE_ERR(slave, "Invalid data size %zu!\n", rec_size);
       
   512         ec_print_data(data, rec_size);
       
   513         fsm->state = ec_fsm_coe_error;
       
   514         return;
       
   515     }
       
   516 
       
   517     first_segment = list_empty(&slave->sdo_dictionary) ? true : false;
   510     first_segment = list_empty(&slave->sdo_dictionary) ? true : false;
   518     index_list_offset = first_segment ? 8 : 6;
   511     index_list_offset = first_segment ? 8 : 6;
       
   512 
       
   513     if (rec_size < index_list_offset || rec_size % 2) {
       
   514         EC_SLAVE_ERR(slave, "Invalid data size %zu !\n", rec_size);
       
   515         ec_print_data(data, rec_size);
       
   516         fsm->state = ec_fsm_coe_error;
       
   517         return;
       
   518     }
   519 
   519 
   520     sdo_count = (rec_size - index_list_offset) / 2;
   520     sdo_count = (rec_size - index_list_offset) / 2;
   521 
   521 
   522     for (i = 0; i < sdo_count; i++) {
   522     for (i = 0; i < sdo_count; i++) {
   523         sdo_index = EC_READ_U16(data + index_list_offset + i * 2);
   523         sdo_index = EC_READ_U16(data + index_list_offset + i * 2);