lib/master.c
changeset 1497 c9308eb34c0e
parent 1495 88f242b722ce
child 1508 60a116ed3897
equal deleted inserted replaced
1496:f98f89d0d778 1497:c9308eb34c0e
    40 #include "slave_config.h"
    40 #include "slave_config.h"
    41 #include "master/ioctl.h"
    41 #include "master/ioctl.h"
    42 
    42 
    43 /*****************************************************************************/
    43 /*****************************************************************************/
    44 
    44 
       
    45 int ecrt_master_reserve(ec_master_t *master)
       
    46 {
       
    47     if (ioctl(master->fd, EC_IOCTL_REQUEST, NULL) == -1) {
       
    48         fprintf(stderr, "Failed to reserve master: %s\n",
       
    49                 strerror(errno));
       
    50         return -1;
       
    51     }
       
    52 }
       
    53 
       
    54 /*****************************************************************************/
       
    55 
    45 ec_domain_t *ecrt_master_create_domain(ec_master_t *master)
    56 ec_domain_t *ecrt_master_create_domain(ec_master_t *master)
    46 {
    57 {
    47     ec_domain_t *domain;
    58     ec_domain_t *domain;
    48     int index;
    59     int index;
    49 
    60 
   101     return sc;
   112     return sc;
   102 }
   113 }
   103 
   114 
   104 /*****************************************************************************/
   115 /*****************************************************************************/
   105 
   116 
       
   117 int ecrt_master(ec_master_t* master, ec_master_info_t *master_info)
       
   118 {
       
   119 	ec_ioctl_master_t data;
       
   120 
       
   121 	if (ioctl(master->fd, EC_IOCTL_MASTER, &data) < 0) {
       
   122         fprintf(stderr, "Failed to get master info: %s\n", strerror(errno));
       
   123 		return -1;
       
   124 	}
       
   125 
       
   126 	master_info->slave_count = data.slave_count;
       
   127 	master_info->link_up = data.devices[0].link_state;
       
   128 	master_info->app_time = data.app_time;
       
   129 	return 0;
       
   130 }
       
   131 
       
   132 /*****************************************************************************/
       
   133 
   106 int ecrt_master_slave(ec_master_t *master, uint16_t position,
   134 int ecrt_master_slave(ec_master_t *master, uint16_t position,
   107         ec_slave_info_t *slave_info)
   135         ec_slave_info_t *slave_info)
   108 {
   136 {
   109     ec_ioctl_slave_t data;
   137     ec_ioctl_slave_t data;
   110     int index;
   138     int index;
   111 
   139 
   112     data.position = position;
   140     data.position = position;
   113 
   141 
   114     if (ioctl(master->fd, EC_IOCTL_SLAVE, &data) == -1) {
   142     if (ioctl(master->fd, EC_IOCTL_SLAVE, &data) == -1) {
   115         fprintf(stderr, "Failed to get slave info: %s\n",
   143         fprintf(stderr, "Failed to get slave info: %s\n", strerror(errno));
   116                 strerror(errno));
       
   117         return -1;
   144         return -1;
   118     }
   145     }
   119 
   146 
   120     slave_info->position = data.position;
   147     slave_info->position = data.position;
   121     slave_info->vendor_id = data.vendor_id;
   148     slave_info->vendor_id = data.vendor_id;
   127     slave_info->al_state = data.al_state;
   154     slave_info->al_state = data.al_state;
   128     slave_info->error_flag = data.error_flag;
   155     slave_info->error_flag = data.error_flag;
   129     slave_info->sync_count = data.sync_count;
   156     slave_info->sync_count = data.sync_count;
   130     slave_info->sdo_count = data.sdo_count;
   157     slave_info->sdo_count = data.sdo_count;
   131     strncpy(slave_info->name, data.name, EC_IOCTL_STRING_SIZE);
   158     strncpy(slave_info->name, data.name, EC_IOCTL_STRING_SIZE);
   132 
       
   133     return 0;
   159     return 0;
   134 }
   160 }
   135 
   161 
   136 /*****************************************************************************/
   162 /*****************************************************************************/
   137 
   163