aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>2003-09-11 02:47:22 +0000
committerbencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>2003-09-11 02:47:22 +0000
commite89e0feee45595f045d01ad845079dc035dfc165 (patch)
tree078231d99e998c5a7a3727bb32a215d2b272911b
parent2d36fc10b27b05f5f49fd9a1c9ae0eb9b04302d3 (diff)
downloadlibraw1394-e89e0feee45595f045d01ad845079dc035dfc165.tar.gz
Async stream support from Jim Radford.
git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@130 53a565d1-3bb7-0310-b661-cf11e63c67ab
-rw-r--r--src/kernel-raw1394.h1
-rw-r--r--src/raw1394.h7
-rw-r--r--src/readwrite.c34
3 files changed, 42 insertions, 0 deletions
diff --git a/src/kernel-raw1394.h b/src/kernel-raw1394.h
index 5f3abd5..e178bda 100644
--- a/src/kernel-raw1394.h
+++ b/src/kernel-raw1394.h
@@ -19,6 +19,7 @@
#define RAW1394_REQ_LOCK64 103
#define RAW1394_REQ_ISO_SEND 104
#define RAW1394_REQ_ASYNC_SEND 105
+#define RAW1394_REQ_ASYNC_STREAM 106
#define RAW1394_REQ_ISO_LISTEN 200
#define RAW1394_REQ_FCP_LISTEN 201
diff --git a/src/raw1394.h b/src/raw1394.h
index 38ddede..1481c59 100644
--- a/src/raw1394.h
+++ b/src/raw1394.h
@@ -423,6 +423,10 @@ int raw1394_start_iso_write(raw1394handle_t handle, unsigned int channel,
unsigned int tag, unsigned int sy,
unsigned int speed, size_t length, quadlet_t *data,
unsigned long rawtag);
+int raw1394_start_async_stream(raw1394handle_t handle, unsigned int channel,
+ unsigned int tag, unsigned int sy,
+ unsigned int speed, size_t length, quadlet_t *data,
+ unsigned long rawtag);
/* This starts sending an arbitrary async packet. It gets an array of quadlets consisting of
@@ -458,6 +462,9 @@ int raw1394_lock64(raw1394handle_t handle, nodeid_t node, nodeaddr_t addr,
int raw1394_iso_write(raw1394handle_t handle, unsigned int channel,
unsigned int tag, unsigned int sy, unsigned int speed,
size_t length, quadlet_t *data);
+int raw1394_async_stream(raw1394handle_t handle, unsigned int channel,
+ unsigned int tag, unsigned int sy, unsigned int speed,
+ size_t length, quadlet_t *data);
int raw1394_async_send(raw1394handle_t handle,
size_t length, size_t header_length, unsigned int expect_response,
quadlet_t *data);
diff --git a/src/readwrite.c b/src/readwrite.c
index b3127d3..ca6ac56 100644
--- a/src/readwrite.c
+++ b/src/readwrite.c
@@ -249,6 +249,28 @@ int raw1394_start_iso_write(struct raw1394_handle *handle, unsigned int channel,
return (int)write(handle->fd, &req, sizeof(req));
}
+int raw1394_start_async_stream(struct raw1394_handle *handle,
+ unsigned int channel,
+ unsigned int tag, unsigned int sy,
+ unsigned int speed, size_t length, quadlet_t *data,
+ unsigned long rawtag)
+{
+ struct raw1394_request *req = &handle->req;
+
+ CLEAR_REQ(req);
+
+ req->type = RAW1394_REQ_ASYNC_STREAM;
+ req->generation = handle->generation;
+ req->tag = rawtag;
+
+ req->address = ((__u64)channel << 48) | speed;
+ req->misc = (tag << 16) | sy;
+ req->length = length;
+ req->sendb = ptr2int(data);
+
+ return (int)write(handle->fd, req, sizeof(*req));
+}
+
int raw1394_start_async_send(struct raw1394_handle *handle,
size_t length, size_t header_length, unsigned int expect_response,
quadlet_t *data, unsigned long rawtag)
@@ -343,6 +365,18 @@ int raw1394_iso_write(struct raw1394_handle *handle, unsigned int channel,
SYNCFUNC_BODY;
}
+int raw1394_async_stream(struct raw1394_handle *handle, unsigned int channel,
+ unsigned int tag, unsigned int sy, unsigned int speed,
+ size_t length, quadlet_t *data)
+{
+ SYNCFUNC_VARS;
+
+ err = raw1394_start_async_stream(handle, channel, tag, sy, speed, length,
+ data, (unsigned long)&rh);
+
+ SYNCFUNC_BODY;
+}
+
int raw1394_async_send(struct raw1394_handle *handle ,
size_t length, size_t header_length, unsigned int expect_response,
quadlet_t *data)