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 |