examples/tty/tty.c
changeset 2024 96e2ae6cce95
parent 1613 070b4b420ab1
child 2589 2b9c78543663
equal deleted inserted replaced
2023:da133ec36c3a 2024:96e2ae6cce95
   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;