# US 6,725,311 B1 · Method and apparatus for providing a connection-oriented network over a serial bus

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 6,725,311 B1
- Document ID: US6725311B1
- Status: Granted
- Kind: B1
- Application number: 09/662,155
- Filed: 2000-09-14
- Granted: 2004-04-20
- Earliest claimed: 2000-09-14
- Assignees: Microsoft Corporation
- Inventors: Joseph M Joy; Arvind Murching; Aditya Dube; Alireza Dabagh
- Web page: https://patentgrep.com/patent/US6725311B1

## CPC

- H04L 69/08: Protocols for interworking; Protocol conversion
- H04L 69/18: Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
- H04L 69/323: in the physical layer [OSI layer 1]
- H04L 69/326: in the transport layer [OSI layer 4] (H04L69/16 takes precedence)
- H04L 69/329: in the application layer [OSI layer 7]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method and apparatus provides a method and apparatus for treating a serial bus, such as an IEEE 1394 bus, as a connection-oriented network. In one embodiment, an application programming interface (API) permits different protocols (e.g., TCP/IP, IPX, and others) to connect to the 1394 bus and to make use of various 1394 features, such as isochronous packet transmission, without knowledge of hardware-specific idiosyncrasies. A call is made to set up a connection (a “virtual circuit”) over the serial bus, and, thereafter, a connection “handle” is used to communicate over the bus using the connection. Different types of connections can be provided, including a node-specific connection; a channel-specific connection; and a receiving connection (e.g., for incoming data). In one embodiment, a programming interface hides details of the connection set-up, and includes packet fragmentation and reassembly functions. Because multiple protocols can share common communication facilities, code re-use is maximized.

## Claims

### Claim 1

A method of communicating over a serial bus that connects a plurality of nodes, comprising the steps of:
executing a programming interface call that specifies a desired type of virtual connection on the serial bus, wherein the desired type of virtual connection is selected from a group of plural different connection types;
transmitting a request over the serial bus to obtain node-specific information associated with a node connected to the serial bus;
receiving the node-specific information over the serial bus;
associating the node-specific information with a connection handle;
assigning a connection handle to communicate using the desired type of virtual connection specified; and
transmitting data packets over the serial bus using the connection handle.

### Claim 2

A method of communicating over a serial bus that connects a plurality of nodes, comprising the steps of:
(1) executing a programming interface call that specifies a desired type of virtual connection on the serial bus, wherein the desired type of virtual connection is selected from a group of plural different connection types;
(2) assigning a connection handle to communicate using the desired type of virtual connection specified in step (1); and
(3) transmitting data packets over the serial bus using the connection handle,
wherein the plural group of different connection types includes a connection defined by a unit identifier (UI) and FIFO address for a node on the serial bus.

### Claim 3 (depends on 2)

The method of claim 2, wherein step (1) includes the step of selecting communication over a specified channel on the serial bus.

### Claim 4 (depends on 3)

The method of claim 3, wherein step (1) includes the step of selecting communication over a broadcast channel on the serial bus.

### Claim 5 (depends on 2)

The method of claim 2, wherein step (1) comprises the step of selecting communication by receiving data packets from a plurality of channels on the serial bus.

### Claim 6 (depends on 2)

The method of claim 2, wherein step (3) comprises the step of transmitting streaming data over the serial bus between two of the plurality of nodes.

### Claim 7

A method of communicating over a serial bus that connects a plurality of nodes, comprising the steps of:
(1) executing a programming interface call that specifies a desired type of virtual connection on the serial bus, wherein the desired type of virtual connection is selected from a group of plural different connection types;
(2) assigning a connection handle to communicate using the desired type of virtual connection specified in step (1); and
(3) transmitting data packets over the serial bus using the connection handle,
wherein step (1) includes the step of selecting communication by allocating bandwidth on an isochronous channel on the serial bus.

### Claim 8

A method of cimmunicating over a serial bus that connects a plurality of nodes, comprising the steps of:
(1) executing a programming interface call that specifies a desired type of virtual connection on the serial bus, wherein the desired type of virtual connection is selected from a group of plural different connection types;
(2) assigning a connection handle to communicate using the desired type of virtual connection specified in step (1); and
(3) transmitting data packets over the serial bus using the connection handle,
wherein step (1) comprises the step of specifying a unit identifier (UI) and FIFO address associated with a specific node on the serial bus.

### Claim 9

A method of communicating over a serial bus that connects a plurality of nodes, comprising the steps of:
(1) executing a programming interface call that specifies a desired type of virtual connection on the serial bus, wherein the desired type of virtual connection is selected from a group of plural different connection types;
(2) assigning a connection handle to communicate using the desired type of virtual connection specified in step (1);
(3) transmitting data packets over the serial bus using the connection handle; and
(4) repeating steps (1) and (2) within a single node, such that two separate virtual connections are created for communicating within a single node.

### Claim 10 (depends on 9)

The method of claim 9, wherein the two separate virtual connections share a single physical channel on the serial bus.

### Claim 11

A method of communicating over a serial bus using a connection-oriented protocol, comprising the steps of:
(1) binding a client to a connection-oriented application programming interface that presents a generic interface as to the type of communication medium over which a connection is to be made;
(2) specifying a parameter that selects a specific communication mechanism to be used in setting up the connection over the serial bus;
(3) creating a virtual circuit over the serial bus using the specific communication mechanism;
(4) transmitting packets over the serial bus using the virtual circuit; and
mapping a function in the connection-oriented application programming interface into one or more serial bus-specific functions.

### Claim 12 (depends on 11)

The method of claim 11, wherein step (2) comprises the step of selecting a specific channel on the serial bus.

### Claim 13 (depends on 11)

The method of claim 11, wherein step (2) comprises the step of selecting an isochronous channel on the serial bus with an associated bandwidth.

### Claim 14 (depends on 11)

The method of claim 11, further comprising the step of tearing down the virtual circuit that was created in step (3).

### Claim 15

A method of communicating over a serial bus using a connection-oriented protocol, comprising the steps of:
(1) binding a client to a connection-oriented application programming interface that presents a generic interface as to the type of communication medium over which a connection is to be made;
(2) specifying a parameter that selects a specific communication mechanism to be used in setting up the connection over the serial bus;
(3) creating a virtual circuit over the serial bus using the specific communication mechanism; and
(4) transmitting packets over the serial bus using the virtual circuit,
wherein step (3) comprises the step of creating an entry in a virtual circuit data structure that maps a virtual circuit to a channel on the serial bus.

### Claim 16 (depends on 15)

The method of claim 15, wherein step (3) comprises the step of mapping two different virtual circuits to the same channel on the serial bus.

### Claim 17 (depends on 15)

The method of claim 15, further comprising the step of detecting the addition of a first remote node to the serial bus and, in response thereto, notifying a client process of the addition.

### Claim 18

A method of communicating over a serial bus using a connection-oriented protocol, comprising the steps of:
(1) binding a client to a connection-oriented application programming interface that presents a generic interface as to the type of communication medium over which a connection is to be made;
(2) specifying a parameter that selects a specific communication mechanism to be used in setting up the connection over the serial bus;
(3) creating a virtual circuit over the serial bus using the specific communication mechanism;
(4) transmitting packets over the serial bus using the virtual circuit;
(5) creating a second virtual circuit to receive packets from the serial bus;
(6) receiving packets from the serial bus and mapping the received packets to the second virtual circuit; and
(7) routing the received and mapped packets to one or more clients that registered to receive the packets.

### Claim 19 (depends on 18)

The method of claim 18, wherein step (7) comprises the step of replicating each mapped packet for each of a plurality of clients that registered to receive the packets.

### Claim 20

A method of communicating over a serial bus using a connection-oriented protocol, comprising the steps of:
(1) binding a client to a connection-oriented application programming interface that presents a generic interface as to the type of communication medium over which a connection is to be made;
(2) specifying a parameter that selects a specific communication mechanism to be used in setting up the connection over the serial bus;
(3) creating a virtual circuit over the serial bus using the specific communication mechanism; and
(4) transmitting packets over the serial bus using the virtual circuit,
wherein step (4) comprises the step of fragmenting the packets before they are transmitted over the serial bus.

### Claim 21

A computer node including a processor, a memory, and a serial bus interface that provides serial communication facilities for communicating with other computer nodes over a serial bus,
wherein the computer node includes at least one client application and protocol conversion software coupled between the client application and the serial bus interface, wherein the protocol conversion software presents a generic interface to the client application that hides implementation details of the serial bus, and wherein the protocol conversion software converts requests for connection-oriented network services by the client application into serial bus services compatible with the serial bus interface and creates a plurality of virtual circuits each corresponding to a channel on the serial bus.

### Claim 22

A computer node including a processor, a memory, and a serial bus interface that provides serial communication facilities for communicating with other computer nodes over a serial bus,
wherein the computer node includes at least one client application and protocol conversion software coupled between the client application and the serial bus interface, wherein the protocol conversion software presents a generic interface to the client application that hides implementation details of the serial bus, and wherein the protocol conversion software converts requests for connection-oriented network services by the client application into serial bus services compatible with the serial bus interface and creates a plurality of virtual circuits each corresponding to a unit identifier (UI) and FIFO address associated with one of the other computer nodes connected to the serial bus.
