equal
deleted
inserted
replaced
2649 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position, |
2649 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position, |
2650 ec_slave_info_t *slave_info) |
2650 ec_slave_info_t *slave_info) |
2651 { |
2651 { |
2652 const ec_slave_t *slave; |
2652 const ec_slave_t *slave; |
2653 unsigned int i; |
2653 unsigned int i; |
|
2654 int ret = 0; |
2654 |
2655 |
2655 if (down_interruptible(&master->master_sem)) { |
2656 if (down_interruptible(&master->master_sem)) { |
2656 return -EINTR; |
2657 return -EINTR; |
2657 } |
2658 } |
2658 |
2659 |
2659 slave = ec_master_find_slave_const(master, 0, slave_position); |
2660 slave = ec_master_find_slave_const(master, 0, slave_position); |
|
2661 |
|
2662 if (slave == NULL) { |
|
2663 ret = -ENOENT; |
|
2664 goto out_get_slave; |
|
2665 } |
2660 |
2666 |
2661 slave_info->position = slave->ring_position; |
2667 slave_info->position = slave->ring_position; |
2662 slave_info->vendor_id = slave->sii.vendor_id; |
2668 slave_info->vendor_id = slave->sii.vendor_id; |
2663 slave_info->product_code = slave->sii.product_code; |
2669 slave_info->product_code = slave->sii.product_code; |
2664 slave_info->revision_number = slave->sii.revision_number; |
2670 slave_info->revision_number = slave->sii.revision_number; |
2692 strncpy(slave_info->name, slave->sii.name, EC_MAX_STRING_LENGTH); |
2698 strncpy(slave_info->name, slave->sii.name, EC_MAX_STRING_LENGTH); |
2693 } else { |
2699 } else { |
2694 slave_info->name[0] = 0; |
2700 slave_info->name[0] = 0; |
2695 } |
2701 } |
2696 |
2702 |
|
2703 out_get_slave: |
2697 up(&master->master_sem); |
2704 up(&master->master_sem); |
2698 |
2705 |
2699 return 0; |
2706 return ret; |
2700 } |
2707 } |
2701 |
2708 |
2702 /*****************************************************************************/ |
2709 /*****************************************************************************/ |
2703 |
2710 |
2704 void ecrt_master_callbacks(ec_master_t *master, |
2711 void ecrt_master_callbacks(ec_master_t *master, |