equal
deleted
inserted
replaced
139 run_serial_devices(domain1_pd); |
139 run_serial_devices(domain1_pd); |
140 |
140 |
141 // send process data |
141 // send process data |
142 down(&master_sem); |
142 down(&master_sem); |
143 ecrt_domain_queue(domain1); |
143 ecrt_domain_queue(domain1); |
|
144 up(&master_sem); |
144 ecrt_master_send(master); |
145 ecrt_master_send(master); |
145 up(&master_sem); |
|
146 |
146 |
147 // restart timer |
147 // restart timer |
148 timer.expires += HZ / FREQUENCY; |
148 timer.expires += HZ / FREQUENCY; |
149 add_timer(&timer); |
149 add_timer(&timer); |
150 } |
150 } |
151 |
151 |
152 /*****************************************************************************/ |
152 /*****************************************************************************/ |
153 |
153 |
154 void send_callback(void *cb_data) |
154 void request_lock_callback(void *cb_data) |
155 { |
155 { |
156 ec_master_t *m = (ec_master_t *) cb_data; |
156 ec_master_t *m = (ec_master_t *) cb_data; |
157 down(&master_sem); |
157 down(&master_sem); |
158 ecrt_master_send_ext(m); |
158 } |
159 up(&master_sem); |
159 |
160 } |
160 /*****************************************************************************/ |
161 |
161 |
162 /*****************************************************************************/ |
162 void release_lock_callback(void *cb_data) |
163 |
|
164 void receive_callback(void *cb_data) |
|
165 { |
163 { |
166 ec_master_t *m = (ec_master_t *) cb_data; |
164 ec_master_t *m = (ec_master_t *) cb_data; |
167 down(&master_sem); |
|
168 ecrt_master_receive(m); |
|
169 up(&master_sem); |
165 up(&master_sem); |
170 } |
166 } |
171 |
167 |
172 /*****************************************************************************/ |
168 /*****************************************************************************/ |
173 |
169 |
184 ret = -EBUSY; |
180 ret = -EBUSY; |
185 goto out_return; |
181 goto out_return; |
186 } |
182 } |
187 |
183 |
188 sema_init(&master_sem, 1); |
184 sema_init(&master_sem, 1); |
189 ecrt_master_callbacks(master, send_callback, receive_callback, master); |
185 ecrt_master_callbacks(master, request_lock_callback, release_lock_callback, master); |
190 |
186 |
191 printk(KERN_INFO PFX "Registering domain...\n"); |
187 printk(KERN_INFO PFX "Registering domain...\n"); |
192 if (!(domain1 = ecrt_master_create_domain(master))) { |
188 if (!(domain1 = ecrt_master_create_domain(master))) { |
193 printk(KERN_ERR PFX "Domain creation failed!\n"); |
189 printk(KERN_ERR PFX "Domain creation failed!\n"); |
194 goto out_release_master; |
190 goto out_release_master; |