summaryrefslogtreecommitdiffstats
path: root/juju/raw1394-iso.c
diff options
context:
space:
mode:
authorGravatar Kristian Høgsberg 2007-03-31 19:45:39 -0400
committerGravatar Kristian Høgsberg 2007-03-31 19:45:39 -0400
commit89281b576730c5f440bbd539e3efb5d5ab1036bc (patch)
tree04e681d45af466031df81be5670d61d4bb8c10c4 /juju/raw1394-iso.c
parentGet rawiso receive a little closer to working. (diff)
Decode iso headers properly.
Diffstat (limited to 'juju/raw1394-iso.c')
-rw-r--r--juju/raw1394-iso.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/juju/raw1394-iso.c b/juju/raw1394-iso.c
index 893d36a..b65faf7 100644
--- a/juju/raw1394-iso.c
+++ b/juju/raw1394-iso.c
@@ -177,20 +177,19 @@ flush_recv_packets(raw1394handle_t handle,
end = (void *) interrupt->header + interrupt->header_length;
cycle = interrupt->cycle;
dropped = 0;
-
- /* FIXME: compute real buffer index. */
data = handle->iso.buffer +
handle->iso.packet_tail * handle->iso.max_packet_size;
while (p < end) {
header = be32_to_cpu(*p++);
- len = header >> 8;
- channel = header >> 8;
- tag = header >> 8;
- sy = header >> 8;
+ len = header >> 16;
+ tag = (header >> 14) & 0x3;
+ channel = (header >> 8) & 0x3f;
+ sy = header & 0x0f;
- printf("len=%d, channel=%d, tag=%d, sy=%d\n",
- len, channel, tag, sy);
+ fprintf(stderr,
+ "header: %08x, len=%d, channel=%d, tag=%d, sy=%d, packet_tail=0x%x\n",
+ header, len, channel, tag, sy, handle->iso.packet_tail);
d = handle->iso.recv_handler(handle, data, len, channel,
tag, sy, cycle, dropped);
@@ -199,6 +198,10 @@ flush_recv_packets(raw1394handle_t handle,
cycle++;
}
+ handle->iso.packet_tail += interrupt->header_length / 4;
+ if (handle->iso.packet_tail >= handle->iso.buf_packets)
+ handle->iso.packet_tail -= handle->iso.buf_packets;
+
queue_recv_packets(handle);
return 0;
='2016-04-23 23:07:15 +0100'>2016-04-23Updates!!!!!Gravatar gingerBill 5-8716/+4088 2016-04-12Update gb.hGravatar gingerBill 1-11/+11 2016-04-12Update README.mdGravatar gingerBill 1-3/+3 2016-04-12Update gb.hGravatar gingerBill 1-386/+526 2016-04-10New gb.h!!!!Gravatar gingerBill 1-370/+1414 2016-04-10License UpdateGravatar gingerBill 1-45/+40 2016-04-08Update README.mdGravatar gingerBill 1-1/+1 2016-04-08Use 64-bit murmur64 version on WIN64Gravatar gingerBill 1-3/+3 2016-04-08Update gb_math.hGravatar gingerBill 1-5/+6 2016-04-08Fix strict aliasing in gb_quake_inv_sqrtGravatar gingerBill 1-11/+13 2016-04-08Update gb_math.hGravatar gingerBill 1-1/+2 2016-04-08gb_math.h v0.04a - Minor bug fixesGravatar gingerBill 1-45/+50 2016-04-08Update README.mdGravatar gingerBill 1-2/+1 2016-04-08Delete gb_math.hppGravatar gingerBill 1-3882/+0 2016-04-08gb_math.h - v0.04 - Namespace everything with gbGravatar gingerBill 1-340/+1484 2016-03-03Update gb.h - v0.02Gravatar gingerBill 1-38/+59 2016-03-03New LibrariesGravatar gingerBill 3-2101/+1219 2016-01-01Explicit Everything!Gravatar gingerBill 4-306/+241 2015-12-17Macro fixesGravatar gingerBill 3-58/+75 2015-12-17Change conventions slightlyGravatar gingerBill 4-1041/+1069 2015-12-15Remove C++ specific macrosGravatar gingerBill 1-19/+2 2015-12-15Allow for no <stdio.h>Gravatar gingerBill 2-18/+32 2015-12-14gb.hpp - Allocators can be passed to gb_alloc/free/etc. without cast using `t...Gravatar gingerBill 3-33/+126 2015-12-14Update README.mdGravatar gingerBill 1-1/+1 2015-12-14gb.h - Implement all functions (from gb.hpp)Gravatar gingerBill 3-247/+1983 2015-12-14Update README.mdGravatar gingerBill 1-0/+1