master/fsm_coe.c
changeset 2041 f5b31f46c38f
parent 1948 fa1c4fb0a8da
child 2045 ff2a13a4603c
equal deleted inserted replaced
2040:45706e3273fd 2041:f5b31f46c38f
   501         ec_print_data(data, rec_size);
   501         ec_print_data(data, rec_size);
   502         fsm->state = ec_fsm_coe_error;
   502         fsm->state = ec_fsm_coe_error;
   503         return;
   503         return;
   504     }
   504     }
   505 
   505 
   506     sdo_count = (rec_size - 8) / 2;
   506     bool first_segment = list_empty(&slave->sdo_dictionary) ? true : false;
       
   507     size_t index_list_offset = first_segment ? 8 : 6;
       
   508 
       
   509     sdo_count = (rec_size - index_list_offset) / 2;
   507 
   510 
   508     for (i = 0; i < sdo_count; i++) {
   511     for (i = 0; i < sdo_count; i++) {
   509         sdo_index = EC_READ_U16(data + 8 + i * 2);
   512         sdo_index = EC_READ_U16(data + index_list_offset + i * 2);
   510         if (!sdo_index) {
   513         if (!sdo_index) {
   511             EC_SLAVE_DBG(slave, 1, "SDO dictionary contains index 0x0000.\n");
   514             EC_SLAVE_DBG(slave, 1, "SDO dictionary contains index 0x0000.\n");
   512             continue;
   515             continue;
   513         }
   516         }
   514 
   517