Introduction to FireWire Device Interface Guide
The I/O Kit device interface mechanism provides applications with a means of communicating with hardware from outside the kernel. To communicate with FireWire devices, OS X provides several device interfaces that are specific to different protocols and different types of communication. This document describes the range of device interfaces available in OS X that your application can use to control a FireWire device or unit.
Who Should Read This Document?
You should read this document if you are developing an application that needs to communicate with or control a FireWire device. Although this document describes how OS X supports FireWire devices in the kernel, it does not describe how to develop in-kernel drivers for them.
Before you read this document, you should be familiar with the I/O Kit and the device interface mechanism it provides. To learn more about the I/O Kit in general and device interfaces in particular, see the documents listed in See Also.
A detailed description of the FireWire specification is beyond the scope of this document—for more information see the 1394 Trade Association website at http://www.1394ta.org.
Organization of This Document
This document contains the following chapters:
FireWire on OS X gives a brief overview of FireWire, presents basic information about in-kernel OS X support for FireWire devices, and describes the three device interface libraries the IOFireWire family provides.
Accessing FireWire Devices From Applications describes the process of communicating with FireWire devices from applications, from finding the device or unit in the I/O Registry to getting the appropriate device interface.
Using the FireWire Device Interface Libraries uses specific code examples to explain how to use some of the IOFireWire family’s device interfaces.
Document Revision History lists the changes to this document.
The chapter Using the FireWire Device Interface Libraries uses projects in the FireWire SDK as a code base. The latest version of the SDK is available for download at http://developer.apple.com/hardwaredrivers/download. The complete SDK contains a large number of samples covering many different kinds of hardware access from applications in a variety of programming languages (Objective-C using the Cocoa framework, C, and C++). In the interests of brevity, this document includes only fragments of some of the projects to illustrate the concepts it describes. Refer to the SDK for the complete versions of the code fragments used, in addition to other projects not described here.
Apple developer documentation includes several documents that cover device access and the I/O Kit. Some of these documents are listed below.
In addition to these documents, Apple maintains a website devoted to FireWire on OS X, with links to the SDK and related topics, at http://developer.apple.com/hardwaredrivers/firewire.
Apple provides a FireWire mailing list on which you can post questions and discuss issues of interest to the FireWire community. You can also search the archives for helpful information. You can subscribe to the FireWire mailing list at http://lists.apple.com/mailman/listinfo/firewire.
If you’re ready to create a universal binary version of your FireWire device-access application to run in an Intel-based Macintosh, see Universal Binary Programming Guidelines, Second Edition. The Universal Binary Programming Guidelines describes the differences betweeen the Intel and PowerPC architectures and provides tips for developing a universal binary.