From 6ac98fd9fd300bc1b8969b6e7a4cf251fa85cdd4 Mon Sep 17 00:00:00 2001 From: aeb Date: Sun, 6 Aug 2000 02:44:00 +0000 Subject: [PATCH] Added support for isochronous sending. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@34 53a565d1-3bb7-0310-b661-cf11e63c67ab --- NEWS | 1 + src/kernel-raw1394.h | 1 + src/readwrite.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/NEWS b/NEWS index deca55f..223a30c 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ Version 0.8: +- functions for isochronous sending - new raw1394_reset_bus() function to reset the bus Version 0.7: diff --git a/src/kernel-raw1394.h b/src/kernel-raw1394.h index e496301..4f8b3f7 100644 --- a/src/kernel-raw1394.h +++ b/src/kernel-raw1394.h @@ -18,6 +18,7 @@ #define RAW1394_REQ_ASYNC_WRITE 101 #define RAW1394_REQ_LOCK 102 #define RAW1394_REQ_LOCK64 103 +#define RAW1394_REQ_ISO_SEND 104 #define RAW1394_REQ_ISO_LISTEN 200 #define RAW1394_REQ_FCP_LISTEN 201 diff --git a/src/readwrite.c b/src/readwrite.c index 8670920..1e12b6c 100644 --- a/src/readwrite.c +++ b/src/readwrite.c @@ -94,6 +94,27 @@ int raw1394_start_lock(struct raw1394_handle *handle, nodeid_t node, return (int)write(handle->fd, req, sizeof(*req)); } +int raw1394_start_iso_write(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_ISO_SEND; + req->generation = handle->generation; + req->tag = tag; + + req->address = ((__u64)channel << 48) | speed; + req->misc = (tag << 16) | sy; + req->length = length; + req->sendb = data; + + return (int)write(handle->fd, req, sizeof(*req)); +} + #define SYNCFUNC_VARS \ struct sync_cb_data sd = { 0, 0 }; \ @@ -142,5 +163,17 @@ int raw1394_lock(struct raw1394_handle *handle, nodeid_t node, nodeaddr_t addr, SYNCFUNC_BODY; } +int raw1394_iso_write(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_iso_write(handle, channel, tag, sy, speed, length, + data, (unsigned long)&rh); + + SYNCFUNC_BODY; +} + #undef SYNCFUNC_VARS #undef SYNCFUNC_BODY