--- a/examples/tty/tty.c Thu Sep 06 14:21:02 2012 +0200
+++ b/examples/tty/tty.c Mon Nov 03 15:20:05 2014 +0100
@@ -141,8 +141,8 @@
// send process data
down(&master_sem);
ecrt_domain_queue(domain1);
- up(&master_sem);
ecrt_master_send(master);
+ up(&master_sem);
// restart timer
timer.expires += HZ / FREQUENCY;
@@ -151,17 +151,21 @@
/*****************************************************************************/
-void request_lock_callback(void *cb_data)
+void send_callback(void *cb_data)
{
ec_master_t *m = (ec_master_t *) cb_data;
down(&master_sem);
-}
-
-/*****************************************************************************/
-
-void release_lock_callback(void *cb_data)
+ ecrt_master_send_ext(m);
+ up(&master_sem);
+}
+
+/*****************************************************************************/
+
+void receive_callback(void *cb_data)
{
ec_master_t *m = (ec_master_t *) cb_data;
+ down(&master_sem);
+ ecrt_master_receive(m);
up(&master_sem);
}
@@ -171,18 +175,18 @@
{
int ret = -1;
ec_slave_config_t *sc;
-
+
printk(KERN_INFO PFX "Starting...\n");
master = ecrt_request_master(0);
if (!master) {
printk(KERN_ERR PFX "Requesting master 0 failed.\n");
- ret = -EBUSY;
+ ret = -EBUSY;
goto out_return;
}
sema_init(&master_sem, 1);
- ecrt_master_callbacks(master, request_lock_callback, release_lock_callback, master);
+ ecrt_master_callbacks(master, send_callback, receive_callback, master);
printk(KERN_INFO PFX "Registering domain...\n");
if (!(domain1 = ecrt_master_create_domain(master))) {