lib/master.c
branchstable-1.5
changeset 2447 e93efb4af231
parent 2443 2c3ccdde3919
child 2703 045624f7f4c3
equal deleted inserted replaced
2446:3425c621ee46 2447:e93efb4af231
   196     sc->first_voe_handler = NULL;
   196     sc->first_voe_handler = NULL;
   197 
   197 
   198     ec_master_add_slave_config(master, sc);
   198     ec_master_add_slave_config(master, sc);
   199 
   199 
   200     return sc;
   200     return sc;
       
   201 }
       
   202 
       
   203 /*****************************************************************************/
       
   204 
       
   205 int ecrt_master_select_reference_clock(ec_master_t *master,
       
   206         ec_slave_config_t *sc)
       
   207 {
       
   208     uint32_t config_index;
       
   209     int ret;
       
   210 
       
   211     if (sc) {
       
   212         config_index = sc->index;
       
   213     }
       
   214     else {
       
   215         config_index = 0xFFFFFFFF;
       
   216     }
       
   217 
       
   218     ret = ioctl(master->fd, EC_IOCTL_SELECT_REF_CLOCK, config_index);
       
   219     if (EC_IOCTL_IS_ERROR(ret)) {
       
   220         fprintf(stderr, "Failed to select reference clock: %s\n",
       
   221                 strerror(EC_IOCTL_ERRNO(ret)));
       
   222         return -EC_IOCTL_ERRNO(ret);
       
   223     }
       
   224 
       
   225     return 0;
   201 }
   226 }
   202 
   227 
   203 /****************************************************************************/
   228 /****************************************************************************/
   204 
   229 
   205 int ecrt_master(ec_master_t *master, ec_master_info_t *master_info)
   230 int ecrt_master(ec_master_t *master, ec_master_info_t *master_info)
   679         fprintf(stderr, "Failed to sync slave clocks: %s\n",
   704         fprintf(stderr, "Failed to sync slave clocks: %s\n",
   680                 strerror(EC_IOCTL_ERRNO(ret)));
   705                 strerror(EC_IOCTL_ERRNO(ret)));
   681     }
   706     }
   682 }
   707 }
   683 
   708 
       
   709 /*****************************************************************************/
       
   710 
       
   711 int ecrt_master_reference_clock_time(ec_master_t *master, uint32_t *time)
       
   712 {
       
   713     int ret;
       
   714 
       
   715     ret = ioctl(master->fd, EC_IOCTL_REF_CLOCK_TIME, time);
       
   716     if (EC_IOCTL_IS_ERROR(ret)) {
       
   717         fprintf(stderr, "Failed to get reference clock time: %s\n",
       
   718                 strerror(EC_IOCTL_ERRNO(ret)));
       
   719     }
       
   720 
       
   721     return ret;
       
   722 }
       
   723 
   684 /****************************************************************************/
   724 /****************************************************************************/
   685 
   725 
   686 void ecrt_master_sync_monitor_queue(ec_master_t *master)
   726 void ecrt_master_sync_monitor_queue(ec_master_t *master)
   687 {
   727 {
   688     int ret;
   728     int ret;