master/domain.c
changeset 448 e4b76dc7910c
parent 446 8fede404c01f
child 484 9fde4a17b820
equal deleted inserted replaced
447:ee53be7e18ee 448:e4b76dc7910c
   128 
   128 
   129 /*****************************************************************************/
   129 /*****************************************************************************/
   130 
   130 
   131 /**
   131 /**
   132    Domain destructor.
   132    Domain destructor.
       
   133    Clears and frees a domain object.
       
   134 */
       
   135 
       
   136 void ec_domain_destroy(ec_domain_t *domain /**< EtherCAT domain */)
       
   137 {
       
   138     ec_datagram_t *datagram;
       
   139 
       
   140     // dequeue datagrams
       
   141     list_for_each_entry(datagram, &domain->datagrams, list) {
       
   142         if (!list_empty(&datagram->queue)) // datagram queued?
       
   143             list_del_init(&datagram->queue);
       
   144     }
       
   145 
       
   146     // destroy self
       
   147     kobject_del(&domain->kobj);
       
   148     kobject_put(&domain->kobj);
       
   149 }
       
   150 
       
   151 /*****************************************************************************/
       
   152 
       
   153 /**
       
   154    Clear and free domain.
       
   155    This method is called by the kobject,
       
   156    once there are no more references to it.
   133 */
   157 */
   134 
   158 
   135 void ec_domain_clear(struct kobject *kobj /**< kobject of the domain */)
   159 void ec_domain_clear(struct kobject *kobj /**< kobject of the domain */)
   136 {
   160 {
   137     ec_datagram_t *datagram, *next;
   161     ec_datagram_t *datagram, *next;
   462 }
   486 }
   463 
   487 
   464 /*****************************************************************************/
   488 /*****************************************************************************/
   465 
   489 
   466 /**
   490 /**
   467    Dequeues all datagrams from the masters datagram queue.
       
   468 */
       
   469 
       
   470 void ec_domain_dequeue_datagrams(ec_domain_t *domain /**< EtherCAT domain */)
       
   471 {
       
   472     ec_datagram_t *datagram;
       
   473 
       
   474     list_for_each_entry(datagram, &domain->datagrams, list) {
       
   475         if (!list_empty(&datagram->queue)) // datagram queued?
       
   476             list_del_init(&datagram->queue);
       
   477     }
       
   478 }
       
   479 
       
   480 /*****************************************************************************/
       
   481 
       
   482 /**
       
   483    Formats attribute data for SysFS reading.
   491    Formats attribute data for SysFS reading.
   484    \return number of bytes to read
   492    \return number of bytes to read
   485 */
   493 */
   486 
   494 
   487 ssize_t ec_show_domain_attribute(struct kobject *kobj, /**< kobject */
   495 ssize_t ec_show_domain_attribute(struct kobject *kobj, /**< kobject */