summaryrefslogtreecommitdiffstats
path: root/src/raw1394.h
diff options
context:
space:
mode:
authorGravatar abombe 1999-12-29 22:24:32 +0000
committerGravatar abombe 1999-12-29 22:24:32 +0000
commit04f65912c3c04161daee655136d8d74d3763da16 (patch)
tree0e753f84101b58ff77c431bfcc7851f475b7db7c /src/raw1394.h
parent- Added FCP register addresses (diff)
Added isochronous I/O support
git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@4 53a565d1-3bb7-0310-b661-cf11e63c67ab
Diffstat (limited to 'src/raw1394.h')
-rw-r--r--src/raw1394.h26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/raw1394.h b/src/raw1394.h
index d1fe443..849369e 100644
--- a/src/raw1394.h
+++ b/src/raw1394.h
@@ -64,6 +64,10 @@ int raw1394_set_port(raw1394handle_t handle, int port);
* registering functions. This function will return -1 for an error or the
* return value of the handler which got executed. Default handlers always
* return zero.
+ *
+ * Note that some other library functions may call this function multiple times
+ * to wait for their completion, some handler return values may get lost if you
+ * use these.
*/
int raw1394_loop_iterate(raw1394handle_t handle);
@@ -88,8 +92,6 @@ tag_handler_t raw1394_set_tag_handler(raw1394handle_t handle,
* Set the handler that will be called when an iso packet arrives (data points
* to the iso packet header). The default action is to do nothing. Returns old
* handler.
- *
- * Iso receive is not implemented yet.
*/
typedef int (*iso_handler_t)(raw1394handle_t, int channel, size_t length,
quadlet_t *data);
@@ -112,23 +114,27 @@ struct raw1394_reqhandle {
* Passes custom tag. Use pointer to raw1394_reqhandle if you use the standard
* tag handler.
*/
-int raw1394_start_read(struct raw1394_handle *handle, nodeid_t node,
- nodeaddr_t addr, size_t length, quadlet_t *buffer,
- unsigned long tag);
-int raw1394_start_write(struct raw1394_handle *handle, nodeid_t node,
- nodeaddr_t addr, size_t length, quadlet_t *data,
- unsigned long tag);
+int raw1394_start_read(raw1394handle_t handle, nodeid_t node, nodeaddr_t addr,
+ size_t length, quadlet_t *buffer, unsigned long tag);
+int raw1394_start_write(raw1394handle_t handle, nodeid_t node, nodeaddr_t addr,
+ size_t length, quadlet_t *data, unsigned long tag);
/*
* This does the complete transaction and will return when it's finished. It
* will call raw1394_loop_iterate() as often as necessary, return values of
* handlers called will be therefore lost.
*/
-int raw1394_read(struct raw1394_handle *handle, nodeid_t node, nodeaddr_t addr,
+int raw1394_read(raw1394handle_t handle, nodeid_t node, nodeaddr_t addr,
size_t length, quadlet_t *buffer);
-int raw1394_write(struct raw1394_handle *handle, nodeid_t node, nodeaddr_t addr,
+int raw1394_write(raw1394handle_t handle, nodeid_t node, nodeaddr_t addr,
size_t length, quadlet_t *data);
+/*
+ * Start and stop receiving a certain isochronous channel. You have to set an
+ * iso handler (see above). You can receive multiple channels simultaneously.
+ */
+int raw1394_start_iso_rcv(raw1394handle_t handle, unsigned int channel);
+int raw1394_stop_iso_rcv(raw1394handle_t handle, unsigned int channel);
#ifdef __cplusplus
}