master/master.h
changeset 1500 ed1a733efbc5
parent 1489 f77a1182b6f4
child 1513 60ca68d853b8
--- a/master/master.h	Fri Jul 10 10:40:05 2009 +0000
+++ b/master/master.h	Mon Jul 13 15:18:28 2009 +0000
@@ -145,6 +145,11 @@
     struct list_head datagram_queue; /**< Datagram queue. */
     uint8_t datagram_index; /**< Current datagram index. */
 
+    struct list_head ext_datagram_queue; /**< Queue for non-application
+                                           datagrams. */
+    struct semaphore ext_queue_sem; /**< Semaphore protecting the \a
+                                      ext_datagram_queue. */
+
     struct list_head domains; /**< List of domains. */
 
     unsigned int debug_level; /**< Master debug level. */
@@ -160,12 +165,13 @@
 #endif
 
     struct semaphore io_sem; /**< Semaphore used in \a IDLE phase. */
-    int (*request_cb)(void *); /**< Lock request callback. */
-    void (*release_cb)(void *); /**< Lock release callback. */
-    void *cb_data; /**< Data parameter of locking callbacks. */
-    int (*ext_request_cb)(void *); /**< External lock request callback. */
-    void (*ext_release_cb)(void *); /**< External lock release callback. */
-    void *ext_cb_data; /**< Data parameter of external locking callbacks. */
+
+    void (*send_cb)(ec_master_t *); /**< Current send datagrams callback. */
+    void (*receive_cb)(ec_master_t *); /**< Current receive datagrams callback. */
+    void (*app_send_cb)(ec_master_t *); /**< Application's send datagrams
+                                          callback. */
+    void (*app_receive_cb)(ec_master_t *); /**< Application's receive datagrams
+                                      callback. */
 
     struct list_head sii_requests; /**< SII write requests. */
     wait_queue_head_t sii_queue; /**< Wait queue for SII
@@ -208,6 +214,7 @@
 // datagram IO
 void ec_master_receive_datagrams(ec_master_t *, const uint8_t *, size_t);
 void ec_master_queue_datagram(ec_master_t *, ec_datagram_t *);
+void ec_master_queue_datagram_ext(ec_master_t *, ec_datagram_t *);
 
 // misc.
 void ec_master_attach_slave_configs(ec_master_t *);
@@ -240,6 +247,9 @@
 
 void ec_master_calc_dc(ec_master_t *);
 
-/*****************************************************************************/
-
-#endif
+void ec_master_internal_send_cb(ec_master_t *);
+void ec_master_internal_receive_cb(ec_master_t *);
+
+/*****************************************************************************/
+
+#endif