libdc1394 2.2.6
fw_cdev_iso_packet Struct Reference

#include <dc1394/juju/firewire-cdev.h>

Detailed Description

struct fw_cdev_iso_packet - Isochronous packet @control: Contains the header length (8 uppermost bits), the sy field (4 bits), the tag field (2 bits), a sync flag (1 bit), a skip flag (1 bit), an interrupt flag (1 bit), and the payload length (16 lowermost bits) @header: Header and payload

&struct fw_cdev_iso_packet is used to describe isochronous packet queues.

Use the FW_CDEV_ISO_ macros to fill in @control.

For transmit packets, the header length must be a multiple of 4 and specifies the numbers of bytes in @header that will be prepended to the packet's payload; these bytes are copied into the kernel and will not be accessed after the ioctl has returned. The sy and tag fields are copied to the iso packet header (these fields are specified by IEEE 1394a and IEC 61883-1). The skip flag specifies that no packet is to be sent in a frame; when using this, all other fields except the interrupt flag must be zero.

For receive packets, the header length must be a multiple of the context's header size; if the header length is larger than the context's header size, multiple packets are queued for this entry. The sy and tag fields are ignored. If the sync flag is set, the context drops all packets until a packet with a matching sy field is received (the sync value to wait for is specified in the &fw_cdev_start_iso structure). The payload length defines how many payload bytes can be received for one packet (in addition to payload quadlets that have been defined as headers and are stripped and returned in the &fw_cdev_event_iso_interrupt structure). If more bytes are received, the additional bytes are dropped. If less bytes are received, the remaining bytes in this part of the payload buffer will not be written to, not even by the next packet, i.e., packets received in consecutive frames will not necessarily be consecutive in memory. If an entry has queued multiple packets, the payload length is divided equally among them.

When a packet with the interrupt flag set has been completed, the &fw_cdev_event_iso_interrupt event will be sent. An entry that has queued multiple receive packets is completed when its last packet is completed.


The documentation for this struct was generated from the following file: