master/master.c
branchstable-1.5
changeset 2541 1ddd186e9d2c
parent 2532 bdadf6da4914
child 2688 adcbb2ad12e3
equal deleted inserted replaced
2540:fca12d7035d1 2541:1ddd186e9d2c
  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,